iszolea-ui 1.2.76 → 1.2.78

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
@@ -39,7 +39,7 @@
39
39
  <div class="image-gallery">
40
40
  </div>
41
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 wo={};ie(wo,{show:()=>Io});var xr=ht(Cr());function Fi(o,t){o.attr("src",t)}function ji(o){let t=$("<div>").addClass("image-crop-popup__dropzone"),r=$("<div>").addClass("image-crop-popup__crop-container").appendTo(t),i=$("<img />").prependTo(r);Fi(i,o);let n=new xr.default(i[0],{startSize:[90,90,"%"]});return{$content:t,cropper:n}}function Vi(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 Io(o,t){let r=ji(o);Vi(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 Do=10,_o=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:Do*1e6,onValueChanged:r=>{if(!r.component||!r.value)return;let i=r.value[0],n=r.component.option("maxFileSize")||Do;if(!i||i.size>n){DevExpress.ui.notify(`File size should be less than ${Do} MB. Please select another file`,"error",5e3);return}Ar(i).then(s=>{Io(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 Co={};ie(Co,{createConfirm:()=>ki});function ki(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 xo={};ie(xo,{createLanding:()=>Gi});function Gi(o,t,r,i={enabled:!1}){$i(t).then(n=>{Hi(o,n,r,i)})}function $i(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 Hi(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&&Dt(i.$container||n,i.imageUrls||[],i.imgChangeIntervalSec||8,i.transitionTimeSec||2)}var Ao={};ie(Ao,{createAccessDeniedToReport:()=>Wi});function Wi(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 Go={};ie(Go,{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 zi(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(Ki(h.component),!l){if(l=!0,!s)for(let S=0;S<h.component.columnCount();S++){let T=h.component.columnOption(S,"dataType");h.component.columnOption(S,"width")||(T==="boolean"&&h.component.columnOption(S,"width","100px"),T==="datetime"&&h.component.columnOption(S,"width","150px"))}setTimeout(()=>{let S=h.component.getScrollable();S&&S.scrollTo({top:0})})}},onToolbarPreparing:h=>{i&&h.toolbarOptions.items.unshift({location:"before",template(){let S=$("<h2 />").addClass("grid-header").text(i);return n&&S.append($("<i />").addClass("fas").addClass("fa-info-circle").addClass("report-details-link").attr("title","Click to see further details")),S}})}},p=t.onContentReady?h=>{g.onContentReady(h),t.onContentReady(h)}:g.onContentReady;Yi(t,r);let m=$.extend({},g,t,{onContentReady:p}),E=o.dxDataGrid(m).dxDataGrid("instance");return E.element().addClass(oe.dxDataGrid),E}function Yi(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 Ki(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(E=>!!E.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=zi(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 Mt=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",E=>{if(E.target.files.length){let h=new FileReader;h.onloadend=()=>{g.attr("src",h.result),n.setValue(h.result)};let S=E.target.files[0];S?h.readAsDataURL(S):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 Ot=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 Ut=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 Pt=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 Nt=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 Lt=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:{}})}},Ji={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"},Qi={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]:Mt,[2]:Ot,[8]:Lt,[3]:Pt,[4]:Nt,[7]:Ut};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?Ji[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,E=$("<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" />'),S=$('<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(S).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&&!Qi[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(S),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(E.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(),E.close()}}).appendTo(u),w.dxButton({text:"Cancel",onClick:()=>{s.component.closeEditCell(),E.close()}}).appendTo(u),h},onOpened:()=>{let h=$(".display-type-editor .dx-list-item-selected");m.scrollToItem(h)}}).dxDropDownBox("instance");n.append(E.element()),s.row.data.IsSystemColumn||E.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
- 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 E=s.filter(T=>T.name==="exportButton")[0],h=s.indexOf(E);s.splice(h,1),this.isDataReadonly||s.push(p),s.push(m),s.push(l);let S=s.find(T=>T.name==="addRowButton");if(S){let T=null;S.widget="dxDropDownButton";let I=S.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=$(`
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 E=s.filter(T=>T.name==="exportButton")[0],h=s.indexOf(E);s.splice(h,1),!this.isDataReadonly,s.push(m),s.push(l);let S=s.find(T=>T.name==="addRowButton");if(S){let T=null;S.widget="dxDropDownButton";let I=S.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">
45
45
  <div class="cdm-sorce-details__title">DB Connection:</div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iszolea-ui",
3
- "version": "1.2.76",
3
+ "version": "1.2.78",
4
4
  "description": "Common scripts and styles for Iszolea projects",
5
5
  "main": "dist/js/index.js",
6
6
  "types": "dist/types/index.d.ts",