diff --git a/src/assets/ModalRemote.js b/src/assets/ModalRemote.js index 24e048d..188dd74 100644 --- a/src/assets/ModalRemote.js +++ b/src/assets/ModalRemote.js @@ -30,7 +30,7 @@ function ModalRemote(modalId) { this.footer = $(modalId).find('.modal-footer'); - this.loadingContent = '
'; + this.loadingContent = '
'; /** @@ -69,10 +69,13 @@ function ModalRemote(modalId) { * @param {string} size large/normal/small */ this.setSize = function (size) { + $(this.dialog).removeClass('modal-xl'); $(this.dialog).removeClass('modal-lg'); $(this.dialog).removeClass('modal-sm'); if (size == 'large') $(this.dialog).addClass('modal-lg'); + else if (size == 'xlarge') + $(this.dialog).addClass('modal-xl'); else if (size == 'small') $(this.dialog).addClass('modal-sm'); else if (size !== 'normal') @@ -169,7 +172,6 @@ function ModalRemote(modalId) { url: url, method: method, data: data, - async: false, beforeSend: function () { beforeRemoteRequest.call(instance); }, @@ -218,12 +220,20 @@ function ModalRemote(modalId) { if ($(response.forceReload).length > 0){ // Reload datatable if response contain forceReload field if (response.forceReload !== undefined && response.forceReload) { + let options = {}; if (response.forceReload == 'true') { // Backwards compatible reload of fixed crud-datatable-pjax - $.pjax.reload({container: '#crud-datatable-pjax'}); + options['container'] = '#crud-datatable-pjax'; } else { - $.pjax.reload({container: response.forceReload}); + options['container'] = response.forceReload; } + + // Check if pjax url exist + if (response.forceReloadUrl !== undefined && response.forceReloadUrl) { + options['url'] = response.forceReloadUrl; + } + + $.pjax.reload(options); } } diff --git a/src/assets/ModalRemote.min.js b/src/assets/ModalRemote.min.js index 4c212f6..c6aa2bf 100644 --- a/src/assets/ModalRemote.min.js +++ b/src/assets/ModalRemote.min.js @@ -1 +1 @@ -function ModalRemote(t){this.defaults={okLabel:"OK",executeLabel:"Execute",cancelLabel:"Cancel",loadingTitle:"Loading"},this.modal=$(t),this.dialog=$(t).find(".modal-dialog"),this.header=$(t).find(".modal-header"),this.content=$(t).find(".modal-body"),this.footer=$(t).find(".modal-footer"),this.loadingContent='
',this.show=function(){this.clear(),$(this.modal).modal("show")},this.hide=function(){$(this.modal).modal("hide")},this.toggle=function(){$(this.modal).modal("toggle")},this.clear=function(){$(this.modal).find(".modal-title").remove(),$(this.content).html(""),$(this.footer).html("")},this.setSize=function(t){$(this.dialog).removeClass("modal-lg"),$(this.dialog).removeClass("modal-sm"),"large"==t?$(this.dialog).addClass("modal-lg"):"small"==t?$(this.dialog).addClass("modal-sm"):"normal"!==t&&console.warn("Undefined size "+t)},this.setHeader=function(t){$(this.header).html(t)},this.setContent=function(t){$(this.content).html(t)},this.setFooter=function(t){$(this.footer).html(t)},this.setTitle=function(t){$(this.header).find("h4.modal-title").remove(),$(this.header).find("button.close").remove(),$(this.header).append('')},this.hidenCloseButton=function(){$(this.header).find("button.close").hide()},this.showCloseButton=function(){$(this.header).find("button.close").show()},this.displayLoading=function(){this.setContent(this.loadingContent),this.setTitle(this.defaults.loadingTitle)},this.addFooterButton=function(t,o,e,i){buttonElm=document.createElement("button"),buttonElm.setAttribute("type",null===o?"button":o),buttonElm.setAttribute("class",null===e?"btn btn-primary":e),buttonElm.innerHTML=t;var a=this;$(this.footer).append(buttonElm),null!==i&&$(buttonElm).click(function(t){i.call(a,this,t)})},this.doRemote=function(t,o,e){var i=this;$.ajax({url:t,method:o,data:e,async:!1,beforeSend:function(){(function(){this.show(),this.displayLoading()}).call(i)},error:function(t){(function(t){this.setTitle(t.status+t.statusText),this.setContent(t.responseText),this.addFooterButton("Close","button","btn btn-default",function(t,o){this.hide()})}).call(i,t)},success:function(t){(function(t){void 0!==t.forceReload&&t.forceReload&&("true"==t.forceReload?$.pjax.reload({container:"#crud-datatable-pjax"}):$.pjax.reload({container:t.forceReload}));if(void 0!==t.forceClose&&t.forceClose)return void this.hide();void 0!==t.size&&this.setSize(t.size);void 0!==t.title&&this.setTitle(t.title);void 0!==t.content&&this.setContent(t.content);void 0!==t.footer&&this.setFooter(t.footer);void 0!==$(this.content).find("form")[0]&&this.setupFormSubmit($(this.content).find("form")[0],$(this.footer).find('[type="submit"]')[0])}).call(i,t)},contentType:!1,cache:!1,processData:!1})},this.setupFormSubmit=function(t,o){if(void 0===o)console.warn("Modal has form but does not have a submit button");else{var e=this;$(o).click(function(o){var i;i=window.FormData?new FormData($(t)[0]):$(t).serializeArray(),e.doRemote($(t).attr("action"),$(t).hasAttr("method")?$(t).attr("method"):"GET",i)})}},this.confirmModal=function(t,o,e,i,a,s,n,d){this.show(),this.setSize(a),void 0!==t&&this.setTitle(t),this.setContent('
'+o);var l=this;this.addFooterButton(void 0===e?this.defaults.okLabel:e,"submit","btn btn-primary",function(t){var o;window.FormData?(o=new FormData($("#ModalRemoteConfirmForm")[0]),void 0!==d&&d&&o.append("pks",d.join())):(o=$("#ModalRemoteConfirmForm"),void 0!==d&&d&&(o.pks=d),o=o.serializeArray()),l.doRemote(s,n,o)}),this.addFooterButton(void 0===i?this.defaults.cancelLabel:i,"button","btn btn-default pull-left",function(t){this.hide()})},this.open=function(t,o){$(t).hasAttr("data-confirm-title")||$(t).hasAttr("data-confirm-message")?this.confirmModal($(t).attr("data-confirm-title"),$(t).attr("data-confirm-message"),$(t).attr("data-confirm-ok"),$(t).attr("data-confirm-cancel"),$(t).hasAttr("data-modal-size")?$(t).attr("data-modal-size"):"normal",$(t).hasAttr("href")?$(t).attr("href"):$(t).attr("data-url"),$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",o):this.doRemote($(t).hasAttr("href")?$(t).attr("href"):$(t).attr("data-url"),$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",o)}}jQuery.fn.hasAttr=function(t){return void 0!==this.attr(t)}; +function ModalRemote(t){this.defaults={okLabel:"OK",executeLabel:"Execute",cancelLabel:"Cancel",loadingTitle:"Loading"},this.modal=$(t),this.dialog=$(t).find(".modal-dialog"),this.header=$(t).find(".modal-header"),this.content=$(t).find(".modal-body"),this.footer=$(t).find(".modal-footer"),this.loadingContent='
',this.show=function(){this.clear(),$(this.modal).modal("show")},this.hide=function(){$(this.modal).modal("hide")},this.toggle=function(){$(this.modal).modal("toggle")},this.clear=function(){$(this.modal).find(".modal-title").remove(),$(this.content).html(""),$(this.footer).html("")},this.setSize=function(t){$(this.dialog).removeClass("modal-xl"),$(this.dialog).removeClass("modal-lg"),$(this.dialog).removeClass("modal-sm"),"large"==t?$(this.dialog).addClass("modal-lg"):"xlarge"==t?$(this.dialog).addClass("modal-xl"):"small"==t?$(this.dialog).addClass("modal-sm"):"normal"!==t&&console.warn("Undefined size "+t)},this.setHeader=function(t){$(this.header).html(t)},this.setContent=function(t){$(this.content).html(t)},this.setFooter=function(t){$(this.footer).html(t)},this.setTitle=function(t){$(this.header).find("h4.modal-title").remove(),$(this.header).find("button.close").remove(),$(this.header).append('')},this.hidenCloseButton=function(){$(this.header).find("button.close").hide()},this.showCloseButton=function(){$(this.header).find("button.close").show()},this.displayLoading=function(){this.setContent(this.loadingContent),this.setTitle(this.defaults.loadingTitle)},this.addFooterButton=function(t,o,e,i){buttonElm=document.createElement("button"),buttonElm.setAttribute("type",null===o?"button":o),buttonElm.setAttribute("class",null===e?"btn btn-primary":e),buttonElm.innerHTML=t;var a=this;$(this.footer).append(buttonElm),null!==i&&$(buttonElm).click(function(t){i.call(a,this,t)})},this.doRemote=function(t,o,e){var i=this;$.ajax({url:t,method:o,data:e,beforeSend:function(){(function(){this.show(),this.displayLoading()}).call(i)},error:function(t){(function(t){this.setTitle(t.status+t.statusText),this.setContent(t.responseText),this.addFooterButton("Close","button","btn btn-default",function(t,o){this.hide()})}).call(i,t)},success:function(t){(function(t){if($(t.forceReload).length>0&&void 0!==t.forceReload&&t.forceReload){let o={};"true"==t.forceReload?o.container="#crud-datatable-pjax":o.container=t.forceReload,void 0!==t.forceReloadUrl&&t.forceReloadUrl&&(o.url=t.forceReloadUrl),$.pjax.reload(o)}if(void 0!==t.forceClose&&t.forceClose)return void this.hide();void 0!==t.size&&this.setSize(t.size);void 0!==t.title&&this.setTitle(t.title);void 0!==t.content&&this.setContent(t.content);void 0!==t.footer&&this.setFooter(t.footer);void 0!==$(this.content).find("form")[0]&&this.setupFormSubmit($(this.content).find("form")[0],$(this.footer).find('[type="submit"]')[0])}).call(i,t)},contentType:!1,cache:!1,processData:!1})},this.setupFormSubmit=function(t,o){if(void 0===o)console.warn("Modal has form but does not have a submit button");else{var e=this;$(o).click(function(o){var i;i=window.FormData?new FormData($(t)[0]):$(t).serializeArray(),e.doRemote($(t).attr("action"),$(t).hasAttr("method")?$(t).attr("method"):"GET",i)})}},this.confirmModal=function(t,o,e,i,a,s,n,d){this.show(),this.setSize(a),void 0!==t&&this.setTitle(t),this.setContent(''+o);var l=this;this.addFooterButton(void 0===e?this.defaults.okLabel:e,"submit","btn btn-primary",function(t){var o;window.FormData?(o=new FormData($("#ModalRemoteConfirmForm")[0]),void 0!==d&&d&&o.append("pks",d.join())):(o=$("#ModalRemoteConfirmForm"),void 0!==d&&d&&(o.pks=d),o=o.serializeArray()),l.doRemote(s,n,o)}),this.addFooterButton(void 0===i?this.defaults.cancelLabel:i,"button","btn btn-default pull-left",function(t){this.hide()})},this.open=function(t,o){$(t).hasAttr("data-confirm-title")||$(t).hasAttr("data-confirm-message")?this.confirmModal($(t).attr("data-confirm-title"),$(t).attr("data-confirm-message"),$(t).attr("data-confirm-ok"),$(t).attr("data-confirm-cancel"),$(t).hasAttr("data-modal-size")?$(t).attr("data-modal-size"):"normal",$(t).hasAttr("href")?$(t).attr("href"):$(t).attr("data-url"),$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",o):this.doRemote($(t).hasAttr("href")?$(t).attr("href"):$(t).attr("data-url"),$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",o)}}jQuery.fn.hasAttr=function(t){return void 0!==this.attr(t)};