iszolea-ui 1.2.81-pbi-27010.1 → 1.2.81-sprint.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/js/index.js
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
</div>`);return this.allowPreviewExt.some(g=>r.Id.endsWith(g))&&l.append(i),l.append(n),t||l.append(s),l}}).dxList("instance")}open(t=[],r=!1){this.$content=this.initMarkup(),this.list=this.initList(r),this.uploader=this.initUploader(r),this.dialog=J({title:"Document Manager",height:this.settings.height,width:this.settings.width},this.$content,{text:"Close",onClick:i=>i()},void 0),this.documents=t}close(){var t;(t=this.dialog)==null||t.close()}set documents(t){this.items=t,this.list.option("dataSource",this.items)}get documents(){return this.items}onUploaded(t){this.on(this.ON_UPLOADED,t)}onDeleted(t){this.on(this.ON_DELETED,t)}onOpen(t){this.on(this.ON_OPEN,t)}onDownload(t){this.on(this.ON_DOWNLOAD,t)}};var $e=class extends z{constructor(t={}){super();this.settings=t}initMarkup(){return $(`
|
|
39
39
|
<div class="image-gallery">
|
|
40
40
|
</div>
|
|
41
|
-
`)}initGallery(){return $(this.$content).dxGallery({dataSource:[]}).dxGallery("instance")}open(t=[]){this.$content=this.initMarkup(),this.gallery=this.initGallery(),this.dialog=J({title:"Image Gallery",height:this.settings.height,width:this.settings.width},this.$content,{text:"Close",onClick:r=>r()},void 0),this.images=t}close(){var t;(t=this.dialog)==null||t.close()}set images(t){this.items=t,this.gallery.option("dataSource",this.items.map(r=>({imageAlt:r.Name,imageSrc:r.Url})))}get images(){return this.items}};var Do={};ie(Do,{show:()=>wo});var xr=ht(Cr());function ji(o,t){o.attr("src",t)}function Vi(o){let t=$("<div>").addClass("image-crop-popup__dropzone"),r=$("<div>").addClass("image-crop-popup__crop-container").appendTo(t),i=$("<img />").prependTo(r);ji(i,o);let n=new xr.default(i[0],{startSize:[90,90,"%"]});return{$content:t,cropper:n}}function ki(o,t,r){J({title:"Edit image",showTitle:!0,dragEnabled:!1,resizeEnabled:!1,showCloseButton:!0,hideOnOutsideClick:!1,maxWidth:1024,onInitialized:i=>{i.component&&i.component.option("fullScreen",window.innerWidth<=1024)}},o,{text:"Update",onClick:i=>{let n=t.getValue(),s=$("<canvas>").attr("height",n.height).attr("width",n.width),l=s[0].getContext("2d"),g=o.find("img.croppr-image")[0];l.drawImage(g,n.x,n.y,n.width,n.height,0,0,n.width,n.height);let p=s[0].toDataURL("image/jpeg",.9);r(p),i()}},{text:"Cancel",onClick:i=>i()})}function wo(o,t){let r=Vi(o);ki(r.$content,r.cropper,t)}var Ar=o=>new Promise((t,r)=>{try{let i=new FileReader;i.onload=()=>{let n=i.result;t(typeof n=="string"?n:null)},i.readAsDataURL(o)}catch(i){r(i)}});var _o=10,Co=class{constructor(t,r,i,n){this.accountSettingsData=i,this.currentUserInfo=n,this._$rootElement=t,this.formAction=r}render(){this.renderUploader(this.$rootElement),this.renderAccountSettingsForm(this.$rootElement)}get $rootElement(){if(!this._$rootElement)throw new Error("The root element is undefined");return this._$rootElement}renderUploader(t){this.avatarUploader=$("<div>").addClass("avatar-popup__uploader").dxFileUploader({multiple:!1,uploadMode:"useForm",accept:"image/*",visible:!1,maxFileSize:_o*1e6,onValueChanged:r=>{if(!r.component||!r.value)return;let i=r.value[0],n=r.component.option("maxFileSize")||_o;if(!i||i.size>n){DevExpress.ui.notify(`File size should be less than ${_o} MB. Please select another file`,"error",5e3);return}Ar(i).then(s=>{wo(s,l=>{var g,p;(g=this.accountSettingsForm)==null||g.updateData("Avatar",l),(p=this.accountSettingsForm)==null||p.repaint()})}).catch(s=>DevExpress.ui.notify(s,"error",3e3))}}).appendTo(t).dxFileUploader("instance")}renderAccountSettingsForm(t){var r;this.accountSettingsForm||(this.accountSettingsForm=$("<form />").attr("action",this.formAction).attr("method","post").addClass("account-settings__form").addClass("form-content").appendTo(t).dxForm(this.getFormOptions()).dxForm("instance"),((r=this.accountSettingsData)==null?void 0:r.HasChanges)&&!this.accountSettingsData.ErrorMessage&&setTimeout(()=>Rr.widgets.notify("Changes have been saved",!0),500))}getFormOptions(){return{formData:this.accountSettingsData,minColWidth:200,labelLocation:"top",alignItemLabels:!0,showValidationSummary:!0,items:[{itemType:"group",colCount:16,items:[{colSpan:6,caption:"Profile Picture",itemType:"group",items:[{itemType:"simple",label:{visible:!1},dataField:"Avatar",template:t=>{var s;let r=$("<div>").addClass("account-settings__avatar-view-container"),i=$("<div>").addClass("account-settings__avatar");$("<div>").add(r).add($("<div>").addClass("account-settings__avatar-button").dxButton({width:200,type:"default",icon:"photo",text:"Upload new image",onInitialized:l=>this.avatarUploader&&this.avatarUploader.option("dialogTrigger",l.element)})).appendTo(i);let n=t.editorOptions.value||((s=this.currentUserInfo)==null?void 0:s.UserAvatar);return n?($("<img>").addClass("account-settings__avatar-view").attr("src",n).appendTo(r),t.editorOptions.value&&$("<input>").addClass("account-settings__avatar-input").attr("type","text").attr("name","Avatar").appendTo(i).val(t.editorOptions.value)):$("<i>").addClass(["account-settings__avatar-view-default","fas","fa-user"]).appendTo(r),i}}]},{itemType:"empty",colSpan:1},{colSpan:9,caption:"Account Details",itemType:"group",items:[{itemType:"simple",dataField:"ErrorMessage",label:{visible:!1},template:t=>{let r=t&&t.editorOptions&&t.editorOptions.value;return r&&$("<div />").text(r).addClass("error-message")}},{itemType:"simple",dataField:"UserName",label:{text:"Username"},validationRules:[{type:"required",message:"Username is required"}]},{itemType:"group",colCount:2,items:[{itemType:"simple",dataField:"FirstName",label:{text:"First Name"},validationRules:[{type:"required",message:"First Name is required"}]},{itemType:"simple",dataField:"LastName",label:{text:"Last Name"},validationRules:[{type:"required",message:"Last Name is required"}]}]},{itemType:"simple",dataField:"PhoneNumber",label:{text:"Phone Number"}},{itemType:"simple",dataField:"Email",label:{text:"Email"},validationRules:[{type:"required",message:"Email is required"},{type:"email",message:"Please use a valid email address"}]},{itemType:"simple",cssClass:"account-settings__password-area",template:()=>$("<div />").css("font-weight","bold").text("Change Password")},{itemType:"simple",dataField:"OldPassword",label:{text:"Current password"},editorOptions:{mode:"password"},validationRules:[{type:"custom",reevaluate:!0,validationCallback:t=>{var r,i;return((i=(r=this.accountSettingsForm)==null?void 0:r.getEditor("NewPassword"))==null?void 0:i.option("value"))?!!t:!0},message:"Old password is required"}]},{itemType:"simple",dataField:"NewPassword",label:{text:"New password"},editorOptions:{mode:"password",inputAttr:{autocomplete:"new-password"}}},{itemType:"simple",dataField:"NewPasswordRepeat",label:{text:"Confirm new password"},editorOptions:{mode:"password"},validationRules:[{type:"custom",reevaluate:!0,validationCallback:t=>{var r,i;return(((i=(r=this.accountSettingsForm)==null?void 0:r.getEditor("NewPassword"))==null?void 0:i.option("value"))||"")===t.value},message:"Password mismatch"}]},{itemType:"button",horizontalAlignment:"right",cssClass:"account-settings__submit-btn",buttonOptions:{text:"Save Changes",type:"success",useSubmitBehavior:!0,width:200}}]}]}]}}};var xo={};ie(xo,{createConfirm:()=>Gi});function Gi(o){let t=$.Deferred(),i=$("<div/>").appendTo(window.document.body).dxPopup({showTitle:!1,height:140,width:370,contentTemplate:n=>{n.addClass("iszolea-dx-confirm"),$("<b/>").addClass("message").text(o).appendTo(n);let s=$("<div/>").addClass("buttons").appendTo(n);$("<div/>").dxButton({text:"Delete",type:"danger",onClick:()=>{i.hide(),t.resolve(!0)}}).appendTo(s),$("<div/>").dxButton({text:"Cancel",onClick:()=>{i.hide(),t.resolve(!1)}}).appendTo(s)},onHidden:()=>{i.dispose(),i.element().remove()}}).dxPopup("instance");return i.show(),t}var Ao={};ie(Ao,{createLanding:()=>$i});function $i(o,t,r,i={enabled:!1}){Hi(t).then(n=>{Wi(o,n,r,i)})}function Hi(o){let t=$.Deferred();if(typeof o=="string"){let r=window.sessionStorage.getItem(De);r?t.resolve(JSON.parse(r)):x(o,"post").done(i=>{let n={applicationName:i.ApplicationName,businessName:i.BusinessName,landingPageLogo:i.LandingPageLogo,logoImage:i.LogoImage,description:i.Description};window.sessionStorage.setItem(De,JSON.stringify(n)),t.resolve(n)})}else t.resolve(o);return t}function Wi(o,t,r,i){let n=$("<div />").addClass("iszolea-landing-page").appendTo(o),s=$("<div />").addClass("landing-container").appendTo(n);i.enabled?n.addClass("photo-gallery-mode"):(n.addClass("default-mode"),s=n);let l=$("<img />").attr("src",t.landingPageLogo).addClass("logo-large").on("error",g=>l.css("display","none")).appendTo(s);$("<div />").addClass("logo-container").appendTo(s).append(l,$("<span />").addClass("business-name").text(t.businessName).appendTo(s)),$("<h2 />").text(`Welcome to ${t.description}`).appendTo(s),r&&$("<div />").addClass("sign-in-button").append($("<div />").dxButton({text:"Sign In",width:k.isLegacyRender?void 0:"200px",type:"default",onClick:()=>{window.sessionStorage.clear(),window.location.href=`/Home/Login?returnUrl=${encodeURIComponent(window.location.href.toString())}`}})).appendTo(s),i.enabled&&_t(i.$container||n,i.imageUrls||[],i.imgChangeIntervalSec||8,i.transitionTimeSec||2)}var Ro={};ie(Ro,{createAccessDeniedToReport:()=>zi});function zi(o,t,r){let i=$("<div>").addClass("access-denied-to-report-page").appendTo(o);if($("<h2>").addClass("error-text").text("Access denied to the report").appendTo(i),t&&t.length){let n=t.map(s=>$("<span>").addClass("role").text(s));$("<p>").text("Required roles for report: ").append(n).appendTo(i)}if(r&&r.length){let n=r.map(s=>$("<span>").addClass("role").text(s));$("<p>").text("Required roles for db connection: ").append(n).appendTo(i)}}var $o={};ie($o,{ControlConfigurator:()=>lt,ControlDisplay:()=>pt,DisplayManager:()=>ut,default:()=>Ae});function ee(o,t){let r=$("<p/>").html(t).text(),i=$("<div>",{class:"report-details-popover"}).html(r).appendTo(document.body);return $(i).dxPopover({target:o,showEvent:"dxclick",position:"bottom",width:500}).dxPopover("instance")}function Yi(o,t,r={},i,n,s=!1){let l=!1,g={export:{enabled:!!r.exportFileName,allowExportSelectedData:!0},remoteOperations:!0,columnAutoWidth:!0,showBorders:!0,selection:{mode:"multiple"},keyboardNavigation:{enabled:!1},paging:{pageSize:50},searchPanel:{visible:!0},filterRow:{visible:!0},headerFilter:{visible:!0},scrolling:{mode:"virtual"},onContentReady:h=>{if(Ji(h.component),!l){if(l=!0,!s)for(let E=0;E<h.component.columnCount();E++){let T=h.component.columnOption(E,"dataType");h.component.columnOption(E,"width")||(T==="boolean"&&h.component.columnOption(E,"width","100px"),T==="datetime"&&h.component.columnOption(E,"width","150px"))}setTimeout(()=>{let E=h.component.getScrollable();E&&E.scrollTo({top:0})})}},onToolbarPreparing:h=>{i&&h.toolbarOptions.items.unshift({location:"before",template(){let E=$("<h2 />").addClass("grid-header").text(i);return n&&E.append($("<i />").addClass("fas").addClass("fa-info-circle").addClass("report-details-link").attr("title","Click to see further details")),E}})}},p=t.onContentReady?h=>{g.onContentReady(h),t.onContentReady(h)}:g.onContentReady;Ki(t,r);let m=$.extend({},g,t,{onContentReady:p}),S=o.dxDataGrid(m).dxDataGrid("instance");return S.element().addClass(oe.dxDataGrid),S}function Ki(o,t){var i,n,s;if((n=(i=o==null?void 0:o.summary)==null?void 0:i.totalItems)==null?void 0:n.some(l=>l.summaryType==="count"))return;let r=t==null?void 0:t.summaryColumn;!r&&((s=o==null?void 0:o.columns)==null?void 0:s.length)&&(r=typeof o.columns[0]=="string"?o.columns[0]:o.columns[0].dataField),r&&(o.summary||(o.summary={}),o.summary.totalItems||(o.summary.totalItems=[]),o.summary.totalItems.push({column:r,summaryType:"count"}))}function Ji(o){var s,l,g;let t=o.option("summary.totalItems"),r=(s=t==null?void 0:t.filter(p=>p.summaryType==="count")[0])==null?void 0:s.column,i=r&&o.getVisibleColumns().findIndex(p=>p.dataField===r);if(!i){let p=o.option("selection");i=p&&p.mode!=="none"?o.getVisibleColumns().findIndex(S=>!!S.dataField):0}let n=(l=o.getVisibleColumns()[i])==null?void 0:l.dataField;n&&r!==n&&o.option("summary",{totalItems:[{column:(g=o.getVisibleColumns()[i])==null?void 0:g.dataField,summaryType:"count"}]})}function He(o,t,r={},i,n,s=!1,l=!1){let g=Yi(o,t,r,i,n,s);return l||de(g),g}function ge(o,t){return $("<span>").attr("title",t).text(o)}function at(o,t){let r=$.Deferred();return x(o,"POST",JSON.stringify(t),!1,{contentType:"application/json"}).done(r.resolve).fail(i=>{r.reject(i)}),r.promise()}var Ot=class{constructor(t,r){this.$container=t,this.data=r||[]}render(){let t={dataSource:this.data,editing:{mode:"row",allowAdding:!0,allowDeleting:!0,allowUpdating:!0,useIcons:!0},headerFilter:{visible:!1},grouping:{contextMenuEnabled:!1},groupPanel:{visible:!1},searchPanel:{visible:!1},filterRow:{visible:!1},remoteOperations:!1,selection:{mode:"none"},columns:[{dataField:"value",allowEditing:!0},{dataField:"title",allowEditing:!0},{dataField:"image",allowEditing:!0,cellTemplate:(i,n)=>{$("<div>").css({"text-align":"center"}).append($("<img>",{src:n.data.image})).appendTo(i)},editCellTemplate:(i,n)=>{let s=n.value||"",l=$('<div style="position: relative; display: flex; align-items: center; justify-content: center;" />'),g=$(`<img src="${s}" />`),p=$('<a class="dx-link dx-icon-upload" style="position: absolute; right: 8px; text-decoration: none; font-size: 18px;" />'),m=$('<input type="file" style="display:none;" />');return p.on("click",()=>{m.click()}),m.on("change",S=>{if(S.target.files.length){let h=new FileReader;h.onloadend=()=>{g.attr("src",h.result),n.setValue(h.result)};let E=S.target.files[0];E?h.readAsDataURL(E):g.attr("src","")}}),g.appendTo(l),p.appendTo(l),m.appendTo(l),l}},{type:"buttons",width:100,buttons:["edit",{hint:"Delete",icon:"trash",onClick:i=>{let n=this.grid.option("dataSource");n.splice(i.row.rowIndex,1),this.grid.option("dataSource",n)}}]}]},r=$("<div />").appendTo(this.$container);this.grid=V(r,{options:t,isFullScreen:!1})}getData(){return this.grid.option("dataSource")}getBaseType(){return"string"}};var Ut=class{constructor(t,r){this.$container=t,this.data=A({items:[],multiselect:!1},r)}render(){let t={dataSource:this.data.items,height:400,keyExpr:"key",editing:{mode:"row",allowAdding:!0,allowDeleting:!0,allowUpdating:!0,useIcons:!0},headerFilter:{visible:!1},grouping:{contextMenuEnabled:!1},groupPanel:{visible:!1},searchPanel:{visible:!1},filterRow:{visible:!1},remoteOperations:!1,selection:{mode:"none"},columns:[{dataField:"key",visible:!1},{dataField:"value",allowEditing:!0},{type:"buttons",width:100,buttons:["edit",{hint:"Delete",icon:"trash",onClick:i=>{let n=this.grid.option("dataSource");n.splice(i.row.rowIndex,1),this.grid.option("dataSource",n)}}]}],toolbar:{items:[{location:"before",widget:"dxCheckBox",options:{text:"Multiselect",value:this.data.multiselect,onValueChanged:i=>{this.data.multiselect=i.value}}},{location:"after",name:"addRowButton"}]},onInitNewRow:i=>{let s=(this.grid.option("dataSource")||[]).map(g=>g.key),l=Math.max(0,...s);i.data.key=l+1}},r=$("<div />").appendTo(this.$container);this.grid=V(r,{options:t,isFullScreen:!1})}getData(){return{items:this.grid.option("dataSource"),multiselect:this.data.multiselect}}getBaseType(){return"string"}};var Pt=class{constructor(t,r,i){this.$container=t,this.data={multiple:(r==null?void 0:r.multiple)||!1,metaDataFields:(r==null?void 0:r.metaDataFields)||[]},this.initData=i}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"multiple",editorType:"dxCheckBox",visible:!1},{dataField:"metaDataFields",editorType:"dxTagBox",editorOptions:{items:this.initData.fields}}]}).appendTo(this.$container).dxForm("instance")}getData(){return this.form.option("formData")}getBaseType(){return"string"}};var Nt=class{constructor(t,r,i){this.$container=t,this.data=r,this.initData=i}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"actionType",validationRules:[{type:"required"}]},{dataField:"fields",validationRules:[{type:"required"},{type:"custom",validationCallback:t=>t.value.length>0,message:"Required"}],editorType:"dxTagBox",editorOptions:{dataSource:this.initData.fields,searchEnabled:!0}}]}).appendTo(this.$container).dxForm("instance")}getData(){if(!this.form.validate().isValid)return;let r=this.form.getEditor("actionType").option("value"),i=this.form.getEditor("fields").option("value");return{actionType:r,fields:i}}getBaseType(){return"string"}};var Lt=class{constructor(t,r){this.$container=t,this.data={url:typeof(r==null?void 0:r.url)>"u"?"":r.url,text:typeof(r==null?void 0:r.text)>"u"?"":r.text,openNewTab:typeof(r==null?void 0:r.openNewTab)>"u"?!0:r.openNewTab,useStaticLink:r?typeof r.useStaticLink>"u"?!0:r.useStaticLink:!1}}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"useStaticLink",editorType:"dxCheckBox",editorOptions:{onValueChanged:t=>{this.form.itemOption("url","visible",t.value)}}},{visible:this.data.useStaticLink,dataField:"url",validationRules:[{type:"required"}]},{dataField:"text",label:{text:"Text (optional)"}},{dataField:"openNewTab",label:{text:"Open in a new tab"},editorType:"dxCheckBox"}]}).appendTo(this.$container).dxForm("instance")}getData(){var l;if(!this.form.validate().isValid)return;let r=(l=this.form.getEditor("url"))==null?void 0:l.option("value"),i=this.form.getEditor("text").option("value"),n=this.form.getEditor("openNewTab").option("value"),s=this.form.getEditor("useStaticLink").option("value");return{url:r,text:i,openNewTab:n,useStaticLink:s}}getBaseType(){return"string"}};var Bt=class{constructor(t,r,i,n){this.$container=t,this.data=A({multiselect:!1,grouping:!1,table:"",key:"",fields:[]},r),this.initData=i,this.baseType=n,this.allowedTypes=!n||n==="string"?["string","number"]:["number"],this.loadPanel=$("<div />").dxLoadPanel({visible:!1,message:"Loading...",container:this.$container,position:{of:this.$container},shading:!0,showPane:!0}).dxLoadPanel("instance")}async loadTables(){let t=await x(`${this.initData.getContextTablesUrl}?contextName=${this.initData.context}&sort=[{'selector':'FullTableName','desc':false}]`);return(t==null?void 0:t.data)||[]}async loadFields(t){let r=await x(`${this.initData.getTableFieldsUrl}?contextName=${this.initData.context}&table=${t}`);return(r==null?void 0:r.data)||[]}updateTablesDS(t){this.form.getEditor("table").option("dataSource",t)}updateKeyDS(t){let r=t.filter(n=>this.allowedTypes.includes(n.Type)).map(n=>n.Name);this.form.getEditor("key").option("dataSource",r)}updateFieldsDS(t){let r=t.map(n=>n.Name);this.form.getEditor("fields").option("dataSource",r)}updateCheckboxes(){let t=this.form.getEditor("multiselect"),r=this.form.getEditor("grouping");r.option("disabled",!!t.option("value")),t.option("disabled",this.baseType==="number"||!!r.option("value"))}render(){this.form=$("<div />").dxForm({labelLocation:"top",width:"100%",formData:this.data,onContentReady:()=>window.setTimeout(()=>this.updateCheckboxes()),items:[{dataField:"table",editorType:"dxSelectBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[],displayExpr:"FullTableName",valueExpr:"FullTableName",searchEnabled:!0,itemTemplate:t=>{let r=$("<div />");return $("<span />").text(t.FullTableName).appendTo(r),t.EntityType===2?$("<span />").text("View").addClass("source-badge view-badge").appendTo(r):t.EntityType===1&&$("<span />").text("Table").addClass("source-badge table-badge").appendTo(r),r},onValueChanged:async t=>{let r=t.component&&t.component.option("selectedItem"),i=this.form.getEditor("key"),n=this.form.getEditor("fields");try{this.loadPanel.show();let s=await this.loadFields(r.FullTableName);this.updateKeyDS(s),this.updateFieldsDS(s),i.option("value",null),i.option("disabled",!1),n.option("value",null),n.option("disabled",!1)}finally{this.loadPanel.hide()}}}},{dataField:"key",editorType:"dxSelectBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[]}},{dataField:"fields",editorType:"dxTagBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[]}},{itemType:"group",colCount:2,items:[{dataField:"multiselect",editorType:"dxCheckBox",editorOptions:{disabled:this.baseType==="number",onValueChanged:()=>this.updateCheckboxes()},label:{location:"left"}},{dataField:"grouping",editorType:"dxCheckBox",editorOptions:{onValueChanged:()=>this.updateCheckboxes()},label:{location:"left"}}]}]}).dxForm("instance"),this.$container.append(this.form.element()).append(this.loadPanel.element()),this.loadPanel.show(),Promise.all([this.loadTables(),this.data.table?this.loadFields(this.data.table):Promise.resolve([])]).then(t=>{let r=t[0],i=t[1];this.updateTablesDS(r),this.updateKeyDS(i),this.updateFieldsDS(i)}).finally(()=>this.loadPanel.hide())}getData(){if(!!this.form.validate().isValid)return this.form.option("formData")}getBaseType(){return this.baseType||"string"}};var Ce={[1]:{name:"CreatedAt",type:"date",displayType:JSON.stringify({type:10006,data:{}})},[2]:{name:"CreatedBy",type:"string",displayType:JSON.stringify({type:10001,data:{}})},[3]:{name:"LastUpdateAt",type:"date",displayType:JSON.stringify({type:10006,data:{}})},[4]:{name:"LastUpdateBy",type:"string",displayType:JSON.stringify({type:10001,data:{}})}},qi={string:JSON.stringify({type:10001,data:{}}),number:JSON.stringify({type:10002,data:{}}),decimal:JSON.stringify({type:10003,data:{}}),boolean:JSON.stringify({type:10004,data:{}}),datetime:JSON.stringify({type:10005,data:{}}),date:JSON.stringify({type:10006,data:{}})},Qi={[1]:"string",[2]:"string",[8]:"string",[3]:"string",[4]:"string",[5]:"decimal",[6]:"string",[7]:"string",[10001]:"string",[10002]:"number",[10003]:"decimal",[10004]:"boolean",[10005]:"datetime",[10006]:"date"},Xi={string:[10001,10002,10003,10004,10005,10006,1,3,4,6,7,2,8],number:[10001,10002,10003,10004,10005,10006,5,8],decimal:[10001,10002,10003,10004,10005,10006,5],boolean:[10001,10002,10003,10004,10005,10006],datetime:[10001,10002,10003,10004,10005,10006],date:[10001,10002,10003,10004,10005,10006]};var lt=class{constructor(t,r,i){this.baseTypeTitle="Base Type";this.customTypeTitle="Custom Type";this.displayTypes=[{key:10001,value:"String",type:this.baseTypeTitle},{key:10002,value:"Number",type:this.baseTypeTitle},{key:10003,value:"Decimal",type:this.baseTypeTitle},{key:10004,value:"Boolean",type:this.baseTypeTitle},{key:10005,value:"Datetime",type:this.baseTypeTitle},{key:10006,value:"Date",type:this.baseTypeTitle},{key:1,value:"Icons",type:this.customTypeTitle},{key:2,value:"PredefinedValues",type:this.customTypeTitle},{key:8,value:"ReferencedValue",type:this.customTypeTitle},{key:3,value:"RabbitAction",type:this.customTypeTitle},{key:4,value:"Hyperlink",type:this.customTypeTitle},{key:5,value:"DollarValue",type:this.customTypeTitle},{key:7,value:"Image",type:this.customTypeTitle},{key:6,value:"Document",type:this.customTypeTitle}];this.editors={[1]:Ot,[2]:Ut,[8]:Bt,[3]:Nt,[4]:Lt,[7]:Pt};this.editorsInitData={};this.fields=[];this.systemFieldPredefinedData=null;this.$container=t.$container,this.isStandalonePage=t.isStandalonePage,this.groupFieldsUrl=t.groupFieldsUrl,this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl,this.batchUpdateDataUrl=t.batchUpdateDataUrl,this.addDataUrl=t.addDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.updateGlobalSearchUrl=t.updateGlobalSearchUrl,this.updateInlineEditingUrl=t.updateInlineEditingUrl,this.pageTitle=t.pageTitle,this.isDataReadonly=!!t.isDataReadonly,this.disableGlobalSearch=t.disableGlobalSearch,this.enableInlineEditing=t.enableInlineEditing,this.getReportSourceDetailsUrl=t.getReportSourceDetailsUrl,this.getContextTablesUrl=t.getContextTablesUrl,this.getTableFieldsUrl=t.getTableFieldsUrl,this.onGlobalSearchSettingsChanged=r,this.onEnableInlineEditingChanged=i}getSqlEntityTypeName(t){switch(t){case 1:return"Table";case 3:return"Stored Procedure";case 2:return"View";case 0:default:return""}}render(){this.$container.addClass("aps-grid"),Promise.all([this.getAvailableFields(),this.getReportSourceDetails()]).then(t=>{this.fields=t[0],this.reportSourceDetails=t[1],this.editorsInitData[3]=()=>({fields:this.fields}),this.editorsInitData[7]=()=>({fields:this.fields}),this.editorsInitData[8]=()=>({getContextTablesUrl:this.getContextTablesUrl,getTableFieldsUrl:this.getTableFieldsUrl,context:this.reportSourceDetails.ConnectionName}),this.createMainGrid()})}async getAvailableFields(){return x(this.groupFieldsUrl)}async getReportSourceDetails(){return x(this.getReportSourceDetailsUrl)}getDisplayTypeEditor(t,r,i,n){let s=this.editors[r],l=this.editorsInitData[r];return s?new s(t,n,l?l():null,i):null}metaDataColumnTemplate(t,r){return t.css("background-color","#eee"),r.value?$('<i class="fas fa-check" style="font-size: 18px; color: #0366d6;"></i>'):$('<i class="fas fa-minus" style="font-size: 18px; color: #333;"></i>')}createMainGrid(){let t,r={dataSource:this.createMainGridDataSource(),columnChooser:{enabled:!0,allowSearch:!0,mode:"select"},errorRowEnabled:!0,height:"100%",editing:{mode:"batch",allowUpdating:!0,allowAdding:!this.isDataReadonly,allowDeleting:!this.isDataReadonly,refreshMode:"repaint",useIcons:!0},repaintChangesOnly:!0,remoteOperations:{summary:!0,paging:!0,grouping:!1,sorting:!1,filtering:!1},grouping:{allowCollapsing:!1},groupPanel:{visible:!1},selection:{mode:"multiple"},allowColumnReordering:!1,columnHidingEnabled:!1,hoverStateEnabled:!0,columnAutoWidth:!1,rowAlternationEnabled:!0,columnMinWidth:80,columns:this.prepareMainGridColumns([{dataField:"Name",caption:"Field",fixed:!0,fixedPosition:"left",sortOrder:"asc",sortIndex:1,width:180,validationRules:[{type:"required"}],cellTemplate:(n,s)=>{let l=$(`<div style="display: flex; align-items: center;">${(s==null?void 0:s.value)||""}</div>`);s.data.IsSystemColumn&&l.prepend('<i class="icon dx-icon-info" style="margin-right: 4px; color: #aaa;" title="System field"></i>'),n.append(l)}},{dataField:"IsSystemColumn",allowEditing:!1,dataType:"boolean",sortOrder:"asc",sortIndex:0,visible:!1},{dataField:"Type",allowEditing:!1,width:120,lookup:{dataSource:["string","number","decimal","boolean","datetime","date"]}},{dataField:"DisplayType",allowEditing:!0,validationRules:[{type:"required"}],width:160,calculateCellValue:n=>n.DisplayType===null?n.Type?qi[n.Type]:null:n.DisplayType,customizeText:n=>{if(!n.value)return null;let s=le(n.value)?JSON.parse(n.value):{},l=this.displayTypes.find(g=>g.key===(s==null?void 0:s.type));return(l==null?void 0:l.value)||""},editCellTemplate:(n,s)=>{let l=le(s.value)?JSON.parse(s.value):null,g=l?l.type:null,p=l?l.data:null,m=null,S=$("<div />").dxDropDownBox({dropDownOptions:{width:650,height:515,minHeight:515,maxHeight:515},dataSource:this.displayTypes,valueExpr:"key",displayExpr:"value",value:g,disabled:!!s.row.data.IsSystemColumn,onValueChanged:h=>{s.setValue(h.value)},contentTemplate:()=>{let h=$('<div class="display-type-editor" />'),E=$('<div style="text-align: center; color: #bbb; display: flex; align-items: center;" />').text("There are no additional settings for the selected Display Type"),T=$('<div style="margin: 8px 0; display: flex; flex-direction: row" />').appendTo(h),I=$('<div style="flex-shrink: 0;" />').appendTo(T),y=$('<div style="display: flex; justify-content: center; flex-grow: 1; margin-left: 8px;">').append(E).appendTo(T),u=$('<div style="text-align: right;" />').appendTo(h),v=$('<div style="margin-right: 8px;" />').appendTo(u),w=$('<div style="margin-right: 8px;" />').appendTo(u),D=g?this.getDisplayTypeEditor(y,g,s.data.Type,p):null;return D&&(y.html(""),D.render()),m=I.dxList({dataSource:new DevExpress.data.DataSource({store:{type:"array",data:this.displayTypes.map(_=>O(A({},_),{disabled:!s.row.isNewRow&&!Xi[s.data.Type].includes(_.key)})),key:"key"},group:"type"}),width:200,height:400,grouped:!0,selectionMode:"single",selectedItemKeys:[g],keyExpr:"key",displayExpr:"value",showScrollbar:"always",onSelectionChanged:_=>{let C=_.addedItems[0].key;D=this.getDisplayTypeEditor(y,C,s.data.Type,p),y.html(""),D?D==null||D.render():y.append(E),v.dxButton("instance").option("disabled",!1)}}).dxList("instance"),v.dxButton({text:"Save",type:"success",disabled:!D,onClick:()=>{let _=D==null?void 0:D.getData(),C=m.option("selectedItemKeys")[0],M={type:C,data:_||{}};if(S.option("value",C),s.row.isNewRow){let R=(D==null?void 0:D.getBaseType())?D.getBaseType():Qi[C];t.cellValue(s.rowIndex,"Type",R)}s.setValue(JSON.stringify(M)),s.component.closeEditCell(),S.close()}}).appendTo(u),w.dxButton({text:"Cancel",onClick:()=>{s.component.closeEditCell(),S.close()}}).appendTo(u),h},onOpened:()=>{let h=$(".display-type-editor .dx-list-item-selected");m.scrollToItem(h)}}).dxDropDownBox("instance");n.append(S.element()),s.row.data.IsSystemColumn||S.open()}},{dataField:"IsKeyColumn",caption:"Is Key",allowEditing:!0,width:100},{caption:"SQL Meta Data (Read-only)",columns:[{dataField:"IsIdentity",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"IsNullable",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"IsComputed",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"HasDefaultValue",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate}]},{dataField:"Label",allowEditing:!0,width:180},{dataField:"GroupField",caption:"Group",allowEditing:!0,width:200,editCellTemplate:(n,s)=>$("<div />").dxSelectBox({value:s.value,dataSource:[...new Set(t.getDataSource().items().filter(l=>l.GroupField).map(l=>l.GroupField).sort())],acceptCustomValue:!0,showClearButton:!0,onValueChanged:l=>{s.setValue(l.value)}})},{dataField:"DataOwner",allowEditing:!0,width:80,headerCellTemplate:ge("DO","Data Owner")},{dataField:"XLSScheduleLabel",allowEditing:!0,width:80,headerCellTemplate:ge("XLS","XLS Schedule Label")},{dataField:"IsDefaultViewField",caption:"Display in default view",allowEditing:!0,width:100},{dataField:"IsExported",caption:"Export to excel",allowEditing:!0,width:100},{dataField:"Order",allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:0,message:"Order can't be negative"}],width:80},{dataField:"Width",dataType:"number",headerCellTemplate:ge("Width","Width (in pixels)"),allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:1,message:"Width can't be less then 1px"}],width:80},{dataField:"HidingOrder",dataType:"number",headerCellTemplate:ge("Hide","Hiding Order"),allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:1,message:"Hiding order can't be less then 1"}],width:70},{dataField:"ToolTip",allowEditing:!0,minWidth:180}]),onSaving:n=>{n.cancel=!0,n.component.beginCustomLoading("Saving..."),n.changes.length&&(n.promise=at(this.batchUpdateDataUrl,n.changes).done(()=>{n.component.refresh(!0).done(()=>{n.component.cancelEditData()})}).always(()=>{n.component.endCustomLoading()}))},onRowUpdated:n=>{n.component.endCustomLoading(),n.component.repaint()},onToolbarPreparing:n=>{let s=n.toolbarOptions.items,l=s.filter(T=>T.name==="columnChooserButton")[0],g=s.indexOf(l),p={location:"after",template:()=>{let T=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});return $("<span />").css({margin:"0 5px 0 0",width:"100px"}).dxSwitch({value:this.enableInlineEditing,switchedOnText:"Inline Edit",switchedOffText:"Batch Edit",onValueChanged:({value:I})=>{this.enableInlineEditing=!I,x(this.updateInlineEditingUrl,"post",{updateInlineEditing:!!I}).then(()=>{this.onEnableInlineEditingChanged(I),P(`${I?"Inline":"Batch"} editing enabled`,!0)})}}).appendTo(T),T}},m={location:"after",template:()=>{let T=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});$("<span />").css({margin:"0 5px 0 0",width:"54px"}).dxSwitch({value:!this.disableGlobalSearch,onValueChanged:({value:y})=>{this.disableGlobalSearch=!y,x(this.updateGlobalSearchUrl,"post",{allowGlobalSearch:!!y}).then(()=>{this.onGlobalSearchSettingsChanged(y),P(`Global search ${y?"enabled":"disabled"}`,!0)})}}).appendTo(T),$("<span />").text("Allow global search").appendTo(T);let I=$("<a />").css({textDecoration:"underline",color:"blue"}).text("(?)").appendTo(T);return $("<div />").text(`For large datasets, particularly those with string values, it\u2019s advisable
|
|
41
|
+
`)}initGallery(){return $(this.$content).dxGallery({dataSource:[]}).dxGallery("instance")}open(t=[]){this.$content=this.initMarkup(),this.gallery=this.initGallery(),this.dialog=J({title:"Image Gallery",height:this.settings.height,width:this.settings.width},this.$content,{text:"Close",onClick:r=>r()},void 0),this.images=t}close(){var t;(t=this.dialog)==null||t.close()}set images(t){this.items=t,this.gallery.option("dataSource",this.items.map(r=>({imageAlt:r.Name,imageSrc:r.Url})))}get images(){return this.items}};var Do={};ie(Do,{show:()=>wo});var xr=ht(Cr());function ji(o,t){o.attr("src",t)}function Vi(o){let t=$("<div>").addClass("image-crop-popup__dropzone"),r=$("<div>").addClass("image-crop-popup__crop-container").appendTo(t),i=$("<img />").prependTo(r);ji(i,o);let n=new xr.default(i[0],{startSize:[90,90,"%"]});return{$content:t,cropper:n}}function ki(o,t,r){J({title:"Edit image",showTitle:!0,dragEnabled:!1,resizeEnabled:!1,showCloseButton:!0,hideOnOutsideClick:!1,maxWidth:1024,onInitialized:i=>{i.component&&i.component.option("fullScreen",window.innerWidth<=1024)}},o,{text:"Update",onClick:i=>{let n=t.getValue(),s=$("<canvas>").attr("height",n.height).attr("width",n.width),l=s[0].getContext("2d"),g=o.find("img.croppr-image")[0];l.drawImage(g,n.x,n.y,n.width,n.height,0,0,n.width,n.height);let p=s[0].toDataURL("image/jpeg",.9);r(p),i()}},{text:"Cancel",onClick:i=>i()})}function wo(o,t){let r=Vi(o);ki(r.$content,r.cropper,t)}var Ar=o=>new Promise((t,r)=>{try{let i=new FileReader;i.onload=()=>{let n=i.result;t(typeof n=="string"?n:null)},i.readAsDataURL(o)}catch(i){r(i)}});var _o=10,Co=class{constructor(t,r,i,n){this.accountSettingsData=i,this.currentUserInfo=n,this._$rootElement=t,this.formAction=r}render(){this.renderUploader(this.$rootElement),this.renderAccountSettingsForm(this.$rootElement)}get $rootElement(){if(!this._$rootElement)throw new Error("The root element is undefined");return this._$rootElement}renderUploader(t){this.avatarUploader=$("<div>").addClass("avatar-popup__uploader").dxFileUploader({multiple:!1,uploadMode:"useForm",accept:"image/*",visible:!1,maxFileSize:_o*1e6,onValueChanged:r=>{if(!r.component||!r.value)return;let i=r.value[0],n=r.component.option("maxFileSize")||_o;if(!i||i.size>n){DevExpress.ui.notify(`File size should be less than ${_o} MB. Please select another file`,"error",5e3);return}Ar(i).then(s=>{wo(s,l=>{var g,p;(g=this.accountSettingsForm)==null||g.updateData("Avatar",l),(p=this.accountSettingsForm)==null||p.repaint()})}).catch(s=>DevExpress.ui.notify(s,"error",3e3))}}).appendTo(t).dxFileUploader("instance")}renderAccountSettingsForm(t){var r;this.accountSettingsForm||(this.accountSettingsForm=$("<form />").attr("action",this.formAction).attr("method","post").addClass("account-settings__form").addClass("form-content").appendTo(t).dxForm(this.getFormOptions()).dxForm("instance"),((r=this.accountSettingsData)==null?void 0:r.HasChanges)&&!this.accountSettingsData.ErrorMessage&&setTimeout(()=>Rr.widgets.notify("Changes have been saved",!0),500))}getFormOptions(){return{formData:this.accountSettingsData,minColWidth:200,labelLocation:"top",alignItemLabels:!0,showValidationSummary:!0,items:[{itemType:"group",colCount:16,items:[{colSpan:6,caption:"Profile Picture",itemType:"group",items:[{itemType:"simple",label:{visible:!1},dataField:"Avatar",template:t=>{var s;let r=$("<div>").addClass("account-settings__avatar-view-container"),i=$("<div>").addClass("account-settings__avatar");$("<div>").add(r).add($("<div>").addClass("account-settings__avatar-button").dxButton({width:200,type:"default",icon:"photo",text:"Upload new image",onInitialized:l=>this.avatarUploader&&this.avatarUploader.option("dialogTrigger",l.element)})).appendTo(i);let n=t.editorOptions.value||((s=this.currentUserInfo)==null?void 0:s.UserAvatar);return n?($("<img>").addClass("account-settings__avatar-view").attr("src",n).appendTo(r),t.editorOptions.value&&$("<input>").addClass("account-settings__avatar-input").attr("type","text").attr("name","Avatar").appendTo(i).val(t.editorOptions.value)):$("<i>").addClass(["account-settings__avatar-view-default","fas","fa-user"]).appendTo(r),i}}]},{itemType:"empty",colSpan:1},{colSpan:9,caption:"Account Details",itemType:"group",items:[{itemType:"simple",dataField:"ErrorMessage",label:{visible:!1},template:t=>{let r=t&&t.editorOptions&&t.editorOptions.value;return r&&$("<div />").text(r).addClass("error-message")}},{itemType:"simple",dataField:"UserName",label:{text:"Username"},validationRules:[{type:"required",message:"Username is required"}]},{itemType:"group",colCount:2,items:[{itemType:"simple",dataField:"FirstName",label:{text:"First Name"},validationRules:[{type:"required",message:"First Name is required"}]},{itemType:"simple",dataField:"LastName",label:{text:"Last Name"},validationRules:[{type:"required",message:"Last Name is required"}]}]},{itemType:"simple",dataField:"PhoneNumber",label:{text:"Phone Number"}},{itemType:"simple",dataField:"Email",label:{text:"Email"},validationRules:[{type:"required",message:"Email is required"},{type:"email",message:"Please use a valid email address"}]},{itemType:"simple",cssClass:"account-settings__password-area",template:()=>$("<div />").css("font-weight","bold").text("Change Password")},{itemType:"simple",dataField:"OldPassword",label:{text:"Current password"},editorOptions:{mode:"password"},validationRules:[{type:"custom",reevaluate:!0,validationCallback:t=>{var r,i;return((i=(r=this.accountSettingsForm)==null?void 0:r.getEditor("NewPassword"))==null?void 0:i.option("value"))?!!t:!0},message:"Old password is required"}]},{itemType:"simple",dataField:"NewPassword",label:{text:"New password"},editorOptions:{mode:"password",inputAttr:{autocomplete:"new-password"}}},{itemType:"simple",dataField:"NewPasswordRepeat",label:{text:"Confirm new password"},editorOptions:{mode:"password"},validationRules:[{type:"custom",reevaluate:!0,validationCallback:t=>{var r,i;return(((i=(r=this.accountSettingsForm)==null?void 0:r.getEditor("NewPassword"))==null?void 0:i.option("value"))||"")===t.value},message:"Password mismatch"}]},{itemType:"button",horizontalAlignment:"right",cssClass:"account-settings__submit-btn",buttonOptions:{text:"Save Changes",type:"success",useSubmitBehavior:!0,width:200}}]}]}]}}};var xo={};ie(xo,{createConfirm:()=>Gi});function Gi(o){let t=$.Deferred(),i=$("<div/>").appendTo(window.document.body).dxPopup({showTitle:!1,height:140,width:370,contentTemplate:n=>{n.addClass("iszolea-dx-confirm"),$("<b/>").addClass("message").text(o).appendTo(n);let s=$("<div/>").addClass("buttons").appendTo(n);$("<div/>").dxButton({text:"Delete",type:"danger",onClick:()=>{i.hide(),t.resolve(!0)}}).appendTo(s),$("<div/>").dxButton({text:"Cancel",onClick:()=>{i.hide(),t.resolve(!1)}}).appendTo(s)},onHidden:()=>{i.dispose(),i.element().remove()}}).dxPopup("instance");return i.show(),t}var Ao={};ie(Ao,{createLanding:()=>$i});function $i(o,t,r,i={enabled:!1}){Hi(t).then(n=>{Wi(o,n,r,i)})}function Hi(o){let t=$.Deferred();if(typeof o=="string"){let r=window.sessionStorage.getItem(De);r?t.resolve(JSON.parse(r)):x(o,"post").done(i=>{let n={applicationName:i.ApplicationName,businessName:i.BusinessName,landingPageLogo:i.LandingPageLogo,logoImage:i.LogoImage,description:i.Description};window.sessionStorage.setItem(De,JSON.stringify(n)),t.resolve(n)})}else t.resolve(o);return t}function Wi(o,t,r,i){let n=$("<div />").addClass("iszolea-landing-page").appendTo(o),s=$("<div />").addClass("landing-container").appendTo(n);i.enabled?n.addClass("photo-gallery-mode"):(n.addClass("default-mode"),s=n);let l=$("<img />").attr("src",t.landingPageLogo).addClass("logo-large").on("error",g=>l.css("display","none")).appendTo(s);$("<div />").addClass("logo-container").appendTo(s).append(l,$("<span />").addClass("business-name").text(t.businessName).appendTo(s)),$("<h2 />").text(`Welcome to ${t.description}`).appendTo(s),r&&$("<div />").addClass("sign-in-button").append($("<div />").dxButton({text:"Sign In",width:k.isLegacyRender?void 0:"200px",type:"default",onClick:()=>{window.sessionStorage.clear(),window.location.href=`/Home/Login?returnUrl=${encodeURIComponent(window.location.href.toString())}`}})).appendTo(s),i.enabled&&_t(i.$container||n,i.imageUrls||[],i.imgChangeIntervalSec||8,i.transitionTimeSec||2)}var Ro={};ie(Ro,{createAccessDeniedToReport:()=>zi});function zi(o,t,r){let i=$("<div>").addClass("access-denied-to-report-page").appendTo(o);if($("<h2>").addClass("error-text").text("Access denied to the report").appendTo(i),t&&t.length){let n=t.map(s=>$("<span>").addClass("role").text(s));$("<p>").text("Required roles for report: ").append(n).appendTo(i)}if(r&&r.length){let n=r.map(s=>$("<span>").addClass("role").text(s));$("<p>").text("Required roles for db connection: ").append(n).appendTo(i)}}var $o={};ie($o,{ControlConfigurator:()=>lt,ControlDisplay:()=>pt,DisplayManager:()=>ut,default:()=>Ae});function ee(o,t){let r=$("<p/>").html(t).text(),i=$("<div>",{class:"report-details-popover"}).html(r).appendTo(document.body);return $(i).dxPopover({target:o,showEvent:"dxclick",position:"bottom",width:500}).dxPopover("instance")}function Yi(o,t,r={},i,n,s=!1){let l=!1,g={export:{enabled:!!r.exportFileName,allowExportSelectedData:!0},remoteOperations:!0,columnAutoWidth:!0,showBorders:!0,selection:{mode:"multiple"},keyboardNavigation:{enabled:!1},paging:{pageSize:50},searchPanel:{visible:!0},filterRow:{visible:!0},headerFilter:{visible:!0},scrolling:{mode:"virtual"},onContentReady:h=>{if(Ji(h.component),!l){if(l=!0,!s)for(let E=0;E<h.component.columnCount();E++){let T=h.component.columnOption(E,"dataType");h.component.columnOption(E,"width")||(T==="boolean"&&h.component.columnOption(E,"width","100px"),T==="datetime"&&h.component.columnOption(E,"width","150px"))}setTimeout(()=>{let E=h.component.getScrollable();E&&E.scrollTo({top:0})})}},onToolbarPreparing:h=>{i&&h.toolbarOptions.items.unshift({location:"before",template(){let E=$("<h2 />").addClass("grid-header").text(i);return n&&E.append($("<i />").addClass("fas").addClass("fa-info-circle").addClass("report-details-link").attr("title","Click to see further details")),E}})}},p=t.onContentReady?h=>{g.onContentReady(h),t.onContentReady(h)}:g.onContentReady;Ki(t,r);let m=$.extend({},g,t,{onContentReady:p}),S=o.dxDataGrid(m).dxDataGrid("instance");return S.element().addClass(oe.dxDataGrid),S}function Ki(o,t){var i,n,s;if((n=(i=o==null?void 0:o.summary)==null?void 0:i.totalItems)==null?void 0:n.some(l=>l.summaryType==="count"))return;let r=t==null?void 0:t.summaryColumn;!r&&((s=o==null?void 0:o.columns)==null?void 0:s.length)&&(r=typeof o.columns[0]=="string"?o.columns[0]:o.columns[0].dataField),r&&(o.summary||(o.summary={}),o.summary.totalItems||(o.summary.totalItems=[]),o.summary.totalItems.push({column:r,summaryType:"count"}))}function Ji(o){var s,l,g;let t=o.option("summary.totalItems"),r=(s=t==null?void 0:t.filter(p=>p.summaryType==="count")[0])==null?void 0:s.column,i=r&&o.getVisibleColumns().findIndex(p=>p.dataField===r);if(!i){let p=o.option("selection");i=p&&p.mode!=="none"?o.getVisibleColumns().findIndex(S=>!!S.dataField):0}let n=(l=o.getVisibleColumns()[i])==null?void 0:l.dataField;n&&r!==n&&o.option("summary",{totalItems:[{column:(g=o.getVisibleColumns()[i])==null?void 0:g.dataField,summaryType:"count"}]})}function He(o,t,r={},i,n,s=!1,l=!1){let g=Yi(o,t,r,i,n,s);return l||de(g),g}function ge(o,t){return $("<span>").attr("title",t).text(o)}function at(o,t){let r=$.Deferred();return x(o,"POST",JSON.stringify(t),!1,{contentType:"application/json"}).done(r.resolve).fail(i=>{r.reject(i)}),r.promise()}var Ot=class{constructor(t,r){this.$container=t,this.data=r||[]}render(){let t={dataSource:this.data,editing:{mode:"row",allowAdding:!0,allowDeleting:!0,allowUpdating:!0,useIcons:!0},headerFilter:{visible:!1},grouping:{contextMenuEnabled:!1},groupPanel:{visible:!1},searchPanel:{visible:!1},filterRow:{visible:!1},remoteOperations:!1,selection:{mode:"none"},columns:[{dataField:"value",allowEditing:!0},{dataField:"title",allowEditing:!0},{dataField:"image",allowEditing:!0,cellTemplate:(i,n)=>{$("<div>").css({"text-align":"center"}).append($("<img>",{src:n.data.image})).appendTo(i)},editCellTemplate:(i,n)=>{let s=n.value||"",l=$('<div style="position: relative; display: flex; align-items: center; justify-content: center;" />'),g=$(`<img src="${s}" />`),p=$('<a class="dx-link dx-icon-upload" style="position: absolute; right: 8px; text-decoration: none; font-size: 18px;" />'),m=$('<input type="file" style="display:none;" />');return p.on("click",()=>{m.click()}),m.on("change",S=>{if(S.target.files.length){let h=new FileReader;h.onloadend=()=>{g.attr("src",h.result),n.setValue(h.result)};let E=S.target.files[0];E?h.readAsDataURL(E):g.attr("src","")}}),g.appendTo(l),p.appendTo(l),m.appendTo(l),l}},{type:"buttons",width:100,buttons:["edit",{hint:"Delete",icon:"trash",onClick:i=>{let n=this.grid.option("dataSource");n.splice(i.row.rowIndex,1),this.grid.option("dataSource",n)}}]}]},r=$("<div />").appendTo(this.$container);this.grid=V(r,{options:t,isFullScreen:!1})}getData(){return this.grid.option("dataSource")}getBaseType(){return"string"}};var Ut=class{constructor(t,r){this.$container=t,this.data=A({items:[],multiselect:!1},r)}render(){let t={dataSource:this.data.items,height:400,keyExpr:"key",editing:{mode:"row",allowAdding:!0,allowDeleting:!0,allowUpdating:!0,useIcons:!0},headerFilter:{visible:!1},grouping:{contextMenuEnabled:!1},groupPanel:{visible:!1},searchPanel:{visible:!1},filterRow:{visible:!1},remoteOperations:!1,selection:{mode:"none"},columns:[{dataField:"key",visible:!1},{dataField:"value",allowEditing:!0},{type:"buttons",width:100,buttons:["edit",{hint:"Delete",icon:"trash",onClick:i=>{let n=this.grid.option("dataSource");n.splice(i.row.rowIndex,1),this.grid.option("dataSource",n)}}]}],toolbar:{items:[{location:"before",widget:"dxCheckBox",options:{text:"Multiselect",value:this.data.multiselect,onValueChanged:i=>{this.data.multiselect=i.value}}},{location:"after",name:"addRowButton"}]},onInitNewRow:i=>{let s=(this.grid.option("dataSource")||[]).map(g=>g.key),l=Math.max(0,...s);i.data.key=l+1}},r=$("<div />").appendTo(this.$container);this.grid=V(r,{options:t,isFullScreen:!1})}getData(){return{items:this.grid.option("dataSource"),multiselect:this.data.multiselect}}getBaseType(){return"string"}};var Pt=class{constructor(t,r,i){this.$container=t,this.data={multiple:(r==null?void 0:r.multiple)||!1,metaDataFields:(r==null?void 0:r.metaDataFields)||[],showPreview:r.showPreview},this.initData=i}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"multiple",editorType:"dxCheckBox",visible:!1},{dataField:"metaDataFields",editorType:"dxTagBox",editorOptions:{items:this.initData.fields}}]}).appendTo(this.$container).dxForm("instance")}getData(){return this.form.option("formData")}getBaseType(){return"string"}};var Nt=class{constructor(t,r,i){this.$container=t,this.data=r,this.initData=i}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"actionType",validationRules:[{type:"required"}]},{dataField:"fields",validationRules:[{type:"required"},{type:"custom",validationCallback:t=>t.value.length>0,message:"Required"}],editorType:"dxTagBox",editorOptions:{dataSource:this.initData.fields,searchEnabled:!0}}]}).appendTo(this.$container).dxForm("instance")}getData(){if(!this.form.validate().isValid)return;let r=this.form.getEditor("actionType").option("value"),i=this.form.getEditor("fields").option("value");return{actionType:r,fields:i}}getBaseType(){return"string"}};var Lt=class{constructor(t,r){this.$container=t,this.data={url:typeof(r==null?void 0:r.url)>"u"?"":r.url,text:typeof(r==null?void 0:r.text)>"u"?"":r.text,openNewTab:typeof(r==null?void 0:r.openNewTab)>"u"?!0:r.openNewTab,useStaticLink:r?typeof r.useStaticLink>"u"?!0:r.useStaticLink:!1}}render(){this.form=$("<div />").dxForm({formData:this.data,width:"100%",labelLocation:"top",items:[{dataField:"useStaticLink",editorType:"dxCheckBox",editorOptions:{onValueChanged:t=>{this.form.itemOption("url","visible",t.value)}}},{visible:this.data.useStaticLink,dataField:"url",validationRules:[{type:"required"}]},{dataField:"text",label:{text:"Text (optional)"}},{dataField:"openNewTab",label:{text:"Open in a new tab"},editorType:"dxCheckBox"}]}).appendTo(this.$container).dxForm("instance")}getData(){var l;if(!this.form.validate().isValid)return;let r=(l=this.form.getEditor("url"))==null?void 0:l.option("value"),i=this.form.getEditor("text").option("value"),n=this.form.getEditor("openNewTab").option("value"),s=this.form.getEditor("useStaticLink").option("value");return{url:r,text:i,openNewTab:n,useStaticLink:s}}getBaseType(){return"string"}};var Bt=class{constructor(t,r,i,n){this.$container=t,this.data=A({multiselect:!1,grouping:!1,table:"",key:"",fields:[]},r),this.initData=i,this.baseType=n,this.allowedTypes=!n||n==="string"?["string","number"]:["number"],this.loadPanel=$("<div />").dxLoadPanel({visible:!1,message:"Loading...",container:this.$container,position:{of:this.$container},shading:!0,showPane:!0}).dxLoadPanel("instance")}async loadTables(){let t=await x(`${this.initData.getContextTablesUrl}?contextName=${this.initData.context}&sort=[{'selector':'FullTableName','desc':false}]`);return(t==null?void 0:t.data)||[]}async loadFields(t){let r=await x(`${this.initData.getTableFieldsUrl}?contextName=${this.initData.context}&table=${t}`);return(r==null?void 0:r.data)||[]}updateTablesDS(t){this.form.getEditor("table").option("dataSource",t)}updateKeyDS(t){let r=t.filter(n=>this.allowedTypes.includes(n.Type)).map(n=>n.Name);this.form.getEditor("key").option("dataSource",r)}updateFieldsDS(t){let r=t.map(n=>n.Name);this.form.getEditor("fields").option("dataSource",r)}updateCheckboxes(){let t=this.form.getEditor("multiselect"),r=this.form.getEditor("grouping");r.option("disabled",!!t.option("value")),t.option("disabled",this.baseType==="number"||!!r.option("value"))}render(){this.form=$("<div />").dxForm({labelLocation:"top",width:"100%",formData:this.data,onContentReady:()=>window.setTimeout(()=>this.updateCheckboxes()),items:[{dataField:"table",editorType:"dxSelectBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[],displayExpr:"FullTableName",valueExpr:"FullTableName",searchEnabled:!0,itemTemplate:t=>{let r=$("<div />");return $("<span />").text(t.FullTableName).appendTo(r),t.EntityType===2?$("<span />").text("View").addClass("source-badge view-badge").appendTo(r):t.EntityType===1&&$("<span />").text("Table").addClass("source-badge table-badge").appendTo(r),r},onValueChanged:async t=>{let r=t.component&&t.component.option("selectedItem"),i=this.form.getEditor("key"),n=this.form.getEditor("fields");try{this.loadPanel.show();let s=await this.loadFields(r.FullTableName);this.updateKeyDS(s),this.updateFieldsDS(s),i.option("value",null),i.option("disabled",!1),n.option("value",null),n.option("disabled",!1)}finally{this.loadPanel.hide()}}}},{dataField:"key",editorType:"dxSelectBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[]}},{dataField:"fields",editorType:"dxTagBox",isRequired:!0,editorOptions:{width:"100%",deferRendering:!1,dataSource:[]}},{itemType:"group",colCount:2,items:[{dataField:"multiselect",editorType:"dxCheckBox",editorOptions:{disabled:this.baseType==="number",onValueChanged:()=>this.updateCheckboxes()},label:{location:"left"}},{dataField:"grouping",editorType:"dxCheckBox",editorOptions:{onValueChanged:()=>this.updateCheckboxes()},label:{location:"left"}}]}]}).dxForm("instance"),this.$container.append(this.form.element()).append(this.loadPanel.element()),this.loadPanel.show(),Promise.all([this.loadTables(),this.data.table?this.loadFields(this.data.table):Promise.resolve([])]).then(t=>{let r=t[0],i=t[1];this.updateTablesDS(r),this.updateKeyDS(i),this.updateFieldsDS(i)}).finally(()=>this.loadPanel.hide())}getData(){if(!!this.form.validate().isValid)return this.form.option("formData")}getBaseType(){return this.baseType||"string"}};var Ce={[1]:{name:"CreatedAt",type:"date",displayType:JSON.stringify({type:10006,data:{}})},[2]:{name:"CreatedBy",type:"string",displayType:JSON.stringify({type:10001,data:{}})},[3]:{name:"LastUpdateAt",type:"date",displayType:JSON.stringify({type:10006,data:{}})},[4]:{name:"LastUpdateBy",type:"string",displayType:JSON.stringify({type:10001,data:{}})}},qi={string:JSON.stringify({type:10001,data:{}}),number:JSON.stringify({type:10002,data:{}}),decimal:JSON.stringify({type:10003,data:{}}),boolean:JSON.stringify({type:10004,data:{}}),datetime:JSON.stringify({type:10005,data:{}}),date:JSON.stringify({type:10006,data:{}})},Qi={[1]:"string",[2]:"string",[8]:"string",[3]:"string",[4]:"string",[5]:"decimal",[6]:"string",[7]:"string",[10001]:"string",[10002]:"number",[10003]:"decimal",[10004]:"boolean",[10005]:"datetime",[10006]:"date"},Xi={string:[10001,10002,10003,10004,10005,10006,1,3,4,6,7,2,8],number:[10001,10002,10003,10004,10005,10006,5,8],decimal:[10001,10002,10003,10004,10005,10006,5],boolean:[10001,10002,10003,10004,10005,10006],datetime:[10001,10002,10003,10004,10005,10006],date:[10001,10002,10003,10004,10005,10006]};var lt=class{constructor(t,r,i){this.baseTypeTitle="Base Type";this.customTypeTitle="Custom Type";this.displayTypes=[{key:10001,value:"String",type:this.baseTypeTitle},{key:10002,value:"Number",type:this.baseTypeTitle},{key:10003,value:"Decimal",type:this.baseTypeTitle},{key:10004,value:"Boolean",type:this.baseTypeTitle},{key:10005,value:"Datetime",type:this.baseTypeTitle},{key:10006,value:"Date",type:this.baseTypeTitle},{key:1,value:"Icons",type:this.customTypeTitle},{key:2,value:"PredefinedValues",type:this.customTypeTitle},{key:8,value:"ReferencedValue",type:this.customTypeTitle},{key:3,value:"RabbitAction",type:this.customTypeTitle},{key:4,value:"Hyperlink",type:this.customTypeTitle},{key:5,value:"DollarValue",type:this.customTypeTitle},{key:7,value:"Image",type:this.customTypeTitle},{key:6,value:"Document",type:this.customTypeTitle}];this.editors={[1]:Ot,[2]:Ut,[8]:Bt,[3]:Nt,[4]:Lt,[7]:Pt};this.editorsInitData={};this.fields=[];this.systemFieldPredefinedData=null;this.$container=t.$container,this.isStandalonePage=t.isStandalonePage,this.groupFieldsUrl=t.groupFieldsUrl,this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl,this.batchUpdateDataUrl=t.batchUpdateDataUrl,this.addDataUrl=t.addDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.updateGlobalSearchUrl=t.updateGlobalSearchUrl,this.updateInlineEditingUrl=t.updateInlineEditingUrl,this.pageTitle=t.pageTitle,this.isDataReadonly=!!t.isDataReadonly,this.disableGlobalSearch=t.disableGlobalSearch,this.enableInlineEditing=t.enableInlineEditing,this.getReportSourceDetailsUrl=t.getReportSourceDetailsUrl,this.getContextTablesUrl=t.getContextTablesUrl,this.getTableFieldsUrl=t.getTableFieldsUrl,this.onGlobalSearchSettingsChanged=r,this.onEnableInlineEditingChanged=i}getSqlEntityTypeName(t){switch(t){case 1:return"Table";case 3:return"Stored Procedure";case 2:return"View";case 0:default:return""}}render(){this.$container.addClass("aps-grid"),Promise.all([this.getAvailableFields(),this.getReportSourceDetails()]).then(t=>{this.fields=t[0],this.reportSourceDetails=t[1],this.editorsInitData[3]=()=>({fields:this.fields}),this.editorsInitData[7]=()=>({fields:this.fields}),this.editorsInitData[8]=()=>({getContextTablesUrl:this.getContextTablesUrl,getTableFieldsUrl:this.getTableFieldsUrl,context:this.reportSourceDetails.ConnectionName}),this.createMainGrid()})}async getAvailableFields(){return x(this.groupFieldsUrl)}async getReportSourceDetails(){return x(this.getReportSourceDetailsUrl)}getDisplayTypeEditor(t,r,i,n){let s=this.editors[r],l=this.editorsInitData[r];return s?new s(t,n,l?l():null,i):null}metaDataColumnTemplate(t,r){return t.css("background-color","#eee"),r.value?$('<i class="fas fa-check" style="font-size: 18px; color: #0366d6;"></i>'):$('<i class="fas fa-minus" style="font-size: 18px; color: #333;"></i>')}createMainGrid(){let t,r={dataSource:this.createMainGridDataSource(),columnChooser:{enabled:!0,allowSearch:!0,mode:"select"},errorRowEnabled:!0,height:"100%",editing:{mode:"batch",allowUpdating:!0,allowAdding:!this.isDataReadonly,allowDeleting:!this.isDataReadonly,refreshMode:"repaint",useIcons:!0},repaintChangesOnly:!0,remoteOperations:{summary:!0,paging:!0,grouping:!1,sorting:!1,filtering:!1},grouping:{allowCollapsing:!1},groupPanel:{visible:!1},selection:{mode:"multiple"},allowColumnReordering:!1,columnHidingEnabled:!1,hoverStateEnabled:!0,columnAutoWidth:!1,rowAlternationEnabled:!0,columnMinWidth:80,columns:this.prepareMainGridColumns([{dataField:"Name",caption:"Field",fixed:!0,fixedPosition:"left",sortOrder:"asc",sortIndex:1,width:180,validationRules:[{type:"required"}],cellTemplate:(n,s)=>{let l=$(`<div style="display: flex; align-items: center;">${(s==null?void 0:s.value)||""}</div>`);s.data.IsSystemColumn&&l.prepend('<i class="icon dx-icon-info" style="margin-right: 4px; color: #aaa;" title="System field"></i>'),n.append(l)}},{dataField:"IsSystemColumn",allowEditing:!1,dataType:"boolean",sortOrder:"asc",sortIndex:0,visible:!1},{dataField:"Type",allowEditing:!1,width:120,lookup:{dataSource:["string","number","decimal","boolean","datetime","date"]}},{dataField:"DisplayType",allowEditing:!0,validationRules:[{type:"required"}],width:160,calculateCellValue:n=>n.DisplayType===null?n.Type?qi[n.Type]:null:n.DisplayType,customizeText:n=>{if(!n.value)return null;let s=le(n.value)?JSON.parse(n.value):{},l=this.displayTypes.find(g=>g.key===(s==null?void 0:s.type));return(l==null?void 0:l.value)||""},editCellTemplate:(n,s)=>{let l=le(s.value)?JSON.parse(s.value):null,g=l?l.type:null,p=l?l.data:null,m=null,S=$("<div />").dxDropDownBox({dropDownOptions:{width:650,height:515,minHeight:515,maxHeight:515},dataSource:this.displayTypes,valueExpr:"key",displayExpr:"value",value:g,disabled:!!s.row.data.IsSystemColumn,onValueChanged:h=>{s.setValue(h.value)},contentTemplate:()=>{let h=$('<div class="display-type-editor" />'),E=$('<div style="text-align: center; color: #bbb; display: flex; align-items: center;" />').text("There are no additional settings for the selected Display Type"),T=$('<div style="margin: 8px 0; display: flex; flex-direction: row" />').appendTo(h),I=$('<div style="flex-shrink: 0;" />').appendTo(T),y=$('<div style="display: flex; justify-content: center; flex-grow: 1; margin-left: 8px;">').append(E).appendTo(T),u=$('<div style="text-align: right;" />').appendTo(h),v=$('<div style="margin-right: 8px;" />').appendTo(u),w=$('<div style="margin-right: 8px;" />').appendTo(u),D=g?this.getDisplayTypeEditor(y,g,s.data.Type,p):null;return D&&(y.html(""),D.render()),m=I.dxList({dataSource:new DevExpress.data.DataSource({store:{type:"array",data:this.displayTypes.map(_=>O(A({},_),{disabled:!s.row.isNewRow&&!Xi[s.data.Type].includes(_.key)})),key:"key"},group:"type"}),width:200,height:400,grouped:!0,selectionMode:"single",selectedItemKeys:[g],keyExpr:"key",displayExpr:"value",showScrollbar:"always",onSelectionChanged:_=>{let C=_.addedItems[0].key;D=this.getDisplayTypeEditor(y,C,s.data.Type,p),y.html(""),D?D==null||D.render():y.append(E),v.dxButton("instance").option("disabled",!1)}}).dxList("instance"),v.dxButton({text:"Save",type:"success",disabled:!D,onClick:()=>{let _=D==null?void 0:D.getData(),C=m.option("selectedItemKeys")[0],M={type:C,data:_||{}};if(S.option("value",C),s.row.isNewRow){let R=(D==null?void 0:D.getBaseType())?D.getBaseType():Qi[C];t.cellValue(s.rowIndex,"Type",R)}s.setValue(JSON.stringify(M)),s.component.closeEditCell(),S.close()}}).appendTo(u),w.dxButton({text:"Cancel",onClick:()=>{s.component.closeEditCell(),S.close()}}).appendTo(u),h},onOpened:()=>{let h=$(".display-type-editor .dx-list-item-selected");m.scrollToItem(h)}}).dxDropDownBox("instance");n.append(S.element()),s.row.data.IsSystemColumn||S.open()}},{dataField:"IsKeyColumn",caption:"Is Key",allowEditing:!0,width:100},{caption:"SQL Meta Data (Read-only)",columns:[{dataField:"IsIdentity",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"IsNullable",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"IsComputed",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate},{dataField:"HasDefaultValue",allowEditing:!1,width:80,minWidth:80,allowHeaderFiltering:!1,allowFiltering:!1,cellTemplate:this.metaDataColumnTemplate}]},{dataField:"Label",allowEditing:!0,width:180},{dataField:"GroupField",caption:"Group",allowEditing:!0,width:200,editCellTemplate:(n,s)=>$("<div />").dxSelectBox({value:s.value,dataSource:[...new Set(t.getDataSource().items().filter(l=>l.GroupField).map(l=>l.GroupField).sort())],acceptCustomValue:!0,showClearButton:!0,onValueChanged:l=>{s.setValue(l.value)}})},{dataField:"DataOwner",allowEditing:!0,width:80,headerCellTemplate:ge("DO","Data Owner")},{dataField:"XLSScheduleLabel",allowEditing:!0,width:80,headerCellTemplate:ge("XLS","XLS Schedule Label")},{dataField:"IsDefaultViewField",caption:"Display in default view",allowEditing:!0,width:100},{dataField:"IsExported",caption:"Export to excel",allowEditing:!0,width:100},{dataField:"Order",allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:0,message:"Order can't be negative"}],width:80},{dataField:"Width",dataType:"number",headerCellTemplate:ge("Width","Width (in pixels)"),allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:1,message:"Width can't be less then 1px"}],width:80},{dataField:"HidingOrder",dataType:"number",headerCellTemplate:ge("Hide","Hiding Order"),allowEditing:!0,editorOptions:{format:"#"},validationRules:[{type:"range",min:1,message:"Hiding order can't be less then 1"}],width:70},{dataField:"ToolTip",allowEditing:!0,minWidth:180}]),onSaving:n=>{n.cancel=!0,n.component.beginCustomLoading("Saving..."),n.changes.length&&(n.promise=at(this.batchUpdateDataUrl,n.changes).done(()=>{n.component.refresh(!0).done(()=>{n.component.cancelEditData()})}).always(()=>{n.component.endCustomLoading()}))},onRowUpdated:n=>{n.component.endCustomLoading(),n.component.repaint()},onToolbarPreparing:n=>{let s=n.toolbarOptions.items,l=s.filter(T=>T.name==="columnChooserButton")[0],g=s.indexOf(l),p={location:"after",template:()=>{let T=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});return $("<span />").css({margin:"0 5px 0 0",width:"100px"}).dxSwitch({value:this.enableInlineEditing,switchedOnText:"Inline Edit",switchedOffText:"Batch Edit",onValueChanged:({value:I})=>{this.enableInlineEditing=!I,x(this.updateInlineEditingUrl,"post",{updateInlineEditing:!!I}).then(()=>{this.onEnableInlineEditingChanged(I),P(`${I?"Inline":"Batch"} editing enabled`,!0)})}}).appendTo(T),T}},m={location:"after",template:()=>{let T=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});$("<span />").css({margin:"0 5px 0 0",width:"54px"}).dxSwitch({value:!this.disableGlobalSearch,onValueChanged:({value:y})=>{this.disableGlobalSearch=!y,x(this.updateGlobalSearchUrl,"post",{allowGlobalSearch:!!y}).then(()=>{this.onGlobalSearchSettingsChanged(y),P(`Global search ${y?"enabled":"disabled"}`,!0)})}}).appendTo(T),$("<span />").text("Allow global search").appendTo(T);let I=$("<a />").css({textDecoration:"underline",color:"blue"}).text("(?)").appendTo(T);return $("<div />").text(`For large datasets, particularly those with string values, it\u2019s advisable
|
|
42
42
|
to disable the global search function and allow filtering by column only.`).dxPopover({target:I,showEvent:"mouseenter",hideEvent:"mouseleave",position:"top",width:500}).appendTo(T),T}};s.splice(g,1);let S=s.filter(T=>T.name==="exportButton")[0],h=s.indexOf(S);s.splice(h,1),!this.isDataReadonly,s.push(m),s.push(l);let E=s.find(T=>T.name==="addRowButton");if(E){let T=null;E.widget="dxDropDownButton";let I=E.options;I.height=32,I.text="Add Field",I.hint="Add Field",I.splitButton=!0,I.keyExpr="key",I.displayExpr="text",I.dropDownOptions={width:210,onShowing:async()=>{let u=t.getDataSource()._items;T.option("items",[{key:1,text:"Add CreatedAt field",disabled:u.some(v=>v.Name===Ce[1].name)},{key:2,text:"Add CreatedBy field",disabled:u.some(v=>v.Name===Ce[2].name)},{key:3,text:"Add LastUpdateAt field",disabled:u.some(v=>v.Name===Ce[3].name)},{key:4,text:"Add LastUpdateBy field",disabled:u.some(v=>v.Name===Ce[4].name)}])}},I.onButtonClick=()=>t.addRow(),I.onItemClick=async y=>{this.systemFieldPredefinedData={Name:Ce[y.itemData.key].name,Type:Ce[y.itemData.key].type,DisplayType:Ce[y.itemData.key].displayType,IsSystemColumn:!0},t.addRow()},I.onInitialized=y=>{T=y.component}}if(this.reportSourceDetails){let T=$(`
|
|
43
43
|
<div class="cdm-sorce-details">
|
|
44
44
|
<div class="cdm-sorce-details__row">
|
|
@@ -52,7 +52,7 @@ to disable the global search function and allow filtering by column only.`).dxPo
|
|
|
52
52
|
${this.isDataReadonly?'<i title="The source data is read only, editing is not available" class="fa-solid fa-circle-info"></i>':""}
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
55
|
-
`);s.push({location:"before",template:()=>T})}},onEditorPreparing:n=>{n.parentType==="dataRow"&&n.dataField==="Name"&&(n.editorOptions.disabled=!n.row.isNewRow||!!n.row.data.IsSystemColumn)},onInitNewRow:n=>{n.data=A({IsKeyColumn:!1,IsDefaultViewField:!0,IsExported:!0,IsSystemColumn:!1,IsIdentity:!1,IsComputed:!1,IsNullable:!0,HasDefaultValue:!1},this.systemFieldPredefinedData||{}),this.systemFieldPredefinedData=null},onRowRemoved:n=>{this.fields=this.fields.filter(s=>s!==n.data.Name)},onRowInserted:n=>{this.fields.push(n.data.Name)}},i={summaryColumn:"Name"};return this.isStandalonePage?t=He(this.$container,r,i,this.pageTitle,"",!0):t=V(this.$container,{options:r,summaryColumn:i.summaryColumn,title:this.pageTitle,isFullScreen:!1}),t}prepareMainGridColumns(t){return t.forEach(r=>{(r.allowHiding===void 0||r.allowHiding===null)&&(r.allowHiding=!1),(r.showInColumnChooser===void 0||r.showInColumnChooser===null)&&(r.showInColumnChooser=!1)}),t}createMainGridDataSource(){return{store:Et({loadUrl:this.loadDataUrl,key:"Name",notifyError:!1})}}};DevExpress.ui.dxDataGrid.registerModule("columnChooserSorting",{extenders:{controllers:{columns(o){return class extends o{getChooserColumns(r){return(super.getChooserColumns(r)||[]).slice().sort((n,s)=>{let l=(n==null?void 0:n.caption)||"",g=(s==null?void 0:s.caption)||"";return l.localeCompare(g)})}}}}}});var Ur=ht(mo());var Zi=(o,t)=>{if(o===null||t===null||o.length!==t.length)return!1;for(let r=0;r<o.length;r++)if(o[r]!==t[r])return!1;return!0},We=o=>{let t=null,r=null;return function(...i){return Zi(t,i)||(r=o(...i)),t=i,r}};var me=class{constructor(t){this._currentViewId=me.defaultControlDisplayView.id;this.views=me.defaultViews;this.getViewByIdInternal=t=>this.views&&this.views.find(r=>r.id===t);this.getViewById=We(this.getViewByIdInternal);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl}get currentView(){return this.getViewById(this._currentViewId)}get currentViewId(){return this._currentViewId}set currentViewId(t){this._currentViewId=t}async getViews(){return this.views===me.defaultViews&&await this.loadViews(),this.views}updateCurrentView(t){return this.updateView(this.currentView.id,t)}async createNewView(t,r,i){let n=this.mapViewModelToDto({id:-1,name:t,gridState:r,isGlobal:i});return n=await x(this.insertDataUrl,"POST",n),await this.loadViews(),this.mapViewDtoToModel(n)}async updateView(t,r){if(t===me.defaultControlDisplayView.id)return!1;let i=this.getViewById(t);if(!i)return!1;let n=A(A({},i),r),s=this.mapViewModelToDto(n);return s=await x(this.updateDataUrl,"PUT",s),await this.loadViews(),!0}async deleteView(t){return t===me.defaultControlDisplayView.id||!this.getViewById(t)?!1:(await x(this.deleteDataUrl,"DELETE",{viewId:t}),await this.loadViews(),!0)}async loadViews(){let t=await ae(this.loadDataUrl);return this.views=t.map(r=>this.mapViewDtoToModel(r)),this.views.unshift(me.defaultControlDisplayView),this.resetCachedResultOfGetViewByIdFunction(),this.views}mapViewModelToDto(t){return{Id:t.id,Name:t.name,GridState:JSON.stringify(t.gridState),IsGlobal:t.isGlobal}}mapViewDtoToModel(t){return{id:t.Id,name:t.Name,gridState:JSON.parse(t.GridState),isGlobal:t.IsGlobal}}resetCachedResultOfGetViewByIdFunction(){this.getViewById=We(this.getViewByIdInternal)}},W=me;W.defaultControlDisplayView={id:0,name:"Default",gridState:null,isGlobal:!1},W.defaultViews=[me.defaultControlDisplayView];var Mo=class{constructor(t){var r;this.options=t,this.currentSavedGridState=t.initialState,this.imagePreviewSizeMap=((r=t.initialState)==null?void 0:r.imagePreviewSizeMap)??{},this.options.owner.option("stateStoring",{enabled:!0,type:"custom",customLoad:()=>Promise.resolve(this.currentSavedGridState)})}prepareUnsavedGridState(t){if(t.columns){let r=t.columns.filter(n=>n.visible),i=r[r.length-1];i.width=void 0}return t.imagePreviewSizeMap=this.imagePreviewSizeMap,t}get hasChanges(){return this.currentSavedGridState!==null&&JSON.stringify(this.currentUnsavedGridState)!==JSON.stringify(this.currentSavedGridState)}get currentUnsavedGridState(){return this.prepareUnsavedGridState(this.options.owner.state())}async apply(t,r=!0){return new Promise((i,n)=>{this.imagePreviewSizeMap=(t==null?void 0:t.imagePreviewSizeMap)||{};let s=r?void 0:this.options.owner.filter();this.options.owner.beginUpdate(),this.options.owner.clearFilter("filterValue"),this.options.owner.state(t);let l=this.options.owner.getVisibleColumns().filter(p=>!p.type);l[0]&&l[0].dataField&&this.options.owner.option("summary",{totalItems:[{column:l[0].dataField,summaryType:"count"}]}),s&&this.options.owner.filter(s),this.options.owner.endUpdate();let g=()=>{this.save(),i(),this.options.owner.off("contentReady",g)};this.options.owner.on("contentReady",g)})}save(){this.currentSavedGridState=this.currentUnsavedGridState}reset(){this.options.owner.state(this.currentSavedGridState)}setFieldPreviewSize(t,r){this.imagePreviewSizeMap[t]=r}getFieldPreviewSize(t){return this.imagePreviewSizeMap[t]}};var Oo=class{constructor(t){this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;!r||(this.removeDefaultColumnChooserButton(r),r.splice(1,0,this.viewsToolbarItem))};this.options=O(A({},t),{gridStateManager:t.gridStateManager?t.gridStateManager:new Mo({owner:t.owner,initialState:null}),gridViewsManager:t.gridViewsManager?t.gridViewsManager:new W(t.gridViewsManagerOptions),autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner)}async tryApplyView(t){let r=await this.confirmChangesLoss();return r&&await this.applyView(t),r}async applyView(t){this.beginViewApplyingLoading(),this.options.gridViewsManager.currentViewId=t,await this.options.gridStateManager.apply(this.options.gridViewsManager.currentView.gridState,!1),this.endViewApplyingLoading(),this.syncUIWithCurrentView(),this.options.onViewApplied&&this.options.onViewApplied(t)}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}removeDefaultColumnChooserButton(t){t.splice(t.findIndex(r=>r.name==="columnChooserButton"),1)}get viewsToolbarItem(){return this._viewsToolbarItem||(this._viewsToolbarItem=this.createViewsToolbarItem()),this._viewsToolbarItem}get isDefaultView(){return this.options.gridViewsManager.currentViewId===W.defaultControlDisplayView.id}get hasChanges(){let t=this.options.gridViewsManager.currentView;return this.currentViewTitle?this.currentViewTitle.option("value")!==t.name||this.options.gridStateManager.hasChanges:!1}createViewsToolbarItem(){let t=!0;return{widget:"dxDropDownBox",location:"after",text:"Views",visible:this.options.visible,cssClass:"aps-views__toolbar-item",options:{elementAttr:{class:"iszolea-md"},items:[W.defaultControlDisplayView],value:W.defaultControlDisplayView.id,valueExpr:"id",displayExpr:"name",width:200,dropDownOptions:{width:550},onInitialized:r=>{this.viewsDropdownBox=r.component,this.loadViewDropdownBoxData()},onValueChanged:async r=>{if(r.value===this.options.gridViewsManager.currentViewId||!t){t=!0;return}await this.tryApplyView(r.value)||(t=!1,this.syncUIWithCurrentView(!0))},contentTemplate:r=>{if(!r.component)return;this.viewsDataGrid=this.createViewsDataGrid(r.component),this.currentViewTitle=this.createCurrentViewTitle(r.component),this.saveViewButton=this.createSaveViewButton(),this.saveViewAsButton=this.createSaveViewAsButton(),this.columnChooserButton=this.createColumnChooserButton();let i=$("<div />").addClass("aps-views__header").append(this.currentViewTitle.element()).append(this.saveViewButton.element()).append(this.saveViewAsButton.element()).append(this.columnChooserButton.element());return $("<div />").height("100%").append(i).append(this.viewsDataGrid.element())}}}}createViewsDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!0,allowDeleting:!0,mode:"cell",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this view?"}},wordWrapEnabled:!0,loadPanel:{shading:!0},columns:[{dataField:"name",allowEditing:!1},{dataField:"isGlobal",caption:"Is Global",dataType:"boolean",width:70},{type:"buttons",buttons:[{name:"delete",visible:r=>r.row&&r.row.key!==W.defaultControlDisplayView.id}]}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,showColumnLines:!1,selection:{mode:"single"},height:"calc(100% - 51px)",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No views",onSelectionChanged:r=>{t.option("value",r.selectedRowKeys&&r.selectedRowKeys.length?r.selectedRowKeys[0]:0)},onEditorPreparing:r=>{if(r.dataField==="isGlobal"){r.editorOptions.disabled=!this.options.canCreateGlobalViews,r.editorOptions.visible=r.row.data.id!==W.defaultControlDisplayView.id;let i=r.editorOptions.onValueChanged;r.editorOptions.onValueChanged=async n=>{r.component.beginCustomLoading("Updating"),await this.options.gridViewsManager.updateView(r.row.data.id,{isGlobal:n.value}),r.component.endCustomLoading(),i(n)}}},onCellPrepared:r=>{if(r.column.type!=="buttons"||!r.data)return;!r.data.isGlobal||r.data.isGlobal&&this.options.canCreateGlobalViews||Array.from(r.cellElement.children()).forEach(n=>{$(n).css({color:"#ddd !important",cursor:"default"}).off("click")})},onRowRemoving:r=>{!r.key||this.deleteView(r.key)}}).dxDataGrid("instance")}createCurrentViewTitle(t){return $("<div />").addClass("aps-views__current-view iszolea-md").dxTextBox({value:t.option("text")||t.option("placeholder"),readOnly:this.isDefaultView}).dxTextBox("instance")}createSaveViewButton(){return $("<button />").addClass("aps-views__save-view iszolea-md").dxButton({text:"Save",type:"normal",disabled:this.isDefaultView,onClick:this.save.bind(this),icon:"save",width:87}).dxButton("instance")}createSaveViewAsButton(){return $("<button />").addClass("aps-views__save-view-as iszolea-md").dxButton({text:"Save As",type:"normal",onClick:this.createSaveAsDialog.bind(this),icon:"save",width:118}).dxButton("instance")}createColumnChooserButton(){return $("<button />").addClass("aps-views__column-chooser iszolea-md").dxButton({onClick:this.openColumnChooser.bind(this),icon:"column-chooser"}).dxButton("instance")}createSaveAsDialog(){let t=$("<div />"),r=$('<div style="margin-bottom:8px;" />').dxTextBox({placeholder:"View Name",showClearButton:!0}).dxValidator({validationRules:[{type:"required"}]}),i=r.dxTextBox("instance"),n=r.dxValidator("instance");i.element().appendTo(t);let s=$('<div style="margin-bottom:16px;" />').dxCheckBox({text:"Global view",disabled:!this.options.canCreateGlobalViews}).dxCheckBox("instance");return s.element().appendTo(t),J({title:"Create New View",height:"auto",width:"100%",maxWidth:"300px"},t,{text:"Ok",onClick:async l=>{!n.validate().isValid||(await this.saveAs(i.option("value"),s.option("value")),l())}},{text:"Cancel",onClick:l=>l()})}openColumnChooser(){this.options.owner.showColumnChooser()}async loadViewDropdownBoxData(){if(!this.viewsDropdownBox)return;let t=await this.options.gridViewsManager.getViews(),r=new DevExpress.data.ArrayStore({key:"id",data:t});this.viewsDropdownBox.option("dataSource",r),this.viewsDropdownBox.option("value",this.options.gridViewsManager.currentViewId),this.viewsDataGrid&&this.viewsDataGrid.option("dataSource",r)}async save(){!this.hasChanges||(this.options.gridStateManager.save(),await this.options.gridViewsManager.updateCurrentView({name:this.currentViewTitle.option("value"),gridState:this.options.gridStateManager.currentSavedGridState}),P("Saved",!0),await this.loadViewDropdownBoxData())}async saveAs(t,r){if(!this.options.gridStateManager)return;this.options.gridStateManager.save();let i=await this.options.gridViewsManager.createNewView(t,this.options.gridStateManager.currentSavedGridState,r);await this.loadViewDropdownBoxData(),await this.applyView(i.id),P("View is created",!0)}async deleteView(t){await this.options.gridViewsManager.deleteView(t),this.options.onViewDeleted&&this.options.onViewDeleted(t),await this.loadViewDropdownBoxData(),this.options.gridViewsManager.currentViewId!==W.defaultControlDisplayView.id&&await this.applyView(W.defaultControlDisplayView.id)}beginViewApplyingLoading(){this.currentViewTitle&&this.currentViewTitle.option("readOnly",!0),this.saveViewButton&&this.saveViewButton.option("disabled",!0),this.saveViewAsButton&&this.saveViewAsButton.option("disabled",!0),this.viewsDataGrid&&this.viewsDataGrid.beginCustomLoading("Applying...")}endViewApplyingLoading(){this.currentViewTitle&&this.currentViewTitle.option("readOnly",!1),this.saveViewButton&&this.saveViewButton.option("disabled",!1),this.saveViewAsButton&&this.saveViewAsButton.option("disabled",!1),this.viewsDataGrid&&this.viewsDataGrid.endCustomLoading()}syncUIWithCurrentView(t=!1){!t&&this.currentViewTitle&&(this.currentViewTitle.option("value",this.options.gridViewsManager.currentView.name),this.currentViewTitle.option("readOnly",this.isDefaultView)),this.viewsDropdownBox.option("value",this.options.gridViewsManager.currentViewId),setTimeout(()=>{this.viewsDataGrid&&(this.options.gridViewsManager.currentViewId===W.defaultControlDisplayView.id?this.viewsDataGrid.selectRowsByIndexes([0]):this.viewsDataGrid.selectRows([this.options.gridViewsManager.currentViewId],!1))},0);let r=this.options.gridViewsManager.currentView.isGlobal&&!this.options.canCreateGlobalViews;this.saveViewButton&&this.saveViewButton.option("disabled",this.isDefaultView||r)}async confirmChangesLoss(){return this.hasChanges?DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes"):!0}};var dt=class{constructor(t){this.getFilterByIdInternal=t=>this.filters&&this.filters.find(r=>r.id===t);this.getFilterById=We(this.getFilterByIdInternal);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl}get currentFilter(){return this.getFilterById(this._currentFilterId)}get currentFilterId(){return this._currentFilterId}set currentFilterId(t){this._currentFilterId=t}async getFilters(){return this.filters||await this.loadFilters(),this.filters}updateCurrentFilter(t){return!!this.currentFilter&&this.updateFilter(this.currentFilter.id,t)}async createNewFilter(t,r,i,n){let s=this.mapFilterModelToDto({id:-1,name:t,isDefault:i,isGlobal:n,filterState:r});return s=await x(this.insertDataUrl,"POST",s),await this.loadFilters(),this.mapFilterDtoToModel(s)}async updateFilter(t,r){let i=this.getFilterById(t);if(!i)return!1;let n=A(A({},i),r),s=this.mapFilterModelToDto(n);return s=await x(this.updateDataUrl,"PUT",s),await this.loadFilters(),!0}async deleteFilter(t){return this.getFilterById(t)?(await x(this.deleteDataUrl,"DELETE",{filterId:t}),await this.loadFilters(),!0):!1}async loadFilters(){let t=await ae(this.loadDataUrl);return this.filters=t.map(r=>this.mapFilterDtoToModel(r)),this.resetCachedResultOfGetFilterByIdFunction(),this.filters}mapFilterModelToDto(t){return{Id:t.id,Name:t.name,IsDefault:t.isDefault,IsGlobal:t.isGlobal,FilterState:JSON.stringify(t.filterState)}}mapFilterDtoToModel(t){return{id:t.Id,name:t.Name,isDefault:t.IsDefault||!1,isGlobal:t.IsGlobal||!1,filterState:JSON.parse(t.FilterState)}}resetCachedResultOfGetFilterByIdFunction(){this.getFilterById=We(this.getFilterByIdInternal)}};var Uo=class{constructor(t){this.isInFilterApplying=!1;this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;!r||r.splice(1,0,this.filtersToolbarItem)};this.options=O(A({},t),{gridFiltersManager:t.gridFiltersManager?t.gridFiltersManager:new dt(t.gridFiltersManagerOptions),autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner),this.filterExpressionCalculator=$("<div />").dxFilterBuilder({fields:this.getFlatColumnsList(this.options.owner.option("columns"))}).dxFilterBuilder("instance")}async tryApplyFilter(t){let r=await this.confirmChangesLoss();return r&&await this.applyFilter(t),r}async applyFilter(t,r=!1){this.isInFilterApplying=!0,this.options.gridFiltersManager.currentFilterId=t,this.updateFilterPopupContent(this.options.gridFiltersManager.currentFilter),this.filtersDropdownBox.option("value",this.options.gridFiltersManager.currentFilterId);let i=this.options.owner.getDataSource();if(this.options.gridFiltersManager.currentFilter){this.filterExpressionCalculator.option("value",this.options.gridFiltersManager.currentFilter.filterState);let n=this.filterExpressionCalculator.getFilterExpression();if(i.isLoading()){let s=()=>{i.off("loadingChanged",s),setTimeout(()=>{i=this.options.owner.getDataSource(),i.filter(n)})};i.on("loadingChanged",s)}else i.filter(n)}else i.filter(null);r||await i.load(),this.options.onFilterApplied&&this.options.onFilterApplied(t),this.isInFilterApplying=!1}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}get filtersToolbarItem(){return this._filtersToolbarItem||(this._filtersToolbarItem=this.createFiltersToolbarItem()),this._filtersToolbarItem}get filterPopup(){return this._filterPopup||(this._filterPopup=this.createFilterPopup()),this._filterPopup}get hasChanges(){let t=this.options.gridFiltersManager.currentFilter,r=this.filterNameTextBox&&this.filterNameTextBox.option("value"),i=t&&t.name,n=this.filterBuilder&&this.filterBuilder.option("value"),s=t&&t.filterState,l=this.filterIsGlobalCheckbox&&this.filterIsGlobalCheckbox.option("value"),g=t&&t.isGlobal;return r!==i||n!==s||l!==g}createFiltersToolbarItem(){let t=!0;return{widget:"dxDropDownBox",location:"after",text:"Data Sets",visible:this.options.visible,cssClass:"aps-filters__toolbar-item",options:{elementAttr:{class:"iszolea-md"},value:this.options.gridFiltersManager.currentFilterId,valueExpr:"id",displayExpr:"name",showClearButton:!0,placeholder:"None",width:200,dropDownOptions:{width:500},onInitialized:async r=>{this.filtersDropdownBox=r.component;let[,i]=await Promise.all([this.loadFilterDropdownBoxData(),this.options.apsControlDisplayUserSettingsManager.getUserSettings()]);i.defaultFilterId&&r.component.option("value",i.defaultFilterId)},onValueChanged:async r=>{if(this.isInFilterApplying)return;if(!t){t=!0;return}let i=r.value;await this.tryApplyFilter(i)||(t=!1,i=r.previousValue,r.component.option("value",i)),this.filtersDataGrid&&this.filtersDataGrid.selectRows(i,!1),this.currentFilterTitle&&this.currentFilterTitle.option("value",r.component.option("text")||r.component.option("placeholder"))},onOpened:r=>{!r.component||this.filtersDataGrid&&this.filtersDataGrid.selectRows(r.component.option("value"),!1)},contentTemplate:r=>{if(!r.component)return;this.filtersDataGrid=this.createFiltersDataGrid(r.component),this.currentFilterTitle=this.createCurrentFilterTitle(r.component),this.newFilterButton=this.createNewFilterButton();let i=$("<div />").addClass("aps-filters__header").append(this.currentFilterTitle.element()).append(this.newFilterButton.element());return $("<div />").css("height","100%").append(i).append(this.filtersDataGrid.element())}}}}createFiltersDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!0,allowDeleting:!0,mode:"cell",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this data set?"}},wordWrapEnabled:!0,columns:[{dataField:"name",allowEditing:!1},{dataField:"isDefault",caption:"Is Default",dataType:"boolean",width:80},{dataField:"isGlobal",caption:"Is Global",dataType:"boolean",width:70},{type:"buttons",buttons:[{icon:"edit",hint:"Edit",onClick:async r=>{if(!r.row||!r.row.key)return;await this.tryApplyFilter(r.row.key)&&!this.filterPopup.option("visible")&&this.openEditFilterPopup(this.options.gridFiltersManager.currentFilter)}},"delete"]}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,showColumnLines:!1,selection:{mode:"single"},height:"calc(100% - 51px)",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No data sets",onSelectionChanged:r=>{t.option("value",r.selectedRowKeys?r.selectedRowKeys[0]:null)},onEditorPreparing:r=>{if(r.dataField==="isGlobal"){r.editorOptions.disabled=!this.options.canCreateGlobalFilters;let i=r.editorOptions.onValueChanged;r.editorOptions.onValueChanged=async n=>{r.component.beginCustomLoading("Updating"),await this.options.gridFiltersManager.updateFilter(r.row.data.id,{isGlobal:n.value}),r.component.endCustomLoading(),i(n)}}},onCellPrepared:r=>{r.column.type!=="buttons"||!r.data||r.column.type==="buttons"&&(!r.data.isGlobal||r.data.isGlobal&&this.options.canCreateGlobalFilters||Array.from(r.cellElement.children()).forEach(n=>{$(n).css({color:"#ddd !important",cursor:"default"}).off("click")}))},onRowUpdating:r=>{if(!r.key||r.newData.isDefault===void 0)return;let i=r.component.getDataSource().items().find(n=>n.isDefault);i&&(i.isDefault=!1),this.options.apsControlDisplayUserSettingsManager.updateUserSettings({defaultFilterId:r.newData.isDefault?r.key:void 0})},onRowRemoving:r=>{!r.key||this.deleteFilter(r.key)}}).dxDataGrid("instance")}createCurrentFilterTitle(t){return $("<div />").addClass("aps-filters__current-filter").dxTextBox({value:t.option("text")||t.option("placeholder"),readOnly:!0}).dxTextBox("instance")}createNewFilterButton(){return $("<button />").addClass("aps-filters__add-new-filter iszolea-md").dxButton({text:"New Data Set",type:"normal",onClick:()=>{this.openNewFilterPopup()},icon:"plus"}).dxButton("instance")}createFilterPopup(){let t=$("<div />").appendTo("body"),r=!1;return t.dxPopup({container:this.options.owner.element(),shading:!1,resizeEnabled:!0,width:650,height:500,onShowing:i=>{this.filtersDropdownBox&&this.filtersDropdownBox.close()},onHiding:async i=>{if(!this.hasChanges||r){r=!1;return}i.cancel=!0,r=await this.confirmChangesLoss(),r&&(i.component.hide(),this.filtersDropdownBox&&this.filtersDropdownBox.open())}}).dxPopup("instance")}createFilterNameTextBox(){return $("<div />").dxTextBox({placeholder:"Enter Data Set Name..."}).dxTextBox("instance")}createFilterIsGlobalCheckbox(){return $("<div />").dxCheckBox({text:"Global data set"}).dxCheckBox("instance")}getFlatColumnsList(t,...r){let i=[];for(let n of t)if(n.columns&&n.columns.length>0){let s=this.getFlatColumnsList(n.columns);i=i.concat(s)}else{let s=$.extend({},n);if(s.dataType==="date"||s.dataType==="datetime"){let l=s.dataType==="datetime",g="dd MMM yy",m=l?"hh:mm, dd MMM yy":g,S=h=>{let E=h.split(", "),T=DevExpress.localization.parseDate(E[1],g)||null;if(T){let I=E[0].split(":");return T.setHours(parseInt(I[0])),T.setMinutes(parseInt(I[1])),T}else return null};s.format=m,s.editorTemplate=h=>$("<div />").dxDateBox({displayFormat:m,type:l?"datetime":"date",width:150,onValueChanged:({value:E})=>{h.setValue(DevExpress.localization.formatDate(E,m))},value:(l?S(h.value):DevExpress.localization.parseDate(h.value,m))||null}),s.filterOperations=["=","<>","<",">","<=",">=","isblank","isnotblank"],s.calculateFilterExpression=function(h){let E=[t,...r];return E[0]&&(l?E[0]=S(E[0]):E[0]=DevExpress.localization.parseDate(h,m)||null),this.defaultCalculateFilterExpression(...E)}}i.push(s)}return i.sort((n,s)=>{let l=(n.caption||"").toLowerCase(),g=(s.caption||"").toLowerCase();return l<g?-1:l>g?1:0})}createFilterBuilder(){return $("<div />").dxFilterBuilder({fields:this.getFlatColumnsList(this.options.owner.option("columns"))}).dxFilterBuilder("instance")}createFilterPopupContent(t){let r=$("<div />").height("100%"),i=$('<div class="aps-filters__name-container" />').height("36px");this.filterNameTextBox=this.createFilterNameTextBox(),this.filterBuilder=this.createFilterBuilder(),this.filterIsGlobalCheckbox=this.createFilterIsGlobalCheckbox(),this.filterNameTextBox.option("value",t&&t.name),this.filterNameTextBox.element().appendTo(i),this.filterIsGlobalCheckbox.option("value",t&&t.isGlobal),this.filterIsGlobalCheckbox.element().appendTo(i),this.filterIsGlobalCheckbox.option("disabled",!this.options.canCreateGlobalFilters),i.appendTo(r),this.filterBuilder.option("value",t&&t.filterState);let n=$("<div />").height("calc(100% - 36px)").appendTo(r);return this.filterBuilder.element().appendTo(n),n.dxScrollView({scrollByContent:!0}),r}createFilterPopupToolbarItems(t){return t?[this.createUpdateFilterPopupToolbarItem(),this.createSaveFilterAsNewPopupToolbarItem(),this.createResetFilterPopupToolbarItem(),this.createDeleteFilterPopupToolbarItem()]:[this.createSaveFilterPopupToolbarItem()]}createSaveFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Apply and Save",onClick:this.createNewFilter.bind(this),icon:"save"}}}createUpdateFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Apply and Update",onClick:()=>{!this.options.gridFiltersManager.currentFilter||this.updateFilter(this.options.gridFiltersManager.currentFilter)},icon:"save"}}}createSaveFilterAsNewPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Save As New",onClick:this.createNewFilter.bind(this),icon:"save"}}}createResetFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Reset",onClick:async()=>{!this.hasChanges||!this.filterBuilder||!this.options.gridFiltersManager.currentFilter||!await DevExpress.ui.dialog.confirm("Are you sure you want to reset unsaved changes?","Reset the data set")||this.resetChanges()},icon:"undo"}}}createDeleteFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Delete Data Set",onClick:async()=>{!this.options.gridFiltersManager.currentFilter||!await DevExpress.ui.dialog.confirm(`Are you sure you want to delete the "${this.options.gridFiltersManager.currentFilter.name}" data set?`,"Delete the data set")||(await this.deleteFilter(this.options.gridFiltersManager.currentFilterId),this.filterPopup.hide())},icon:"trash"}}}async openNewFilterPopup(){!await this.tryApplyFilter(void 0)||(this.updateFilterPopupContent(),this.filterPopup.show())}openEditFilterPopup(t){this.updateFilterPopupContent(t),this.filterPopup.show()}updateFilterPopupContent(t){let r=this.filterPopup.option("animation");this.filterPopup.option("animation",void 0),this.filterPopup.option("title",t?`Edit the "${t.name}" data set`:"Create a new data set"),this.filterPopup.option("contentTemplate",()=>this.createFilterPopupContent(t)),this.filterPopup.option("toolbarItems",this.createFilterPopupToolbarItems(t)),this.filterPopup.repaint(),this.filterPopup.option("animation",r)}async createNewFilter(){if(!this.filterNameTextBox||!this.filterBuilder||!this.filterIsGlobalCheckbox)return;let t=this.filterNameTextBox.option("value"),r=this.filterBuilder.option("value"),i=!1,n=this.filterIsGlobalCheckbox.option("value");if(!t)return;let s=await this.options.gridFiltersManager.createNewFilter(t,r,i,n);await this.loadFilterDropdownBoxData(),await this.applyFilter(s.id),P("Created",!0)}async updateFilter(t){if(!this.filterNameTextBox||!this.filterBuilder||!this.filterIsGlobalCheckbox)return;let r=this.filterNameTextBox.option("value"),i=this.filterBuilder.option("value"),n=this.filterIsGlobalCheckbox.option("value");!r||!await this.options.gridFiltersManager.updateFilter(t.id,{name:r,filterState:i,isGlobal:n})||(P("Updated",!0),await this.applyFilter(this.options.gridFiltersManager.currentFilter.id),await this.loadFilterDropdownBoxData())}async deleteFilter(t){await this.options.gridFiltersManager.deleteFilter(t),this.options.onFilterDeleted&&this.options.onFilterDeleted(t),await this.applyFilter(void 0),await this.loadFilterDropdownBoxData()}resetChanges(){this.filterNameTextBox.option("value",this.options.gridFiltersManager.currentFilter.name),this.filterBuilder.option("value",this.options.gridFiltersManager.currentFilter.filterState),this.filterIsGlobalCheckbox.option("value",this.options.gridFiltersManager.currentFilter.isGlobal)}async loadFilterDropdownBoxData(){if(!this.filtersDropdownBox)return;let[t,r]=await Promise.all([this.options.apsControlDisplayUserSettingsManager.getUserSettings(),this.options.gridFiltersManager.getFilters()]);if(t.defaultFilterId){let n=r.find(s=>s.id===t.defaultFilterId);n&&(n.isDefault=!0)}let i=new DevExpress.data.ArrayStore({key:"id",data:r});this.filtersDropdownBox.option("dataSource",i),this.filtersDataGrid&&this.filtersDataGrid.option("dataSource",i)}async confirmChangesLoss(){return await new Promise(t=>setTimeout(()=>t(),0)),!this.hasChanges||!this.filterPopup.option("visible")?!0:DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes")}};var gt=class{constructor(t){this.$container=t.$container,this.cssClass=t.cssClass,this.maxFileSize=t.maxFileSize,this.acceptedFileTypes=t.acceptedFileTypes,this.selectButtonText=t.selectButtonText,this.allowedFileExtensions=t.allowedFileExtensions,this.onValueChanged=t.onValueChanged,this.onUploadStarted=t.onUploadStarted,this.onUploaded=t.onUploaded}render(){let t=$("<div />");this.cssClass&&t.addClass(this.cssClass),this.fileUploader=t.dxFileUploader({selectButtonText:this.selectButtonText,labelText:"",allowedFileExtensions:this.allowedFileExtensions,accept:this.acceptedFileTypes,uploadMode:"useForm",maxFileSize:this.maxFileSize,showFileList:!1,onValueChanged:r=>{var i;r.component.option("labelText",r.value[0]?r.value[0].name:""),(i=this.onValueChanged)==null||i.call(this,r)},onUploadStarted:r=>{var i;r.element.find(".dx-fileuploader-upload-button").hide(),(i=this.onUploadStarted)==null||i.call(this,r)},onUploaded:r=>{var i;(i=this.onUploaded)==null||i.call(this,r)}}).dxFileUploader("instance"),this.$container.append(this.fileUploader.element())}upload(t,r){return new Promise((i,n)=>{let s=new FormData,l=this.fileUploader.element().find("input")[0].files[0];s.append("file",l);for(let g in r)s.append(g,r[g]);$.ajax({url:t,type:"post",data:s,contentType:!1,processData:!1,success:g=>{g.RequestState===1?i(g.Data):n(g.Message)},error:g=>n("Unknown error")})})}};var Ft=class extends z{constructor(t){super();this.fileUploadUrl=t.fileUploadUrl,this.$container=t.$container,this.title=t.title,this.getTablesListUrl=t.getTablesListUrl,this.createTableUrl=t.createTableUrl,this.addRowsUrl=t.addRowsUrl,this.predefinedTable=t.predefinedTable,this.canChangeMode=t.predefinedImportFileMode===void 0,this.mode=t.predefinedImportFileMode!==void 0?t.predefinedImportFileMode:0,this.createTableButtonText=t.createTableButtonText||"Create Table",this.updateTableButtonText=t.updateTableButtonText||"Add New Rows",this.createTableModeText=t.createTableModeText||"Create Table",this.updateTableModeText=t.updateTableModeText||"Add New Rows"}show(){this.popup=$("<div />").appendTo(this.$container).dxPopup({showTitle:!0,title:this.title,visible:!1,dragEnabled:!1,resizeEnabled:!1,showCloseButton:!0,hideOnOutsideClick:!1,fullScreen:!0,maxWidth:1300,maxHeight:800,contentTemplate:t=>{let r=$("<div />");this.form=this.createForm(),r.append(this.form.element()),r.dxScrollView({width:"100%",height:"100%"}).appendTo(t)},toolbarItems:[{toolbar:"bottom",widget:"dxButton",location:"after",options:{text:this.getActionButtonText(),type:"success",onInitialized:t=>{this.actionButton=t.component},onClick:async()=>{this.mode===0?this.createTable():this.addRowsToTable()}}},{toolbar:"bottom",widget:"dxButton",location:"after",options:{text:"Cancel",onClick:()=>this.popup.hide()}}]}).dxPopup("instance"),this.popup.show(),this.onModeSwitching()}dispose(){this.popup&&this.popup.dispose()}createForm(){return $("<div>").dxForm({showColonAfterLabel:!0,labelLocation:"top",colCountByScreen:{md:4,sm:1},screenByWidth:r=>r<1256?"sm":"md",items:[{dataField:"Mode",itemType:"simple",template:(r,i)=>{this.createModeSwitcher(i)}},{dataField:"Schema",editorOptions:{disabled:!this.canChangeMode},validationRules:[{type:"required"}]},{dataField:"Table",editorOptions:{disabled:!this.canChangeMode},validationRules:[{type:"required"}]},{dataField:"TableSelector",label:{text:"Table"},editorType:"dxSelectBox",visible:!1,colSpan:2,editorOptions:{dataSource:new DevExpress.data.DataSource({store:se({loadUrl:this.getTablesListUrl,loadParams:{contextName:"",tablesOnly:!0,isWarehouseContext:!0},loadMethod:"post",notifyError:!1}),paginate:!1,sort:"this"}),searchEnabled:!0},validationRules:[{type:"required"}]},{dataField:"Source File",itemType:"simple",template:(r,i)=>{this.createFilesUploader(i)}},{dataField:"Columns Selector",label:{visible:!1},colSpan:4,itemType:"simple",template:(r,i)=>{this.createDataGrid(i)}}]}).dxForm("instance")}createModeSwitcher(t){$("<div />").dxButtonGroup({items:[{text:this.createTableModeText,icon:"inserttable",value:0},{text:this.updateTableModeText,icon:"insertrowbelow",value:1}],keyExpr:"value",disabled:!this.canChangeMode,stylingMode:"outlined",selectionMode:"single",selectedItemKeys:[this.mode],onItemClick:r=>{this.mode=r.itemData.value,this.onModeSwitching()}}).appendTo(t)}createFilesUploader(t){this.fileUploader=new gt({$container:t,cssClass:"table-creator__upload",maxFileSize:10*1e6,acceptedFileTypes:".xls, .xlsx",allowedFileExtensions:[".xls",".xlsx"],selectButtonText:"Select Excel file",onValueChanged:async()=>{this.dataGrid.beginCustomLoading("Parsing selected file..."),this.fileUploader.upload(this.fileUploadUrl).then(r=>{if(r){this.setRowsCount(r.RowsCount);let i=new DevExpress.data.DataSource({store:{type:"array",key:"Id",data:r.Columns},paginate:!1});this.dataGrid.option("dataSource",i)}}).catch(r=>{P(`Parsing Error : ${r}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}),this.fileUploader.render()}createDataGrid(t){let r={noDataText:"Select Excel File",hoverStateEnabled:!0,searchPanel:{visible:!1},groupPanel:{visible:!1},headerFilter:{visible:!1},filterRow:{visible:!1},sorting:{mode:"none"},paging:{pageSize:1e4,enabled:!1},editing:{allowUpdating:!0,mode:"cell"},selection:{mode:"none"},columns:[{dataField:"Id",visible:!1},{dataField:"Selected",dataType:"boolean",visible:this.mode===0},{dataField:"IsKeyColumn",dataType:"boolean",visible:this.mode===0},{dataField:"Name",caption:"Column Name"},{dataField:"Type",allowEditing:!1},{dataField:"IsNullable",allowEditing:this.mode===0&&this.canChangeMode,setCellValue:(i,n)=>{i.IsNullable=n,n&&(i.IsKeyColumn=!1)}}],remoteOperations:!1,onToolbarPreparing:i=>{i.toolbarOptions.items.push({template:()=>$("<div>").append($("<span>").addClass("table-creator__table-header").text("Parsed File Metadata")),location:"before"},{template:()=>(this.rowsCounter=$("<span>").text("1000"),this.rowsCounterContainer=$("<div>").append($("<span>").text("Rows Count: "),this.rowsCounter).hide(),this.rowsCounterContainer),location:"after"})},onEditorPreparing:i=>{if(i.parentType==="dataRow"&&i.dataField==="IsKeyColumn"){let n=i.editorOptions;n.disabled=i.row.data.IsNullable}}};this.dataGrid=V($("<div />"),{options:r,summaryColumn:"Name",isFullScreen:!1,setDefaultColumnWidth:!1}),t.append(this.dataGrid.element())}createTable(){if(this.form.validate().isValid){let r=this.dataGrid.getDataSource();r||P("Select file with data",!1);let i=r.items();if(!this.areColumnsValid(i))P("At least 1 key column must be set",!1);else{let n={schema:this.form.option("formData").Schema,table:this.form.option("formData").Table,columns:JSON.stringify(i)};this.dataGrid.beginCustomLoading("Creating and filling DB table..."),this.fileUploader.upload(this.createTableUrl,n).then(s=>{s===!0?(this.popup.hide(),P(`The table [${n.schema}].[${n.table}] has been created`,!0),this.emit(Ft.TABLE_UPDATED_EVENT)):P("The table has not been created",!1)}).catch(s=>{P(`Table creating error: ${s}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}}addRowsToTable(){if(this.form.validate().isValid){let r=this.dataGrid.getDataSource();r||P("Select file with data",!1);let i=r.items(),n={table:this.form.option("formData").TableSelector,columns:JSON.stringify(i)};this.dataGrid.beginCustomLoading("Adding rows to DB table..."),this.fileUploader.upload(this.addRowsUrl,n).then(s=>{s===!0?(this.popup.hide(),P(`The table ${n.table} has been updated`,!0),this.emit(Ft.TABLE_UPDATED_EVENT)):P("The table has not been updated",!1)}).catch(s=>{P(`Table updating error: ${s}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}onModeSwitching(){let t=this.mode===0;this.actionButton.option("text",this.getActionButtonText()),this.dataGrid.columnOption("IsKeyColumn","visible",t),this.dataGrid.columnOption("IsNullable","visible",t),this.canChangeMode?(this.form.itemOption("Schema","visible",t),this.form.itemOption("Table","visible",t),this.form.itemOption("TableSelector","visible",!t)):(this.form.itemOption("Schema","visible",!0),this.form.updateData("Schema",this.predefinedTable.schema),this.form.itemOption("Table","visible",!0),this.form.updateData("Table",this.predefinedTable.table),this.form.itemOption("TableSelector","visible",!1))}getActionButtonText(){return this.mode===0?this.createTableButtonText:this.updateTableButtonText}areColumnsValid(t){return t.filter(r=>r.Selected).some(r=>r.IsKeyColumn)}setRowsCount(t){this.rowsCounterContainer.show(),this.rowsCounter.text(t)}},xe=Ft;xe.TABLE_UPDATED_EVENT="file-importer-table-updated-event";var Po=class{constructor(t){this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;if(!r)return;let i=[this.displaysToolbarItem];this.importFileOptions&&this.importFileOptions.mode!==0&&i.push(this.importFileToolbarItem),r.splice(1,0,...i)};this.options=t,this.gridDisplaysManager=t.gridDisplaysManager,this.gridViewsManager=t.gridViewsManager,this.gridFiltersManager=t.gridFiltersManager,this.importFileOptions=t.importFileOptions,this.gridDisplaysManager.onDisplaisLoaded=r=>{let i=new DevExpress.data.ArrayStore({key:"Id",data:r});this.displaysDropdownBox&&this.displaysDropdownBox.option("dataSource",i),this.dataGrid&&this.dataGrid.option("dataSource",i),this.dataGrid&&this.dataGrid.endCustomLoading()},this.gridDisplaysManager.onDisplayChanged=r=>{this.displaysDropdownBox&&this.displaysDropdownBox.option("value",r?r.Id:null),this.currentDisplayTitle&&this.currentDisplayTitle.option("value",r?r.Name:null),this.currentDisplayTitle&&this.currentDisplayTitle.option("disabled",!r),this.saveAsButton&&this.saveAsButton.option("disabled",!r),this.saveButton&&this.saveButton.option("disabled",!r),this.dataGrid&&(r?this.dataGrid.selectRows([r.Id],!1):this.dataGrid.deselectAll())},this.integrateToGrid(this.options.owner)}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}createDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!1,allowDeleting:this.options.editMode,mode:"row",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this display?"}},loadPanel:{shading:!0},allowColumnResizing:!0,columnAutoWidth:!0,wordWrapEnabled:!0,columns:[{dataField:"Name",caption:"Display"},{dataField:"FilterId",caption:"Data Set",lookup:{valueExpr:"id",displayExpr:"name"}},{dataField:"ViewId",caption:"View",lookup:{valueExpr:"id",displayExpr:"name"}}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,height:this.options.editMode?"calc(100% - 51px)":"100%",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No displays",onInitialized:async r=>{let i=await this.gridFiltersManager.getFilters(),n=await this.gridViewsManager.getViews();r.component.columnOption("FilterId","lookup.dataSource",i),r.component.columnOption("ViewId","lookup.dataSource",n)},onCellClick:async r=>{r.rowType==="data"&&t.option("value",r.data.Id)},onRowRemoving:async r=>{this.dataGrid.beginCustomLoading("Loading"),await this.gridDisplaysManager.deleteDisplay(r.key)}}).dxDataGrid("instance")}createDisplaysToolbarItem(){let t={valueExpr:"Id",displayExpr:"Name",showClearButton:!0,placeholder:"None",width:200,onInitialized:i=>{this.displaysDropdownBox=i.component,this.gridDisplaysManager.getDisplays()},onValueChanged:async i=>{let n=this.gridDisplaysManager.currentDisplay,s=n&&n.FilterId!==this.gridFiltersManager.currentFilterId,l=n&&n.ViewId!==this.gridViewsManager.currentViewId;await(s||l?this.confirmChangesLoss():Promise.resolve(!0))&&(this.gridDisplaysManager.currentDisplayId=i.value)}},r={elementAttr:{class:"iszolea-md"},dropDownOptions:{width:800},contentTemplate:this.options.editMode?i=>{this.dataGrid=this.createDataGrid(i.component),this.currentDisplayTitle=this.createCurrentDisplayTitle(i.component),this.saveButton=this.createSaveViewButton(),this.saveAsButton=this.createSaveViewAsButton();let n=$("<div />").addClass("aps-displays__header").append(this.currentDisplayTitle.element()).append(this.saveButton.element()).append(this.saveAsButton.element()),s=$("<div />").height("100%");return this.options.editMode&&s.append(n),s.append(this.dataGrid.element()),s}:void 0,onOpened:()=>{this.saveAsButton&&this.saveAsButton.option("disabled",!this.gridFiltersManager.currentFilterId),this.saveButton&&this.saveButton.option("disabled",!this.gridDisplaysManager.currentDisplay)}};return{widget:this.options.editMode?"dxDropDownBox":"dxSelectBox",location:"after",text:"Displays",cssClass:"aps-displays__toolbar-item",options:this.options.editMode?$.extend(t,r):t}}createImportFileToolbarItem(){return{location:"after",widget:"dxButton",options:{icon:"upload",hint:"Import file",height:30,stylingMode:"text",onClick:()=>{this.fileImporter&&this.fileImporter.dispose(),this.fileImporter=new xe({$container:this.options.owner.element().parent(),title:"Import File to CDM",createTableUrl:this.importFileOptions.createTableUrl,addRowsUrl:this.importFileOptions.addRowsUrl,fileUploadUrl:this.importFileOptions.fileUploadUrl,predefinedImportFileMode:this.getPredefinedImportFileMode(this.importFileOptions.mode),predefinedTable:this.importFileOptions.predefinedTable,createTableButtonText:"Replace All Rows",createTableModeText:"Replace Rows"}),this.fileImporter.on(xe.TABLE_UPDATED_EVENT,()=>this.options.owner.refresh()),this.fileImporter.show()},onContentReady:t=>{t.element.find(".dx-button-content").css({paddingTop:5,paddingBottom:5})}}}}getPredefinedImportFileMode(t){switch(t){case 1:return 1;case 2:return 0;default:throw new Error("Unsupported mode")}}createCurrentDisplayTitle(t){return $("<div />").addClass("aps-displays__current-display iszolea-md").dxTextBox({value:t.option("text")||t.option("placeholder"),disabled:!this.gridDisplaysManager.currentDisplay}).dxTextBox("instance")}createSaveViewButton(){return $("<button />").addClass("aps-displays__save-display iszolea-md").dxButton({text:"Save",type:"normal",disabled:!this.gridDisplaysManager.currentDisplay,onClick:()=>{this.dataGrid.beginCustomLoading("Loading"),this.gridDisplaysManager.updateCurrentDisplay(this.currentDisplayTitle.option("value"),this.gridFiltersManager.currentFilterId,this.gridViewsManager.currentViewId)},icon:"save",width:125}).dxButton("instance")}createSaveViewAsButton(){return $("<button />").addClass("aps-display__save-display-as iszolea-md").dxButton({text:"Save As",type:"normal",disabled:!this.gridFiltersManager.currentFilterId,onClick:()=>this.createSaveAsDialog(),icon:"save",width:160}).dxButton("instance")}createSaveAsDialog(){let t=$("<div />"),r=$('<div style="margin-bottom:8px;" />').dxTextBox({placeholder:"Display Name",showClearButton:!0}).dxValidator({validationRules:[{type:"required"}]}),i=r.dxTextBox("instance"),n=r.dxValidator("instance");return i.element().appendTo(t),J({title:"Create New Display",height:"auto",width:"100%",maxWidth:"300px"},t,{text:"Ok",onClick:async s=>{!n.validate().isValid||(this.dataGrid.beginCustomLoading("Loading"),this.gridDisplaysManager.createNewDisplay(i.option("value"),this.gridFiltersManager.currentFilterId,this.gridViewsManager.currentViewId),s())}},{text:"Cancel",onClick:s=>s()})}async confirmChangesLoss(){return DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes")}get displaysToolbarItem(){return this._displaysToolbarItem||(this._displaysToolbarItem=this.createDisplaysToolbarItem()),this._displaysToolbarItem}get importFileToolbarItem(){return this._importFileToolbarItem||(this._importFileToolbarItem=this.createImportFileToolbarItem()),this._importFileToolbarItem}};var No=class{constructor(t){this._currentDisplayId=0;this.getDisplayById=t=>!t||!this.displays?null:this.displays.find(r=>r.Id===t);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.eventHandlers={changed:[],loaded:[]}}async loadDisplays(){return this.displays=await ae(this.loadDataUrl),this.onDisplaisLoadedPrivate(),this.displays}async getDisplays(){return this.displays||await this.loadDisplays()}async createNewDisplay(t,r,i){let n={Id:0,Name:t,FilterId:r,ViewId:i};await x(this.insertDataUrl,"POST",n),await this.loadDisplays()}async deleteDisplay(t){await x(this.deleteDataUrl,"DELETE",{id:t}),await this.loadDisplays()}updateCurrentDisplay(t,r,i){return this.updateDisplay(this.currentDisplay.Id,t,r,i)}async updateDisplay(t,r,i,n){await x(this.updateDataUrl,"PUT",{id:t,name:r,filterId:i,viewId:n}),await this.loadDisplays()}onDisplayChangedPrivate(){this.eventHandlers.changed.forEach(t=>t(this.currentDisplay))}onDisplaisLoadedPrivate(){this.eventHandlers.loaded.forEach(t=>t(this.displays))}get currentDisplayId(){return this._currentDisplayId}set currentDisplayId(t){this._currentDisplayId=t,this.onDisplayChangedPrivate()}get currentDisplay(){return this.getDisplayById(this._currentDisplayId)}set onDisplayChanged(t){this.eventHandlers.changed.push(t)}set onDisplaisLoaded(t){this.eventHandlers.loaded.push(t)}};var Lo=class{constructor(t){this.onGridEditorPreparing=t=>{if(!t.component||!t.editorOptions||t.parentType!=="dataRow"||!t.dataField||!t.row||!t.row.key)return;let r=t.dataField,i=t.row.key,n=t.editorOptions.onValueChanged;t.editorOptions.onValueChanged=s=>{n(s),this.updateMultipleRows(r,i,s.value)}};this.options=O(A({},t),{autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner)}integrateToGrid(t){t.option("selection",{mode:"multiple"}),t.on("editorPreparing",this.onGridEditorPreparing)}async updateMultipleRows(t,r,i){let n=await this.options.owner.getSelectedRowKeys();if(!n.length)return;let s=n.findIndex(l=>l===r);s<0||n.length===1||(n.splice(s,1),n.forEach(l=>{this.options.owner.cellValue(this.options.owner.getRowIndexByKey(l),t,i)}))}};var Bo=class{constructor(t){this.defaultUserSettings={defaultFilterId:void 0,defaultViewId:W.defaultControlDisplayView.id};this.isLatestLoadedUserSettingsExpired=!0;this.options=A({},t),this.options.loadedUserSettings&&(this.latestLoadedUserSettings=this.options.loadedUserSettings),this.startAutoCacheResettingTimer()}get latestLoadedUserSettings(){return this._latestLoadedUserSettings}set latestLoadedUserSettings(t){this._latestLoadedUserSettings=t,this.isLatestLoadedUserSettingsExpired=!1}async getUserSettings(){if(!this.isLatestLoadedUserSettingsExpired)return this.latestLoadedUserSettings;try{this.latestLoadedUserSettings=await this.loadUserSettings()}catch(t){console.error(t)}return this.latestLoadedUserSettings}async updateUserSettings(t){try{this.latestLoadedUserSettings=await this.updateUserSettingsInternal(t)}catch(r){console.error(r)}return this.latestLoadedUserSettings}startAutoCacheResettingTimer(){this.autoResettingCacheTimerId=window.setInterval(()=>{this.isLatestLoadedUserSettingsExpired=!0},5e3)}stopAutoCacheResettingTimer(){window.clearInterval(this.autoResettingCacheTimerId)}},jt=class extends Bo{async loadUserSettings(){let t=localStorage.getItem(jt.userSettingsStorageKey);return t?JSON.parse(t):this.defaultUserSettings}async updateUserSettingsInternal(t){let r=await this.getUserSettings(),i=A(A({},r),t);return localStorage.setItem(jt.userSettingsStorageKey,JSON.stringify(i)),i}},Mr=jt;Mr.userSettingsStorageKey="aps:control-display:user-settings";var Fo=class extends Bo{constructor(t){super(t);this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl}async loadUserSettings(){let t=await ae(this.loadDataUrl);return t?this.mapControlDisplayUserSettingsDtoToModel(t):this.defaultUserSettings}async updateUserSettingsInternal(t){let r=await this.getUserSettings(),i=A(A({},r),t),n=await x(this.updateDataUrl,"PUT",this.mapControlDisplayUserSettingsModelToDto(i));return this.mapControlDisplayUserSettingsDtoToModel(n)}mapControlDisplayUserSettingsModelToDto(t){return{DefaultFilterId:t.defaultFilterId,DefaultViewId:t.defaultViewId}}mapControlDisplayUserSettingsDtoToModel(t){return{defaultFilterId:t.DefaultFilterId,defaultViewId:t.DefaultViewId}}};function Or(o){let t="",r=o.filter(n=>n.visible),i=r.filter(n=>n.visibleIndex!==null&&n.visibleIndex!==void 0);return i.length?t=i.sort((n,s)=>n.visibleIndex-s.visibleIndex)[0].dataField:t=r[0]&&r[0].dataField||"",t}var ze=class{constructor(t){this.gridGetter=t,this.privateContructor()}get grid(){return this.gridGetter()}getServiceColumns(){return[]}getRowUpdatingHandler(){}dataRowCellPrepared(t,r,i){}};function jo(o){return typeof o=="string"?o:JSON.stringify(o)}var Vt=class{constructor(){this.invalidCells={}}addInvalidCell(t,r){let i=jo(t);this.invalidCells[i]||(this.invalidCells[i]={}),this.invalidCells[i][r]=!0}markValid(t,r){let i=jo(t);this.invalidCells[i]&&delete this.invalidCells[i][r]}isValid(t,r){let i=jo(t);return!this.invalidCells[i]||!this.invalidCells[i][r]}reset(){this.invalidCells={}}};var Vo=class extends z{constructor(t){super();this.REQUEST_STATUS_UPDATED_EVENT="REQUEST_STATUS_UPDATED";this.pendingChanges=[];this.isRequestPending=!1;this.updateUrl=t}push(t,r=!1){this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{dataChange:[t],status:0}),t.isSeparatedRequest=r,this.isRequestPending?this.pendingChanges.push(t):this.sendRequest([t])}async sendRequest(t){if(t.length!==0){this.isRequestPending=!0,this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{dataChange:t,status:1});try{let r=await x(this.updateUrl,"POST",JSON.stringify(t),!1,{contentType:"application/json"}),i=r.filter(n=>n.isSuccess);i.length&&this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:2,dataChange:i.map(n=>n.dataChange),requestsInQueue:this.pendingChanges.length>0}),r.filter(n=>!n.isSuccess).forEach(n=>{this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:3,dataChange:[n.dataChange],requestsInQueue:this.pendingChanges.length>0,error:n.error})})}catch(r){this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:3,dataChange:t,requestsInQueue:this.pendingChanges.length>0,error:r})}finally{this.isRequestPending=!1;let r=[];for(;this.pendingChanges.length;){if(this.pendingChanges[0].isSeparatedRequest){r.length||(r.push(this.pendingChanges.shift()),this.pendingChanges.shift());break}r.push(this.pendingChanges.shift())}r.length&&this.sendRequest(r)}}}};function ko(){let o=new Date().getTime(),t=typeof performance<"u"&&performance.now&&performance.now()*1e3||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(r){let i=Math.random()*16;return o>0?(i=(o+i)%16|0,o=Math.floor(o/16)):(i=(t+i)%16|0,t=Math.floor(t/16)),(r==="x"?i:i&3|8).toString(16)})}var en=(o,t)=>o.getDataSource().items().find(i=>{for(let n in t)if(i[n]!==t[n])return!1;return!0}),Ye="isoz-uuid",kt="isoz-updating-error",Gt=class extends ze{constructor(t,r,i){super(t);this.editValidationTracker=new Vt;this.pendingInsertPromise=null;this.requestQueue=new Vo(r),this.setupRequestQueue(i)}setupRequestQueue(t){let r=null,i=(n,s,l)=>{window.setTimeout(()=>{let g=this.grid.getRowElement(this.grid.getRowIndexByKey(s));!g||(n==="updating"&&g.addClass("saving"),n==="updated"&&(g.removeClass("saving").addClass("saved"),g.css({opacity:"",pointerEvents:""}),window.setTimeout(()=>g.removeClass("saved"),1e3)))})};this.requestQueue.on(this.requestQueue.REQUEST_STATUS_UPDATED_EVENT,async n=>{switch(n.status){case 0:n.dataChange.forEach(s=>{s.type==="update"&&i("updating",s.key)});break;case 1:r&&window.clearTimeout(r),t.html("<i class='dx-icon-refresh'></i> Saving...");break;case 2:r&&window.clearTimeout(r),n.requestsInQueue||(t.html("<i class='dx-icon-floppy'></i> Saved"),r=window.setTimeout(()=>t.html(""),3e3)),n.dataChange.forEach(s=>{s.type==="update"&&i("updated",s.key),s.type==="insert"&&this.pendingInsertPromise&&this.pendingInsertPromise&&(this.pendingInsertPromise.resolve(s.data),this.pendingInsertPromise=null)});break;case 3:n.dataChange.forEach(s=>{if(s.type==="insert"&&this.pendingInsertPromise&&(this.pendingInsertPromise.reject(n.error),this.pendingInsertPromise=null),s.type==="update"){let l=s.data[Ye],g="";if(l){let p=this.grid.getVisibleRows();for(let m=0;m<p.length;m++)if(p[m].data[Ye]===l){let S=n.error,h=m,E=Object.keys(s.data).find(T=>T!==Ye);g=E,this.grid.cellValue(m,kt,JSON.stringify({errMsg:S,rowIndex:h,editingField:E})),this.grid.saveEditData();break}}}});break}})}privateContructor(){}createDataSource(t){return{store:new DevExpress.data.CustomStore({key:t.key(),load:r=>t.load(r),byKey:(r,i)=>t.byKey(r,i),update:(r,i)=>{let n=$.Deferred();if(i[kt]){let{errMsg:s,rowIndex:l,editingField:g}=JSON.parse(i[kt]);n.reject(s);let p=this.grid.getKeyByRowIndex(l);p&&this.editValidationTracker.addInvalidCell(p,g),this.grid.getCellElement(l,g).addClass("aps-grid__editing-failed")}else{let s=en(this.grid,r);Object.keys(i).forEach(l=>{this.editValidationTracker.markValid(r,l)}),n.resolve($.extend(s||{},i)),this.requestQueue.push({key:r,type:"update",data:i})}return n.promise()},insert:r=>(this.pendingInsertPromise=$.Deferred(),this.requestQueue.push({type:"insert",data:r}),this.pendingInsertPromise.promise()),remove:r=>{let i=$.Deferred();return i.resolve(),this.requestQueue.push({type:"remove",key:r}),i.promise()},onLoaded:()=>{this.editValidationTracker.reset()}})}}getServiceColumns(){return[{visible:!1,dataField:Ye},{visible:!1,dataField:kt}]}getRowUpdatingHandler(){return t=>{let r=t.component.getRowIndexByKey(t.key),i=ko();t.component.getVisibleRows()[r].data[Ye]=i,t.newData[Ye]=i}}dataRowCellPrepared(t,r,i){this.editValidationTracker.isValid(t,r)||i.addClass("aps-grid__editing-failed")}};var $t=class extends ze{createDataSource(t){return{store:t}}privateContructor(){}};var tn={[1]:"string",[2]:"string",[8]:"string",[3]:"string",[4]:"string",[5]:"number",[6]:"string",[7]:"string",[10001]:"string",[10002]:"number",[10003]:"number",[10004]:"boolean",[10005]:"datetime",[10006]:"date"},pt=class{constructor(t){this.editingMode=2;this.tryParseJson=t=>{try{return JSON.parse(t.toString())}catch{return}};this.onViewApplied=t=>{this.clearFilterRowAfterViewSwitching()};this.$container=t.$container,this.$savingIndicator=t.$savingIndicator,this.isStandalonePage=t.isStandalonePage,this.pageTitle=t.pageTitle,this.exportFileName=t.exportFileName,this.userName=t.userName,this.userConfigUrl=t.userConfigUrl,this.controlLogsUrl=t.controlLogsUrl,this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl,this.addDataUrl=t.addDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.uploadDocumentUrl=t.uploadDocumentUrl,this.downloadDocumentUrl=t.downloadDocumentUrl,this.gridFiltersManagerOptions=t.gridFiltersManagerOptions,this.gridViewsManagerOptions=t.gridViewsManagerOptions,this.gridDisplaysManagerOptions=t.gridDisplaysManagerOptions,this.remoteControlDisplayUserSettingsManagerLoadOptions=t.remoteControlDisplayUserSettingsManagerLoadOptions,this.importFileOptions=t.importFileOptions,this.disableGlobalSearch=!!t.disableGlobalSearch,this.editingMode=t.enableInlineEditing?2:1,this.allowDataEditing=t.allowDataEditing,this.getReferencedDataUrl=t.getReferencedDataUrl,this.asyncSummaryLoad=t.asyncSummaryLoad,this.editingManager=this.editingMode===2?new Gt(()=>this.mainGrid,t.batchUpdateDataUrl,this.$savingIndicator):new $t(()=>this.mainGrid),this.imageManager=new ke,this.imageManager.onUploaded(async r=>{let i=this.imageManager.images.length;this.imageManager.images=await this.uploadAndUpdateDocuments(r,1),this.imageManager.selectedIndex=i}),this.imageManager.onDeleted(r=>{this.imageManager.images=this.deleteDocumentHandler(r)}),this.imageManager.onReordered(()=>this.reorderImagesHandler(this.imageManager.images)),this.documentManager=new Ge({width:550,height:600}),this.documentManager.onUploaded(async r=>{this.documentManager.documents=await this.uploadAndUpdateDocuments(r,2)}),this.documentManager.onDeleted(r=>{this.documentManager.documents=this.deleteDocumentHandler(r)}),this.documentManager.onOpen(r=>{window.open(`${this.downloadDocumentUrl}?name=${r}`,"_blank")}),this.documentManager.onDownload(r=>{window.open(r,"_blank")}),this.imageGallery=new $e,this.$container.addClass(["aps-grid","control-display-grid"]),this.loadPanel=$("<div />").dxLoadPanel({message:"Uploading..."}).dxLoadPanel("instance"),$(document.body).append(this.loadPanel.element())}showLoader(t="Uploading..."){this.loadPanel.option("message",t),this.loadPanel.show()}hideLoader(){this.loadPanel.hide()}render(){x(this.userConfigUrl).then(t=>{let r=new dt(this.gridFiltersManagerOptions),i=new W(this.gridViewsManagerOptions),n=new No(this.gridDisplaysManagerOptions);this.mainGrid=this.createMainGrid(t.FieldsConfiguration,t.CanBeCreated,t.CanBeDeleted);let s=t.CanCreateDisplays&&t.CanCreateViews&&t.CanCreateFilters;(s||t.CanApplayDisplays)&&(this.gridDisplaysToolbarComponent=new Po({owner:this.mainGrid,editMode:s,gridFiltersManager:r,gridViewsManager:i,gridDisplaysManager:n,importFileOptions:this.importFileOptions})),this.gridViewsToolbarComponent=new Oo({owner:this.mainGrid,onViewApplied:this.onViewApplied,onViewDeleted:async()=>{await n.loadDisplays()},autoIntegration:!0,gridViewsManager:i,canCreateGlobalViews:t.CanCreateGlobalViews,visible:t.CanCreateViews}),this.gridFiltersToolbarComponent=new Uo({apsControlDisplayUserSettingsManager:new Fo({userId:this.userName,loadDataUrl:this.remoteControlDisplayUserSettingsManagerLoadOptions.loadDataUrl,updateDataUrl:this.remoteControlDisplayUserSettingsManagerLoadOptions.updateDataUrl}),owner:this.mainGrid,onFilterDeleted:async l=>{await n.loadDisplays()},autoIntegration:!0,gridFiltersManager:r,canCreateGlobalFilters:t.CanCreateGlobalFilters,visible:t.CanCreateFilters}),this.multipleEditingDataGridPlugin=new Lo({owner:this.mainGrid}),n.onDisplayChanged=async l=>{l?(await this.gridFiltersToolbarComponent.applyFilter(l.FilterId,!0),await this.gridViewsToolbarComponent.applyView(l.ViewId)):(this.gridFiltersToolbarComponent.applyFilter(void 0,!0),await this.gridViewsToolbarComponent.applyView(W.defaultControlDisplayView.id))}})}async uploadAndUpdateDocuments(t,r){let i=[];try{this.showLoader("Uploading...");let n=new FormData;n.append("type",r.toString());for(let g of t)n.append("files",g);let l=await(await fetch(this.uploadDocumentUrl,{method:"POST",body:n})).json();if(l.RequestState===1){let g=this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field),p=le(g)?JSON.parse(g):[],m=l.Data;p.push(...m),this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,JSON.stringify(p)),this.editingMode===2&&this.mainGrid.saveEditData(),i=p}else P(l.Message,!1)}catch{P("Error",!1)}finally{this.hideLoader()}return i}changePreviewImageSizeHandler(t,r){this.gridViewsToolbarComponent.options.gridStateManager.setFieldPreviewSize(t,r);let n=this.mainGrid.getVisibleRows().map(s=>s.rowIndex);this.mainGrid.repaintRows(n)}deleteDocumentHandler(t){let r=this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field),n=(le(r)?JSON.parse(r):[]).filter(s=>s.Id!==t);return this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,n.length?JSON.stringify(n):""),this.editingMode===2&&this.mainGrid.saveEditData(),n}reorderImagesHandler(t){this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,t.length?JSON.stringify(t):"")}hasPermisson(t,r){return t&r}buildTree(t){let r="__GROUP__",i=t.reduce((s,l)=>(l.Columns=[],l.GroupField=l.GroupField?`${r}${l.GroupField}`:null,s[l.Name]=l,s),{});i=t.filter(s=>s.GroupField).map(s=>s.GroupField).filter((s,l,g)=>g.indexOf(s)===l).reduce((s,l)=>{let g=l.replace(r,""),p={Name:l,Label:g,Columns:[],GroupField:i[g]&&i[g].GroupField&&i[g].GroupField!==l?i[g].GroupField:null};return s[l]=p,s},i);let n=[];for(let s in i)if(i.hasOwnProperty(s)){let l=i[s];l.GroupField?i[l.GroupField].Columns.push(l):n.push(l)}return n}renderDisplayType(t,r,i,n){var s;if(t.type===1&&(r.cellTemplate=(l,g)=>{let p=String(g.value),m=t.data.find(S=>String(S.value)===p);m?$("<div>").css({"text-align":"center"}).attr("title",m.title).append($("<img>",{src:m.image})).appendTo(l):$("<div />").css({"text-align":"center"}).text(g.value).appendTo(l)},r.editCellTemplate=(l,g)=>{$("<div />").dxSelectBox({dataSource:t.data,displayValue:"title",itemTemplate:p=>$("<div />").css({"text-align":"center"}).attr("title",p.title).append($("<img>",{src:p.image})).appendTo(l),fieldTemplate:(p,m)=>{let S=t.data.find(T=>parseInt(T.value)===g.value),h=$("<div />").addClass("item-name"),E=$("<div />").addClass("aps-icon-editor__custom-item").append($("<img>",{src:S?S.image:""}).attr("title",S?S.title:"")).append(h);h.dxTextBox({value:"",readOnly:!0}),m.append(E)},onValueChanged:({value:p,component:m})=>{g.setValue(parseInt(p.value)),m.blur()},value:g.value!==null&&g!==void 0&&g.value.toString(),selectedItem:t.data.find(p=>parseInt(p.value)===g.value)}).appendTo(l)},r.allowSearch=!1,r.allowFiltering=!1,r.allowHeaderFiltering=!0,r.allowGrouping=!1),t.type===2){let l=((s=t.data)==null?void 0:s.items)||[];r.cellTemplate=(g,p)=>{let m=this.getPredefinedValuesToString(p.value,t);g.append(m)},r.editCellTemplate=(g,p)=>{let m=(p.value||"").toString().split(";").map(h=>parseInt(h)),S=$("<div />").dxDropDownBox({dataSource:l,valueExpr:"key",displayExpr:"value",value:m,showClearButton:!0,acceptCustomValue:!1,dropDownOptions:{width:400},contentTemplate:h=>{var E;return $("<div />").dxDataGrid({dataSource:l,keyExpr:"key",columns:[{dataField:"key",visible:!1},{dataField:"value"}],showBorders:!1,showColumnLines:!1,showRowLines:!1,showColumnHeaders:!1,selection:{mode:((E=t.data)==null?void 0:E.multiselect)?"multiple":"single"},selectedRowKeys:m,activeStateEnabled:!1,onSelectionChanged:T=>{let I=T.component.option("selectedRowKeys");h.component.option("value",I)}})},onValueChanged:h=>{let E=(h.value||[]).join(";");p.setValue(E)}}).dxDropDownBox("instance");g.append(S.element()),S.open()},r.headerFilter={dataSource:l.map(g=>({text:g.value,value:[r.dataField,"contains",g.key.toString()]}))},r.filterOperations=["contains"],r.calculateFilterExpression=(g,p,m)=>{if(m==="headerFilter")return[r.dataField,"contains",g];{let S=p==="<>"||p==="notcontains",h=l.filter(T=>{switch(p){case"contains":return T.value.includes(g);case"notcontains":return T.value.includes(g);case"startswith":return T.value.startsWith(g);case"endswith":return T.value.endsWith(g);case"=":return T.value===g;case"<>":return T.value===g;default:return!1}}).map(T=>[r.dataField,S?"notcontains":"contains",T.key.toString()]);return S?h.push([r.dataField,"=",null]):h.length||h.push([r.dataField,"=","__no_value__"]),h.flatMap(T=>[S?"and":"or",T]).slice(1)}}}if(t.type===8){let l=t.data.fields.map(h=>({dataField:h,allowSearch:!0,allowFiltering:!0})),g=se({key:t.data.key,loadUrl:`${this.getReferencedDataUrl}?field=${r.dataField}`,loadMode:"raw"}),p=h=>{if(h===null)return[];if(Array.isArray(h))return h;let E=this.tryParseJson(h)||h;return Array.isArray(E)?E:[E]},m=(h,E,T)=>h?E.length===1?h[E[0]]:E.reduce((y,u)=>(y.push(`${u}: ${h.hasOwnProperty(u)?h[u]:T?'<i class="referenced-value-error">Field deleted or renamed</i>':"undefined"}`),y),[]).join(", "):"",S=(h,E,T)=>{let I=$("<div />");return p(h).forEach(y=>{let u=E.lookup.calculateCellValue(y);u||T||!y?I.append(u?`<div>${u}</div>`:""):I.append(`<div><i class="referenced-value-error">Row ${t.data.table}.[${t.data.key}]=${y} not found</i></div>`)}),I};r.cellTemplate=(h,E)=>{h.append(S(E.value,E.column,E.row.isNewRow))},r.editCellTemplate=(h,E)=>{let T=$("<div />").dxDataGrid({height:500,width:"100%",dataSource:g,remoteOperations:!0,scrolling:{mode:"virtual"},selection:{mode:t.data.multiselect?"multiple":"single",showCheckBoxesMode:"always"},headerFilter:{visible:!0},filterRow:{visible:!0},selectedRowKeys:p(E.value),columns:[{dataField:t.data.key,visible:!1},...l],onSelectionChanged:y=>{I.option("value",y.selectedRowKeys)}}).dxDataGrid("instance"),I=$("<div />").dxDropDownBox({dataSource:g,value:p(E.value),valueExpr:t.data.key,displayExpr:y=>m(y,t.data.fields,!1),contentTemplate:()=>T.element(),showClearButton:!0,dropDownOptions:{width:500},onValueChanged:y=>{let u=y.value;if(!(u==null?void 0:u.length))E.setValue(null);else{let v=t.data.multiselect?JSON.stringify(u):u[0];E.setValue(v)}!t.data.multiselect&&(u==null?void 0:u.length)&&I.close()}}).dxDropDownBox("instance");h.append(I.element()),I.open()},r.lookup={dataSource:g,valueExpr:t.data.key,displayExpr:h=>m(h,t.data.fields,!0)},r.groupCellTemplate=(h,E)=>{h.append($(`
|
|
55
|
+
`);s.push({location:"before",template:()=>T})}},onEditorPreparing:n=>{n.parentType==="dataRow"&&n.dataField==="Name"&&(n.editorOptions.disabled=!n.row.isNewRow||!!n.row.data.IsSystemColumn)},onInitNewRow:n=>{n.data=A({IsKeyColumn:!1,IsDefaultViewField:!0,IsExported:!0,IsSystemColumn:!1,IsIdentity:!1,IsComputed:!1,IsNullable:!0,HasDefaultValue:!1},this.systemFieldPredefinedData||{}),this.systemFieldPredefinedData=null},onRowRemoved:n=>{this.fields=this.fields.filter(s=>s!==n.data.Name)},onRowInserted:n=>{this.fields.push(n.data.Name)}},i={summaryColumn:"Name"};return this.isStandalonePage?t=He(this.$container,r,i,this.pageTitle,"",!0):t=V(this.$container,{options:r,summaryColumn:i.summaryColumn,title:this.pageTitle,isFullScreen:!1}),t}prepareMainGridColumns(t){return t.forEach(r=>{(r.allowHiding===void 0||r.allowHiding===null)&&(r.allowHiding=!1),(r.showInColumnChooser===void 0||r.showInColumnChooser===null)&&(r.showInColumnChooser=!1)}),t}createMainGridDataSource(){return{store:Et({loadUrl:this.loadDataUrl,key:"Name",notifyError:!1})}}sendBatchRequest(t,r){let i=$.Deferred();return x(t,"POST",JSON.stringify(r),!1,{contentType:"application/json"}).done(i.resolve).fail(n=>{i.reject(n)}),i.promise()}};DevExpress.ui.dxDataGrid.registerModule("columnChooserSorting",{extenders:{controllers:{columns(o){return class extends o{getChooserColumns(r){return(super.getChooserColumns(r)||[]).slice().sort((n,s)=>{let l=(n==null?void 0:n.caption)||"",g=(s==null?void 0:s.caption)||"";return l.localeCompare(g)})}}}}}});var Ur=ht(mo());var Zi=(o,t)=>{if(o===null||t===null||o.length!==t.length)return!1;for(let r=0;r<o.length;r++)if(o[r]!==t[r])return!1;return!0},We=o=>{let t=null,r=null;return function(...i){return Zi(t,i)||(r=o(...i)),t=i,r}};var me=class{constructor(t){this._currentViewId=me.defaultControlDisplayView.id;this.views=me.defaultViews;this.getViewByIdInternal=t=>this.views&&this.views.find(r=>r.id===t);this.getViewById=We(this.getViewByIdInternal);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl}get currentView(){return this.getViewById(this._currentViewId)}get currentViewId(){return this._currentViewId}set currentViewId(t){this._currentViewId=t}async getViews(){return this.views===me.defaultViews&&await this.loadViews(),this.views}updateCurrentView(t){return this.updateView(this.currentView.id,t)}async createNewView(t,r,i){let n=this.mapViewModelToDto({id:-1,name:t,gridState:r,isGlobal:i});return n=await x(this.insertDataUrl,"POST",n),await this.loadViews(),this.mapViewDtoToModel(n)}async updateView(t,r){if(t===me.defaultControlDisplayView.id)return!1;let i=this.getViewById(t);if(!i)return!1;let n=A(A({},i),r),s=this.mapViewModelToDto(n);return s=await x(this.updateDataUrl,"PUT",s),await this.loadViews(),!0}async deleteView(t){return t===me.defaultControlDisplayView.id||!this.getViewById(t)?!1:(await x(this.deleteDataUrl,"DELETE",{viewId:t}),await this.loadViews(),!0)}async loadViews(){let t=await ae(this.loadDataUrl);return this.views=t.map(r=>this.mapViewDtoToModel(r)),this.views.unshift(me.defaultControlDisplayView),this.resetCachedResultOfGetViewByIdFunction(),this.views}mapViewModelToDto(t){return{Id:t.id,Name:t.name,GridState:JSON.stringify(t.gridState),IsGlobal:t.isGlobal}}mapViewDtoToModel(t){return{id:t.Id,name:t.Name,gridState:JSON.parse(t.GridState),isGlobal:t.IsGlobal}}resetCachedResultOfGetViewByIdFunction(){this.getViewById=We(this.getViewByIdInternal)}},W=me;W.defaultControlDisplayView={id:0,name:"Default",gridState:null,isGlobal:!1},W.defaultViews=[me.defaultControlDisplayView];var Mo=class{constructor(t){var r;this.options=t,this.currentSavedGridState=t.initialState,this.imagePreviewSizeMap=((r=t.initialState)==null?void 0:r.imagePreviewSizeMap)??{},this.options.owner.option("stateStoring",{enabled:!0,type:"custom",customLoad:()=>Promise.resolve(this.currentSavedGridState)})}prepareUnsavedGridState(t){if(t.columns){let r=t.columns.filter(n=>n.visible),i=r[r.length-1];i.width=void 0}return t.imagePreviewSizeMap=this.imagePreviewSizeMap,t}get hasChanges(){return this.currentSavedGridState!==null&&JSON.stringify(this.currentUnsavedGridState)!==JSON.stringify(this.currentSavedGridState)}get currentUnsavedGridState(){return this.prepareUnsavedGridState(this.options.owner.state())}async apply(t,r=!0){return new Promise((i,n)=>{this.imagePreviewSizeMap=(t==null?void 0:t.imagePreviewSizeMap)||{};let s=r?void 0:this.options.owner.filter();this.options.owner.beginUpdate(),this.options.owner.clearFilter("filterValue"),this.options.owner.state(t);let l=this.options.owner.getVisibleColumns().filter(p=>!p.type);l[0]&&l[0].dataField&&this.options.owner.option("summary",{totalItems:[{column:l[0].dataField,summaryType:"count"}]}),s&&this.options.owner.filter(s),this.options.owner.endUpdate();let g=()=>{this.save(),i(),this.options.owner.off("contentReady",g)};this.options.owner.on("contentReady",g)})}save(){this.currentSavedGridState=this.currentUnsavedGridState}reset(){this.options.owner.state(this.currentSavedGridState)}setFieldPreviewSize(t,r){this.imagePreviewSizeMap[t]=r}getFieldPreviewSize(t){return this.imagePreviewSizeMap[t]}};var Oo=class{constructor(t){this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;!r||(this.removeDefaultColumnChooserButton(r),r.splice(1,0,this.viewsToolbarItem))};this.options=O(A({},t),{gridStateManager:t.gridStateManager?t.gridStateManager:new Mo({owner:t.owner,initialState:null}),gridViewsManager:t.gridViewsManager?t.gridViewsManager:new W(t.gridViewsManagerOptions),autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner)}async tryApplyView(t){let r=await this.confirmChangesLoss();return r&&await this.applyView(t),r}async applyView(t){this.beginViewApplyingLoading(),this.options.gridViewsManager.currentViewId=t,await this.options.gridStateManager.apply(this.options.gridViewsManager.currentView.gridState,!1),this.endViewApplyingLoading(),this.syncUIWithCurrentView(),this.options.onViewApplied&&this.options.onViewApplied(t)}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}removeDefaultColumnChooserButton(t){t.splice(t.findIndex(r=>r.name==="columnChooserButton"),1)}get viewsToolbarItem(){return this._viewsToolbarItem||(this._viewsToolbarItem=this.createViewsToolbarItem()),this._viewsToolbarItem}get isDefaultView(){return this.options.gridViewsManager.currentViewId===W.defaultControlDisplayView.id}get hasChanges(){let t=this.options.gridViewsManager.currentView;return this.currentViewTitle?this.currentViewTitle.option("value")!==t.name||this.options.gridStateManager.hasChanges:!1}createViewsToolbarItem(){let t=!0;return{widget:"dxDropDownBox",location:"after",text:"Views",visible:this.options.visible,cssClass:"aps-views__toolbar-item",options:{elementAttr:{class:"iszolea-md"},items:[W.defaultControlDisplayView],value:W.defaultControlDisplayView.id,valueExpr:"id",displayExpr:"name",width:200,dropDownOptions:{width:550},onInitialized:r=>{this.viewsDropdownBox=r.component,this.loadViewDropdownBoxData()},onValueChanged:async r=>{if(r.value===this.options.gridViewsManager.currentViewId||!t){t=!0;return}await this.tryApplyView(r.value)||(t=!1,this.syncUIWithCurrentView(!0))},contentTemplate:r=>{if(!r.component)return;this.viewsDataGrid=this.createViewsDataGrid(r.component),this.currentViewTitle=this.createCurrentViewTitle(r.component),this.saveViewButton=this.createSaveViewButton(),this.saveViewAsButton=this.createSaveViewAsButton(),this.columnChooserButton=this.createColumnChooserButton();let i=$("<div />").addClass("aps-views__header").append(this.currentViewTitle.element()).append(this.saveViewButton.element()).append(this.saveViewAsButton.element()).append(this.columnChooserButton.element());return $("<div />").height("100%").append(i).append(this.viewsDataGrid.element())}}}}createViewsDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!0,allowDeleting:!0,mode:"cell",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this view?"}},wordWrapEnabled:!0,loadPanel:{shading:!0},columns:[{dataField:"name",allowEditing:!1},{dataField:"isGlobal",caption:"Is Global",dataType:"boolean",width:70},{type:"buttons",buttons:[{name:"delete",visible:r=>r.row&&r.row.key!==W.defaultControlDisplayView.id}]}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,showColumnLines:!1,selection:{mode:"single"},height:"calc(100% - 51px)",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No views",onSelectionChanged:r=>{t.option("value",r.selectedRowKeys&&r.selectedRowKeys.length?r.selectedRowKeys[0]:0)},onEditorPreparing:r=>{if(r.dataField==="isGlobal"){r.editorOptions.disabled=!this.options.canCreateGlobalViews,r.editorOptions.visible=r.row.data.id!==W.defaultControlDisplayView.id;let i=r.editorOptions.onValueChanged;r.editorOptions.onValueChanged=async n=>{r.component.beginCustomLoading("Updating"),await this.options.gridViewsManager.updateView(r.row.data.id,{isGlobal:n.value}),r.component.endCustomLoading(),i(n)}}},onCellPrepared:r=>{if(r.column.type!=="buttons"||!r.data)return;!r.data.isGlobal||r.data.isGlobal&&this.options.canCreateGlobalViews||Array.from(r.cellElement.children()).forEach(n=>{$(n).css({color:"#ddd !important",cursor:"default"}).off("click")})},onRowRemoving:r=>{!r.key||this.deleteView(r.key)}}).dxDataGrid("instance")}createCurrentViewTitle(t){return $("<div />").addClass("aps-views__current-view iszolea-md").dxTextBox({value:t.option("text")||t.option("placeholder"),readOnly:this.isDefaultView}).dxTextBox("instance")}createSaveViewButton(){return $("<button />").addClass("aps-views__save-view iszolea-md").dxButton({text:"Save",type:"normal",disabled:this.isDefaultView,onClick:this.save.bind(this),icon:"save",width:87}).dxButton("instance")}createSaveViewAsButton(){return $("<button />").addClass("aps-views__save-view-as iszolea-md").dxButton({text:"Save As",type:"normal",onClick:this.createSaveAsDialog.bind(this),icon:"save",width:118}).dxButton("instance")}createColumnChooserButton(){return $("<button />").addClass("aps-views__column-chooser iszolea-md").dxButton({onClick:this.openColumnChooser.bind(this),icon:"column-chooser"}).dxButton("instance")}createSaveAsDialog(){let t=$("<div />"),r=$('<div style="margin-bottom:8px;" />').dxTextBox({placeholder:"View Name",showClearButton:!0}).dxValidator({validationRules:[{type:"required"}]}),i=r.dxTextBox("instance"),n=r.dxValidator("instance");i.element().appendTo(t);let s=$('<div style="margin-bottom:16px;" />').dxCheckBox({text:"Global view",disabled:!this.options.canCreateGlobalViews}).dxCheckBox("instance");return s.element().appendTo(t),J({title:"Create New View",height:"auto",width:"100%",maxWidth:"300px"},t,{text:"Ok",onClick:async l=>{!n.validate().isValid||(await this.saveAs(i.option("value"),s.option("value")),l())}},{text:"Cancel",onClick:l=>l()})}openColumnChooser(){this.options.owner.showColumnChooser()}async loadViewDropdownBoxData(){if(!this.viewsDropdownBox)return;let t=await this.options.gridViewsManager.getViews(),r=new DevExpress.data.ArrayStore({key:"id",data:t});this.viewsDropdownBox.option("dataSource",r),this.viewsDropdownBox.option("value",this.options.gridViewsManager.currentViewId),this.viewsDataGrid&&this.viewsDataGrid.option("dataSource",r)}async save(){!this.hasChanges||(this.options.gridStateManager.save(),await this.options.gridViewsManager.updateCurrentView({name:this.currentViewTitle.option("value"),gridState:this.options.gridStateManager.currentSavedGridState}),P("Saved",!0),await this.loadViewDropdownBoxData())}async saveAs(t,r){if(!this.options.gridStateManager)return;this.options.gridStateManager.save();let i=await this.options.gridViewsManager.createNewView(t,this.options.gridStateManager.currentSavedGridState,r);await this.loadViewDropdownBoxData(),await this.applyView(i.id),P("View is created",!0)}async deleteView(t){await this.options.gridViewsManager.deleteView(t),this.options.onViewDeleted&&this.options.onViewDeleted(t),await this.loadViewDropdownBoxData(),this.options.gridViewsManager.currentViewId!==W.defaultControlDisplayView.id&&await this.applyView(W.defaultControlDisplayView.id)}beginViewApplyingLoading(){this.currentViewTitle&&this.currentViewTitle.option("readOnly",!0),this.saveViewButton&&this.saveViewButton.option("disabled",!0),this.saveViewAsButton&&this.saveViewAsButton.option("disabled",!0),this.viewsDataGrid&&this.viewsDataGrid.beginCustomLoading("Applying...")}endViewApplyingLoading(){this.currentViewTitle&&this.currentViewTitle.option("readOnly",!1),this.saveViewButton&&this.saveViewButton.option("disabled",!1),this.saveViewAsButton&&this.saveViewAsButton.option("disabled",!1),this.viewsDataGrid&&this.viewsDataGrid.endCustomLoading()}syncUIWithCurrentView(t=!1){!t&&this.currentViewTitle&&(this.currentViewTitle.option("value",this.options.gridViewsManager.currentView.name),this.currentViewTitle.option("readOnly",this.isDefaultView)),this.viewsDropdownBox.option("value",this.options.gridViewsManager.currentViewId),setTimeout(()=>{this.viewsDataGrid&&(this.options.gridViewsManager.currentViewId===W.defaultControlDisplayView.id?this.viewsDataGrid.selectRowsByIndexes([0]):this.viewsDataGrid.selectRows([this.options.gridViewsManager.currentViewId],!1))},0);let r=this.options.gridViewsManager.currentView.isGlobal&&!this.options.canCreateGlobalViews;this.saveViewButton&&this.saveViewButton.option("disabled",this.isDefaultView||r)}async confirmChangesLoss(){return this.hasChanges?DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes"):!0}};var dt=class{constructor(t){this.getFilterByIdInternal=t=>this.filters&&this.filters.find(r=>r.id===t);this.getFilterById=We(this.getFilterByIdInternal);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl}get currentFilter(){return this.getFilterById(this._currentFilterId)}get currentFilterId(){return this._currentFilterId}set currentFilterId(t){this._currentFilterId=t}async getFilters(){return this.filters||await this.loadFilters(),this.filters}updateCurrentFilter(t){return!!this.currentFilter&&this.updateFilter(this.currentFilter.id,t)}async createNewFilter(t,r,i,n){let s=this.mapFilterModelToDto({id:-1,name:t,isDefault:i,isGlobal:n,filterState:r});return s=await x(this.insertDataUrl,"POST",s),await this.loadFilters(),this.mapFilterDtoToModel(s)}async updateFilter(t,r){let i=this.getFilterById(t);if(!i)return!1;let n=A(A({},i),r),s=this.mapFilterModelToDto(n);return s=await x(this.updateDataUrl,"PUT",s),await this.loadFilters(),!0}async deleteFilter(t){return this.getFilterById(t)?(await x(this.deleteDataUrl,"DELETE",{filterId:t}),await this.loadFilters(),!0):!1}async loadFilters(){let t=await ae(this.loadDataUrl);return this.filters=t.map(r=>this.mapFilterDtoToModel(r)),this.resetCachedResultOfGetFilterByIdFunction(),this.filters}mapFilterModelToDto(t){return{Id:t.id,Name:t.name,IsDefault:t.isDefault,IsGlobal:t.isGlobal,FilterState:JSON.stringify(t.filterState)}}mapFilterDtoToModel(t){return{id:t.Id,name:t.Name,isDefault:t.IsDefault||!1,isGlobal:t.IsGlobal||!1,filterState:JSON.parse(t.FilterState)}}resetCachedResultOfGetFilterByIdFunction(){this.getFilterById=We(this.getFilterByIdInternal)}};var Uo=class{constructor(t){this.isInFilterApplying=!1;this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;!r||r.splice(1,0,this.filtersToolbarItem)};this.options=O(A({},t),{gridFiltersManager:t.gridFiltersManager?t.gridFiltersManager:new dt(t.gridFiltersManagerOptions),autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner),this.filterExpressionCalculator=$("<div />").dxFilterBuilder({fields:this.getFlatColumnsList(this.options.owner.option("columns"))}).dxFilterBuilder("instance")}async tryApplyFilter(t){let r=await this.confirmChangesLoss();return r&&await this.applyFilter(t),r}async applyFilter(t,r=!1){this.isInFilterApplying=!0,this.options.gridFiltersManager.currentFilterId=t,this.updateFilterPopupContent(this.options.gridFiltersManager.currentFilter),this.filtersDropdownBox.option("value",this.options.gridFiltersManager.currentFilterId);let i=this.options.owner.getDataSource();if(this.options.gridFiltersManager.currentFilter){this.filterExpressionCalculator.option("value",this.options.gridFiltersManager.currentFilter.filterState);let n=this.filterExpressionCalculator.getFilterExpression();if(i.isLoading()){let s=()=>{i.off("loadingChanged",s),setTimeout(()=>{i=this.options.owner.getDataSource(),i.filter(n)})};i.on("loadingChanged",s)}else i.filter(n)}else i.filter(null);r||await i.load(),this.options.onFilterApplied&&this.options.onFilterApplied(t),this.isInFilterApplying=!1}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}get filtersToolbarItem(){return this._filtersToolbarItem||(this._filtersToolbarItem=this.createFiltersToolbarItem()),this._filtersToolbarItem}get filterPopup(){return this._filterPopup||(this._filterPopup=this.createFilterPopup()),this._filterPopup}get hasChanges(){let t=this.options.gridFiltersManager.currentFilter,r=this.filterNameTextBox&&this.filterNameTextBox.option("value"),i=t&&t.name,n=this.filterBuilder&&this.filterBuilder.option("value"),s=t&&t.filterState,l=this.filterIsGlobalCheckbox&&this.filterIsGlobalCheckbox.option("value"),g=t&&t.isGlobal;return r!==i||n!==s||l!==g}createFiltersToolbarItem(){let t=!0;return{widget:"dxDropDownBox",location:"after",text:"Data Sets",visible:this.options.visible,cssClass:"aps-filters__toolbar-item",options:{elementAttr:{class:"iszolea-md"},value:this.options.gridFiltersManager.currentFilterId,valueExpr:"id",displayExpr:"name",showClearButton:!0,placeholder:"None",width:200,dropDownOptions:{width:500},onInitialized:async r=>{this.filtersDropdownBox=r.component;let[,i]=await Promise.all([this.loadFilterDropdownBoxData(),this.options.apsControlDisplayUserSettingsManager.getUserSettings()]);i.defaultFilterId&&r.component.option("value",i.defaultFilterId)},onValueChanged:async r=>{if(this.isInFilterApplying)return;if(!t){t=!0;return}let i=r.value;await this.tryApplyFilter(i)||(t=!1,i=r.previousValue,r.component.option("value",i)),this.filtersDataGrid&&this.filtersDataGrid.selectRows(i,!1),this.currentFilterTitle&&this.currentFilterTitle.option("value",r.component.option("text")||r.component.option("placeholder"))},onOpened:r=>{!r.component||this.filtersDataGrid&&this.filtersDataGrid.selectRows(r.component.option("value"),!1)},contentTemplate:r=>{if(!r.component)return;this.filtersDataGrid=this.createFiltersDataGrid(r.component),this.currentFilterTitle=this.createCurrentFilterTitle(r.component),this.newFilterButton=this.createNewFilterButton();let i=$("<div />").addClass("aps-filters__header").append(this.currentFilterTitle.element()).append(this.newFilterButton.element());return $("<div />").css("height","100%").append(i).append(this.filtersDataGrid.element())}}}}createFiltersDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!0,allowDeleting:!0,mode:"cell",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this data set?"}},wordWrapEnabled:!0,columns:[{dataField:"name",allowEditing:!1},{dataField:"isDefault",caption:"Is Default",dataType:"boolean",width:80},{dataField:"isGlobal",caption:"Is Global",dataType:"boolean",width:70},{type:"buttons",buttons:[{icon:"edit",hint:"Edit",onClick:async r=>{if(!r.row||!r.row.key)return;await this.tryApplyFilter(r.row.key)&&!this.filterPopup.option("visible")&&this.openEditFilterPopup(this.options.gridFiltersManager.currentFilter)}},"delete"]}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,showColumnLines:!1,selection:{mode:"single"},height:"calc(100% - 51px)",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No data sets",onSelectionChanged:r=>{t.option("value",r.selectedRowKeys?r.selectedRowKeys[0]:null)},onEditorPreparing:r=>{if(r.dataField==="isGlobal"){r.editorOptions.disabled=!this.options.canCreateGlobalFilters;let i=r.editorOptions.onValueChanged;r.editorOptions.onValueChanged=async n=>{r.component.beginCustomLoading("Updating"),await this.options.gridFiltersManager.updateFilter(r.row.data.id,{isGlobal:n.value}),r.component.endCustomLoading(),i(n)}}},onCellPrepared:r=>{r.column.type!=="buttons"||!r.data||r.column.type==="buttons"&&(!r.data.isGlobal||r.data.isGlobal&&this.options.canCreateGlobalFilters||Array.from(r.cellElement.children()).forEach(n=>{$(n).css({color:"#ddd !important",cursor:"default"}).off("click")}))},onRowUpdating:r=>{if(!r.key||r.newData.isDefault===void 0)return;let i=r.component.getDataSource().items().find(n=>n.isDefault);i&&(i.isDefault=!1),this.options.apsControlDisplayUserSettingsManager.updateUserSettings({defaultFilterId:r.newData.isDefault?r.key:void 0})},onRowRemoving:r=>{!r.key||this.deleteFilter(r.key)}}).dxDataGrid("instance")}createCurrentFilterTitle(t){return $("<div />").addClass("aps-filters__current-filter").dxTextBox({value:t.option("text")||t.option("placeholder"),readOnly:!0}).dxTextBox("instance")}createNewFilterButton(){return $("<button />").addClass("aps-filters__add-new-filter iszolea-md").dxButton({text:"New Data Set",type:"normal",onClick:()=>{this.openNewFilterPopup()},icon:"plus"}).dxButton("instance")}createFilterPopup(){let t=$("<div />").appendTo("body"),r=!1;return t.dxPopup({container:this.options.owner.element(),shading:!1,resizeEnabled:!0,width:650,height:500,onShowing:i=>{this.filtersDropdownBox&&this.filtersDropdownBox.close()},onHiding:async i=>{if(!this.hasChanges||r){r=!1;return}i.cancel=!0,r=await this.confirmChangesLoss(),r&&(i.component.hide(),this.filtersDropdownBox&&this.filtersDropdownBox.open())}}).dxPopup("instance")}createFilterNameTextBox(){return $("<div />").dxTextBox({placeholder:"Enter Data Set Name..."}).dxTextBox("instance")}createFilterIsGlobalCheckbox(){return $("<div />").dxCheckBox({text:"Global data set"}).dxCheckBox("instance")}getFlatColumnsList(t,...r){let i=[];for(let n of t)if(n.columns&&n.columns.length>0){let s=this.getFlatColumnsList(n.columns);i=i.concat(s)}else{let s=$.extend({},n);if(s.dataType==="date"||s.dataType==="datetime"){let l=s.dataType==="datetime",g="dd MMM yy",m=l?"hh:mm, dd MMM yy":g,S=h=>{let E=h.split(", "),T=DevExpress.localization.parseDate(E[1],g)||null;if(T){let I=E[0].split(":");return T.setHours(parseInt(I[0])),T.setMinutes(parseInt(I[1])),T}else return null};s.format=m,s.editorTemplate=h=>$("<div />").dxDateBox({displayFormat:m,type:l?"datetime":"date",width:150,onValueChanged:({value:E})=>{h.setValue(DevExpress.localization.formatDate(E,m))},value:(l?S(h.value):DevExpress.localization.parseDate(h.value,m))||null}),s.filterOperations=["=","<>","<",">","<=",">=","isblank","isnotblank"],s.calculateFilterExpression=function(h){let E=[t,...r];return E[0]&&(l?E[0]=S(E[0]):E[0]=DevExpress.localization.parseDate(h,m)||null),this.defaultCalculateFilterExpression(...E)}}i.push(s)}return i.sort((n,s)=>{let l=(n.caption||"").toLowerCase(),g=(s.caption||"").toLowerCase();return l<g?-1:l>g?1:0})}createFilterBuilder(){return $("<div />").dxFilterBuilder({fields:this.getFlatColumnsList(this.options.owner.option("columns"))}).dxFilterBuilder("instance")}createFilterPopupContent(t){let r=$("<div />").height("100%"),i=$('<div class="aps-filters__name-container" />').height("36px");this.filterNameTextBox=this.createFilterNameTextBox(),this.filterBuilder=this.createFilterBuilder(),this.filterIsGlobalCheckbox=this.createFilterIsGlobalCheckbox(),this.filterNameTextBox.option("value",t&&t.name),this.filterNameTextBox.element().appendTo(i),this.filterIsGlobalCheckbox.option("value",t&&t.isGlobal),this.filterIsGlobalCheckbox.element().appendTo(i),this.filterIsGlobalCheckbox.option("disabled",!this.options.canCreateGlobalFilters),i.appendTo(r),this.filterBuilder.option("value",t&&t.filterState);let n=$("<div />").height("calc(100% - 36px)").appendTo(r);return this.filterBuilder.element().appendTo(n),n.dxScrollView({scrollByContent:!0}),r}createFilterPopupToolbarItems(t){return t?[this.createUpdateFilterPopupToolbarItem(),this.createSaveFilterAsNewPopupToolbarItem(),this.createResetFilterPopupToolbarItem(),this.createDeleteFilterPopupToolbarItem()]:[this.createSaveFilterPopupToolbarItem()]}createSaveFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Apply and Save",onClick:this.createNewFilter.bind(this),icon:"save"}}}createUpdateFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Apply and Update",onClick:()=>{!this.options.gridFiltersManager.currentFilter||this.updateFilter(this.options.gridFiltersManager.currentFilter)},icon:"save"}}}createSaveFilterAsNewPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Save As New",onClick:this.createNewFilter.bind(this),icon:"save"}}}createResetFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Reset",onClick:async()=>{!this.hasChanges||!this.filterBuilder||!this.options.gridFiltersManager.currentFilter||!await DevExpress.ui.dialog.confirm("Are you sure you want to reset unsaved changes?","Reset the data set")||this.resetChanges()},icon:"undo"}}}createDeleteFilterPopupToolbarItem(){return{toolbar:"bottom",widget:"dxButton",location:"before",options:{text:"Delete Data Set",onClick:async()=>{!this.options.gridFiltersManager.currentFilter||!await DevExpress.ui.dialog.confirm(`Are you sure you want to delete the "${this.options.gridFiltersManager.currentFilter.name}" data set?`,"Delete the data set")||(await this.deleteFilter(this.options.gridFiltersManager.currentFilterId),this.filterPopup.hide())},icon:"trash"}}}async openNewFilterPopup(){!await this.tryApplyFilter(void 0)||(this.updateFilterPopupContent(),this.filterPopup.show())}openEditFilterPopup(t){this.updateFilterPopupContent(t),this.filterPopup.show()}updateFilterPopupContent(t){let r=this.filterPopup.option("animation");this.filterPopup.option("animation",void 0),this.filterPopup.option("title",t?`Edit the "${t.name}" data set`:"Create a new data set"),this.filterPopup.option("contentTemplate",()=>this.createFilterPopupContent(t)),this.filterPopup.option("toolbarItems",this.createFilterPopupToolbarItems(t)),this.filterPopup.repaint(),this.filterPopup.option("animation",r)}async createNewFilter(){if(!this.filterNameTextBox||!this.filterBuilder||!this.filterIsGlobalCheckbox)return;let t=this.filterNameTextBox.option("value"),r=this.filterBuilder.option("value"),i=!1,n=this.filterIsGlobalCheckbox.option("value");if(!t)return;let s=await this.options.gridFiltersManager.createNewFilter(t,r,i,n);await this.loadFilterDropdownBoxData(),await this.applyFilter(s.id),P("Created",!0)}async updateFilter(t){if(!this.filterNameTextBox||!this.filterBuilder||!this.filterIsGlobalCheckbox)return;let r=this.filterNameTextBox.option("value"),i=this.filterBuilder.option("value"),n=this.filterIsGlobalCheckbox.option("value");!r||!await this.options.gridFiltersManager.updateFilter(t.id,{name:r,filterState:i,isGlobal:n})||(P("Updated",!0),await this.applyFilter(this.options.gridFiltersManager.currentFilter.id),await this.loadFilterDropdownBoxData())}async deleteFilter(t){await this.options.gridFiltersManager.deleteFilter(t),this.options.onFilterDeleted&&this.options.onFilterDeleted(t),await this.applyFilter(void 0),await this.loadFilterDropdownBoxData()}resetChanges(){this.filterNameTextBox.option("value",this.options.gridFiltersManager.currentFilter.name),this.filterBuilder.option("value",this.options.gridFiltersManager.currentFilter.filterState),this.filterIsGlobalCheckbox.option("value",this.options.gridFiltersManager.currentFilter.isGlobal)}async loadFilterDropdownBoxData(){if(!this.filtersDropdownBox)return;let[t,r]=await Promise.all([this.options.apsControlDisplayUserSettingsManager.getUserSettings(),this.options.gridFiltersManager.getFilters()]);if(t.defaultFilterId){let n=r.find(s=>s.id===t.defaultFilterId);n&&(n.isDefault=!0)}let i=new DevExpress.data.ArrayStore({key:"id",data:r});this.filtersDropdownBox.option("dataSource",i),this.filtersDataGrid&&this.filtersDataGrid.option("dataSource",i)}async confirmChangesLoss(){return await new Promise(t=>setTimeout(()=>t(),0)),!this.hasChanges||!this.filterPopup.option("visible")?!0:DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes")}};var gt=class{constructor(t){this.$container=t.$container,this.cssClass=t.cssClass,this.maxFileSize=t.maxFileSize,this.acceptedFileTypes=t.acceptedFileTypes,this.selectButtonText=t.selectButtonText,this.allowedFileExtensions=t.allowedFileExtensions,this.onValueChanged=t.onValueChanged,this.onUploadStarted=t.onUploadStarted,this.onUploaded=t.onUploaded}render(){let t=$("<div />");this.cssClass&&t.addClass(this.cssClass),this.fileUploader=t.dxFileUploader({selectButtonText:this.selectButtonText,labelText:"",allowedFileExtensions:this.allowedFileExtensions,accept:this.acceptedFileTypes,uploadMode:"useForm",maxFileSize:this.maxFileSize,showFileList:!1,onValueChanged:r=>{var i;r.component.option("labelText",r.value[0]?r.value[0].name:""),(i=this.onValueChanged)==null||i.call(this,r)},onUploadStarted:r=>{var i;r.element.find(".dx-fileuploader-upload-button").hide(),(i=this.onUploadStarted)==null||i.call(this,r)},onUploaded:r=>{var i;(i=this.onUploaded)==null||i.call(this,r)}}).dxFileUploader("instance"),this.$container.append(this.fileUploader.element())}upload(t,r){return new Promise((i,n)=>{let s=new FormData,l=this.fileUploader.element().find("input")[0].files[0];s.append("file",l);for(let g in r)s.append(g,r[g]);$.ajax({url:t,type:"post",data:s,contentType:!1,processData:!1,success:g=>{g.RequestState===1?i(g.Data):n(g.Message)},error:g=>n("Unknown error")})})}};var Ft=class extends z{constructor(t){super();this.fileUploadUrl=t.fileUploadUrl,this.$container=t.$container,this.title=t.title,this.getTablesListUrl=t.getTablesListUrl,this.createTableUrl=t.createTableUrl,this.addRowsUrl=t.addRowsUrl,this.predefinedTable=t.predefinedTable,this.canChangeMode=t.predefinedImportFileMode===void 0,this.mode=t.predefinedImportFileMode!==void 0?t.predefinedImportFileMode:0,this.createTableButtonText=t.createTableButtonText||"Create Table",this.updateTableButtonText=t.updateTableButtonText||"Add New Rows",this.createTableModeText=t.createTableModeText||"Create Table",this.updateTableModeText=t.updateTableModeText||"Add New Rows"}show(){this.popup=$("<div />").appendTo(this.$container).dxPopup({showTitle:!0,title:this.title,visible:!1,dragEnabled:!1,resizeEnabled:!1,showCloseButton:!0,hideOnOutsideClick:!1,fullScreen:!0,maxWidth:1300,maxHeight:800,contentTemplate:t=>{let r=$("<div />");this.form=this.createForm(),r.append(this.form.element()),r.dxScrollView({width:"100%",height:"100%"}).appendTo(t)},toolbarItems:[{toolbar:"bottom",widget:"dxButton",location:"after",options:{text:this.getActionButtonText(),type:"success",onInitialized:t=>{this.actionButton=t.component},onClick:async()=>{this.mode===0?this.createTable():this.addRowsToTable()}}},{toolbar:"bottom",widget:"dxButton",location:"after",options:{text:"Cancel",onClick:()=>this.popup.hide()}}]}).dxPopup("instance"),this.popup.show(),this.onModeSwitching()}dispose(){this.popup&&this.popup.dispose()}createForm(){return $("<div>").dxForm({showColonAfterLabel:!0,labelLocation:"top",colCountByScreen:{md:4,sm:1},screenByWidth:r=>r<1256?"sm":"md",items:[{dataField:"Mode",itemType:"simple",template:(r,i)=>{this.createModeSwitcher(i)}},{dataField:"Schema",editorOptions:{disabled:!this.canChangeMode},validationRules:[{type:"required"}]},{dataField:"Table",editorOptions:{disabled:!this.canChangeMode},validationRules:[{type:"required"}]},{dataField:"TableSelector",label:{text:"Table"},editorType:"dxSelectBox",visible:!1,colSpan:2,editorOptions:{dataSource:new DevExpress.data.DataSource({store:se({loadUrl:this.getTablesListUrl,loadParams:{contextName:"",tablesOnly:!0,isWarehouseContext:!0},loadMethod:"post",notifyError:!1}),paginate:!1,sort:"this"}),searchEnabled:!0},validationRules:[{type:"required"}]},{dataField:"Source File",itemType:"simple",template:(r,i)=>{this.createFilesUploader(i)}},{dataField:"Columns Selector",label:{visible:!1},colSpan:4,itemType:"simple",template:(r,i)=>{this.createDataGrid(i)}}]}).dxForm("instance")}createModeSwitcher(t){$("<div />").dxButtonGroup({items:[{text:this.createTableModeText,icon:"inserttable",value:0},{text:this.updateTableModeText,icon:"insertrowbelow",value:1}],keyExpr:"value",disabled:!this.canChangeMode,stylingMode:"outlined",selectionMode:"single",selectedItemKeys:[this.mode],onItemClick:r=>{this.mode=r.itemData.value,this.onModeSwitching()}}).appendTo(t)}createFilesUploader(t){this.fileUploader=new gt({$container:t,cssClass:"table-creator__upload",maxFileSize:10*1e6,acceptedFileTypes:".xls, .xlsx",allowedFileExtensions:[".xls",".xlsx"],selectButtonText:"Select Excel file",onValueChanged:async()=>{this.dataGrid.beginCustomLoading("Parsing selected file..."),this.fileUploader.upload(this.fileUploadUrl).then(r=>{if(r){this.setRowsCount(r.RowsCount);let i=new DevExpress.data.DataSource({store:{type:"array",key:"Id",data:r.Columns},paginate:!1});this.dataGrid.option("dataSource",i)}}).catch(r=>{P(`Parsing Error : ${r}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}),this.fileUploader.render()}createDataGrid(t){let r={noDataText:"Select Excel File",hoverStateEnabled:!0,searchPanel:{visible:!1},groupPanel:{visible:!1},headerFilter:{visible:!1},filterRow:{visible:!1},sorting:{mode:"none"},paging:{pageSize:1e4,enabled:!1},editing:{allowUpdating:!0,mode:"cell"},selection:{mode:"none"},columns:[{dataField:"Id",visible:!1},{dataField:"Selected",dataType:"boolean",visible:this.mode===0},{dataField:"IsKeyColumn",dataType:"boolean",visible:this.mode===0},{dataField:"Name",caption:"Column Name"},{dataField:"Type",allowEditing:!1},{dataField:"IsNullable",allowEditing:this.mode===0&&this.canChangeMode,setCellValue:(i,n)=>{i.IsNullable=n,n&&(i.IsKeyColumn=!1)}}],remoteOperations:!1,onToolbarPreparing:i=>{i.toolbarOptions.items.push({template:()=>$("<div>").append($("<span>").addClass("table-creator__table-header").text("Parsed File Metadata")),location:"before"},{template:()=>(this.rowsCounter=$("<span>").text("1000"),this.rowsCounterContainer=$("<div>").append($("<span>").text("Rows Count: "),this.rowsCounter).hide(),this.rowsCounterContainer),location:"after"})},onEditorPreparing:i=>{if(i.parentType==="dataRow"&&i.dataField==="IsKeyColumn"){let n=i.editorOptions;n.disabled=i.row.data.IsNullable}}};this.dataGrid=V($("<div />"),{options:r,summaryColumn:"Name",isFullScreen:!1,setDefaultColumnWidth:!1}),t.append(this.dataGrid.element())}createTable(){if(this.form.validate().isValid){let r=this.dataGrid.getDataSource();r||P("Select file with data",!1);let i=r.items();if(!this.areColumnsValid(i))P("At least 1 key column must be set",!1);else{let n={schema:this.form.option("formData").Schema,table:this.form.option("formData").Table,columns:JSON.stringify(i)};this.dataGrid.beginCustomLoading("Creating and filling DB table..."),this.fileUploader.upload(this.createTableUrl,n).then(s=>{s===!0?(this.popup.hide(),P(`The table [${n.schema}].[${n.table}] has been created`,!0),this.emit(Ft.TABLE_UPDATED_EVENT)):P("The table has not been created",!1)}).catch(s=>{P(`Table creating error: ${s}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}}addRowsToTable(){if(this.form.validate().isValid){let r=this.dataGrid.getDataSource();r||P("Select file with data",!1);let i=r.items(),n={table:this.form.option("formData").TableSelector,columns:JSON.stringify(i)};this.dataGrid.beginCustomLoading("Adding rows to DB table..."),this.fileUploader.upload(this.addRowsUrl,n).then(s=>{s===!0?(this.popup.hide(),P(`The table ${n.table} has been updated`,!0),this.emit(Ft.TABLE_UPDATED_EVENT)):P("The table has not been updated",!1)}).catch(s=>{P(`Table updating error: ${s}`,!1)}).finally(()=>{this.dataGrid.endCustomLoading()})}}onModeSwitching(){let t=this.mode===0;this.actionButton.option("text",this.getActionButtonText()),this.dataGrid.columnOption("IsKeyColumn","visible",t),this.dataGrid.columnOption("IsNullable","visible",t),this.canChangeMode?(this.form.itemOption("Schema","visible",t),this.form.itemOption("Table","visible",t),this.form.itemOption("TableSelector","visible",!t)):(this.form.itemOption("Schema","visible",!0),this.form.updateData("Schema",this.predefinedTable.schema),this.form.itemOption("Table","visible",!0),this.form.updateData("Table",this.predefinedTable.table),this.form.itemOption("TableSelector","visible",!1))}getActionButtonText(){return this.mode===0?this.createTableButtonText:this.updateTableButtonText}areColumnsValid(t){return t.filter(r=>r.Selected).some(r=>r.IsKeyColumn)}setRowsCount(t){this.rowsCounterContainer.show(),this.rowsCounter.text(t)}},xe=Ft;xe.TABLE_UPDATED_EVENT="file-importer-table-updated-event";var Po=class{constructor(t){this.onGridToolbarPreparing=t=>{let r=t.toolbarOptions&&t.toolbarOptions.items;if(!r)return;let i=[this.displaysToolbarItem];this.importFileOptions&&this.importFileOptions.mode!==0&&i.push(this.importFileToolbarItem),r.splice(1,0,...i)};this.options=t,this.gridDisplaysManager=t.gridDisplaysManager,this.gridViewsManager=t.gridViewsManager,this.gridFiltersManager=t.gridFiltersManager,this.importFileOptions=t.importFileOptions,this.gridDisplaysManager.onDisplaisLoaded=r=>{let i=new DevExpress.data.ArrayStore({key:"Id",data:r});this.displaysDropdownBox&&this.displaysDropdownBox.option("dataSource",i),this.dataGrid&&this.dataGrid.option("dataSource",i),this.dataGrid&&this.dataGrid.endCustomLoading()},this.gridDisplaysManager.onDisplayChanged=r=>{this.displaysDropdownBox&&this.displaysDropdownBox.option("value",r?r.Id:null),this.currentDisplayTitle&&this.currentDisplayTitle.option("value",r?r.Name:null),this.currentDisplayTitle&&this.currentDisplayTitle.option("disabled",!r),this.saveAsButton&&this.saveAsButton.option("disabled",!r),this.saveButton&&this.saveButton.option("disabled",!r),this.dataGrid&&(r?this.dataGrid.selectRows([r.Id],!1):this.dataGrid.deselectAll())},this.integrateToGrid(this.options.owner)}integrateToGrid(t){let r=t.option("onToolbarPreparing");t.option("onToolbarPreparing",i=>{r&&r(i),this.onGridToolbarPreparing(i)})}createDataGrid(t){return $("<div />").dxDataGrid({dataSource:t.getDataSource(),remoteOperations:!1,editing:{allowAdding:!1,allowUpdating:!1,allowDeleting:this.options.editMode,mode:"row",useIcons:!0,texts:{confirmDeleteMessage:"Are you sure you want to delete this display?"}},loadPanel:{shading:!0},allowColumnResizing:!0,columnAutoWidth:!0,wordWrapEnabled:!0,columns:[{dataField:"Name",caption:"Display"},{dataField:"FilterId",caption:"Data Set",lookup:{valueExpr:"id",displayExpr:"name"}},{dataField:"ViewId",caption:"View",lookup:{valueExpr:"id",displayExpr:"name"}}],keyboardNavigation:{editOnKeyPress:!1,enabled:!1},showColumnHeaders:!0,hoverStateEnabled:!0,focusedRowEnabled:!1,showBorders:!1,height:this.options.editMode?"calc(100% - 51px)":"100%",scrolling:{mode:"standard"},paging:{enabled:!1},noDataText:"No displays",onInitialized:async r=>{let i=await this.gridFiltersManager.getFilters(),n=await this.gridViewsManager.getViews();r.component.columnOption("FilterId","lookup.dataSource",i),r.component.columnOption("ViewId","lookup.dataSource",n)},onCellClick:async r=>{r.rowType==="data"&&t.option("value",r.data.Id)},onRowRemoving:async r=>{this.dataGrid.beginCustomLoading("Loading"),await this.gridDisplaysManager.deleteDisplay(r.key)}}).dxDataGrid("instance")}createDisplaysToolbarItem(){let t={valueExpr:"Id",displayExpr:"Name",showClearButton:!0,placeholder:"None",width:200,onInitialized:i=>{this.displaysDropdownBox=i.component,this.gridDisplaysManager.getDisplays()},onValueChanged:async i=>{let n=this.gridDisplaysManager.currentDisplay,s=n&&n.FilterId!==this.gridFiltersManager.currentFilterId,l=n&&n.ViewId!==this.gridViewsManager.currentViewId;await(s||l?this.confirmChangesLoss():Promise.resolve(!0))&&(this.gridDisplaysManager.currentDisplayId=i.value)}},r={elementAttr:{class:"iszolea-md"},dropDownOptions:{width:800},contentTemplate:this.options.editMode?i=>{this.dataGrid=this.createDataGrid(i.component),this.currentDisplayTitle=this.createCurrentDisplayTitle(i.component),this.saveButton=this.createSaveViewButton(),this.saveAsButton=this.createSaveViewAsButton();let n=$("<div />").addClass("aps-displays__header").append(this.currentDisplayTitle.element()).append(this.saveButton.element()).append(this.saveAsButton.element()),s=$("<div />").height("100%");return this.options.editMode&&s.append(n),s.append(this.dataGrid.element()),s}:void 0,onOpened:()=>{this.saveAsButton&&this.saveAsButton.option("disabled",!this.gridFiltersManager.currentFilterId),this.saveButton&&this.saveButton.option("disabled",!this.gridDisplaysManager.currentDisplay)}};return{widget:this.options.editMode?"dxDropDownBox":"dxSelectBox",location:"after",text:"Displays",cssClass:"aps-displays__toolbar-item",options:this.options.editMode?$.extend(t,r):t}}createImportFileToolbarItem(){return{location:"after",widget:"dxButton",options:{icon:"upload",hint:"Import file",height:30,stylingMode:"text",onClick:()=>{this.fileImporter&&this.fileImporter.dispose(),this.fileImporter=new xe({$container:this.options.owner.element().parent(),title:"Import File to CDM",createTableUrl:this.importFileOptions.createTableUrl,addRowsUrl:this.importFileOptions.addRowsUrl,fileUploadUrl:this.importFileOptions.fileUploadUrl,predefinedImportFileMode:this.getPredefinedImportFileMode(this.importFileOptions.mode),predefinedTable:this.importFileOptions.predefinedTable,createTableButtonText:"Replace All Rows",createTableModeText:"Replace Rows"}),this.fileImporter.on(xe.TABLE_UPDATED_EVENT,()=>this.options.owner.refresh()),this.fileImporter.show()},onContentReady:t=>{t.element.find(".dx-button-content").css({paddingTop:5,paddingBottom:5})}}}}getPredefinedImportFileMode(t){switch(t){case 1:return 1;case 2:return 0;default:throw new Error("Unsupported mode")}}createCurrentDisplayTitle(t){return $("<div />").addClass("aps-displays__current-display iszolea-md").dxTextBox({value:t.option("text")||t.option("placeholder"),disabled:!this.gridDisplaysManager.currentDisplay}).dxTextBox("instance")}createSaveViewButton(){return $("<button />").addClass("aps-displays__save-display iszolea-md").dxButton({text:"Save",type:"normal",disabled:!this.gridDisplaysManager.currentDisplay,onClick:()=>{this.dataGrid.beginCustomLoading("Loading"),this.gridDisplaysManager.updateCurrentDisplay(this.currentDisplayTitle.option("value"),this.gridFiltersManager.currentFilterId,this.gridViewsManager.currentViewId)},icon:"save",width:125}).dxButton("instance")}createSaveViewAsButton(){return $("<button />").addClass("aps-display__save-display-as iszolea-md").dxButton({text:"Save As",type:"normal",disabled:!this.gridFiltersManager.currentFilterId,onClick:()=>this.createSaveAsDialog(),icon:"save",width:160}).dxButton("instance")}createSaveAsDialog(){let t=$("<div />"),r=$('<div style="margin-bottom:8px;" />').dxTextBox({placeholder:"Display Name",showClearButton:!0}).dxValidator({validationRules:[{type:"required"}]}),i=r.dxTextBox("instance"),n=r.dxValidator("instance");return i.element().appendTo(t),J({title:"Create New Display",height:"auto",width:"100%",maxWidth:"300px"},t,{text:"Ok",onClick:async s=>{!n.validate().isValid||(this.dataGrid.beginCustomLoading("Loading"),this.gridDisplaysManager.createNewDisplay(i.option("value"),this.gridFiltersManager.currentFilterId,this.gridViewsManager.currentViewId),s())}},{text:"Cancel",onClick:s=>s()})}async confirmChangesLoss(){return DevExpress.ui.dialog.confirm("You have unsaved changes that will be lost if you close this popup. Do you want to close the popup and not save changes?","Unsaved changes")}get displaysToolbarItem(){return this._displaysToolbarItem||(this._displaysToolbarItem=this.createDisplaysToolbarItem()),this._displaysToolbarItem}get importFileToolbarItem(){return this._importFileToolbarItem||(this._importFileToolbarItem=this.createImportFileToolbarItem()),this._importFileToolbarItem}};var No=class{constructor(t){this._currentDisplayId=0;this.getDisplayById=t=>!t||!this.displays?null:this.displays.find(r=>r.Id===t);this.loadDataUrl=t.loadDataUrl,this.insertDataUrl=t.insertDataUrl,this.updateDataUrl=t.updateDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.eventHandlers={changed:[],loaded:[]}}async loadDisplays(){return this.displays=await ae(this.loadDataUrl),this.onDisplaisLoadedPrivate(),this.displays}async getDisplays(){return this.displays||await this.loadDisplays()}async createNewDisplay(t,r,i){let n={Id:0,Name:t,FilterId:r,ViewId:i};await x(this.insertDataUrl,"POST",n),await this.loadDisplays()}async deleteDisplay(t){await x(this.deleteDataUrl,"DELETE",{id:t}),await this.loadDisplays()}updateCurrentDisplay(t,r,i){return this.updateDisplay(this.currentDisplay.Id,t,r,i)}async updateDisplay(t,r,i,n){await x(this.updateDataUrl,"PUT",{id:t,name:r,filterId:i,viewId:n}),await this.loadDisplays()}onDisplayChangedPrivate(){this.eventHandlers.changed.forEach(t=>t(this.currentDisplay))}onDisplaisLoadedPrivate(){this.eventHandlers.loaded.forEach(t=>t(this.displays))}get currentDisplayId(){return this._currentDisplayId}set currentDisplayId(t){this._currentDisplayId=t,this.onDisplayChangedPrivate()}get currentDisplay(){return this.getDisplayById(this._currentDisplayId)}set onDisplayChanged(t){this.eventHandlers.changed.push(t)}set onDisplaisLoaded(t){this.eventHandlers.loaded.push(t)}};var Lo=class{constructor(t){this.onGridEditorPreparing=t=>{if(!t.component||!t.editorOptions||t.parentType!=="dataRow"||!t.dataField||!t.row||!t.row.key)return;let r=t.dataField,i=t.row.key,n=t.editorOptions.onValueChanged;t.editorOptions.onValueChanged=s=>{n(s),this.updateMultipleRows(r,i,s.value)}};this.options=O(A({},t),{autoIntegration:t.autoIntegration!==void 0&&t.autoIntegration!==null?t.autoIntegration:!0}),this.options.autoIntegration&&this.integrateToGrid(this.options.owner)}integrateToGrid(t){t.option("selection",{mode:"multiple"}),t.on("editorPreparing",this.onGridEditorPreparing)}async updateMultipleRows(t,r,i){let n=await this.options.owner.getSelectedRowKeys();if(!n.length)return;let s=n.findIndex(l=>l===r);s<0||n.length===1||(n.splice(s,1),n.forEach(l=>{this.options.owner.cellValue(this.options.owner.getRowIndexByKey(l),t,i)}))}};var Bo=class{constructor(t){this.defaultUserSettings={defaultFilterId:void 0,defaultViewId:W.defaultControlDisplayView.id};this.isLatestLoadedUserSettingsExpired=!0;this.options=A({},t),this.options.loadedUserSettings&&(this.latestLoadedUserSettings=this.options.loadedUserSettings),this.startAutoCacheResettingTimer()}get latestLoadedUserSettings(){return this._latestLoadedUserSettings}set latestLoadedUserSettings(t){this._latestLoadedUserSettings=t,this.isLatestLoadedUserSettingsExpired=!1}async getUserSettings(){if(!this.isLatestLoadedUserSettingsExpired)return this.latestLoadedUserSettings;try{this.latestLoadedUserSettings=await this.loadUserSettings()}catch(t){console.error(t)}return this.latestLoadedUserSettings}async updateUserSettings(t){try{this.latestLoadedUserSettings=await this.updateUserSettingsInternal(t)}catch(r){console.error(r)}return this.latestLoadedUserSettings}startAutoCacheResettingTimer(){this.autoResettingCacheTimerId=window.setInterval(()=>{this.isLatestLoadedUserSettingsExpired=!0},5e3)}stopAutoCacheResettingTimer(){window.clearInterval(this.autoResettingCacheTimerId)}},jt=class extends Bo{async loadUserSettings(){let t=localStorage.getItem(jt.userSettingsStorageKey);return t?JSON.parse(t):this.defaultUserSettings}async updateUserSettingsInternal(t){let r=await this.getUserSettings(),i=A(A({},r),t);return localStorage.setItem(jt.userSettingsStorageKey,JSON.stringify(i)),i}},Mr=jt;Mr.userSettingsStorageKey="aps:control-display:user-settings";var Fo=class extends Bo{constructor(t){super(t);this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl}async loadUserSettings(){let t=await ae(this.loadDataUrl);return t?this.mapControlDisplayUserSettingsDtoToModel(t):this.defaultUserSettings}async updateUserSettingsInternal(t){let r=await this.getUserSettings(),i=A(A({},r),t),n=await x(this.updateDataUrl,"PUT",this.mapControlDisplayUserSettingsModelToDto(i));return this.mapControlDisplayUserSettingsDtoToModel(n)}mapControlDisplayUserSettingsModelToDto(t){return{DefaultFilterId:t.defaultFilterId,DefaultViewId:t.defaultViewId}}mapControlDisplayUserSettingsDtoToModel(t){return{defaultFilterId:t.DefaultFilterId,defaultViewId:t.DefaultViewId}}};function Or(o){let t="",r=o.filter(n=>n.visible),i=r.filter(n=>n.visibleIndex!==null&&n.visibleIndex!==void 0);return i.length?t=i.sort((n,s)=>n.visibleIndex-s.visibleIndex)[0].dataField:t=r[0]&&r[0].dataField||"",t}var ze=class{constructor(t){this.gridGetter=t,this.privateContructor()}get grid(){return this.gridGetter()}getServiceColumns(){return[]}getRowUpdatingHandler(){}dataRowCellPrepared(t,r,i){}};function jo(o){return typeof o=="string"?o:JSON.stringify(o)}var Vt=class{constructor(){this.invalidCells={}}addInvalidCell(t,r){let i=jo(t);this.invalidCells[i]||(this.invalidCells[i]={}),this.invalidCells[i][r]=!0}markValid(t,r){let i=jo(t);this.invalidCells[i]&&delete this.invalidCells[i][r]}isValid(t,r){let i=jo(t);return!this.invalidCells[i]||!this.invalidCells[i][r]}reset(){this.invalidCells={}}};var Vo=class extends z{constructor(t){super();this.REQUEST_STATUS_UPDATED_EVENT="REQUEST_STATUS_UPDATED";this.pendingChanges=[];this.isRequestPending=!1;this.updateUrl=t}push(t,r=!1){this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{dataChange:[t],status:0}),t.isSeparatedRequest=r,this.isRequestPending?this.pendingChanges.push(t):this.sendRequest([t])}async sendRequest(t){if(t.length!==0){this.isRequestPending=!0,this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{dataChange:t,status:1});try{let r=await x(this.updateUrl,"POST",JSON.stringify(t),!1,{contentType:"application/json"}),i=r.filter(n=>n.isSuccess);i.length&&this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:2,dataChange:i.map(n=>n.dataChange),requestsInQueue:this.pendingChanges.length>0}),r.filter(n=>!n.isSuccess).forEach(n=>{this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:3,dataChange:[n.dataChange],requestsInQueue:this.pendingChanges.length>0,error:n.error})})}catch(r){this.emit(this.REQUEST_STATUS_UPDATED_EVENT,{status:3,dataChange:t,requestsInQueue:this.pendingChanges.length>0,error:r})}finally{this.isRequestPending=!1;let r=[];for(;this.pendingChanges.length;){if(this.pendingChanges[0].isSeparatedRequest){r.length||(r.push(this.pendingChanges.shift()),this.pendingChanges.shift());break}r.push(this.pendingChanges.shift())}r.length&&this.sendRequest(r)}}}};function ko(){let o=new Date().getTime(),t=typeof performance<"u"&&performance.now&&performance.now()*1e3||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(r){let i=Math.random()*16;return o>0?(i=(o+i)%16|0,o=Math.floor(o/16)):(i=(t+i)%16|0,t=Math.floor(t/16)),(r==="x"?i:i&3|8).toString(16)})}var en=(o,t)=>o.getDataSource().items().find(i=>{for(let n in t)if(i[n]!==t[n])return!1;return!0}),Ye="isoz-uuid",kt="isoz-updating-error",Gt=class extends ze{constructor(t,r,i){super(t);this.editValidationTracker=new Vt;this.pendingInsertPromise=null;this.requestQueue=new Vo(r),this.setupRequestQueue(i)}setupRequestQueue(t){let r=null,i=(n,s,l)=>{window.setTimeout(()=>{let g=this.grid.getRowElement(this.grid.getRowIndexByKey(s));!g||(n==="updating"&&g.addClass("saving"),n==="updated"&&(g.removeClass("saving").addClass("saved"),g.css({opacity:"",pointerEvents:""}),window.setTimeout(()=>g.removeClass("saved"),1e3)))})};this.requestQueue.on(this.requestQueue.REQUEST_STATUS_UPDATED_EVENT,async n=>{switch(n.status){case 0:n.dataChange.forEach(s=>{s.type==="update"&&i("updating",s.key)});break;case 1:r&&window.clearTimeout(r),t.html("<i class='dx-icon-refresh'></i> Saving...");break;case 2:r&&window.clearTimeout(r),n.requestsInQueue||(t.html("<i class='dx-icon-floppy'></i> Saved"),r=window.setTimeout(()=>t.html(""),3e3)),n.dataChange.forEach(s=>{s.type==="update"&&i("updated",s.key),s.type==="insert"&&this.pendingInsertPromise&&this.pendingInsertPromise&&(this.pendingInsertPromise.resolve(s.data),this.pendingInsertPromise=null)});break;case 3:n.dataChange.forEach(s=>{if(s.type==="insert"&&this.pendingInsertPromise&&(this.pendingInsertPromise.reject(n.error),this.pendingInsertPromise=null),s.type==="update"){let l=s.data[Ye],g="";if(l){let p=this.grid.getVisibleRows();for(let m=0;m<p.length;m++)if(p[m].data[Ye]===l){let S=n.error,h=m,E=Object.keys(s.data).find(T=>T!==Ye);g=E,this.grid.cellValue(m,kt,JSON.stringify({errMsg:S,rowIndex:h,editingField:E})),this.grid.saveEditData();break}}}});break}})}privateContructor(){}createDataSource(t){return{store:new DevExpress.data.CustomStore({key:t.key(),load:r=>t.load(r),byKey:(r,i)=>t.byKey(r,i),update:(r,i)=>{let n=$.Deferred();if(i[kt]){let{errMsg:s,rowIndex:l,editingField:g}=JSON.parse(i[kt]);n.reject(s);let p=this.grid.getKeyByRowIndex(l);p&&this.editValidationTracker.addInvalidCell(p,g),this.grid.getCellElement(l,g).addClass("aps-grid__editing-failed")}else{let s=en(this.grid,r);Object.keys(i).forEach(l=>{this.editValidationTracker.markValid(r,l)}),n.resolve($.extend(s||{},i)),this.requestQueue.push({key:r,type:"update",data:i})}return n.promise()},insert:r=>(this.pendingInsertPromise=$.Deferred(),this.requestQueue.push({type:"insert",data:r}),this.pendingInsertPromise.promise()),remove:r=>{let i=$.Deferred();return i.resolve(),this.requestQueue.push({type:"remove",key:r}),i.promise()},onLoaded:()=>{this.editValidationTracker.reset()}})}}getServiceColumns(){return[{visible:!1,dataField:Ye},{visible:!1,dataField:kt}]}getRowUpdatingHandler(){return t=>{let r=t.component.getRowIndexByKey(t.key),i=ko();t.component.getVisibleRows()[r].data[Ye]=i,t.newData[Ye]=i}}dataRowCellPrepared(t,r,i){this.editValidationTracker.isValid(t,r)||i.addClass("aps-grid__editing-failed")}};var $t=class extends ze{createDataSource(t){return{store:t}}privateContructor(){}};var tn={[1]:"string",[2]:"string",[8]:"string",[3]:"string",[4]:"string",[5]:"number",[6]:"string",[7]:"string",[10001]:"string",[10002]:"number",[10003]:"number",[10004]:"boolean",[10005]:"datetime",[10006]:"date"},pt=class{constructor(t){this.editingMode=2;this.tryParseJson=t=>{try{return JSON.parse(t.toString())}catch{return}};this.onViewApplied=t=>{this.clearFilterRowAfterViewSwitching()};this.$container=t.$container,this.$savingIndicator=t.$savingIndicator,this.isStandalonePage=t.isStandalonePage,this.pageTitle=t.pageTitle,this.exportFileName=t.exportFileName,this.userName=t.userName,this.userConfigUrl=t.userConfigUrl,this.controlLogsUrl=t.controlLogsUrl,this.loadDataUrl=t.loadDataUrl,this.updateDataUrl=t.updateDataUrl,this.addDataUrl=t.addDataUrl,this.deleteDataUrl=t.deleteDataUrl,this.uploadDocumentUrl=t.uploadDocumentUrl,this.downloadDocumentUrl=t.downloadDocumentUrl,this.gridFiltersManagerOptions=t.gridFiltersManagerOptions,this.gridViewsManagerOptions=t.gridViewsManagerOptions,this.gridDisplaysManagerOptions=t.gridDisplaysManagerOptions,this.remoteControlDisplayUserSettingsManagerLoadOptions=t.remoteControlDisplayUserSettingsManagerLoadOptions,this.importFileOptions=t.importFileOptions,this.disableGlobalSearch=!!t.disableGlobalSearch,this.editingMode=t.enableInlineEditing?2:1,this.allowDataEditing=t.allowDataEditing,this.getReferencedDataUrl=t.getReferencedDataUrl,this.asyncSummaryLoad=t.asyncSummaryLoad,this.editingManager=this.editingMode===2?new Gt(()=>this.mainGrid,t.batchUpdateDataUrl,this.$savingIndicator):new $t(()=>this.mainGrid),this.imageManager=new ke,this.imageManager.onUploaded(async r=>{let i=this.imageManager.images.length;this.imageManager.images=await this.uploadAndUpdateDocuments(r,1),this.imageManager.selectedIndex=i}),this.imageManager.onDeleted(r=>{this.imageManager.images=this.deleteDocumentHandler(r)}),this.imageManager.onReordered(()=>this.reorderImagesHandler(this.imageManager.images)),this.documentManager=new Ge({width:550,height:600}),this.documentManager.onUploaded(async r=>{this.documentManager.documents=await this.uploadAndUpdateDocuments(r,2)}),this.documentManager.onDeleted(r=>{this.documentManager.documents=this.deleteDocumentHandler(r)}),this.documentManager.onOpen(r=>{window.open(`${this.downloadDocumentUrl}?name=${r}`,"_blank")}),this.documentManager.onDownload(r=>{window.open(r,"_blank")}),this.imageGallery=new $e,this.$container.addClass(["aps-grid","control-display-grid"]),this.loadPanel=$("<div />").dxLoadPanel({message:"Uploading..."}).dxLoadPanel("instance"),$(document.body).append(this.loadPanel.element())}showLoader(t="Uploading..."){this.loadPanel.option("message",t),this.loadPanel.show()}hideLoader(){this.loadPanel.hide()}render(){x(this.userConfigUrl).then(t=>{let r=new dt(this.gridFiltersManagerOptions),i=new W(this.gridViewsManagerOptions),n=new No(this.gridDisplaysManagerOptions);this.mainGrid=this.createMainGrid(t.FieldsConfiguration,t.CanBeCreated,t.CanBeDeleted);let s=t.CanCreateDisplays&&t.CanCreateViews&&t.CanCreateFilters;(s||t.CanApplayDisplays)&&(this.gridDisplaysToolbarComponent=new Po({owner:this.mainGrid,editMode:s,gridFiltersManager:r,gridViewsManager:i,gridDisplaysManager:n,importFileOptions:this.importFileOptions})),this.gridViewsToolbarComponent=new Oo({owner:this.mainGrid,onViewApplied:this.onViewApplied,onViewDeleted:async()=>{await n.loadDisplays()},autoIntegration:!0,gridViewsManager:i,canCreateGlobalViews:t.CanCreateGlobalViews,visible:t.CanCreateViews}),this.gridFiltersToolbarComponent=new Uo({apsControlDisplayUserSettingsManager:new Fo({userId:this.userName,loadDataUrl:this.remoteControlDisplayUserSettingsManagerLoadOptions.loadDataUrl,updateDataUrl:this.remoteControlDisplayUserSettingsManagerLoadOptions.updateDataUrl}),owner:this.mainGrid,onFilterDeleted:async l=>{await n.loadDisplays()},autoIntegration:!0,gridFiltersManager:r,canCreateGlobalFilters:t.CanCreateGlobalFilters,visible:t.CanCreateFilters}),this.multipleEditingDataGridPlugin=new Lo({owner:this.mainGrid}),n.onDisplayChanged=async l=>{l?(await this.gridFiltersToolbarComponent.applyFilter(l.FilterId,!0),await this.gridViewsToolbarComponent.applyView(l.ViewId)):(this.gridFiltersToolbarComponent.applyFilter(void 0,!0),await this.gridViewsToolbarComponent.applyView(W.defaultControlDisplayView.id))}})}async uploadAndUpdateDocuments(t,r){let i=[];try{this.showLoader("Uploading...");let n=new FormData;n.append("type",r.toString());for(let g of t)n.append("files",g);let l=await(await fetch(this.uploadDocumentUrl,{method:"POST",body:n})).json();if(l.RequestState===1){let g=this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field),p=le(g)?JSON.parse(g):[],m=l.Data;p.push(...m),this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,JSON.stringify(p)),this.editingMode===2&&this.mainGrid.saveEditData(),i=p}else P(l.Message,!1)}catch{P("Error",!1)}finally{this.hideLoader()}return i}changePreviewImageSizeHandler(t,r){this.gridViewsToolbarComponent.options.gridStateManager.setFieldPreviewSize(t,r);let n=this.mainGrid.getVisibleRows().map(s=>s.rowIndex);this.mainGrid.repaintRows(n)}deleteDocumentHandler(t){let r=this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field),n=(le(r)?JSON.parse(r):[]).filter(s=>s.Id!==t);return this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,n.length?JSON.stringify(n):""),this.editingMode===2&&this.mainGrid.saveEditData(),n}reorderImagesHandler(t){this.mainGrid.cellValue(this.activeDocumentCellInfo.rowIndex,this.activeDocumentCellInfo.field,t.length?JSON.stringify(t):"")}hasPermisson(t,r){return t&r}buildTree(t){let r="__GROUP__",i=t.reduce((s,l)=>(l.Columns=[],l.GroupField=l.GroupField?`${r}${l.GroupField}`:null,s[l.Name]=l,s),{});i=t.filter(s=>s.GroupField).map(s=>s.GroupField).filter((s,l,g)=>g.indexOf(s)===l).reduce((s,l)=>{let g=l.replace(r,""),p={Name:l,Label:g,Columns:[],GroupField:i[g]&&i[g].GroupField&&i[g].GroupField!==l?i[g].GroupField:null};return s[l]=p,s},i);let n=[];for(let s in i)if(i.hasOwnProperty(s)){let l=i[s];l.GroupField?i[l.GroupField].Columns.push(l):n.push(l)}return n}renderDisplayType(t,r,i,n){var s;if(t.type===1&&(r.cellTemplate=(l,g)=>{let p=String(g.value),m=t.data.find(S=>String(S.value)===p);m?$("<div>").css({"text-align":"center"}).attr("title",m.title).append($("<img>",{src:m.image})).appendTo(l):$("<div />").css({"text-align":"center"}).text(g.value).appendTo(l)},r.editCellTemplate=(l,g)=>{$("<div />").dxSelectBox({dataSource:t.data,displayValue:"title",itemTemplate:p=>$("<div />").css({"text-align":"center"}).attr("title",p.title).append($("<img>",{src:p.image})).appendTo(l),fieldTemplate:(p,m)=>{let S=t.data.find(T=>parseInt(T.value)===g.value),h=$("<div />").addClass("item-name"),E=$("<div />").addClass("aps-icon-editor__custom-item").append($("<img>",{src:S?S.image:""}).attr("title",S?S.title:"")).append(h);h.dxTextBox({value:"",readOnly:!0}),m.append(E)},onValueChanged:({value:p,component:m})=>{g.setValue(parseInt(p.value)),m.blur()},value:g.value!==null&&g!==void 0&&g.value.toString(),selectedItem:t.data.find(p=>parseInt(p.value)===g.value)}).appendTo(l)},r.allowSearch=!1,r.allowFiltering=!1,r.allowHeaderFiltering=!0,r.allowGrouping=!1),t.type===2){let l=((s=t.data)==null?void 0:s.items)||[];r.cellTemplate=(g,p)=>{let m=this.getPredefinedValuesToString(p.value,t);g.append(m)},r.editCellTemplate=(g,p)=>{let m=(p.value||"").toString().split(";").map(h=>parseInt(h)),S=$("<div />").dxDropDownBox({dataSource:l,valueExpr:"key",displayExpr:"value",value:m,showClearButton:!0,acceptCustomValue:!1,dropDownOptions:{width:400},contentTemplate:h=>{var E;return $("<div />").dxDataGrid({dataSource:l,keyExpr:"key",columns:[{dataField:"key",visible:!1},{dataField:"value"}],showBorders:!1,showColumnLines:!1,showRowLines:!1,showColumnHeaders:!1,selection:{mode:((E=t.data)==null?void 0:E.multiselect)?"multiple":"single"},selectedRowKeys:m,activeStateEnabled:!1,onSelectionChanged:T=>{let I=T.component.option("selectedRowKeys");h.component.option("value",I)}})},onValueChanged:h=>{let E=(h.value||[]).join(";");p.setValue(E)}}).dxDropDownBox("instance");g.append(S.element()),S.open()},r.headerFilter={dataSource:l.map(g=>({text:g.value,value:[r.dataField,"contains",g.key.toString()]}))},r.filterOperations=["contains"],r.calculateFilterExpression=(g,p,m)=>{if(m==="headerFilter")return[r.dataField,"contains",g];{let S=p==="<>"||p==="notcontains",h=l.filter(T=>{switch(p){case"contains":return T.value.includes(g);case"notcontains":return T.value.includes(g);case"startswith":return T.value.startsWith(g);case"endswith":return T.value.endsWith(g);case"=":return T.value===g;case"<>":return T.value===g;default:return!1}}).map(T=>[r.dataField,S?"notcontains":"contains",T.key.toString()]);return S?h.push([r.dataField,"=",null]):h.length||h.push([r.dataField,"=","__no_value__"]),h.flatMap(T=>[S?"and":"or",T]).slice(1)}}}if(t.type===8){let l=t.data.fields.map(h=>({dataField:h,allowSearch:!0,allowFiltering:!0})),g=se({key:t.data.key,loadUrl:`${this.getReferencedDataUrl}?field=${r.dataField}`,loadMode:"raw"}),p=h=>{if(h===null)return[];if(Array.isArray(h))return h;let E=this.tryParseJson(h)||h;return Array.isArray(E)?E:[E]},m=(h,E,T)=>h?E.length===1?h[E[0]]:E.reduce((y,u)=>(y.push(`${u}: ${h.hasOwnProperty(u)?h[u]:T?'<i class="referenced-value-error">Field deleted or renamed</i>':"undefined"}`),y),[]).join(", "):"",S=(h,E,T)=>{let I=$("<div />");return p(h).forEach(y=>{let u=E.lookup.calculateCellValue(y);u||T||!y?I.append(u?`<div>${u}</div>`:""):I.append(`<div><i class="referenced-value-error">Row ${t.data.table}.[${t.data.key}]=${y} not found</i></div>`)}),I};r.cellTemplate=(h,E)=>{h.append(S(E.value,E.column,E.row.isNewRow))},r.editCellTemplate=(h,E)=>{let T=$("<div />").dxDataGrid({height:500,width:"100%",dataSource:g,remoteOperations:!0,scrolling:{mode:"virtual"},selection:{mode:t.data.multiselect?"multiple":"single",showCheckBoxesMode:"always"},headerFilter:{visible:!0},filterRow:{visible:!0},selectedRowKeys:p(E.value),columns:[{dataField:t.data.key,visible:!1},...l],onSelectionChanged:y=>{I.option("value",y.selectedRowKeys)}}).dxDataGrid("instance"),I=$("<div />").dxDropDownBox({dataSource:g,value:p(E.value),valueExpr:t.data.key,displayExpr:y=>m(y,t.data.fields,!1),contentTemplate:()=>T.element(),showClearButton:!0,dropDownOptions:{width:500},onValueChanged:y=>{let u=y.value;if(!(u==null?void 0:u.length))E.setValue(null);else{let v=t.data.multiselect?JSON.stringify(u):u[0];E.setValue(v)}!t.data.multiselect&&(u==null?void 0:u.length)&&I.close()}}).dxDropDownBox("instance");h.append(I.element()),I.open()},r.lookup={dataSource:g,valueExpr:t.data.key,displayExpr:h=>m(h,t.data.fields,!0)},r.groupCellTemplate=(h,E)=>{h.append($(`
|
|
56
56
|
<div class="referenced-value-group-header">
|
|
57
57
|
<div class="referenced-value-group-header__caption">${E.column.caption}: </div>
|
|
58
58
|
</div>
|
|
@@ -88,5 +88,5 @@ to disable the global search function and allow filtering by column only.`).dxPo
|
|
|
88
88
|
'${s.join(", ")}'.
|
|
89
89
|
|
|
90
90
|
Do you want to remove these columns from grid settings?
|
|
91
|
-
`,"Remove redundant columns?").then(l=>{!l||r(s)})})}resetSettings(){return this.gridDataLayer.resetSettings(this.id).then(t=>(this.onDataLoaded(t),t))}onDataLoaded(t){let r=t&&t.columns,i=0;this.stateLoaded=!0,r&&(this.loadedColumns={},r.forEach(n=>{this.loadedColumns[n.dataField]=!0,n.visible&&n.visibleIndex===null&&(n.visibleIndex=i++),Object.keys(n).forEach(l=>{(n[l]===null||n[l]===void 0||n[l]==="")&&delete n[l]});let s=this.additionalColumnsSettings[n.dataField];s?(s.caption=n.caption,s.tooltip=n.tooltip):this.additionalColumnsSettings[n.dataField]={caption:n.caption,tooltip:n.tooltip},delete n.caption,delete n.tooltip})),this.lastColumnSettingsStr=JSON.stringify(t.columns)}};var Nr=(r=>(r[r.View=1]="View",r[r.Edit=2]="Edit",r))(Nr||{}),j=Nr;var Lr=o=>{let t={gridResult:`${o}/GridViewResult`,getColumnsByReportId:`${o}/GetDbTableFields`,resetGridSettings:`${o}/ResetGridViewSettings`,updateGridViewSettings:`${o}/UpdateGridViewSettings`,getGridViewSettings:`${o}/GetGridViewSettings`};return{getGridDataSource(r,i,n){return se({loadParams:{id:r.ReportId,appName:r.AppName,gridMode:i,rowsLimit:i===j.Edit&&!n?15:null},loadUrl:t.gridResult,getUserFriendlyErrorMessage:rn})},getColumnsByReportId:r=>x(t.getColumnsByReportId,"post",{id:r},!1,{dataType:"json"}),resetSettings:r=>x(t.resetGridSettings,"post",{id:r},!1,{dataType:"json"}),updateGridViewSettings:(r,i)=>x(t.updateGridViewSettings,"post",{id:r,columnsSettings:JSON.stringify(i.columns)},!1,{dataType:"json"}),getGridViewSettings:r=>x(t.getGridViewSettings,"post",{id:r},!1,{dataType:"json"})}},rn=o=>{switch(o){case 1:return"We attempted to execute the data query however it appears there is an error in the data source. Please contact the report author to confirm the data requirements.";default:return""}};var Ke=class{constructor(t){this.activeTimerId=0;this.currentInterval=0;this.elapsedCallback=t.elapsedCallback,this.callback=t.callback}start(t){if(t<=0){this.callback();return}this.lastStateChecked=new Date,this.currentInterval=t;let r=this.activeTimerId=Math.random();if(this.currentInterval<0){this.elapsedCallback(this.currentInterval);return}this.tickTimerFunction(r)}triggerChange(){this.lastStateChecked=new Date,this.callback()}dispose(){this.activeTimerId--}tickTimerFunction(t){if(t!==this.activeTimerId)return;let r=this.currentInterval-(new Date-this.lastStateChecked);r<=0&&(r=this.currentInterval+999,this.callback(),this.lastStateChecked=new Date),this.elapsedCallback(r),setTimeout(()=>this.tickTimerFunction(t),100)}};var nn=[{timeout:0,text:"refresh now",refreshTemplate:""},{timeout:15*1e3,text:"15 sec",refreshTemplate:"Auto Update (%)"},{timeout:30*1e3,text:"30 sec",refreshTemplate:"Auto Update (%)"},{timeout:60*1e3,text:"1 min",refreshTemplate:"Auto Update (%)"},{timeout:180*1e3,text:"3 min",refreshTemplate:"Auto Update (%)"},{timeout:300*1e3,text:"5 min",refreshTemplate:"Auto Update (%)"},{timeout:600*1e3,text:"10 min",refreshTemplate:"Auto Update (%)"},{timeout:-1,text:"off",refreshTemplate:"Auto Update: off",isDefault:!0}],pe=class{constructor(t,r,i=nn){this.menuIsOpened=!1;this.refreshComponent=new Ke({callback:r,elapsedCallback:n=>this.elapsedCallback(n)}),this.selectedEntry=i.find(n=>n.isDefault)||i.filter(n=>!!n.timeout)[0],this.contextMenu=$("<div />").dxContextMenu({dataSource:i,target:t,position:{my:"right top",at:"right bottom"},onItemClick:n=>{n.itemData.timeout?(this.selectedEntry=n.itemData,n.component.selectItem(this.selectedEntry),this.refreshComponent.start(n.itemData.timeout),n.component.hide()):(n.component.hide(),this.refresh())},onHidden:()=>{this.menuIsOpened=!1},onShown:n=>{this.menuIsOpened=!0,n.component.itemsContainer()[0].parentElement.classList.add("iszolea-theme")},itemTemplate:n=>n.text,cssClass:"iszolea-theme"}).appendTo("body").dxContextMenu("instance"),this.contextMenu.selectItem(this.selectedEntry),this.dropDownButton=t.dxButton({text:this.selectedEntry.text,template:(n,s)=>($("<i />").addClass("dx-icon dx-icon-refresh").appendTo(s),$("<span>").addClass("button-with-expand-text").text(n.text).appendTo(s),$("<span>").addClass("button-with-expand-icon isoz-icon-16 isoz-icon-arrow-down-16").appendTo(s),s),elementAttr:{class:"iszolea-md button-with-expand"},onClick:n=>{this.contextMenu.element().width(t.outerWidth()),this.menuIsOpened?this.contextMenu.hide():this.contextMenu.show()}}).dxButton("instance"),this.selectedEntry.timeout>0&&this.refreshComponent.start(this.selectedEntry.timeout)}refresh(){this.refreshComponent.triggerChange()}elapsedCallback(t){this.dropDownButton.option("text",this.selectedEntry.refreshTemplate.replace("%",Math.floor(t/1e3).toString()))}};var sn=3e3,Je=class{constructor(t){this.currentGridMode=null;this.showAllDataInEdit=!1;this.loadingTimeout=null;this.grid=null;this.popover=null;this.gridStateManager=null;this.$gridStateIndicator=null;this.$gridErrorPlaceholder=null;this.$gridTargetElement=null;this.$resetSettingTargetElement=null;this.gridStateIndicatorTimeout=null;this.editWidthEditBoxes=null;this.gridRepaintQueued=!1;this.columnNamesUpdated=!1;this.refreshButton=null;this.gridPositionMarker=t.gridPositionMarker,this.reportParams=t.reportParams,this.allowEditing=t.allowEditing,this.addRefreshButton=t.addRefreshButton,this.gridReportControllerUrl=t.gridReportControllerUrl,this.showHeader=t.showHeader,this.asyncSummaryLoad=t.asyncSummaryLoad}init(){this.currentGridMode||(this.currentGridMode=j.View),this.initInternal()}refresh(){var t;(t=this.grid)==null||t.refresh()}dispose(){var t,r,i,n;(t=this.grid)==null||t.dispose(),this.grid=null,this.currentGridMode=null,(r=this.$resetSettingTargetElement)==null||r.remove(),(i=this.$gridTargetElement)==null||i.remove(),(n=this.popover)==null||n.dispose(),this.popover=null}initInternal(){var r;this.dataLayer=Lr(this.gridReportControllerUrl),this.$gridTargetElement&&this.$gridTargetElement.remove(),this.$gridTargetElement=$("<div />").insertAfter(this.gridPositionMarker),this.gridStateManager=new Wt(this.reportParams.ReportId,this.dataLayer),this.$gridErrorPlaceholder=$("<div />").text("Data loading failed.").addClass("dx-datagrid-nodata").css({zIndex:1}),this.$gridErrorPlaceholder.appendTo(this.gridPositionMarker),this.$gridErrorPlaceholder.hide(),this.reportParams.Details&&(this.popover=ee(".report-details-link",this.reportParams.Details)),this.editWidthEditBoxes=[];let t={dataSource:this.createDataSource(this.reportParams,this.currentGridMode,this.showAllDataInEdit),elementAttr:{class:this.currentGridMode===j.Edit?"edit-mode":"view-mode"},repaintChangesOnly:!0,onToolbarPreparing:i=>{let n=i.toolbarOptions.items;if(this.currentGridMode===j.View&&this.allowEditing){let s=n.filter(p=>p.name==="searchPanel")[0],l=n.indexOf(s),g={widget:"dxButton",location:"after",options:{text:"Switch to Edit Mode",onClick:()=>this.switchToMode(j.Edit),icon:"switch-to-edit-mode",elementAttr:{class:"iszolea-md"}}};n.splice(l,1),n.push(g),n.push(s)}if(this.currentGridMode===j.Edit){let s=n.filter(E=>E.name==="columnChooserButton")[0],l=n.indexOf(s),g={location:"after",template:()=>{let E=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});$("<span />").css({margin:"0 5px 0 0",width:"54px"}).dxSwitch({value:this.showAllDataInEdit,onValueChanged:({value:I})=>{this.showAllDataInEdit=I,this.grid.option("dataSource",this.createDataSource(this.reportParams,this.currentGridMode,this.showAllDataInEdit)),this.grid.refresh()}}).appendTo(E),$("<span />").text("Show all data ").appendTo(E);let T=$("<a />").css({textDecoration:"underline",color:"blue"}).text("(?)").appendTo(E);return $("<div />").text(`If the table contains a lot of columns showing all data can lead to slow page performance when you're editing the grid.
|
|
91
|
+
`,"Remove redundant columns?").then(l=>{!l||r(s)})})}resetSettings(){return this.gridDataLayer.resetSettings(this.id).then(t=>(this.onDataLoaded(t),t))}onDataLoaded(t){let r=t&&t.columns,i=0;this.stateLoaded=!0,r&&(this.loadedColumns={},r.forEach(n=>{this.loadedColumns[n.dataField]=!0,n.visible&&n.visibleIndex===null&&(n.visibleIndex=i++),Object.keys(n).forEach(l=>{(n[l]===null||n[l]===void 0||n[l]==="")&&delete n[l]});let s=this.additionalColumnsSettings[n.dataField];s?(s.caption=n.caption,s.tooltip=n.tooltip):this.additionalColumnsSettings[n.dataField]={caption:n.caption,tooltip:n.tooltip},delete n.caption,delete n.tooltip})),this.lastColumnSettingsStr=JSON.stringify(t.columns)}};var Nr=(r=>(r[r.View=1]="View",r[r.Edit=2]="Edit",r))(Nr||{}),j=Nr;var Lr=o=>{let t={gridResult:`${o}/GridViewResult`,getColumnsByReportId:`${o}/GetDbTableFields`,resetGridSettings:`${o}/ResetGridViewSettings`,updateGridViewSettings:`${o}/UpdateGridViewSettings`,getGridViewSettings:`${o}/GetGridViewSettings`};return{getGridDataSource(r,i,n){return se({loadParams:{id:r.ReportId,appName:r.AppName,gridMode:i,rowsLimit:i===j.Edit&&!n?15:null},loadUrl:t.gridResult,getUserFriendlyErrorMessage:rn})},getColumnsByReportId:r=>x(t.getColumnsByReportId,"post",{id:r},!1,{dataType:"json"}),resetSettings:r=>x(t.resetGridSettings,"post",{id:r},!1,{dataType:"json"}),updateGridViewSettings:(r,i)=>x(t.updateGridViewSettings,"post",{id:r,columnsSettings:JSON.stringify(i.columns)},!1,{dataType:"json"}),getGridViewSettings:r=>x(t.getGridViewSettings,"post",{id:r},!1,{dataType:"json"})}},rn=o=>{switch(o){case 1:return"We attempted to execute the data query however it appears there is an error in the data source. Please contact the report author to confirm the data requirements.";default:return""}};var Ke=class{constructor(t){this.activeTimerId=0;this.currentInterval=0;this.elapsedCallback=t.elapsedCallback,this.callback=t.callback}start(t){if(t<=0){this.callback();return}this.lastStateChecked=new Date,this.currentInterval=t;let r=this.activeTimerId=Math.random();if(this.currentInterval<0){this.elapsedCallback(this.currentInterval);return}this.tickTimerFunction(r)}triggerChange(){this.lastStateChecked=new Date,this.callback()}dispose(){this.activeTimerId--}tickTimerFunction(t){if(t!==this.activeTimerId)return;let r=this.currentInterval-(new Date-this.lastStateChecked);r<=0&&(r=this.currentInterval+999,this.callback(),this.lastStateChecked=new Date),this.elapsedCallback(r),setTimeout(()=>this.tickTimerFunction(t),100)}};var nn=[{timeout:0,text:"refresh now",refreshTemplate:""},{timeout:15*1e3,text:"15 sec",refreshTemplate:"Auto Update (%)"},{timeout:30*1e3,text:"30 sec",refreshTemplate:"Auto Update (%)"},{timeout:60*1e3,text:"1 min",refreshTemplate:"Auto Update (%)"},{timeout:180*1e3,text:"3 min",refreshTemplate:"Auto Update (%)"},{timeout:300*1e3,text:"5 min",refreshTemplate:"Auto Update (%)"},{timeout:600*1e3,text:"10 min",refreshTemplate:"Auto Update (%)"},{timeout:-1,text:"off",refreshTemplate:"Auto Update: off",isDefault:!0}],pe=class{constructor(t,r,i=nn){this.menuIsOpened=!1;this.refreshComponent=new Ke({callback:r,elapsedCallback:n=>this.elapsedCallback(n)}),this.selectedEntry=i.find(n=>n.isDefault)||i.filter(n=>!!n.timeout)[0],this.contextMenu=$("<div />").dxContextMenu({dataSource:i,target:t,position:{my:"right top",at:"right bottom"},onItemClick:n=>{n.itemData.timeout?(this.selectedEntry=n.itemData,n.component.selectItem(this.selectedEntry),this.refreshComponent.start(n.itemData.timeout),n.component.hide()):(n.component.hide(),this.refresh())},onHidden:()=>{this.menuIsOpened=!1},onShown:n=>{this.menuIsOpened=!0,n.component.itemsContainer()[0].parentElement.classList.add("iszolea-theme")},itemTemplate:n=>n.text,cssClass:"iszolea-theme"}).appendTo("body").dxContextMenu("instance"),this.contextMenu.selectItem(this.selectedEntry),this.dropDownButton=t.dxButton({text:this.selectedEntry.text,template:(n,s)=>($("<i />").addClass("dx-icon dx-icon-refresh").appendTo(s),$("<span>").addClass("button-with-expand-text").text(n.text).appendTo(s),$("<span>").addClass("button-with-expand-icon isoz-icon-16 isoz-icon-arrow-down-16").appendTo(s),s),elementAttr:{class:"iszolea-md button-with-expand"},onClick:n=>{this.contextMenu.element().width(t.outerWidth()),this.menuIsOpened?this.contextMenu.hide():this.contextMenu.show()}}).dxButton("instance"),this.selectedEntry.timeout>0&&this.refreshComponent.start(this.selectedEntry.timeout)}refresh(){this.refreshComponent.triggerChange()}elapsedCallback(t){this.dropDownButton.option("text",this.selectedEntry.refreshTemplate.replace("%",Math.floor(t/1e3).toString()))}};var sn=3e3,Je=class{constructor(t){this.currentGridMode=null;this.showAllDataInEdit=!1;this.loadingTimeout=null;this.grid=null;this.popover=null;this.gridStateManager=null;this.$gridStateIndicator=null;this.$gridErrorPlaceholder=null;this.$gridTargetElement=null;this.$resetSettingTargetElement=null;this.gridStateIndicatorTimeout=null;this.editWidthEditBoxes=null;this.gridRepaintQueued=!1;this.columnNamesUpdated=!1;this.refreshButton=null;this.gridPositionMarker=t.gridPositionMarker,this.reportParams=t.reportParams,this.allowEditing=t.allowEditing,this.addRefreshButton=t.addRefreshButton,this.gridReportControllerUrl=t.gridReportControllerUrl,this.showHeader=t.showHeader,this.asyncSummaryLoad=t.asyncSummaryLoad}init(){this.currentGridMode||(this.currentGridMode=j.View),this.initInternal()}refresh(){var t;(t=this.grid)==null||t.refresh()}dispose(){var t,r,i,n;(t=this.grid)==null||t.dispose(),this.grid=null,this.currentGridMode=null,(r=this.$resetSettingTargetElement)==null||r.remove(),(i=this.$gridTargetElement)==null||i.remove(),(n=this.popover)==null||n.dispose(),this.popover=null}initInternal(){var r;this.dataLayer=Lr(this.gridReportControllerUrl),this.$gridTargetElement&&this.$gridTargetElement.remove(),this.$gridTargetElement=$("<div />").insertAfter(this.gridPositionMarker),this.gridStateManager=new Wt(this.reportParams.ReportId,this.dataLayer),this.$gridErrorPlaceholder=$("<div />").text("Data loading failed.").addClass("dx-datagrid-nodata").css({zIndex:1}),this.$gridErrorPlaceholder.appendTo(this.gridPositionMarker),this.$gridErrorPlaceholder.hide(),this.reportParams.Details&&(this.popover=ee(".report-details-link",this.reportParams.Details)),this.editWidthEditBoxes=[];let t={width:"100%",dataSource:this.createDataSource(this.reportParams,this.currentGridMode,this.showAllDataInEdit),elementAttr:{class:this.currentGridMode===j.Edit?"edit-mode":"view-mode"},repaintChangesOnly:!0,onToolbarPreparing:i=>{let n=i.toolbarOptions.items;if(this.currentGridMode===j.View&&this.allowEditing){let s=n.filter(p=>p.name==="searchPanel")[0],l=n.indexOf(s),g={widget:"dxButton",location:"after",options:{text:"Switch to Edit Mode",onClick:()=>this.switchToMode(j.Edit),icon:"switch-to-edit-mode",elementAttr:{class:"iszolea-md"}}};n.splice(l,1),n.push(g),n.push(s)}if(this.currentGridMode===j.Edit){let s=n.filter(E=>E.name==="columnChooserButton")[0],l=n.indexOf(s),g={location:"after",template:()=>{let E=$("<div />").css({border:"1px #e0e0e0 solid",padding:"3px 6px",borderRadius:"4px",background:"white"});$("<span />").css({margin:"0 5px 0 0",width:"54px"}).dxSwitch({value:this.showAllDataInEdit,onValueChanged:({value:I})=>{this.showAllDataInEdit=I,this.grid.option("dataSource",this.createDataSource(this.reportParams,this.currentGridMode,this.showAllDataInEdit)),this.grid.refresh()}}).appendTo(E),$("<span />").text("Show all data ").appendTo(E);let T=$("<a />").css({textDecoration:"underline",color:"blue"}).text("(?)").appendTo(E);return $("<div />").text(`If the table contains a lot of columns showing all data can lead to slow page performance when you're editing the grid.
|
|
92
92
|
By default grid shows only first 10 rows in the Edit mode.`).dxPopover({target:T,showEvent:"mouseenter",hideEvent:"mouseleave",position:"top",width:500}).appendTo(E),E}},p={widget:"dxButton",location:"after",options:{text:"Switch to View Mode",onClick:()=>this.switchToMode(j.View),icon:"switch-to-view-mode",elementAttr:{class:"iszolea-md"}}};n.splice(l,1);let m=n.filter(E=>E.name==="exportButton")[0],S=n.indexOf(m);n.splice(S,1),n.push(g),n.push(p),n.push(s);let h={location:"before",template:()=>(this.$gridStateIndicator=$("<div />").addClass("edit-grid-state"),this.updateGridStateIndicator(re.edit),this.$gridStateIndicator)};n.unshift(h)}if(this.addRefreshButton){let s=n.filter(g=>g.name==="refresh")[0],l=n.indexOf(s);n[l]={location:"after",template:()=>{let g=$("<div />");return this.refreshButton=new pe(g,()=>this.refresh()),g}}}},onCellPrepared:({rowType:i,column:n,cellElement:s})=>{if(i==="header"&&!n.command){let l=n.dataField,g=this.gridStateManager.getColumnAdditionalSettings(l);this.initGridHeaderCell(s,g),this.currentGridMode===j.Edit&&this.initGridHeaderCellEditPanel(n,s,g)}},onContentReady:i=>{let n=i.component,s=n.state();if(!this.columnNamesUpdated)this.updateColumnNaming(s);else return;if(window.setTimeout(()=>n.endCustomLoading()),this.currentGridMode!==j.Edit)return;this.gridStateManager.checkNewColumns(s).forEach(p=>i.component.columnOption(p,"visible",!1)),this.gridStateManager.getColumnCaptions().forEach(p=>{p.caption&&n.columnOption(p.dataField,"caption")!==p.caption&&n.columnOption(p.dataField,"caption",p.caption)})},stateStoring:{enabled:!0,type:"custom",customLoad:()=>this.gridStateManager.load(this.currentGridMode===j.Edit,i=>{let n=this.grid.state();n.columns=n.columns.filter(s=>i.indexOf(s.dataField)<0),this.grid.state(n)}),customSave:i=>this.saveGridState(i)},filterRow:{visible:this.currentGridMode===j.View,applyFilter:"onClick"},headerFilter:{visible:this.currentGridMode===j.View},searchPanel:{visible:this.currentGridMode===j.View},errorRowEnabled:!1,allowColumnResizing:!0,sorting:{mode:"multiple"},groupPanel:{visible:!0},grouping:{autoExpandAll:!1},allowColumnReordering:this.currentGridMode===j.Edit,columnChooser:{enabled:this.currentGridMode===j.Edit},showColumnHeaders:!0,keyboardNavigation:{enabled:!1},showBorders:!0,paging:{pageSize:50,enabled:!0},remoteOperations:!0,summary:this.reportParams.TotalSummaryColumn?{totalItems:[{column:this.reportParams.TotalSummaryColumn,summaryType:"count"}]}:void 0,onEditorPreparing(i){if(i.parentType==="filterRow"){let n=()=>i.element.find(".dx-apply-button").trigger("dxclick");i.editorOptions.onEnterKey=n,i.editorOptions.onFocusOut=n}if(i.parentType==="searchPanel"){let n=s=>{i.component.searchByText(s.component.option("value"))};i.editorOptions.onValueChanged=void 0,i.editorOptions.onEnterKey=n,i.editorOptions.onFocusOut=n}}};return this.grid=V(this.$gridTargetElement,{options:t,exportFileName:this.reportParams.Name,title:this.showHeader?this.reportParams.Name:null,headerDescription:this.showHeader?this.reportParams.Details:null,asyncSummaryLoad:this.asyncSummaryLoad}),(r=this.$resetSettingTargetElement)==null||r.remove(),this.currentGridMode===j.Edit&&(this.$resetSettingTargetElement=$("<span />").css({float:"right",position:"relative",bottom:"8px"}).addClass("iszolea-md").dxButton({text:"Reset settings",onClick:()=>this.resetSettings(),icon:"reset-grid-settings"}).appendTo("footer")),this.grid}updateGridStateIndicator(t){Object.keys(re).forEach(i=>this.$gridStateIndicator.removeClass(re[i])),this.$gridStateIndicator.addClass(t),this.gridStateIndicatorTimeout&&window.clearTimeout(this.gridStateIndicatorTimeout),t===re.saved&&(this.gridStateIndicatorTimeout=window.setTimeout(()=>{this.updateGridStateIndicator(re.edit)},sn));let r="";switch(t){case re.edit:r="Edit mode";break;case re.saved:r="Saved";break;case re.saving:r="Saving";break}this.$gridStateIndicator.attr("title",r)}updateColumnNaming(t){t.columns&&t.columns.forEach(r=>{/[^a-zA-Z0-9_]/.test(r.dataField)&&this.grid.columnOption(r.dataField,"calculateCellValue",i=>i[r.dataField])}),this.columnNamesUpdated=!0}createDataSource(t,r,i){let n=this.dataLayer.getGridDataSource(t,r,i),s=new DevExpress.data.DataSource({store:n,onChanged:r===j.View?void 0:()=>{this.columnNamesUpdated=!1},onLoadError:l=>{s.isLoaded()||this.$gridErrorPlaceholder.show(),this.grid.endCustomLoading()},onLoadingChanged:l=>{l?(this.$gridErrorPlaceholder.hide(),this.loadingTimeout=setTimeout(()=>{this.grid.beginCustomLoading("Please wait, data loading in progress.")},1e4)):(this.loadingTimeout&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=null),this.grid.endCustomLoading())}});return s}resetSettings(){DevExpress.ui.dialog.confirm("Reset grid settings to default values?","Reset to default?").then(t=>{t&&(this.grid.beginCustomLoading("Loading"),this.gridStateManager.resetSettings().then(r=>{this.grid.state(r),this.grid.option("dataSource",this.createDataSource(this.reportParams,this.currentGridMode,this.showAllDataInEdit)),this.grid.refresh()}))})}switchToMode(t){if(this.currentGridMode===t||t===j.Edit&&!this.allowEditing)return;this.currentGridMode=t;let r=this.grid.option("summary.totalItems[0].column"),i=O(A({},this.reportParams),{TotalSummaryColumn:r||this.reportParams.TotalSummaryColumn});this.reportParams=i,this.grid.dispose(),this.$gridTargetElement.remove(),this.grid=this.initInternal()}saveGridState(t){if(this.currentGridMode!==j.Edit)return;this.columnNamesUpdated=!1;let r=this.gridStateManager.save(t,()=>this.updateGridStateIndicator(re.saving),()=>this.updateGridStateIndicator(re.saved));r&&Object.keys(r).forEach(i=>{let n=this.editWidthEditBoxes[i],s=r[i]==="inherit"?"":r[i];n&&n.option("value")!==s&&n.option("value",s)})}initGridHeaderCellEditPanel(t,r,i){let n=t.dataField,s=r.find(".dx-datagrid-text-content"),l=$("<span />").addClass("column-editor-area").insertAfter(s);s.css("maxWidth","55%");let g=$("<div />").addClass("edit-type-panel").width("100%").appendTo(r),p=$("<div />").addClass("edit-width-panel").width("100%").appendTo(r);g[0].addEventListener("click",u=>{u.preventDefault(),u.stopImmediatePropagation();let v=E.dxSelectBox("instance");v.option("opened")?v.close():v.open()},!0);let m=t.caption,S=$("<span />").dxButton({hint:"Edit column caption",template:(u,v)=>v.append($("<span />").addClass("edit-caption-btn")),onClick:({event:u})=>{u.preventDefault(),u.stopImmediatePropagation(),s.hide(),S.hide(),h.hide();let v=$("<span />").dxTextBox({value:m,elementAttr:{class:"caption-editor"},onEnterKey:D=>{w.blur(),D.event.stopPropagation()},onKeyDown:D=>{D.event.stopPropagation()},onFocusOut:D=>{let _=w.option("value");v.remove(),s.text(_).show(),S.show(),h.show(),m=_,this.gridStateManager.setColumnCaption(n,_),this.saveGridState(this.grid.state())}}).addClass("iszolea-sm").appendTo(l).on("click",D=>{D.stopImmediatePropagation(),D.preventDefault()}),w=v.dxTextBox("instance");w.focus()}}).insertAfter(s),h=$("<span />").dxButton({hint:"Edit column tooltip",template:(u,v)=>v.append($("<span />").addClass("edit-tooltip-btn")),onClick:({event:u})=>{u.preventDefault(),u.stopImmediatePropagation(),s.hide(),S.hide(),h.hide();let v=$("<span />").dxTextBox({value:i&&i.tooltip,text:i&&i.tooltip,placeholder:"Enter column tooltip...",onEnterKey:D=>{w.blur(),D.event.stopPropagation()},onKeyDown:D=>{D.event.stopPropagation()},onFocusOut:()=>{let D=w.option("value");v.remove(),s.show(),S.show(),h.show(),i.tooltip=D,r.attr("title",D),this.saveGridState(this.grid.state())}}).addClass("iszolea-sm").appendTo(l).on("click",D=>{D.stopImmediatePropagation(),D.preventDefault()}),w=v.dxTextBox("instance");w.focus()}}).insertAfter(S),E=$("<span />").dxSelectBox({dataSource:Be,value:t.dataType||"default",placeholder:"Select column type...",onValueChanged:({value:u})=>{this.grid.columnOption(n,"dataType",u)}}).addClass("iszolea-sm").appendTo(g),T=t.width?t.width.toString():"",I=u=>{let v=u.component.option("value");(!v||v==="inherit")&&(v=""),(!T||T==="inherit")&&(T=""),v!==T&&(T=v,this.grid.columnOption(n,"width",v||"inherit"),this.gridRepaintQueued||(window.setTimeout(()=>{this.grid.repaint(),this.gridRepaintQueued=!1},100),this.gridRepaintQueued=!0))},y=$("<span />").dxTextBox({text:T==="inherit"?"":T,placeholder:"Set width...",onEnterKey:()=>y.dxTextBox("instance").blur(),onFocusOut:I,onValueChanged:I}).addClass("iszolea-sm").appendTo(p).on("click",u=>{u.stopImmediatePropagation(),u.preventDefault()});this.editWidthEditBoxes[t.visibleIndex]=y.dxTextBox("instance")}initGridHeaderCell(t,r){let i=t.find(".dx-datagrid-text-content"),n=r&&r.tooltip,s=r&&r.caption;t.attr("title",n||void 0),s&&i.text(s)}};var an={subvalues:[],type:"triangleMarker",color:"#8798a5",secondColor:"#e18e92",width:10,isCustomPalette:!1,palette:null,customPalette:["#61a595","Grey","rgb(153, 102, 255)","Navy"]},fe="isoz-subvalueEditorFormGroup",ln=`${fe}__name`,Br=`${fe}__is-bound`,Fr=`${fe}__value`,jr=`${fe}__measure-id`,dn=`${fe}__color`,gn=["rectangleNeedle","triangleNeedle","rangeBar","triangleMarker","textCloud"],pn=["rectangle","circle","rhombus","rangeBar","triangleMarker","textCloud"];var un=["LinearHorizontal","LinearVertical"],zt=["#1db2f5","#f5564a","#97c95c","#ffc720","#eb3573","#a63db8","#6593bc","#faa335","#ff887c"];var Gr,$r,Kt={ownerType:($r=(Gr=DevExpress==null?void 0:DevExpress.Dashboard)==null?void 0:Gr.Model)==null?void 0:$r.GaugeItem,propertyName:"GaugeSubvaluesSettings",defaultValue:JSON.stringify(an),valueType:"string"},Hr,Wr;(Wr=(Hr=DevExpress==null?void 0:DevExpress.Dashboard)==null?void 0:Hr.Model)==null||Wr.registerCustomProperty(Kt);function Vr(o){var t,r,i;if(o.dashboardItem instanceof((r=(t=DevExpress==null?void 0:DevExpress.Dashboard)==null?void 0:t.Model)==null?void 0:r.GaugeItem)){let n=Re(o.dashboardItem),s=o.options;s.subvalues=s.subvalues||[],s.subvalueIndicator=s.subvalueIndicator||{},s.subvalueIndicator.type=n.type,s.subvalueIndicator.width=n.width;let l=!!((i=o.dashboardItem.gauges()[0])==null?void 0:i.targetValue());s.subvalueIndicator.palette=n.subvalues.filter(g=>l||g.key>-1).map(g=>g.color),n.subvalues.forEach(g=>{if(g.key===-1)return;let p=g.isBound?o.itemData.getMeasureValue(g.measureId).getValue():g.value;s.subvalues.push(p)})}}function kr(o){var r,i;let t=o.dashboardItem;t instanceof((i=(r=DevExpress==null?void 0:DevExpress.Dashboard)==null?void 0:r.Model)==null?void 0:i.GaugeItem)&&o.addSection({title:"Subvalues",items:[{dataField:Kt.propertyName,template(n,s){let l=document.createElement("div");return new DevExpress.ui.dxButton(l,{text:"Edit in Wizard",onClick(){cn(t)}}),l},label:{visible:!1}}]})}function cn(o){let t=document.createElement("div");document.body.appendChild(t);let r={width:"800px",height:"auto",maxHeight:"100%",hideOnOutsideClick:!1,contentTemplate(n){let s=document.createElement("div"),l=mn(o);this._subvaluesForm=new DevExpress.ui.dxForm(s,l);let g=document.createElement("div"),p=yn(o);this._indicatorForm=new DevExpress.ui.dxForm(g,p);let m=$("<div />").append(s,g),S=$("<div />");return S.append(m),S.dxScrollView({width:"100%",height:"100%"}),S},onHidden(){document.body.removeChild(t)},title:"Subvalues Wizard"};new DevExpress.ui.dxPopup(t,r).show()}function Re(o){var i,n;let t=JSON.parse(o.customProperties.getValue(Kt.propertyName));return!!((i=o.gauges()[0])==null?void 0:i.targetValue())&&(!t.subvalues||!t.subvalues.some(s=>s.key===-1))&&t.subvalues.splice(0,0,{key:-1,name:"Target Value",isBound:!1,measureId:"",value:0,color:zt[(((n=t.subvalues)==null?void 0:n.length)||0)%(zt.length-1)]}),t}function Yt(o,t){return o.customProperties.setValue(Kt.propertyName,JSON.stringify(t))}function hn(o,t){let r=$("<div />"),i=$("<div />");r.append(i);let n=null,s=null,l={items:[{location:"before",widget:"dxButton",options:{icon:"add",stylingMode:"text",onClick(h){let E=Re(t),T=E.subvalues.reduce((u,v)=>u<v.key?v.key:u,0)+1,I={key:T,name:`Subvalue ${T}`,isBound:!1,measureId:"",value:0,color:zt[E.subvalues.length%(zt.length-1)]};o.option("formData",I);let y=E.subvalues.filter(u=>u.key===I.key)[0];if(!y)E.subvalues.push(I);else{let u=E.subvalues.indexOf(y);E[u]=I}Yt(t,E),s.reload(),s.option("selectedItem",E.subvalues[E.subvalues.length-1])}}}]},g=h=>{n&&n.option("disabled",!h)},p=new DevExpress.ui.dxToolbar(i,l);o.element().find(`.${fe}`).css("display","none");let m={dataSource:new DevExpress.data.DataSource({load:()=>Re(t).subvalues,remove:()=>{}}),displayExpr:"name",height:"200px",keyExpr:"key",noDataText:"Add a Subvalue",allowItemDeleting:!0,itemDeleteMode:"static",selectionMode:"single",onContentReady(h){g(!!h.component.option("selectedItem"))},onItemRendered(h){if(h.itemData.key===-1){let T=h.itemElement[0].getElementsByClassName("dx-list-static-delete-button-container")[0];T.style.display="none"}},onSelectionChanged(h){g(!!h.component.option("selectedItem"));let E=h.component.option("selectedItem");o.option("formData",E);let T=o.element().find(`.${fe}`).css("display")==="block",I=!!E;(!T&&I||T&&!I)&&o.element().find(`.${fe}`).css("display",I?"block":"none")},onItemDeleted:h=>{let E=Re(t),T=h.itemData.key,I=E.subvalues.indexOf(E.subvalues.filter(y=>y.key===T)[0]);I>=0&&(E.subvalues.splice(I,1),Yt(t,E)),s.reload(),s.option("selectedItem",E.subvalues[E.subvalues.length-1])}},S=$("<div />");return r.append(S),s=new DevExpress.ui.dxList(S,m),[r,s,p]}function mn(o){let t=null,r=i=>{let n=i.getEditor("value"),s=i.getEditor("measureId"),l=i.getEditor("name"),g=i.option("formData").isBound,p=i.option("formData").key===-1;n&&n.option("disabled",g),s&&s.option("disabled",!g),i.element().find(`.${Br}`).css("display",p?"none":"flex"),i.element().find(`.${Fr}`).css("display",p?"none":"flex"),i.element().find(`.${jr}`).css("display",p?"none":"flex"),l&&l.option("disabled",p)};return{formData:null,colCount:2,items:[{itemType:"group",caption:"Subvalues items",template:i=>{let[n,s]=hn(i.component,o);return t=s,n}},{name:"subvalueEditor",cssClass:fe,itemType:"group",caption:"Item options",items:[{dataField:"name",cssClass:ln,editorType:"dxTextBox",editorOptions:{valueChangeEvent:"keyup"}},{dataField:"isBound",cssClass:Br,editorType:"dxRadioGroup",editorOptions:{displayExpr:"text",valueExpr:"value",layout:"horizontal",items:[{text:"Unbound",value:!1},{text:"Bound",value:!0}]},label:{text:"Type"}},{dataField:"value",cssClass:Fr,editorType:"dxNumberBox",label:{text:"Value"},editorOptions:{showSpinButtons:!0}},{dataField:"measureId",cssClass:jr,editorType:"dxSelectBox",label:{text:"Hidden measures"},editorOptions:{displayExpr:"text",valueExpr:"value",items:o.hiddenMeasures().map(i=>({text:fn(i),value:i.uniqueName()}))}},{name:"color",cssClass:dn,dataField:"color",editorType:"dxColorBox",label:{text:"Color"}}]}],onContentReady(i){r(i.component)},onFieldDataChanged(i){let n=i.component.option("formData"),s=Re(o),l=s.subvalues.filter(g=>g.key===n.key)[0];s.subvalues[s.subvalues.indexOf(l)]=n,Yt(o,s),l&&l.name!==n.name&&t&&t.repaint(),r(i.component)}}}function fn(o){if(o.name())return o.name();let t=o.dataMember();return o.summaryType&&o.summaryType()&&(t+=` (${o.summaryType()})`),t}function yn(o){let t=o.viewType(),r=un.some(i=>i===t)?pn:gn;return{formData:Re(o)||null,items:[{caption:"Indicator options",itemType:"group",items:[{dataField:"type",editorType:"dxSelectBox",label:{text:"Type"},editorOptions:{displayExpr:"text",valueExpr:"value",items:r.map(i=>({text:i,value:i}))}},{dataField:"width",editorType:"dxNumberBox",editorOptions:{showSpinButtons:!0},label:{text:"Width"}}]}],onFieldDataChanged(i){let n=i.component.option("formData"),s=Re(o);s.width=n.width,s.type=n.type,Yt(o,s)}}}function zr(o){this.name="GaugeSubvalues",this.start=()=>{let t=o.findExtension("viewer-api");t&&t.on("itemWidgetOptionsPrepared",Vr);let r=o.findExtension("item-options-panel");r&&r.on("customizeSections",kr)},this.stop=()=>{let t=o.findExtension("viewer-api");t&&t.off("itemWidgetOptionsPrepared",Vr);let r=o.findExtension("item-options-panel");r&&r.off("customizeSections",kr)}}var vn="DASHBOARD_MODE_KEY",qe=class{constructor(t){this.refreshButton=null;this.dashboard=null;this.popover=null;this.$dashboardContainer=t.$dashboardContainer,this.addRefreshButton=t.addRefreshButton,this.reportParams=t.reportParams,this.reportId=t.reportParams.ReportId,this.permissions=t.permissions,this.urls=t.urls}init(){let t=this.reportParams.ReportId&&this.reportParams.ReportId.toString();DevExpress.Dashboard.ResourceManager.embedBundledResources();let r=this.permissions.AllowEditing&&window.sessionStorage.getItem(this.getSessionKey())||"Viewer";if(this.reportParams.Details&&(this.popover=ee(".report-details-link",this.reportParams.Details)),this.dashboard=new DevExpress.Dashboard.DashboardControl(this.$dashboardContainer[0],{workingMode:r,initialDashboardId:t,endpoint:this.urls.EndPoint,ajaxRemoteService:{headers:this.reportParams.Token?{token:this.reportParams.Token}:void 0},onDashboardInitializing:i=>{i.component.registerExtension(new zr(i.component)),t!==i.dashboardId&&(t=i.dashboardId,window.location.href=encodeURI(this.urls.PreviewUrl+i.dashboardId))},onBeforeRender:i=>{i.component.registerExtension(new DevExpress.Dashboard.Designer.TextBoxItemEditorExtension(i.component))},extensions:{"data-source-wizard":{enableCustomSql:!0},"dashboard-export":{allowExportDashboardItems:!0},"data-inspector":{allowInspectAggregatedData:!0,allowInspectRawData:!0,onGridInitialized:i=>{i.component.option("export.enabled",!0)}}}}),this.dashboard.render(),this.permissions.AllowEditing){let i=$(".switch-mode-btn").dxButton({text:r==="Viewer"?"Switch to Designer":"Switch to Viewer",onClick:()=>{r=r==="Viewer"?"Designer":"Viewer",window.sessionStorage.setItem(this.getSessionKey(),r),r==="Viewer"?(this.dashboard.switchToViewer(),i.option("text","Switch to Designer")):(this.dashboard.switchToDesigner(),i.option("text","Switch to Viewer"))}}).addClass("iszolea-md").dxButton("instance");Sn(this.dashboard)}this.addRefreshButton&&(this.refreshButton=new pe($(".report-refresh-button"),()=>this.refresh()))}dispose(){var t,r;(t=this.dashboard)==null||t.dispose(),this.dashboard=null,(r=this.popover)==null||r.dispose(),this.popover=null}getSessionKey(){return vn+this.reportId}refresh(){var t;(t=this.dashboard)==null||t.refresh()}};function Sn(o){let t=["create-dashboard","open-dashboard"],r=o.findExtension("toolbox");t.forEach(i=>{r.menuItems().filter(s=>s.id===i)[0]&&r.removeMenuItem(i)})}var Jt=(l=>(l[l.Key=1]="Key",l[l.Title=2]="Title",l[l.Start=3]="Start",l[l.End=4]="End",l[l.ParentId=5]="ParentId",l[l.Progress=6]="Progress",l))(Jt||{}),Qe=class{constructor(t){this.SWITCH_TO_DESIGNER_TEXT="Switch to Designer";this.SWITCH_TO_VIEWER_TEXT="Switch to Viewer";this.CHART_STORAGE_MODE_KEY="CHART_STORAGE_MODE_KEY";this.hasForm=!1;this.chart=null;this.chartPositionMarker=t.chartPositionMarker,this.reportParams=t.reportParams,this.addRefreshButton=t.addRefreshButton,this.allowEditing=t.allowEditing,this.ganttReportControllerUrl=t.ganttReportControllerUrl,this.showHeader=t.showHeader,this.mode=window.sessionStorage.getItem(this.getSessionKey())||"Viewer"}init(){let t={DbConnectionName:"",TableName:"",TaskColumns:[],ResourcesTableName:"",ResourcesTextField:"",ResourcesKeyField:"",ResourceAssignmentTaskIdField:"",ResourceAssignmentResourceIdField:"",ResourceAssignmentKeyField:"",ResourceAssignmentTableName:"",DependenciesKeyField:"",DependenciesPredecessorIdField:"",DependenciesSuccessorIdField:"",DependenciesTableName:"",DependenciesTypeField:"",EndDateRange:void 0,StartDateRange:void 0,TaskTitlePosition:"outside",ScaleType:"auto"},r=[],i=!1;x(`${this.ganttReportControllerUrl}/GetGanttChartSettings`,"post",{id:this.reportParams.ReportId},!1,{dataType:"json"}).then(n=>{if(t=n,!t.DbConnectionName||!t.TableName||!t.TaskColumns||!t.TaskColumns.length){t.TaskColumns=[];for(let s=0;s<6;s++)t.TaskColumns.push({taskColumnType:Jt[Jt[s+1]]});this.setupForm(t,!0);return}return n.TaskColumns.forEach(s=>{r[s.taskColumnType-1]=s}),t.TaskColumns=r,i=!0,this.fetchData()}).then(n=>{if(!i)return!1;this.mode==="Designer"&&this.setupForm(t,!i),this.setupChart(r,t),this.updateData(n.Data)}).catch(()=>{this.setupForm(t,!0)}),this.allowEditing&&this.initSwitchModeButton(),this.reportParams.Details&&(this.popover=ee(".diagram-details-link",this.reportParams.Details))}fetchData(){return x(`${this.ganttReportControllerUrl}/GetGanttChartData`,"post",{id:this.reportParams.ReportId},!1,{dataType:"json"})}initSwitchModeButton(){let t=$(".switch-mode-btn").dxButton({text:this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT,onClick:()=>{this.mode=this.mode==="Viewer"?"Designer":"Viewer",window.sessionStorage.setItem(this.getSessionKey(),this.mode),t.option("text",this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT),window.location.reload()}}).addClass("iszolea-md").dxButton("instance")}setupForm(t,r){this.hasForm=!0;let i=[{dataField:"DbConnectionName",caption:"Connection Name"},{dataField:"TableName",caption:"Table"}];for(let s=1;s<7;s++)i.push({itemType:"group",colCount:8,items:[{dataField:`TaskColumns[${s-1}].taskColumnType`,visible:!1},{dataField:`TaskColumns[${s-1}].dataField`,label:{location:"top",text:`${Jt[s]} Data Field`}},{dataField:`TaskColumns[${s-1}].caption`,label:{location:"top",text:"Caption"}},{dataField:`TaskColumns[${s-1}].dataType`,label:{location:"top",text:"DataType"}},{dataField:`TaskColumns[${s-1}].width`,label:{location:"top",text:"Width"},editorType:"dxNumberBox"},{dataField:`TaskColumns[${s-1}].sortIndex`,label:{location:"top",text:"SortIndex"},editorType:"dxNumberBox"},{dataField:`TaskColumns[${s-1}].sortOrder`,label:{location:"top",text:"SortOrder"},editorType:"dxSelectBox",editorOptions:{items:["asc","desc"],showClearButton:!0}},{dataField:`TaskColumns[${s-1}].visible`,label:{location:"top",text:"Visible"},editorType:"dxCheckBox"},{dataField:`TaskColumns[${s-1}].visibleIndex`,label:{location:"top",text:"VisibleIndex"}}]});i.push({itemType:"group",caption:"Resources",colCount:4,items:[{dataField:"ResourcesTableName",label:{location:"top",text:"Table"},colSpan:2},{dataField:"ResourcesKeyField",label:{location:"top",text:"Key Field"}},{dataField:"ResourcesTextField",label:{location:"top",text:"Text Field"}}]}),i.push({itemType:"group",caption:"Resource Assignments",colCount:5,items:[{dataField:"ResourceAssignmentTableName",label:{location:"top",text:"Table"},colSpan:2},{dataField:"ResourceAssignmentKeyField",label:{location:"top",text:"Key Field"}},{dataField:"ResourceAssignmentTaskIdField",label:{location:"top",text:"Task Id Field"}},{dataField:"ResourceAssignmentResourceIdField",label:{location:"top",text:"Resource Id Field"}}]}),i.push({itemType:"group",caption:"Dependencies",colCount:6,items:[{dataField:"DependenciesTableName",label:{location:"top",text:"Table"},colSpan:2},{dataField:"DependenciesKeyField",label:{location:"top",text:"Key Field"}},{dataField:"DependenciesPredecessorIdField",label:{location:"top",text:"Predecessor Id Field"}},{dataField:"DependenciesSuccessorIdField",label:{location:"top",text:"Successor Id Field"}},{dataField:"DependenciesTypeField",label:{location:"top",text:"Dependency Type Field"}}]}),i.push({itemType:"button",buttonOptions:{text:"Save",onClick:()=>this.saveFormData(n).then(()=>window.location.reload())}}),i.push({itemType:"group",caption:"Appearance",colCount:5,items:[{dataField:"TaskTitlePosition",label:{location:"top"},editorType:"dxSelectBox",editorOptions:{items:["inside","outside","none"]}},{dataField:"ScaleType",label:{location:"top"},editorType:"dxSelectBox",editorOptions:{items:["auto","minutes","hours","days","weeks","months","quarters","years"]}},{dataField:"StartDateRange",label:{location:"top"},editorType:"dxDateBox",editorOptions:{showClearButton:!0}},{dataField:"EndDateRange",label:{location:"top"},editorType:"dxDateBox",editorOptions:{showClearButton:!0}},{itemType:"button",buttonOptions:{text:"Update",onClick:()=>{if(!this.chart)return;let s=n.option("formData");this.chart.beginUpdate(),this.chart.option({scaleType:s.ScaleType,taskTitlePosition:s.TaskTitlePosition,startDateRange:s.StartDateRange?new Date(s.StartDateRange):null,endDateRange:s.EndDateRange?new Date(s.EndDateRange):null}),this.chart.endUpdate(),this.chart.repaint(),this.saveFormData(n)}}}]});let n=$("<div />").css("padding",20).insertAfter(this.chartPositionMarker).dxForm({width:"100%",height:r?"calc(100% - 50px)":"calc(50% - 50px)",formData:t,scrollingEnabled:!0,items:i}).dxForm("instance")}saveFormData(t){let r=t.option("formData");return r.TaskColumns&&(r.TaskColumns=r.TaskColumns.filter(i=>!!i.dataField)),x(`${this.ganttReportControllerUrl}/UpdateGanttChartSettings`,"post",{id:this.reportParams.ReportId,settings:JSON.stringify(t.option("formData"))},!0,{dataType:"json"})}setupChart(t,r){let i=0,n=!1,s={};t.forEach(l=>{l.taskColumnType&&(s[l.taskColumnType]=l.dataField)}),t.filter(l=>l.visible).forEach(l=>{let g=parseInt(l.width);isNaN(g)?n=!0:i+=g}),this.chart=this.chartPositionMarker.dxGantt({width:"100%",height:this.hasForm?"50%":"calc(100% - 60px)",firstDayOfWeek:6,taskListWidth:!n&&i>0?i:void 0,toolbar:{items:["zoomIn","zoomOut","separator","taskDetails"]},editing:{enabled:!0},startDateRange:r.StartDateRange?new Date(r.StartDateRange):void 0,endDateRange:r.EndDateRange?new Date(r.EndDateRange):void 0,scaleType:r.ScaleType,taskTitlePosition:r.TaskTitlePosition,columns:t.filter(l=>l.visible).map(l=>({dataField:l.dataField,dataType:l.dataType,width:l.width,visibleIndex:l.visibleIndex,sortIndex:l.sortIndex,sortOrder:l.sortOrder&&(l.sortOrder==="asc"?"asc":"desc"),caption:l.caption||void 0})),tasks:{keyExpr:s[1],startExpr:s[3],endExpr:s[4],parentIdExpr:s[5],progressExpr:s[6],titleExpr:s[2]},dependencies:{keyExpr:r.DependenciesKeyField,predecessorIdExpr:r.DependenciesPredecessorIdField,successorIdExpr:r.DependenciesSuccessorIdField,typeExpr:r.DependenciesTypeField},resources:{keyExpr:r.ResourcesKeyField,textExpr:r.ResourcesTextField},resourceAssignments:{keyExpr:r.ResourceAssignmentKeyField,resourceIdExpr:r.ResourceAssignmentResourceIdField,taskIdExpr:r.ResourceAssignmentTaskIdField}}).dxGantt("instance"),this.addRefreshButton&&new pe($(".report-refresh-button"),()=>this.refresh())}updateData(t){!this.chart||(this.chart.option("tasks.dataSource",t.Tasks),this.chart.option("dependencies.dataSource",t.Dependencies),this.chart.option("resources.dataSource",t.Resources),this.chart.option("resourceAssignments.dataSource",t.ResourceAssignments))}refresh(){this.fetchData().then(t=>{this.updateData(t.Data)})}dispose(){var t;(t=this.chart)==null||t.dispose(),this.chart=null}getSessionKey(){return this.CHART_STORAGE_MODE_KEY+this.reportParams.ReportId}};var Yr="Switch to Designer",Kr="Switch to Viewer",bn="reportMode",Me="customCurrentUrl",qt=window.ko,Xe=class{constructor(t){this.popover=null;this.$reportContainer=t.$reportContainer,this.reportParams=t.reportParams,this.allowEditing=t.allowEditing,this.designerModelUrl=t.designerModelUrl,this.reportId=t.reportParams.ReportId}init(){let t=window.sessionStorage.getItem(this.getSessionKey())||"Viewer",r=null;this.reportParams.Details&&(this.popover=ee(".report-details-link",this.reportParams.Details)),this.allowEditing&&(r=$(".switch-mode-btn").dxButton({text:t==="Viewer"?Yr:Kr,onClick:()=>{t=t==="Viewer"?"Designer":"Viewer",window.sessionStorage.setItem(this.getSessionKey(),t),this.switchMode(t,r)}}).addClass("iszolea-md").dxButton("instance")),this.createReportDesigner(this.$reportContainer,this.designerModelUrl,"dxReportDesigner",this.reportParams.ReportId.toString(),i=>{setTimeout(()=>{this.updateSwitchModeButton(t,r)})},t==="Viewer"),window.addEventListener("beforeunload",i=>{dxReportDesigner&&dxReportDesigner.GetDesignerModel()&&dxReportDesigner.GetDesignerModel().isDirty&&(i.preventDefault(),i.returnValue="The report document is not saved. Are you sure you want to leave the page?")})}dispose(){var t;(t=this.popover)==null||t.dispose(),this.popover=null}refresh(){}initializePreview(t){let r=t.designerModel.reportPreviewModel.reportPreview,i=DevExpress.Reporting.Designer.Internal.ReportPreviewService;r.initialize(i.initializePreview(t.designerModel.model()))}switchMode(t,r){t==="Viewer"?(dxReportDesigner.designerModel.reportPreviewModel.reportPreview.previewVisible=!0,this.initializePreview(dxReportDesigner)):(dxReportDesigner.designerModel.reportPreviewModel.reportPreview.previewVisible=!1,dxReportDesigner.designerModel.reportPreviewModel.reportPreview.deactivate()),this.updateSwitchModeButton(t,r)}updateSwitchModeButton(t,r){r&&r.option("text",t==="Viewer"?Yr:Kr)}createReportDesigner(t,r,i,n,s,l){let g=t.attr("data-bind","dxReportDesigner: designerOptions").addClass("report-designer"),p={reportUrl:n,requestOptions:{getDesignerModelAction:r},callbacks:{BeforeRender:m=>{window[i]=m,l&&(m.designerModel.reportPreviewModel.reportPreview.previewVisible=!0),s(m)},CustomizeMenuActions:this.CustomizeMenuActions,PreviewCustomizeMenuActions:this.PreviewCustomizeMenuActions,ReportOpened:(m,S)=>{l&&this.initializePreview(m),this.ReportOpened(m,S)},ReportTabClosed:this.ReportTabClosed}};return qt.applyBindings({designerOptions:p},g[0]),g}PreviewCustomizeMenuActions(t,r){let i=r.GetById(DevExpress.Reporting.Viewer.ActionId.Design);i&&(i.visible=!1)}CustomizeMenuActions(t,r){let i=DevExpress.Reporting.Designer.Actions.ActionId,n=[i.Save],s=[i.NewReport,i.NewReportViaWizard,i.OpenReport,i.Preview,i.SaveAs,i.Exit];n.forEach(p=>{let m=r.GetById(p);m&&m.container==="menu"&&(m.container=void 0)}),s.forEach(p=>{let m=r.GetById(p);m&&(m.visible=!1)});let l=r.GetById(DevExpress.Reporting.Designer.Actions.ActionId.Save),g=l.clickAction;l.clickAction=()=>{t.GetCurrentTab().url(qt.unwrap(t[Me])),g()}}ReportOpened(t,r){t[Me]=t[Me]||qt.observable(),t[Me](r.Url)}ReportTabClosed(t,r){t[Me]=t[Me]||qt.observable(),t[Me](null)}getSessionKey(){return bn+this.reportId}};var Ze=class{constructor(t){this.SWITCH_TO_DESIGNER_TEXT="Switch to Designer";this.SWITCH_TO_VIEWER_TEXT="Switch to Viewer";this.DIAGRAM_STORAGE_MODE_KEY="DIAGRAM_STORAGE_MODE_KEY";this.$container=t.$container,this.reportParams=t.reportParams,this.allowEditing=t.allowEditing,this.addRefreshButton=t.addRefreshButton,this.diagramControllerUrl=t.diagramControllerUrl,this.mode=window.sessionStorage.getItem(this.getSessionKey())||"Viewer"}init(){this.createDiagramControl(),this.initDiagram(),this.allowEditing&&this.initSwitchModeButton(),this.reportParams.Details&&(this.popover=ee(".diagram-details-link",this.reportParams.Details))}dispose(){var t;this.diagram.dispose(),(t=this.popover)==null||t.dispose(),this.diagram=null}refresh(){this.diagram&&x(`${this.diagramControllerUrl}?id=${this.reportParams.ReportId}`,"get").then(t=>{this.diagram.import(JSON.stringify(t),!1),this.diagram.option("hasChanges",!1)})}createDiagramControl(){this.diagram=this.$container.dxDiagram({historyToolbar:{visible:!0,commands:["separator","undo","redo","separator",{name:"save",text:"Save",icon:"save"}]},onCustomCommand:t=>{switch(t.name){case"save":this.saveReport(t.component.export());break}},fullScreen:!1,readOnly:this.mode==="Viewer"}).dxDiagram("instance")}initDiagram(){x(`${this.diagramControllerUrl}?id=${this.reportParams.ReportId}`,"get").then(t=>{this.diagram.import(JSON.stringify(t)),this.diagram.option("hasChanges",!1)}),this.addRefreshButton&&(this.refreshButton=new pe($(".report-refresh-button"),()=>this.refresh())),window.addEventListener("beforeunload",t=>{this.diagram.option("hasChanges")&&(t.returnValue="The document is not saved. Are you sure you want to leave the page?")})}initSwitchModeButton(){let t=$(".switch-mode-btn").dxButton({text:this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT,onClick:()=>{this.mode=this.mode==="Viewer"?"Designer":"Viewer",window.sessionStorage.setItem(this.getSessionKey(),this.mode),this.diagram.option("readOnly",this.mode==="Viewer"),t.option("text",this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT)}}).addClass("iszolea-md").dxButton("instance")}async saveReport(t){let r=this.reportParams.ReportId;await x(this.diagramControllerUrl,"post",{id:r,source:t},!0),this.diagram.option("hasChanges",!1)}getSessionKey(){return this.DIAGRAM_STORAGE_MODE_KEY+this.reportParams.ReportId}};var Qt=class{constructor(t){this.reports=[];this.options=t.reportParams,this.$rootElement=t.$container,this.defaultReportSettings=t.defaultReportSettings}init(){this.renderContent()}dispose(){if(this.reports){for(this.reports.forEach(t=>{t.dispose()});this.reports.length;)this.reports.pop();this.reports=null}this.refreshTimer&&(this.refreshTimer.dispose(),this.refreshTimer=null)}refresh(){this.reports&&this.reports.forEach(t=>{t.refresh()})}renderContent(){let t=0,r=null,i=this.options.Reports.length,n=()=>{r=window.setTimeout(()=>{let g=t+1;g>=i&&(g=0),this.dxGallery.goToItem(g,!0)},this.options.DelaySec*1e3)},s=$("<div />").attr({class:"slideshow-report"}).appendTo(this.$rootElement),l=$("<div />",{class:"slideshow-report__gallery"}).dxGallery({loop:!1,dataSource:this.options.Reports,slideshowDelay:0,showNavButtons:!1,showIndicator:!0,stretchImages:!0,height:"100%",onInitialized:()=>n(),onSelectionChanged:g=>{t=g.component.option("selectedIndex"),window.clearTimeout(r),n()},itemTemplate:(g,p,m)=>{m.attr({class:"slideshow-report__gallery-item"}).height("100%");let S=$("<div />",{class:"slideshow-report__slide-content"}).height("100%"),h;window.setTimeout(()=>{switch(g.Type){case 1:let E=$("<div />",{class:"report-position"});E.appendTo(S),h=new qe(O(A({},this.defaultReportSettings[1]||{}),{$dashboardContainer:E,reportParams:g})),S.find("dashboard-title").hide(),S.find(".dx-dashboard-layout-container").css({top:0});break;case 0:let T=$("<div />",{class:"slideshow-report__grid-position"});S.addClass("iszolea-theme").addClass("panel-body"),T.appendTo(S),h=new Je(O(A({},this.defaultReportSettings[0]||{}),{gridPositionMarker:T,reportParams:g}));break;case 5:h=new Ae(O(A({},this.defaultReportSettings[5]||{}),{$container:S,reportParams:g}));break;case 3:let I=$("<div />",{class:"report-position"});I.appendTo(S),h=new Xe(O(A({},this.defaultReportSettings[3]||{}),{$reportContainer:I,reportParams:g}));break;case 4:let y=$("<div />",{class:"report-position"});y.appendTo(S),h=new Ze(O(A({},this.defaultReportSettings[4]||{}),{$container:y,reportParams:g}));break;case 7:let u=$("<div />",{class:"slideshow-report__grid-position"});S.addClass("iszolea-theme").addClass("panel-body"),u.appendTo(S),h=new Qe(O(A({},this.defaultReportSettings[7]||{}),{chartPositionMarker:u,reportParams:g}));break;case 2:case 6:break}h&&(h.init(),this.reports.push(h))},500),S.appendTo(m)}});this.dxGallery=l.dxGallery("instance"),l.appendTo(s),this.refreshTimer=new Ke({callback:()=>this.refresh(),elapsedCallback:g=>{}}),this.refreshTimer.start(this.options.RefreshSec*1e3)}};var Xt=class{constructor(t){this.STORAGE_MODE_KEY="CDM_STORAGE_MODE_KEY";this.SWITCH_TO_DESIGNER_TEXT="Switch to Designer";this.SWITCH_TO_VIEWER_TEXT="Switch to Viewer";this.options=t;let r=`/${t.baseUrl}/${t.reportParams.ReportId}`;this.getDataUrl=`${r}/Get`,this.getTableFieldsUrl=`${r}/Configurator/GetTableFieldList`,this.saveConfigurationUrl=`${r}/Configurator/Save`,this.getConfigurationUrl=`${r}/Configurator/Get`,this.mode=window.sessionStorage.getItem(this.getSessionKey())||"Viewer",this.loadPanel=$("<div />").dxLoadPanel({message:"Loading..."}).dxLoadPanel("instance"),$(document.body).append(this.loadPanel.element())}getSessionKey(){return this.STORAGE_MODE_KEY+this.options.reportParams.ReportId}renderContent(){this.options.$container.empty().removeAttr("style"),this.mode==="Viewer"?this.renderViewer():this.renderDesigner()}initSwitchModeButton(){let t=$(".switch-mode-btn").dxButton({text:this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT,onClick:()=>{this.mode=this.mode==="Viewer"?"Designer":"Viewer",window.sessionStorage.setItem(this.getSessionKey(),this.mode),t.option("text",this.mode==="Viewer"?this.SWITCH_TO_DESIGNER_TEXT:this.SWITCH_TO_VIEWER_TEXT),this.renderContent()}}).addClass("iszolea-md").dxButton("instance")}initScheduler(){return this.options.$container.dxScheduler({height:"calc(100% - 49px)",editing:!1,firstDayOfWeek:1,startDayHour:8,endDayHour:18,views:["month","week","day"]}).dxScheduler("instance")}initForm(){return this.options.$container.dxForm({height:"100%",elementAttr:{style:"max-width: 400px; margin: 0 auto"},labelLocation:"top",items:[{itemType:"group",caption:"Fields mapping",items:[{dataField:"Title",editorType:"dxSelectBox",validationRules:[{type:"required"}],editorOptions:{}},{dataField:"StartDate",editorType:"dxSelectBox",validationRules:[{type:"required"}],editorOptions:{}},{dataField:"EndDate",editorType:"dxSelectBox",validationRules:[{type:"required"}],editorOptions:{}}]},{itemType:"group",caption:"View settings",items:[{dataField:"DefaultView",editorType:"dxSelectBox",editorOptions:{dataSource:["Month","Week","Day"]}}]},{itemType:"button",buttonOptions:{text:"Save",type:"default",onClick:()=>this.saveFormHandler()}}]}).dxForm("instance")}async renderViewer(){try{this.loadPanel.option("message","Loading..."),this.loadPanel.show(),this.scheduler=this.initScheduler(),this.scheduler.option("dataSource",[]);let t=await Promise.all([this.getConfiguration(),this.getDate()]),r=t[0],i=t[1];this.scheduler.option("dataSource",i),this.scheduler.option("currentView",((r==null?void 0:r.DefaultView)||"week").toLowerCase()),this.scheduler.option("currentDate",new Date)}finally{this.loadPanel.hide()}}async renderDesigner(){try{this.loadPanel.option("message","Loading..."),this.loadPanel.show(),this.form=this.initForm();let t=await Promise.all([this.getConfiguration(),this.getTableFields()]),r=t[0],i=t[1].map(s=>s.Name),n=t[1].filter(s=>s.Type==="datetime").map(s=>s.Name);this.form.option("formData",r),this.form.getEditor("Title").option("dataSource",i),this.form.getEditor("StartDate").option("dataSource",n),this.form.getEditor("EndDate").option("dataSource",n)}finally{this.loadPanel.hide()}}async saveFormHandler(){if(!!this.form.validate().isValid)try{let r=this.form.option("formData");this.loadPanel.option("message","Saving..."),this.loadPanel.show(),await x(this.saveConfigurationUrl,"POST",{data:r},!0)}finally{this.loadPanel.hide()}}async getConfiguration(){return await x(this.getConfigurationUrl)}async getTableFields(){return await x(this.getTableFieldsUrl)}async getDate(){return(await x(this.getDataUrl)).map(r=>O(A({},r),{startDate:new Date(r.startDate),endDate:new Date(r.endDate)}))}init(){this.options.allowEditing&&this.initSwitchModeButton(),this.renderContent()}refresh(){}dispose(){}};var Jr={config:k,Header:_e,Footer:Ve,NavigationMenu:Ne,UserMenu:we,MenuSwitcher:Le,data:sr,widgets:{notify:P,fullScreen:de,popup:ro,confirm:xo,landing:Ao,accessDenied:Ro,defaultGridObsolete:Dr,defaultTreeList:_r,defaultGrid:V,defaultToolbar:fr,backgroundImageViewer:_t,imageCropDialog:Do,ImageManager:ke,DocumentManager:Ge,ImageGallery:$e},pages:{AccountSettingsPage:Co},components:{CDM:$o,SessionNotifier:Ho,FileImporter:xe,FileUploader:gt},styling:to,helpers:lo,utils:fo,reports:{CDMReportPage:Ae,DiagramReportPage:Ze,GridReportPage:Je,DashboardReportPage:qe,DXReportPage:Xe,SlideshowReportPage:Qt,GanttChartReportPage:Qe,SchedulerReportPage:Xt,gridColumnTypes:Be},business:{LicenceStatus:ot,MenuItemType:be,CdmImportFileMode:Fe,FooterIndicatorStatus:vo,GridDataColumnDataType:je}},Rr=Jr;window.IszoleaUI=Jr;})();
|