@sme.up/ketchup 11.0.0-SNAPSHOT-20241010160405 → 11.0.0-SNAPSHOT-20241010160438
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/cjs/kup-activity-timeline.cjs.entry.js +1 -1
- package/dist/cjs/kup-autocomplete_27.cjs.entry.js +1 -1
- package/dist/cjs/kup-box.cjs.entry.js +1 -1
- package/dist/cjs/{kup-data-table-helper-c8253b11.js → kup-data-table-helper-acfd0cd5.js} +1 -2
- package/dist/cjs/kup-data-table-helper-acfd0cd5.js.map +1 -0
- package/dist/collection/components/kup-data-table/kup-data-table-helper.js +1 -2
- package/dist/collection/components/kup-data-table/kup-data-table-helper.js.map +1 -1
- package/dist/components/kup-autocomplete2.js +1 -2
- package/dist/components/kup-autocomplete2.js.map +1 -1
- package/dist/components/kup-box2.js +1 -1
- package/dist/components/kup-card-list.js +1 -1
- package/dist/components/kup-cell.js +1 -1
- package/dist/components/kup-dashboard.js +1 -1
- package/dist/components/kup-family-tree.js +1 -1
- package/dist/components/kup-image-list.js +1 -1
- package/dist/components/kup-input-panel.js +1 -1
- package/dist/components/kup-magic-box.js +1 -1
- package/dist/components/kup-manager.js +1 -1
- package/dist/components/kup-numeric-picker.js +1 -1
- package/dist/components/kup-planner.js +1 -1
- package/dist/components/kup-typography.js +1 -1
- package/dist/esm/{f-cell-f7553ea4.js → f-cell-bb10c8ff.js} +4 -4
- package/dist/esm/{f-cell-f7553ea4.js.map → f-cell-bb10c8ff.js.map} +1 -1
- package/dist/esm/{f-chip-c32b6f69.js → f-chip-284f27e4.js} +2 -2
- package/dist/esm/{f-chip-c32b6f69.js.map → f-chip-284f27e4.js.map} +1 -1
- package/dist/esm/{f-paginator-utils-d1d04c2f.js → f-paginator-utils-a014ab03.js} +2 -2
- package/dist/esm/{f-paginator-utils-d1d04c2f.js.map → f-paginator-utils-a014ab03.js.map} +1 -1
- package/dist/esm/{f-text-field-35c57df3.js → f-text-field-6920059d.js} +2 -2
- package/dist/esm/{f-text-field-35c57df3.js.map → f-text-field-6920059d.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/kup-accordion.entry.js +1 -1
- package/dist/esm/kup-activity-timeline.entry.js +2 -2
- package/dist/esm/kup-autocomplete_27.entry.js +6 -6
- package/dist/esm/kup-box.entry.js +6 -6
- package/dist/esm/kup-calendar.entry.js +2 -2
- package/dist/esm/kup-card-list.entry.js +1 -1
- package/dist/esm/kup-cell.entry.js +4 -4
- package/dist/esm/kup-dashboard.entry.js +2 -2
- package/dist/esm/{kup-data-table-helper-c76064a4.js → kup-data-table-helper-27f5fa75.js} +2 -3
- package/dist/esm/kup-data-table-helper-27f5fa75.js.map +1 -0
- package/dist/esm/kup-drawer.entry.js +1 -1
- package/dist/esm/kup-echart.entry.js +1 -1
- package/dist/esm/kup-editor.entry.js +1 -1
- package/dist/esm/kup-family-tree.entry.js +1 -1
- package/dist/esm/kup-grid.entry.js +1 -1
- package/dist/esm/kup-iframe.entry.js +1 -1
- package/dist/esm/kup-image-list.entry.js +4 -4
- package/dist/esm/kup-input-panel.entry.js +4 -4
- package/dist/esm/kup-lazy.entry.js +1 -1
- package/dist/esm/kup-magic-box.entry.js +1 -1
- package/dist/esm/{kup-manager-86d68a97.js → kup-manager-cb026184.js} +2 -2
- package/dist/esm/{kup-manager-86d68a97.js.map → kup-manager-cb026184.js.map} +1 -1
- package/dist/esm/kup-nav-bar.entry.js +1 -1
- package/dist/esm/kup-numeric-picker.entry.js +2 -2
- package/dist/esm/kup-pdf.entry.js +1 -1
- package/dist/esm/kup-photo-frame.entry.js +1 -1
- package/dist/esm/kup-planner.entry.js +2 -2
- package/dist/esm/kup-probe.entry.js +1 -1
- package/dist/esm/kup-qlik.entry.js +1 -1
- package/dist/esm/kup-snackbar.entry.js +1 -1
- package/dist/esm/kup-typography-list.entry.js +1 -1
- package/dist/esm/kup-typography.entry.js +1 -1
- package/dist/ketchup/index.esm.js +1 -1
- package/dist/ketchup/ketchup.esm.js +1 -1
- package/dist/ketchup/{p-fcfc3a40.entry.js → p-00113824.entry.js} +2 -2
- package/dist/ketchup/{p-86f1cc33.entry.js → p-0ce9ed44.entry.js} +2 -2
- package/dist/ketchup/p-1fb5db03.entry.js +2 -0
- package/dist/ketchup/{p-0e4c881b.entry.js.map → p-1fb5db03.entry.js.map} +1 -1
- package/dist/ketchup/{p-26e50f21.entry.js → p-206002b6.entry.js} +2 -2
- package/dist/ketchup/{p-88d1d651.entry.js → p-21982408.entry.js} +2 -2
- package/dist/ketchup/{p-91cab066.entry.js → p-2a910415.entry.js} +2 -2
- package/dist/ketchup/{p-fb352db8.entry.js → p-3bc5a178.entry.js} +2 -2
- package/dist/ketchup/{p-820d1ce5.entry.js → p-41f7543a.entry.js} +2 -2
- package/dist/ketchup/{p-b373183c.entry.js → p-519ee87e.entry.js} +2 -2
- package/dist/ketchup/{p-7df94c07.js → p-555e004e.js} +2 -2
- package/dist/ketchup/{p-3ca9202f.entry.js → p-5767c4aa.entry.js} +2 -2
- package/dist/ketchup/{p-9ff1f2bb.entry.js → p-60f786c4.entry.js} +2 -2
- package/dist/ketchup/{p-78a0e8e3.entry.js → p-62987aa5.entry.js} +2 -2
- package/dist/ketchup/{p-5ce02cb0.entry.js → p-6bc5a1d5.entry.js} +2 -2
- package/dist/ketchup/{p-8ea251c1.entry.js → p-6d80b3ed.entry.js} +2 -2
- package/dist/ketchup/{p-3f79b0e3.entry.js → p-74461bca.entry.js} +2 -2
- package/dist/ketchup/{p-60c6be17.js → p-7b7a91e1.js} +2 -2
- package/dist/ketchup/{p-144ac67e.js → p-8ba70b94.js} +2 -2
- package/dist/ketchup/{p-fce9b0f2.entry.js → p-8fa25aa9.entry.js} +2 -2
- package/dist/ketchup/{p-25de1507.entry.js → p-8fd0f625.entry.js} +2 -2
- package/dist/ketchup/{p-ad281267.entry.js → p-9a0a1c0a.entry.js} +2 -2
- package/dist/ketchup/{p-22a6641c.entry.js → p-9a9e8b00.entry.js} +2 -2
- package/dist/ketchup/{p-db6a527a.entry.js → p-a1e1361a.entry.js} +2 -2
- package/dist/ketchup/{p-f43a820e.entry.js → p-a51b6c48.entry.js} +2 -2
- package/dist/ketchup/{p-0b706c2a.entry.js → p-b3fbf321.entry.js} +2 -2
- package/dist/ketchup/p-b6afb372.js +2 -0
- package/dist/ketchup/p-b6afb372.js.map +1 -0
- package/dist/ketchup/{p-2a79ac70.entry.js → p-b8537818.entry.js} +2 -2
- package/dist/ketchup/{p-ee386eb4.entry.js → p-b9e95f29.entry.js} +2 -2
- package/dist/ketchup/{p-c4a701a4.entry.js → p-c6d15707.entry.js} +2 -2
- package/dist/ketchup/{p-2ed2c55e.entry.js → p-d6b311e2.entry.js} +2 -2
- package/dist/ketchup/{p-81348418.js → p-d823d538.js} +2 -2
- package/dist/ketchup/p-ddf793af.js +2 -0
- package/dist/ketchup/{p-eb7c02b9.entry.js → p-ede6bac7.entry.js} +2 -2
- package/dist/ketchup/{p-095646ca.entry.js → p-f085d15f.entry.js} +2 -2
- package/package.json +1 -1
- package/dist/cjs/kup-data-table-helper-c8253b11.js.map +0 -1
- package/dist/esm/kup-data-table-helper-c76064a4.js.map +0 -1
- package/dist/ketchup/p-0e4c881b.entry.js +0 -2
- package/dist/ketchup/p-610ac281.js +0 -2
- package/dist/ketchup/p-610ac281.js.map +0 -1
- package/dist/ketchup/p-9a17abc3.js +0 -2
- /package/dist/ketchup/{p-fcfc3a40.entry.js.map → p-00113824.entry.js.map} +0 -0
- /package/dist/ketchup/{p-86f1cc33.entry.js.map → p-0ce9ed44.entry.js.map} +0 -0
- /package/dist/ketchup/{p-26e50f21.entry.js.map → p-206002b6.entry.js.map} +0 -0
- /package/dist/ketchup/{p-88d1d651.entry.js.map → p-21982408.entry.js.map} +0 -0
- /package/dist/ketchup/{p-91cab066.entry.js.map → p-2a910415.entry.js.map} +0 -0
- /package/dist/ketchup/{p-fb352db8.entry.js.map → p-3bc5a178.entry.js.map} +0 -0
- /package/dist/ketchup/{p-820d1ce5.entry.js.map → p-41f7543a.entry.js.map} +0 -0
- /package/dist/ketchup/{p-b373183c.entry.js.map → p-519ee87e.entry.js.map} +0 -0
- /package/dist/ketchup/{p-7df94c07.js.map → p-555e004e.js.map} +0 -0
- /package/dist/ketchup/{p-3ca9202f.entry.js.map → p-5767c4aa.entry.js.map} +0 -0
- /package/dist/ketchup/{p-9ff1f2bb.entry.js.map → p-60f786c4.entry.js.map} +0 -0
- /package/dist/ketchup/{p-78a0e8e3.entry.js.map → p-62987aa5.entry.js.map} +0 -0
- /package/dist/ketchup/{p-5ce02cb0.entry.js.map → p-6bc5a1d5.entry.js.map} +0 -0
- /package/dist/ketchup/{p-8ea251c1.entry.js.map → p-6d80b3ed.entry.js.map} +0 -0
- /package/dist/ketchup/{p-3f79b0e3.entry.js.map → p-74461bca.entry.js.map} +0 -0
- /package/dist/ketchup/{p-60c6be17.js.map → p-7b7a91e1.js.map} +0 -0
- /package/dist/ketchup/{p-144ac67e.js.map → p-8ba70b94.js.map} +0 -0
- /package/dist/ketchup/{p-fce9b0f2.entry.js.map → p-8fa25aa9.entry.js.map} +0 -0
- /package/dist/ketchup/{p-25de1507.entry.js.map → p-8fd0f625.entry.js.map} +0 -0
- /package/dist/ketchup/{p-ad281267.entry.js.map → p-9a0a1c0a.entry.js.map} +0 -0
- /package/dist/ketchup/{p-22a6641c.entry.js.map → p-9a9e8b00.entry.js.map} +0 -0
- /package/dist/ketchup/{p-db6a527a.entry.js.map → p-a1e1361a.entry.js.map} +0 -0
- /package/dist/ketchup/{p-f43a820e.entry.js.map → p-a51b6c48.entry.js.map} +0 -0
- /package/dist/ketchup/{p-0b706c2a.entry.js.map → p-b3fbf321.entry.js.map} +0 -0
- /package/dist/ketchup/{p-2a79ac70.entry.js.map → p-b8537818.entry.js.map} +0 -0
- /package/dist/ketchup/{p-ee386eb4.entry.js.map → p-b9e95f29.entry.js.map} +0 -0
- /package/dist/ketchup/{p-c4a701a4.entry.js.map → p-c6d15707.entry.js.map} +0 -0
- /package/dist/ketchup/{p-2ed2c55e.entry.js.map → p-d6b311e2.entry.js.map} +0 -0
- /package/dist/ketchup/{p-81348418.js.map → p-d823d538.js.map} +0 -0
- /package/dist/ketchup/{p-9a17abc3.js.map → p-ddf793af.js.map} +0 -0
- /package/dist/ketchup/{p-eb7c02b9.entry.js.map → p-ede6bac7.entry.js.map} +0 -0
- /package/dist/ketchup/{p-095646ca.entry.js.map → p-f085d15f.entry.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,c as i,f as e,h as n,H as o,d as s}from"./p-d7c15b0e.js";import{F as a}from"./p-a08414c8.js";import{F as r}from"./p-5d03c077.js";import{F as l}from"./p-81348418.js";import{F as h}from"./p-c4054aba.js";import{k as c,g as f,s as p,ao as d,h as u,R as m,e as g}from"./p-7df94c07.js";import{c as x}from"./p-635bb4b3.js";import"./p-e3062c19.js";import"./p-2b519589.js";import"./p-d4a879fc.js";import"./p-029c7cbe.js";var y;(function(t){t["customStyle"]="Custom style of the component.";t["data"]="The data of the component.";t["enableDesign"]="When set to true, the component is in design mode and it is draggable."})(y||(y={}));const b=".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:0.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:0.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:0.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:0.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:host{width:100%;height:100%}#kup-component{height:100%}.header{display:flex;flex-direction:row;justify-content:center}.header>*{margin-left:0.5em}.form{display:grid;height:100%}.form-dropzone{padding:1em;grid-gap:0.5em;border:1px solid var(--kup-primary-color);height:auto}.section{display:flex;flex-direction:column;overflow:auto}.section-header{display:flex;flex-direction:column}.section-header>*{width:100%;display:flex;flex-direction:row}.section-header>*>.section-header-actions{display:flex;justify-content:end}.section-header>*>.section-header-actions>*{margin-top:auto;margin-bottom:auto}.section-body{display:grid}.section-dropzone{border:1px solid var(--kup-primary-color)}.section-draggable{border:1px solid var(--kup-secondary-color);padding:1em}.section-placeholder{background-color:rgba(var(--kup-secondary-color-rgb), 0.5);min-height:1em;min-width:1em}.component{height:fit-content;padding:1em;margin:0.5em}.layout-row{grid-auto-flow:column;grid-template-columns:min-content}.layout-column{grid-auto-flow:row;grid-template-rows:min-content}";const k=b;const v=class{constructor(e){t(this,e);this.kupSave=i(this,"kup-dashboard-save",6);this.kupManager=c();this.internalData=null;this.internalDataBackup=null;this.resetInternalData=false;this.customStyle="";this.data=null;this.enableDesign=false}onKupSave(){this.kupSave.emit({comp:this,id:this.rootElement.id,data:this.internalData})}dataChanged(){this.resetData()}async getProps(t){return f(this,y,t)}async refresh(){e(this)}async setProps(t){p(this,y,t)}buildGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var i=Math.random()*16|0,e=t==="x"?i:i&3|8;return e.toString(16)}))}buildHeader(){const t={icon:"cancel",label:this.kupManager.language.translate(d.RESET),secondary:true,onClick:()=>{this.resetData()}};const i={icon:"save",label:this.kupManager.language.translate(d.SAVE),onClick:()=>this.onKupSave()};return n("div",{class:"header"},this.enableDesign?n(a,Object.assign({},t)):undefined,this.enableDesign?n(a,Object.assign({},i)):undefined)}buildForm(t,i){const e={form:true,"layout-column":t&&t.layout=="column","layout-row":t&&t.layout=="row","form-dropzone":this.enableDesign&&t&&t.sections!=null&&t.sections.length>0};return t?n("div",{class:e,style:this.getGridStyle(t),ref:e=>{if(!e)return;const n=e;n.kupData={parent:i,form:t}}},t.sections.map((i=>this.buildSection(i,t)))):n("div",null,this.kupManager.language.translate(u.EMPTY_DATA))}buildSectionHeader(t,i){const e={value:t.dim,label:this.kupManager.language.translate(d.DIMENSION),onChange:i=>{const{target:e}=i;t.dim=e.value;this.refresh()}};const o={icon:"add",slim:true,onClick:()=>{if(!t.sections){t.sections=[]}const i={id:t.id+(t.sections.length+1),loaded:t.loaded,layout:t.layout};t.sections.push(i);this.resetData(this.internalData)}};const s={icon:"remove",slim:true,secondary:true,onClick:()=>{const e=i.sections.indexOf(t);i.sections.splice(e,1);this.resetData(this.internalData)}};const h={checked:t.loaded,label:this.kupManager.language.translate(d.LOADED),onChange:()=>{t.loaded=!t.loaded;this.refresh()}};const c={checked:t.layout=="column",label:this.kupManager.language.translate(d.VERTICAL),onChange:()=>{t.layout=t.layout=="column"?"row":"column";this.refresh()}};return n("div",{class:"section-header"},n("div",null,t.id," - ",t.layout),n("div",null,n("div",{class:"section-header-actions"},n(l,Object.assign({},e)),n(r,Object.assign({},h)),n(r,Object.assign({},c)),n(a,Object.assign({},o)),n(a,Object.assign({},s)))))}buildSection(t,i){const e={section:true,"section-draggable":this.enableDesign,"section-dropzone":this.enableDesign};const o={"section-body":true,"layout-column":t&&t.layout=="column","layout-row":t&&t.layout=="row"};return n("div",{class:e,ref:e=>{if(!e)return;const n=e;n.kupData={parent:i,section:t}}},this.enableDesign?this.buildSectionHeader(t,i):undefined,n("div",{class:o,style:this.getGridStyle(t)},!this.enableDesign&&t.loaded&&(!t.sections||t.sections.length==0)?n("slot",{name:t.id}):undefined,t.sections&&(t.loaded||this.enableDesign)?t.sections.map((i=>this.buildSection(i,t))):undefined))}calcSectionPosition(t,i,e,n,o){let s=n;for(let n=0;n<o.length;n++){const a=o[n];const r=a.getBoundingClientRect();if(e&&t<r.y){s=n;break}else if(!e&&i<r.x){s=n;break}}return s}didRenderInteractables(){try{const t=[];this.rootElement.shadowRoot.querySelectorAll(".section-draggable").forEach((i=>t.push(i)));t.forEach((t=>{this.kupManager.interact.draggable(t,null,null,m.CLONE)}))}catch(t){this.kupManager.debug.logMessage(this,t,g.ERROR)}try{const t=[];this.rootElement.shadowRoot.querySelectorAll(".section-dropzone").forEach((i=>t.push(i)));this.rootElement.shadowRoot.querySelectorAll(".form-dropzone").forEach((i=>t.push(i)));t.forEach((t=>{this.kupManager.interact.dropzone(t,{ondropdeactivate:()=>{this.removeSectionPlaceHolder()},ondropmove:t=>{this.removeSectionPlaceHolder();this.dragEnter(t.dragEvent.clientY,t.dragEvent.clientX,t.currentTarget)}},null,{drop:t=>{this.dropped(t,t.currentTarget,t.relatedTarget)}})}))}catch(t){this.kupManager.debug.logMessage(this,t,g.ERROR)}}dragEnter(t,i,e){if(e.kupData.form){const n=this.calcSectionPosition(t,i,e.kupData.form.layout=="column",e.kupData.form.sections.length,e.children);this.setSectionPlaceHolder(e,n)}else if(e.kupData.section){const n=this.calcSectionPosition(t,i,e.kupData.section.layout=="column",e.kupData.section.sections.length,e.lastElementChild.children);this.setSectionPlaceHolder(e.lastElementChild,n)}}dropped(t,i,e){const n=e.kupData.parent.sections.indexOf(e.kupData.section);e.kupData.parent.sections.splice(n,1);if(i.kupData.form){if(!i.kupData.form.sections)i.kupData.form.sections=[];const n=this.calcSectionPosition(t.dragEvent.clientY,t.dragEvent.clientX,i.kupData.form.layout=="column",i.kupData.form.sections.length,i.children);i.kupData.form.sections.splice(n,0,e.kupData.section);e.kupData.parent=i.kupData.form}else if(i.kupData.section){if(!i.kupData.section.sections||i.kupData.section.sections.length==0){const t=JSON.parse(JSON.stringify(i.kupData.section));t.dim=null;e.kupData.section.dim=null;i.kupData.section.id=this.buildGuid();i.kupData.section.sections=[];i.kupData.section.sections.push(t)}const n=this.calcSectionPosition(t.dragEvent.clientY,t.dragEvent.clientX,i.kupData.section.layout=="column",i.kupData.section.sections.length,i.lastElementChild.children);i.kupData.section.sections.splice(n,0,e.kupData.section);e.kupData.parent=i.kupData.section}this.resetData(this.internalData)}getGridStyle(t){let i={};if(t.sections){let e="";t.sections.forEach((t=>{if(this.enableDesign||!t.dim)e+=" 1fr";else e+=t.dim.indexOf("%")<0?" "+t.dim+"px":" "+t.dim}));if(t.layout=="column")i["gridTemplateRows"]=e;if(t.layout=="row")i["gridTemplateColumns"]=e}return i}setSectionPlaceHolder(t,i){const e=document.createElement("div");e.className="section-placeholder";t.insertBefore(e,t.childNodes[i])}removeSectionPlaceHolder(){const t=this.rootElement.shadowRoot.querySelector(".section-placeholder");if(t)t.parentElement.removeChild(t)}resetData(t=null){if(t)this.internalDataBackup=t;this.resetInternalData=true;setTimeout((()=>{if(this.internalDataBackup){this.internalData=this.internalDataBackup;this.internalDataBackup=null}this.resetInternalData=false}),250)}unregisterInteractables(){this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".section-dropzone")));this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".section-draggable")));this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".form-dropzone")))}componentWillLoad(){this.kupManager.dates.register(this);this.kupManager.debug.logLoad(this,false);this.kupManager.language.register(this);this.kupManager.theme.register(this)}componentDidLoad(){this.kupManager.debug.logLoad(this,true)}componentWillRender(){this.kupManager.debug.logRender(this,false);if(this.resetInternalData){this.internalData=null;this.unregisterInteractables()}else if(!this.internalData)this.internalData=JSON.parse(JSON.stringify(this.data))}componentDidRender(){this.kupManager.debug.logRender(this,true);const t=this.rootElement.shadowRoot;if(t){const i=t.querySelectorAll(".f-text-field");if(i)i.forEach((t=>{h(t)}))}this.didRenderInteractables()}render(){return n(o,{key:"2a5f7d91b832041e5c68460409f8723bcae04c25"},n("style",{key:"00165eccb43eb45e9519e50ae383b6f237b6d293"},this.kupManager.theme.setKupStyle(this.rootElement)),n("div",{key:"66a90a4032f46aec89e48e2e8c3c95d948dee416",id:x},this.buildHeader(),this.buildForm(this.internalData,null)))}disconnectedCallback(){this.unregisterInteractables();this.kupManager.dates.unregister(this);this.kupManager.language.unregister(this);this.kupManager.theme.unregister(this)}get rootElement(){return s(this)}static get watchers(){return{data:["dataChanged"]}}};v.style=k;export{v as kup_dashboard};
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,c as e,f as i,h as n,H as o,d as s}from"./p-d7c15b0e.js";import{F as a}from"./p-a08414c8.js";import{F as r}from"./p-5d03c077.js";import{F as l}from"./p-d823d538.js";import{F as h}from"./p-c4054aba.js";import{k as c,g as p,s as f,an as d,h as u,R as m,e as g}from"./p-555e004e.js";import{c as x}from"./p-635bb4b3.js";import"./p-e3062c19.js";import"./p-2b519589.js";import"./p-d4a879fc.js";import"./p-029c7cbe.js";var y;(function(t){t["customStyle"]="Custom style of the component.";t["data"]="The data of the component.";t["enableDesign"]="When set to true, the component is in design mode and it is draggable."})(y||(y={}));const b=".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:0.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:0.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:0.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:0.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:host{width:100%;height:100%}#kup-component{height:100%}.header{display:flex;flex-direction:row;justify-content:center}.header>*{margin-left:0.5em}.form{display:grid;height:100%}.form-dropzone{padding:1em;grid-gap:0.5em;border:1px solid var(--kup-primary-color);height:auto}.section{display:flex;flex-direction:column;overflow:auto}.section-header{display:flex;flex-direction:column}.section-header>*{width:100%;display:flex;flex-direction:row}.section-header>*>.section-header-actions{display:flex;justify-content:end}.section-header>*>.section-header-actions>*{margin-top:auto;margin-bottom:auto}.section-body{display:grid}.section-dropzone{border:1px solid var(--kup-primary-color)}.section-draggable{border:1px solid var(--kup-secondary-color);padding:1em}.section-placeholder{background-color:rgba(var(--kup-secondary-color-rgb), 0.5);min-height:1em;min-width:1em}.component{height:fit-content;padding:1em;margin:0.5em}.layout-row{grid-auto-flow:column;grid-template-columns:min-content}.layout-column{grid-auto-flow:row;grid-template-rows:min-content}";const k=b;const v=class{constructor(i){t(this,i);this.kupSave=e(this,"kup-dashboard-save",6);this.kupManager=c();this.internalData=null;this.internalDataBackup=null;this.resetInternalData=false;this.customStyle="";this.data=null;this.enableDesign=false}onKupSave(){this.kupSave.emit({comp:this,id:this.rootElement.id,data:this.internalData})}dataChanged(){this.resetData()}async getProps(t){return p(this,y,t)}async refresh(){i(this)}async setProps(t){f(this,y,t)}buildGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=Math.random()*16|0,i=t==="x"?e:e&3|8;return i.toString(16)}))}buildHeader(){const t={icon:"cancel",label:this.kupManager.language.translate(d.RESET),secondary:true,onClick:()=>{this.resetData()}};const e={icon:"save",label:this.kupManager.language.translate(d.SAVE),onClick:()=>this.onKupSave()};return n("div",{class:"header"},this.enableDesign?n(a,Object.assign({},t)):undefined,this.enableDesign?n(a,Object.assign({},e)):undefined)}buildForm(t,e){const i={form:true,"layout-column":t&&t.layout=="column","layout-row":t&&t.layout=="row","form-dropzone":this.enableDesign&&t&&t.sections!=null&&t.sections.length>0};return t?n("div",{class:i,style:this.getGridStyle(t),ref:i=>{if(!i)return;const n=i;n.kupData={parent:e,form:t}}},t.sections.map((e=>this.buildSection(e,t)))):n("div",null,this.kupManager.language.translate(u.EMPTY_DATA))}buildSectionHeader(t,e){const i={value:t.dim,label:this.kupManager.language.translate(d.DIMENSION),onChange:e=>{const{target:i}=e;t.dim=i.value;this.refresh()}};const o={icon:"add",slim:true,onClick:()=>{if(!t.sections){t.sections=[]}const e={id:t.id+(t.sections.length+1),loaded:t.loaded,layout:t.layout};t.sections.push(e);this.resetData(this.internalData)}};const s={icon:"remove",slim:true,secondary:true,onClick:()=>{const i=e.sections.indexOf(t);e.sections.splice(i,1);this.resetData(this.internalData)}};const h={checked:t.loaded,label:this.kupManager.language.translate(d.LOADED),onChange:()=>{t.loaded=!t.loaded;this.refresh()}};const c={checked:t.layout=="column",label:this.kupManager.language.translate(d.VERTICAL),onChange:()=>{t.layout=t.layout=="column"?"row":"column";this.refresh()}};return n("div",{class:"section-header"},n("div",null,t.id," - ",t.layout),n("div",null,n("div",{class:"section-header-actions"},n(l,Object.assign({},i)),n(r,Object.assign({},h)),n(r,Object.assign({},c)),n(a,Object.assign({},o)),n(a,Object.assign({},s)))))}buildSection(t,e){const i={section:true,"section-draggable":this.enableDesign,"section-dropzone":this.enableDesign};const o={"section-body":true,"layout-column":t&&t.layout=="column","layout-row":t&&t.layout=="row"};return n("div",{class:i,ref:i=>{if(!i)return;const n=i;n.kupData={parent:e,section:t}}},this.enableDesign?this.buildSectionHeader(t,e):undefined,n("div",{class:o,style:this.getGridStyle(t)},!this.enableDesign&&t.loaded&&(!t.sections||t.sections.length==0)?n("slot",{name:t.id}):undefined,t.sections&&(t.loaded||this.enableDesign)?t.sections.map((e=>this.buildSection(e,t))):undefined))}calcSectionPosition(t,e,i,n,o){let s=n;for(let n=0;n<o.length;n++){const a=o[n];const r=a.getBoundingClientRect();if(i&&t<r.y){s=n;break}else if(!i&&e<r.x){s=n;break}}return s}didRenderInteractables(){try{const t=[];this.rootElement.shadowRoot.querySelectorAll(".section-draggable").forEach((e=>t.push(e)));t.forEach((t=>{this.kupManager.interact.draggable(t,null,null,m.CLONE)}))}catch(t){this.kupManager.debug.logMessage(this,t,g.ERROR)}try{const t=[];this.rootElement.shadowRoot.querySelectorAll(".section-dropzone").forEach((e=>t.push(e)));this.rootElement.shadowRoot.querySelectorAll(".form-dropzone").forEach((e=>t.push(e)));t.forEach((t=>{this.kupManager.interact.dropzone(t,{ondropdeactivate:()=>{this.removeSectionPlaceHolder()},ondropmove:t=>{this.removeSectionPlaceHolder();this.dragEnter(t.dragEvent.clientY,t.dragEvent.clientX,t.currentTarget)}},null,{drop:t=>{this.dropped(t,t.currentTarget,t.relatedTarget)}})}))}catch(t){this.kupManager.debug.logMessage(this,t,g.ERROR)}}dragEnter(t,e,i){if(i.kupData.form){const n=this.calcSectionPosition(t,e,i.kupData.form.layout=="column",i.kupData.form.sections.length,i.children);this.setSectionPlaceHolder(i,n)}else if(i.kupData.section){const n=this.calcSectionPosition(t,e,i.kupData.section.layout=="column",i.kupData.section.sections.length,i.lastElementChild.children);this.setSectionPlaceHolder(i.lastElementChild,n)}}dropped(t,e,i){const n=i.kupData.parent.sections.indexOf(i.kupData.section);i.kupData.parent.sections.splice(n,1);if(e.kupData.form){if(!e.kupData.form.sections)e.kupData.form.sections=[];const n=this.calcSectionPosition(t.dragEvent.clientY,t.dragEvent.clientX,e.kupData.form.layout=="column",e.kupData.form.sections.length,e.children);e.kupData.form.sections.splice(n,0,i.kupData.section);i.kupData.parent=e.kupData.form}else if(e.kupData.section){if(!e.kupData.section.sections||e.kupData.section.sections.length==0){const t=JSON.parse(JSON.stringify(e.kupData.section));t.dim=null;i.kupData.section.dim=null;e.kupData.section.id=this.buildGuid();e.kupData.section.sections=[];e.kupData.section.sections.push(t)}const n=this.calcSectionPosition(t.dragEvent.clientY,t.dragEvent.clientX,e.kupData.section.layout=="column",e.kupData.section.sections.length,e.lastElementChild.children);e.kupData.section.sections.splice(n,0,i.kupData.section);i.kupData.parent=e.kupData.section}this.resetData(this.internalData)}getGridStyle(t){let e={};if(t.sections){let i="";t.sections.forEach((t=>{if(this.enableDesign||!t.dim)i+=" 1fr";else i+=t.dim.indexOf("%")<0?" "+t.dim+"px":" "+t.dim}));if(t.layout=="column")e["gridTemplateRows"]=i;if(t.layout=="row")e["gridTemplateColumns"]=i}return e}setSectionPlaceHolder(t,e){const i=document.createElement("div");i.className="section-placeholder";t.insertBefore(i,t.childNodes[e])}removeSectionPlaceHolder(){const t=this.rootElement.shadowRoot.querySelector(".section-placeholder");if(t)t.parentElement.removeChild(t)}resetData(t=null){if(t)this.internalDataBackup=t;this.resetInternalData=true;setTimeout((()=>{if(this.internalDataBackup){this.internalData=this.internalDataBackup;this.internalDataBackup=null}this.resetInternalData=false}),250)}unregisterInteractables(){this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".section-dropzone")));this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".section-draggable")));this.kupManager.interact.unregister(Array.from(this.rootElement.shadowRoot.querySelectorAll(".form-dropzone")))}componentWillLoad(){this.kupManager.dates.register(this);this.kupManager.debug.logLoad(this,false);this.kupManager.language.register(this);this.kupManager.theme.register(this)}componentDidLoad(){this.kupManager.debug.logLoad(this,true)}componentWillRender(){this.kupManager.debug.logRender(this,false);if(this.resetInternalData){this.internalData=null;this.unregisterInteractables()}else if(!this.internalData)this.internalData=JSON.parse(JSON.stringify(this.data))}componentDidRender(){this.kupManager.debug.logRender(this,true);const t=this.rootElement.shadowRoot;if(t){const e=t.querySelectorAll(".f-text-field");if(e)e.forEach((t=>{h(t)}))}this.didRenderInteractables()}render(){return n(o,{key:"2a5f7d91b832041e5c68460409f8723bcae04c25"},n("style",{key:"00165eccb43eb45e9519e50ae383b6f237b6d293"},this.kupManager.theme.setKupStyle(this.rootElement)),n("div",{key:"66a90a4032f46aec89e48e2e8c3c95d948dee416",id:x},this.buildHeader(),this.buildForm(this.internalData,null)))}disconnectedCallback(){this.unregisterInteractables();this.kupManager.dates.unregister(this);this.kupManager.language.unregister(this);this.kupManager.theme.unregister(this)}get rootElement(){return s(this)}static get watchers(){return{data:["dataChanged"]}}};v.style=k;export{v as kup_dashboard};
|
|
2
|
+
//# sourceMappingURL=p-a51b6c48.entry.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,f as e,h as i,H as s,d as a}from"./p-d7c15b0e.js";import{k as o,g as n,s as l,h as c,e as p,ap as h,O as r,aq as f,V as u,d}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,f as e,h as i,H as s,d as a}from"./p-d7c15b0e.js";import{k as o,g as n,s as l,h as c,e as p,ap as h,O as r,aq as f,V as u,d}from"./p-555e004e.js";import{a as b}from"./p-e3062c19.js";import{F as g}from"./p-2b519589.js";import{c as m}from"./p-635bb4b3.js";import"./p-029c7cbe.js";var k;(function(t){t["customStyle"]="Custom style of the component.";t["data"]="Sets the data that will be used to display different components."})(k||(k={}));var x;(function(t){t["BOX"]="Box";t["BUTTON_LIST"]="Button List";t["CHART"]="Chart";t["CHIP"]="Chip";t["ECHART"]="Echart";t["DATATABLE"]="Datatable";t["JSON"]="JSON";t["TREE"]="Tree"})(x||(x={}));const y=".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:0.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:0.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:0.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:0.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:host{background-color:var(--kup-background-color);color:var(--kup-text-color);display:block;height:300px;min-width:700px;width:700px}#kup-component,.magic-box-wrapper{height:100%;width:100%}.magic-box-wrapper{border:3px dashed var(--kup-border-subtle);box-sizing:border-box;display:flex;flex-direction:column}.actions{align-items:center;background-color:var(--kup-title-background-color);display:inline-flex;height:52px;justify-content:center;left:0;position:absolute;top:0;width:100%;z-index:1}.actions kup-button{margin:0.5em}.actions #comp-switcher{margin:auto 0}.actions #close-dialog{position:absolute;margin:0;top:0;right:0;background-color:var(--kup-title-background-color)}.content{box-sizing:border-box;height:100%;margin-top:52px;overflow:auto;transition:background-color 125ms ease}.empty{flex-direction:column;display:flex;text-align:center;justify-content:center;height:100%;width:100%;opacity:0.5;transition:opacity 0.25s ease-out}.empty .f-image{margin:0}.json{font-family:var(--kup-font-family-monospace);margin:0}[kup-drag-over]{background-color:rgba(var(--kup-success-color-rgb), 0.25)}";const v=y;const w=class{constructor(e){t(this,e);this.dragHandler=null;this.kupManager=o();this.textArea=null;this.wrapperRef=null;this.display=x.DATATABLE;this.customStyle="";this.data=null}async getProps(t){return n(this,k,t)}async refresh(){e(this)}async setProps(t){l(this,k,t)}comboboxProps(){const t=[];for(const e in x){if(Object.prototype.hasOwnProperty.call(x,e)){t.push({id:x[e],selected:false,value:x[e]})}}return{data:{"kup-list":{data:t,id:"kup-debug-theme-changer-list"},"kup-text-field":{emitSubmitEventOnEnter:false,inputType:"text",label:this.kupManager.language.translate(c.VIEW_AS)}},id:"comp-switcher",initialValue:this.display,isSelect:true,["onKup-combobox-itemclick"]:t=>{this.display=t.detail.value}}}setContent(){const t=!!(this.data&&this.data.columns&&this.data.columns.length>0);const e=[];const s={};if(this.display===x.JSON){s.initialValue=this.data?JSON.stringify(this.data,null,2):"";s.textArea=true;e.push(i("kup-text-field",Object.assign({class:"kup-full-width kup-full-height"},s,{ref:t=>this.textArea=t,"onkup-textfield-input":t=>{try{this.data=JSON.parse(t.detail.value)}catch(t){this.data={columns:[{name:"ERROR",title:"Error"}],rows:[{cells:{ERROR:{value:"Invalid JSON:"+t}}}]}}}})))}else if(!t){e.push(i("div",{class:"empty"},i(g,{sizeY:"100px",resource:"move_to_inbox"}),i("div",{class:"empty-text"},this.kupManager.language.translate(c.DROP_YOUR_DATA))))}else{switch(this.display){case x.BOX:s.data=this.data;e.push(i("kup-box",Object.assign({},s)));break;case x.BUTTON_LIST:s.data=this.data;e.push(i("kup-button-list",Object.assign({},s)));break;case x.CHIP:s.data=this.data;e.push(i("kup-chip",Object.assign({},s)));break;case x.CHART:case x.ECHART:s.data=this.data;s["series"]=[];s["axis"]=null;for(let t=0;t<this.data.columns.length;t++){const e=this.data.columns[t];if(e.obj&&this.kupManager.objects.isNumber(e.obj)||s["axis"]!==null){if(this.display===x.CHART){s["series"].push({code:e.name,decode:e.title})}else{s["series"].push(e.name)}}else{s["axis"]=e.name}}if(s["series"].length===0){this.kupManager.debug.logMessage(this,"Not enough numerical columns to display a chart!",p.WARNING)}if(!s["axis"]){this.kupManager.debug.logMessage(this,"No axis for the chart!",p.WARNING)}if(this.display===x.CHART){e.push(i("kup-chart",Object.assign({},s)))}else{e.push(i("kup-echart",Object.assign({},s)))}break;case x.DATATABLE:s.data=this.data;s["autoFillMissingCells"]=true;e.push(i("kup-data-table",Object.assign({},s)));break;case x.TREE:s.data=this.data;e.push(i("kup-tree",Object.assign({class:"kup-full-width"},s)));break;default:this.kupManager.debug.logMessage(this,"Display mode not supported ("+this.display+")!",p.ERROR);return}}return e}updateData(t){{const e=Object.assign({},this.data);const i=t.detail.sourceElement&&t.detail.sourceElement.column?t.detail.sourceElement.column:null;const s=t.detail.sourceElement&&t.detail.sourceElement.row?t.detail.sourceElement.row:null;if(i&&i.name){if(!e.columns){e.columns=[i]}else{const t=this.data.columns.find((t=>t.name===i.name));if(!t){e.columns.push(i)}}}else{this.kupManager.debug.logMessage(this,"Invalid column received.",p.WARNING)}if(s){if(!e.rows){e.rows=[s]}else{e.rows.push(s)}}this.data=e;if(this.data&&this.textArea){try{this.textArea.setValue(JSON.stringify(this.data,null,2))}catch(t){this.textArea.setValue("Invalid JSON:"+t)}}}}componentWillLoad(){this.kupManager.debug.logLoad(this,false);this.kupManager.language.register(this);this.kupManager.theme.register(this)}componentDidLoad(){this.rootElement.addEventListener(h,(t=>this.updateData(t)));this.dragHandler=this.rootElement.shadowRoot.querySelector("#drag-handle");this.kupManager.interact.dialogify(this.rootElement,this.dragHandler);this.kupManager.interact.dropzone(this.wrapperRef,{accept:`[${r}],[${f}]`},{dispatcher:this.rootElement,type:u.MAGICBOX});this.kupManager.debug.logLoad(this,true)}componentWillRender(){this.kupManager.debug.logRender(this,false)}componentDidRender(){this.kupManager.debug.logRender(this,true)}render(){return i(s,{key:"f472c456d846a8db13368b9f54e5a092225f22d3"},i("style",{key:"0d90e35e265af8810a2b5873b7bef9dd48fb9bd8"},this.kupManager.theme.setKupStyle(this.rootElement)),i("div",{key:"87cdb1e3bdcb196b71031c160aa6608dbd298c5c",id:m},i("div",{key:"c99994dc335f14d63208b0fee2b67632c0ff1161",class:"magic-box-wrapper"},i("div",{key:"b318cdac704373547ece7c0a4e770a6b83a1c784",class:"actions",id:"drag-handle"},i("kup-combobox",Object.assign({key:"77800dd052310dade4154a339e08e6e25c0d8cb7"},this.comboboxProps())),i("kup-button",{key:"ad5e58acb8806b8f9f271e9ed33aa61f5ec0d0cd",styling:b.FLAT,icon:"delete",label:"Reset","onkup-button-click":()=>{this.data=null}}),i("kup-button",{key:"243a20cf6a6bbd9182290d4bdf6994386bf79d94",id:"close-dialog",customStyle:`:host{${d.PRIMARY}: var(${d.TITLE});}`,icon:"clear","onkup-button-click":()=>{this.kupManager.hideMagicBox()}})),i("div",{key:"35cae487666a6cadd2e205971b080692a84e2d7f",class:"content",ref:t=>this.wrapperRef=t},this.setContent()))))}disconnectedCallback(){this.kupManager.interact.unregister([this.rootElement,this.wrapperRef]);this.kupManager.language.unregister(this);this.kupManager.theme.unregister(this)}get rootElement(){return a(this)}};w.style=v;export{w as kup_magic_box};
|
|
2
|
+
//# sourceMappingURL=p-b3fbf321.entry.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as e,H as t,D as l,B as n,ae as i,v as r,x as s,ag as o,ah as u,J as a,e as f,F as c,ai as h,aj as d,ak as b,al as p,a1 as m}from"./p-555e004e.js";import{K as v}from"./p-029c7cbe.js";class F extends e{getTextFilterValue(e={},t){return this._getTextFilterValue(e,t,false)}getTextFilterValueTmp(e={},t){return this._getTextFilterValue(e,t,true)}_getTextFilterValue(e={},t,l){let n="";if(e==null){return n}let i=e[t];if(i==null){return n}n=l?i.textFieldTmp:i.textField;return n}hasFiltersForColumn(e={},t){return this._hasFiltersForColumn(e,t,false)}hasFiltersForColumnTmp(e={},t){return this._hasFiltersForColumn(e,t,true)}_hasFiltersForColumn(e={},t,l){if(!t){return false}let n=this._getTextFilterValue(e,t.name,l);if(n!=null&&n.trim()!=""){return true}if(this._hasIntervalTextFieldFilterValues(e,t,l)){return true}let i=this.getCheckBoxFilterValues(e,t.name);if(i==null||i.length<1){return false}return true}getCheckBoxFilterValues(e={},t){let l=[];if(e==null){return l}let n=e[t];if(n==null){return l}if(n.checkBoxes==null){return l}l=n.checkBoxes;return l}hasIntervalTextFieldFilterValues(e={},t){return this._hasIntervalTextFieldFilterValues(e,t,false)}hasIntervalTextFieldFilterValuesTmp(e={},t){return this._hasIntervalTextFieldFilterValues(e,t,true)}_hasIntervalTextFieldFilterValues(e={},l,n){if(l==null){return false}if(!this.isColumnFiltrableByInterval(l)){return false}let i=this._getIntervalTextFieldFilterValue(e,l.name,t.FROM,n);if(i!=null&&i.trim()!=""){return true}let r=this._getIntervalTextFieldFilterValue(e,l.name,t.TO,n);if(r!=null&&r.trim()!=""){return true}return false}addCheckboxFilter(t={},l,n){if(t==null){return}let i=t[l];if(i==null){i={textField:"",textFieldTmp:"",checkBoxes:[],interval:null,intervalTmp:null};t[l]=i}if(i.checkBoxes==null){i.checkBoxes=[]}if(n==null||n.value==null){i.checkBoxes=[]}else{if(!e.valuesArrayContainsValue(i.checkBoxes,n.value)){i.checkBoxes[i.checkBoxes.length]=n}}}removeCheckboxFilter(t={},l,n){if(t==null||n==null){return}let i=t[l];if(i==null){return}if(i.checkBoxes==null){i.checkBoxes=[]}let r=e.indexOfValueInValuesArray(i.checkBoxes,n);if(r>=0){let e=[];for(let t=0;t<i.checkBoxes.length;t++){if(t!=r){e[e.length]=i.checkBoxes[t]}}i.checkBoxes=[...e]}}isColumnFiltrableByInterval(e){return this.isObjFiltrableByInterval(e.obj)}getIntervalTextFieldFilterValues(e={},t){return this._getIntervalTextFieldFilterValues(e,t,false)}getIntervalTextFieldFilterValuesTmp(e={},t){return this._getIntervalTextFieldFilterValues(e,t,true)}_getIntervalTextFieldFilterValues(e={},l,n){if(!this._hasIntervalTextFieldFilterValues(e,l,n)){return["",""]}let i=[this._getIntervalTextFieldFilterValue(e,l.name,t.FROM,n),this._getIntervalTextFieldFilterValue(e,l.name,t.TO,n)];return i}getIntervalTextFieldFilterValue(e={},t,l){return this._getIntervalTextFieldFilterValue(e,t,l,false)}getIntervalTextFieldFilterValueTmp(e={},t,l){return this._getIntervalTextFieldFilterValue(e,t,l,true)}_getIntervalTextFieldFilterValue(e={},t,l,n){let i="";if(e==null){return i}let r=e[t];if(r==null){return i}if(n&&r.intervalTmp==null){return i}if(!n&&r.interval==null){return i}i=n?r.intervalTmp[l]:r.interval[l];return i}setTextFieldFilterValue(e={},t,l){this._setTextFieldFilterValue(e,t,l,true)}_setTextFieldFilterValue(e={},t,l,n){if(e==null){return}let i=e[t];if(i==null){i={textField:"",textFieldTmp:"",checkBoxes:[],interval:null,intervalTmp:null};e[t]=i}if(n){i.textFieldTmp=l!=null?l.trim():l}else{i.textField=l!=null?l.trim():l}}setIntervalTextFieldFilterValue(e={},t,l,n){this._setIntervalTextFieldFilterValue(e,t,l,n,true)}_setIntervalTextFieldFilterValue(e={},t,l,n,i){if(e==null){return}let r=e[t];if(r==null){r={textField:"",textFieldTmp:"",checkBoxes:[],interval:null,intervalTmp:null};e[t]=r}if(r.interval==null){r.interval=[];r.interval.push("","")}if(r.intervalTmp==null){r.intervalTmp=[];r.intervalTmp.push("","")}if(i){r.intervalTmp[n]=l!=null?l.trim():l}else{r.interval[n]=l!=null?l.trim():l}}saveTextualFilters(e={},l){this._setTextFieldFilterValue(e,l,this.getTextFilterValueTmp(e,l),false);this._setIntervalTextFieldFilterValue(e,l,this.getIntervalTextFieldFilterValueTmp(e,l,t.FROM),t.FROM,false);this._setIntervalTextFieldFilterValue(e,l,this.getIntervalTextFieldFilterValueTmp(e,l,t.TO),t.TO,false)}resetTextualFilters(e={},l){this._setTextFieldFilterValue(e,l,this.getTextFilterValue(e,l),true);this._setIntervalTextFieldFilterValue(e,l,this.getIntervalTextFieldFilterValue(e,l,t.FROM),t.FROM,true);this._setIntervalTextFieldFilterValue(e,l,this.getIntervalTextFieldFilterValue(e,l,t.TO),t.TO,true)}getFilterValueForTooltip(e={},i){let r=this.getTextFilterValue(e,i.name);let s=this.getIntervalTextFieldFilterValues(e,i);let o=this.getCheckBoxFilterValues(e,i.name);let u="";let a=l(r,i.obj,i.decimals);if(r!=""){u=" AND "}if(s[t.FROM]!=""){a+=u+"(>= "+l(s[t.FROM],i.obj,i.decimals)+")";u=" AND "}if(s[t.TO]!=""){a+=u+"(<= "+l(s[t.TO],i.obj,i.decimals)+")";u=" AND "}u="";let f="";o.forEach((e=>{f+=u+n(e,i);u=" OR "}));if(f!=""){f="("+f+")";if(a!=""){f=" AND "+f}}f=a+f;return f}removeFilter(e={},t){e[t]={textField:"",textFieldTmp:"",checkBoxes:[],interval:null,intervalTmp:null}}}var w;(function(e){e["asAccordion"]="When enabled, the first level of depth will give an accordion look to nodes.";e["columns"]="The columns of the tree when tree visualization is active.";e["customStyle"]="Custom style of the component.";e["data"]="The json data used to populate the tree view: the basic, always visible tree nodes.";e["density"]="The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.";e["dynamicExpansionCallback"]="Function that gets invoked when a new set of nodes must be loaded as children of a node. When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop. If this prop is set to null, no callback to download data is available: the component will emit an event requiring the parent to load the children of the given node. If this prop is set to have a callback, then the component will automatically make requests to load children of a given node. After the load has been completed, a different event will be fired to alert the parent of the change.";e["enableExtraColumns"]="Enables adding extra columns.";e["expanded"]="Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.";e["expansionMode"]="Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.";e["filters"]="List of filters set by the user.";e["globalFilter"]="When set to true it activates the global filter.";e["globalFilterValue"]="The value of the global filter.";e["globalFilterMode"]="The mode of the global filter.";e["removableColumns"]="Sets the possibility to remove the selected column.";e["preventXScroll"]="Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells. It works only on cells of the main column.";e["ripple"]="When enabled displays Material's ripple effect on nodes (only when no columns are displayed).";e["scrollOnHover"]="Activates the scroll on hover function.";e["showColumns"]="Shows the tree data as a table.";e["showFilters"]="When set to true enables the column filters.";e["showFooter"]="When set to true shows the footer.";e["showHeader"]="Flag: shows the header of the tree when the tree is displayed as a table.";e["showIcons"]="Shows the icons of the nodes.";e["stateId"]="";e["store"]="";e["totals"]="Defines the current totals options.";e["useDynamicExpansion"]="When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the tree have been passed inside the data property. Therefore, when expanding a node, the tree must emit an event (or run a given callback) and wait for the child nodes to be downloaded from the server."})(w||(w={}));const x="TREE_COLUMN";var T;(function(e){e["DROPDOWN"]="dropdown";e["NODE"]="node"})(T||(T={}));const k=document.documentElement;const g=k.ketchup?k.ketchup.objects:new s;const j=k.ketchup?k.ketchup.data:new o;class y extends e{isFilterCompliantForCell(e,t,l){if(!e){return false}return this.isFilterCompliantForSimpleValue(e.value,e.obj,t,l)}isFilterCompliantForCellObj(e,t,l){if(!e){return false}if(!e.obj){return false}return this.isFilterCompliantForSimpleValue(e.obj.k,e.obj,t,l)}isRowCompliant(e,t={},l="",n=false,i=[],r){return this.areCellsCompliant(e.cells,t,l,n,i,r)}areCellsCompliant(e,t={},l="",n=false,s=[],o){if(n){let t=true;if(s&&s!=null&&s.length>0){t=false;let n=this.filterIsNegative(l);for(let r=0;r<s.length;r++){if(s[r].visible==false){continue}const o=e[s[r].name];if(o==null){continue}t=this.isFilterCompliantForValue(o.value,l);let u=i(s[r],o);if(u!=o.value){t=t||this.isFilterCompliantForValue(u,l)}if(t==true&&!n){break}if(t==false&&n){break}}}if(!t){return false}}if(o==null){o=new F}if(!this.hasFilters(t,s,o)){return true}let u=Object.keys(t);for(let l=0;l<u.length;l++){let n=u[l];const i=e[n];if(!i){return false}let a=o.getTextFilterValue(t,n);let f=o.getIntervalTextFieldFilterValues(t,r(s,n));const c=this.filterIsNegative(a);let h=this.isFilterCompliantForCell(i,a,f);let d=c;if(!g.isNumber(i.obj)&&!g.isDate(i.obj)&&!g.isTime(i.obj)&&!g.isTimestamp(i.obj)){d=this.isFilterCompliantForCellObj(i,a,f)}if(c){if(!h||!d){return false}}else{if(!h&&!d){return false}}let b=o.getCheckBoxFilterValues(t,n);if(b.length==0){continue}let p=false;for(let e=0;e<b.length;e++){let t=b[e];if(t==null||t.value==null){continue}if(i.value!=null){if(i.value.toLowerCase().trim()==t.value.toLowerCase().trim()){p=true;break}}if(i.obj!=null){if(i.obj.k.toLowerCase().trim()==t.value.toLowerCase().trim()){p=true;break}}}if(!p){return false}}return true}hasFilters(e={},t,l){if(e==null){return false}let n=Object.keys(e);if(n==null||n.length<1){return false}if(l==null){l=new F}for(let i=0;i<n.length;i++){let s=n[i];let o=null;if(s===x){o={name:x,title:""}}else{o=r(t,s)}if(l.hasFiltersForColumn(e,o)){return true}}return false}filterRows(e=[],t={},l="",n=[],i){if(!e||e==null){return[]}let r=[];const s=!!(l&&n);if(this.hasFilters(t,n,i)||s){for(let o=0;o<e.length;o++){let u=e[o];if(u.id&&u.id.indexOf("insert_")>-1||this.isRowCompliant(u,t,l,s,n,i)){r[r.length]=u}}}else{r=[...e]}return r}getColumnValues(t,n,i,r){let s=new Array;if(r==null){r=new F}let o=r.getTextFilterValueTmp(t.filters,n.name);let u=r.getIntervalTextFieldFilterValuesTmp(t.filters,n);let a=r.getCheckBoxFilterValues(t.filters,n.name);if(n.valuesForFilter!=null&&n.valuesForFilter.length>0){n.valuesForFilter.forEach((t=>{let i=t;if(e.valuesArrayContainsValue(a,i)||o==""||r.isFilterCompliantForSimpleValue(i,n.obj,o,u)){s.push({value:i,displayedValue:l(i,n.obj,n.decimals)})}}));return s}let f=Object.assign({},t.filters);f[n.name]={textField:o,textFieldTmp:o,checkBoxes:[],interval:u,intervalTmp:u};let c=this.filterRows(t.getRows(),f,i,t.getVisibleColumns(),r);for(let e=0;e<a.length;e++){s.push(a[e])}return j.cell.getUnivocalValue({rows:c},n,true)}}const O=document.documentElement;function V(e=[],t=[]){if(!e||e.length===0){return[]}if(e[0].group){return C(e,t)}if(!t||t.length===0){return e}const l=t.length>1;return e.slice(0).sort(((e,n)=>{if(l){for(let l=0;l<t.length;l++){const i=B(e,n,t[l]);if(i!==0){return i}}return 0}else{return B(e,n,t[0])}}))}function C(e=[],t=[]){if(!e||e.length===0){return[]}const l=e[0].group.column;let n=I(l,t);if(!n){n={column:l,sortMode:m.A}}e.sort(((e,t)=>{const l={obj:e.group.obj,value:e.group.id};const i={obj:t.group.obj,value:t.group.id};return u(l,i,n.sortMode)}));e.forEach((e=>{e.group.children=V(e.group.children,t)}));return e}function I(e="",t=[]){if(!e||!t||t.length===0){return null}for(let l of t){if(l.column===e){return l}}return null}function B(e,t,l){const n=e.cells[l.column];const i=t.cells[l.column];if(!n&&!i){return 0}if(!n){return 1}if(!i){return-1}return u(n,i,l.sortMode)}function M(e=[],t={},l="",n=[],i,r){if(r==null){r=new y}return r.filterRows(e,t,l,n,i)}function N(e=[],t=[],l=[],n={}){if(!t){return[]}if(!l||l.length===0||!e||e.length===0){return t}const s={};const o=l.filter((({column:t})=>{for(let{name:l,title:n}of e){if(l===t){s[l]=n;return true}}return false}));if(o.length===0){return t}const u=[];let f={};t.forEach((t=>{const l=o[0].column;const a=t.cells[l];if(a){const c=r(e,l);const h=i(c,a);const d=a.value;let b=null;for(let e of u){if(e.group.label===h){b=e;break}}if(b===null){b={group:{id:d,parent:null,column:l,columnLabel:s[l],expanded:false,label:h,children:[],obj:a.obj,totals:{}},cells:{}};u.push(b)}for(let l=1;l<o.length;l++){const n=o[l];const u=t.cells[n.column];if(u){const t=r(e,n.column);const l=i(t,u);const o=u.value;let a=null;for(let e=0;e<b.group.children.length;e++){const t=b.group.children[e];const n=t.group.label;if(n===l){a=t;break}}if(!a){a={cells:{},group:{id:o,parent:b,column:n.column,columnLabel:s[n.column],children:[],expanded:false,label:l,totals:{},obj:u.obj}};$(a);b.group.children.push(a)}b=a}}b.group.children.push(t);_(b,n,t,f)}}));A(u,n,f);D(u,a.AVERAGE,n);D(u,a.MATH,n);return u}function _(e,t,l,n){if(!e||!t){return}const i=Object.keys(t);if(i.length===0){return}i.forEach((i=>{const r=l.cells[i];if(r){const l=O.ketchup.objects.isNumber(r.obj);const s=t[i];switch(s){case a.COUNT:let t=e.group.totals[i]||0;e.group.totals[i]=++t;let o=e.group.parent;while(o!=null){let e=o.group.totals[i]||0;o.group.totals[i]=++e;o=o.group.parent}break;case a.DISTINCT:let u;if(l){u=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(r.value))}else{u=r.value}let f=n[e.group.id];if(!f){n[e.group.id]={};n[e.group.id][i]=[];n[e.group.id][i].push(u)}else{let t=n[e.group.id][i];if(!t){n[e.group.id][i]=[];n[e.group.id][i].push(u)}else{t.push(u)}}let c=e.group.parent;while(c!=null){let e=n[c.group.id];if(!e){n[c.group.id]={};n[c.group.id][i]=[];n[c.group.id][i].push(u)}else{let e=n[c.group.id][i];if(!e){n[c.group.id][i]=[];n[c.group.id][i].push(u)}else{e.push(u)}}c=c.group.parent}break;case a.SUM:case a.AVERAGE:if(l&&r.value){const t=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(r.value));const l=e.group.totals[i]||0;e.group.totals[i]=t+l;let n=e.group.parent;while(n!=null){const e=O.ketchup.math.numberify(n.group.totals[i]||0);n.group.totals[i]=t+e;n=n.group.parent}}break;case a.MIN:if(l&&r.value){const t=e.group.totals[i];const l=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(r.value));if(t){e.group.totals[i]=Math.min(t,l)}else{e.group.totals[i]=l}let n=e.group.parent;while(n!=null){const e=n.group.totals[i];if(e){n.group.totals[i]=Math.min(e,l)}else{n.group.totals[i]=l}n=n.group.parent}}else if(r.value&&O.ketchup.objects.isDate(r.obj)){if(O.ketchup.dates.isValidFormattedStringDate(r.value)){const t=e.group.totals[i];if(t){let l=[];l.push(u);l.push(O.ketchup.dates.toDayjs(t));e.group.totals[i]=O.ketchup.dates.format(O.ketchup.dates.min(l),v.ISO_DATE)}else{e.group.totals[i]=O.ketchup.dates.format(u,v.ISO_DATE)}let l=e.group.parent;while(l!=null){const e=l.group.totals[i];if(e){let t=[];t.push(u);t.push(O.ketchup.dates.toDayjs(e));l.group.totals[i]=O.ketchup.dates.format(O.ketchup.dates.min(t),v.ISO_DATE)}else{l.group.totals[i]=O.ketchup.dates.format(u,v.ISO_DATE)}l=l.group.parent}}}break;case a.MAX:if(l&&r.value){const t=e.group.totals[i];const l=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(r.value));if(t){e.group.totals[i]=Math.max(t,l)}else{e.group.totals[i]=l}let n=e.group.parent;while(n!=null){const e=n.group.totals[i];if(e){n.group.totals[i]=Math.max(e,l)}else{n.group.totals[i]=l}n=n.group.parent}}else if(r.value&&O.ketchup.objects.isDate(r.obj)){if(O.ketchup.dates.isValidFormattedStringDate(r.value)){const t=e.group.totals[i];if(t){let l=[];l.push(u);l.push(O.ketchup.dates.toDayjs(t));e.group.totals[i]=O.ketchup.dates.format(O.ketchup.dates.max(l),v.ISO_DATE)}else{e.group.totals[i]=O.ketchup.dates.format(u,v.ISO_DATE)}let l=e.group.parent;while(l!=null){const e=l.group.totals[i];if(e){let t=[];t.push(u);t.push(O.ketchup.dates.toDayjs(e));l.group.totals[i]=O.ketchup.dates.format(O.ketchup.dates.max(t),v.ISO_DATE)}else{l.group.totals[i]=O.ketchup.dates.format(u,v.ISO_DATE)}l=l.group.parent}}}break;default:{if(s.indexOf(a.MATH)!=0){console.warn(`invalid total mode: ${s}`)}break}}}}))}function A(e,t,l){if(!e||!t){return}const n=Object.keys(t);if(e.length===0||!e[0].group||n.length===0){return}let i=n.filter((e=>a.DISTINCT===t[e]));if(i.length>0){e.filter((e=>e.group.children.length>0)).forEach((e=>S(e,i,l)))}}function D(e,t,l){if(!e||!l){return}const n=Object.keys(l);if(e.length===0||!e[0].group||n.length===0){return}let i;if(t==a.AVERAGE){i=n.filter((e=>a.AVERAGE===l[e]))}if(t==a.MATH){i=n.filter((e=>l[e].indexOf(a.MATH)==0))}if(i.length>0){e.filter((e=>e.group.children.length>0)).forEach((e=>W(e,t,i,l)))}}function S(e,t,l){const n=e.group.children;if(n.length===0){return}if(n[0].group){n.forEach((e=>{S(e,t,l)}))}t.forEach((t=>{const n=l[e.group.id][t];e.group.totals[t]=new Set(n).size}))}function W(e,t,l,n){const i=e.group.children;if(i.length===0){return 0}let r=0;if(i[0].group){i.forEach((e=>{r+=W(e,t,l,n)}))}else{r=i.length}l.forEach((l=>{if(t==a.AVERAGE){e.group.totals[l]=e.group.totals[l]/r}if(t==a.MATH){let t=n[l].substring(a.MATH.length);e.group.totals[l]=O.ketchup.math.formulas.custom(t,e.group.totals)}}));return r}function E(e,t){if(t){const l=Object.assign(t);t.forEach((t=>{e.forEach((e=>{if(t.cells){const l=t.cells[e.name];if(l&&e.obj&&!l.obj){l.obj={t:e.obj.t,p:e.obj.p,k:l.value}}}}))}));return l}else{return undefined}}function L(e=[],t={}){if(O.ketchup.objects.isEmptyJsObject(e)||O.ketchup.objects.isEmptyJsObject(t)){return{}}const l=Object.keys(t);const n={};const i=new Array;let r=l.length===0||l.every((e=>t[e]===a.COUNT));if(r){l.forEach((t=>n[t]=e.length))}else{let r={};e.forEach(((e,s,o)=>{l.filter((e=>a.COUNT!==t[e]&&t[e].indexOf(a.MATH)!=0)).forEach((l=>{const u=e.cells[l];if(u){if(t[l]===a.DISTINCT){let e;if(O.ketchup.objects.isNumber(u.obj)){e=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(u.value))}else{e=u.value}let t=r[l];if(!t){r[l]=[];r[l].push(e)}else{t.push(e)}}else if(O.ketchup.objects.isNumber(u.obj)){const e=O.ketchup.math.numberify(O.ketchup.math.numberifySafe(u.value));let i=n[l];switch(true){case t[l]===a.MIN:if(i){n[l]=Math.min(i,e)}else{n[l]=e}break;case t[l]===a.MAX:if(i){n[l]=Math.max(i,e)}else{n[l]=e}break;default:i=n[l]||0;n[l]=e+O.ketchup.math.numberify(i)}}else if(O.ketchup.objects.isDate(u.obj)){if(i.indexOf(l)==-1){i.push(l)}if(O.ketchup.dates.isValidFormattedStringDate(u.value)){const e=O.ketchup.dates.toDate(O.ketchup.dates.toDayjs(u.value));const i=n[l]?O.ketchup.dates.toDate(O.ketchup.dates.toDayjs(n[l])):null;switch(true){case t[l]===a.MIN:if(i){let t=[];t.push(e);t.push(i);n[l]=O.ketchup.dates.format(O.ketchup.dates.min(t),v.ISO_DATE)}else{n[l]=O.ketchup.dates.format(e,v.ISO_DATE)}break;case t[l]===a.MAX:if(i){let t=[];t.push(e);t.push(i);n[l]=O.ketchup.dates.format(O.ketchup.dates.max(t),v.ISO_DATE)}else{n[l]=O.ketchup.dates.format(e,v.ISO_DATE)}break}}}}if(s===o.length-1&&t[l]===a.DISTINCT){n[l]=new Set(r[l]).size;r[l]=[]}}))}))}for(let r of l){switch(true){case t[r]===a.AVERAGE:const l=n[r];if(l&&e.length>0){n[r]=l/e.length}break;case t[r]===a.COUNT:n[r]=e.length;break;case t[r].indexOf(a.MATH)==0:n[r]=O.ketchup.math.formulas.custom(t[r].substring(a.MATH.length),n);break}if(n[r]){if(i.indexOf(r)!=-1){n[r]=O.ketchup.dates.format(n[r])}else if(O.ketchup.math.isNumber(n[r])){n[r]=+n[r].toFixed(2)}}}return n}function $(e){if(!e.group){return}let t=e.group.id;let l=e.group.parent;while(l!==null){t=`${l.group.id};${t}`;l=l.group.parent}e.group.id=t}function R(e,t,l,n){const i=t*l-l;const r=i+Number(l);if(n==false){return e.slice(i,r)}let s=[];q(e,s,i,Number(l),0);return s}function q(e,t,l,n,i){let r=false;for(let s=0;s<e.length;s++){let o=e[s];let u=z(e[s]);if(o.group!=null&&o.group.children!=null&&o.group.children.length>0){u.group.children=[];let e=q(o.group.children,u.group.children,l,n,i);i=e.ci;r=e.added;if(r==true){t[t.length]=u}}else{if(i>=l){t[t.length]=u;r=true}i++}if(i>=l+n){break}}return{ci:i,added:r}}function z(e){if(e==null){return null}else{return{id:e.id,cells:Object.assign({},e.cells),actions:e.actions?[...e.actions]:null,group:K(e.group),clonedFrom:e,readOnly:e.readOnly,cssClass:e.cssClass}}}function J(e){if(e==null){return null}let t=[];for(let l=0;l<e.length;l++){t[t.length]=z(e[l])}return t}function K(e){if(e==null){return null}let t={id:e.id,parent:Object.assign({},e.parent),column:e.column,columnLabel:e.columnLabel,expanded:e.expanded,label:e.label,children:J(e.children),obj:Object.assign({},e.obj),totals:Object.assign({},e.totals)};return t}function H(e,t,l=false){const n={columns:t.columns,rows:[]};for(const i of t.rows){const r={cells:{},id:i.id};for(const l of t.columns){const t=l.name;const n=i.cells[t];const s=e.rows.find((e=>e.id===i.id));const o=s?s.cells[t]:null;if(!o||n.value!==o.value){r.cells[t]=n}}if(Object.keys(r.cells).length>0||l){n.rows.push(r)}}return n}function U(e){var t;(t=e.rows)===null||t===void 0?void 0:t.forEach((e=>{Object.keys(e.cells).forEach((t=>{var l;let n=e.cells[t];const i=n.value;const r=n["options"];n.isEditable=(l=n.isEditable)!==null&&l!==void 0?l:n["editable"];if(r){const e={[c.AUTOCOMPLETE]:()=>h(i,"",r),[c.COMBOBOX]:()=>h(i,"",r),[c.RADIO]:()=>d(i,r),[c.CHECKBOX]:()=>b(i,r),[c.CHIP]:()=>p(i)};const t=e[n.shape];if(t){n.data=t()}else{if(n.shape){O.ketchup.debug.logMessage("kup-data",`Shape specified ${n.shape} in cell ${JSON.stringify(n)} unsupported`,f.WARNING)}}}}))}))}export{F,T as K,y as a,N as b,L as c,U as d,w as e,M as f,H as g,E as n,R as p,V as s,x as t};
|
|
2
|
+
//# sourceMappingURL=p-b6afb372.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FiltersColumnMenu","Filters","getTextFilterValue","filters","column","this","_getTextFilterValue","getTextFilterValueTmp","tmp","value","filter","textFieldTmp","textField","hasFiltersForColumn","_hasFiltersForColumn","hasFiltersForColumnTmp","textfield","name","trim","_hasIntervalTextFieldFilterValues","checkboxes","getCheckBoxFilterValues","length","values","checkBoxes","hasIntervalTextFieldFilterValues","hasIntervalTextFieldFilterValuesTmp","isColumnFiltrableByInterval","intervalFrom","_getIntervalTextFieldFilterValue","FilterInterval","FROM","intervalTo","TO","addCheckboxFilter","newFilterItem","interval","intervalTmp","valuesArrayContainsValue","removeCheckboxFilter","remFilter","index","indexOfValueInValuesArray","chs","i","isObjFiltrableByInterval","obj","getIntervalTextFieldFilterValues","_getIntervalTextFieldFilterValues","getIntervalTextFieldFilterValuesTmp","getIntervalTextFieldFilterValue","getIntervalTextFieldFilterValueTmp","setTextFieldFilterValue","newFilter","_setTextFieldFilterValue","setIntervalTextFieldFilterValue","_setIntervalTextFieldFilterValue","push","saveTextualFilters","resetTextualFilters","getFilterValueForTooltip","txtFilter","chkFilters","separator","txtFiterRis","getValueForDisplay","decimals","ris","forEach","f","getValueForDisplay2","removeFilter","KupTreeProps","treeMainColumnName","KupTreeExpansionMode","dom","document","documentElement","kupObjects","ketchup","objects","KupObjects","kupData","data","KupData","FiltersRows","isFilterCompliantForCell","cellValue","filterValue","isFilterCompliantForSimpleValue","isFilterCompliantForCellObj","k","isRowCompliant","r","globalFilter","isUsingGlobalFilter","columns","columnFilters","areCellsCompliant","cells","retValue","_filterIsNegative","filterIsNegative","visible","cell","isFilterCompliantForValue","displayedValue","getCellValueForDisplay","hasFilters","keys","Object","key","getColumnByName","b1","b2","isNumber","isDate","isTime","isTimestamp","filterValues","fv","toLowerCase","col","title","filterRows","rows","filteredRows","id","indexOf","getColumnValues","comp","globalFilterValue","Array","valuesForFilter","element","v","tmpFilters","assign","tmpRows","getRows","getVisibleColumns","getUnivocalValue","sortRows","sort","group","sortGroupRows","isMultiSort","slice","r1","r2","compare","compareRows","groupColumn","sortObject","getSortOnColumn","sortMode","SortMode","A","cell1","cell2","compareCell","row","children","sortObj","filtersRows","groupRows","groups","totals","columnLabels","validGroups","distinctObj","columnName","cellValueForDisplay","groupRow","currentGroupRow","label","parent","columnLabel","expanded","tempCell","tempCellValueForDisplay","tempCellValue","tempGroupingRow","j","childGroup","groupLabel","adjustGroupId","updateGroupTotal","adjustGroupsDistinct","adjustGroupsAverageOrFormula","TotalMode","AVERAGE","MATH","addedRow","_isNumber","totalMode","COUNT","currentTotalValue","currentParentCount","DISTINCT","math","numberify","numberifySafe","distinctGroup","distinctList","distinctParent","distinctGroupParent","distinctParentList","SUM","currentParentSum","MIN","currentMinValue","Math","min","currentParentMin","dates","isValidFormattedStringDate","moments","toDayjs","format","KupDatesFormats","ISO_DATE","MAX","currentMaxValue","max","currentParentMax","console","warn","toAdjustKeys","adjustGroupDistinct","type","adjustGroupAverageOrFormula","child","Set","size","numberOfLeaf","formula","substring","formulas","custom","normalizeRows","normalizedrows","t","p","undefined","calcTotals","isEmptyJsObject","footerRow","dateColumns","onlyCount","every","array","currentFooterValue","toDate","sum","toFixed","groupID","parentRow","paginateRows","currentPage","rowsPerPage","areGrouped","start","end","Number","pagRows","_paginateRows","ci","added","originalRow","cloneRow","actions","cloneRowGroup","clonedFrom","readOnly","cssClass","cloneRows","cloned","getDiffData","originalData","modifiedData","includesAlsoEmptyRows","diffDataTable","modifiedRow","newRow","cellKey","modifiedCell","find","originalCell","decorateDataTable","_a","options","isEditable","shapeAdapters","FCellShapes","AUTOCOMPLETE","CMBandACPAdapter","COMBOBOX","RADIO","RADAdapter","CHECKBOX","CHKAdapter","CHIP","CHIAdapter","adapterFunction","shape","debug","logMessage","JSON","stringify","KupDebugCategory","WARNING"],"sources":["src/utils/filters/filters-column-menu.ts","src/components/kup-tree/kup-tree-declarations.ts","src/utils/filters/filters-rows.ts","src/components/kup-data-table/kup-data-table-helper.ts"],"sourcesContent":["import { KupDataColumn } from '../../managers/kup-data/kup-data-declarations';\nimport { getValueForDisplay, getValueForDisplay2 } from '../cell-utils';\nimport { Filters } from './filters';\nimport {\n Filter,\n FilterInterval,\n GenericFilter,\n ValueDisplayedValue,\n} from './filters-declarations';\n/**\n * Filtering algorithms related to column menus.\n * @module FiltersColumnMenu\n * @todo Should contain EVERY column-specific filtering method.\n */\nexport class FiltersColumnMenu extends Filters {\n /**\n * Gets the value of the filter prop.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n * @returns {string} Value of the filter.\n */\n getTextFilterValue(filters: GenericFilter = {}, column: string): string {\n return this._getTextFilterValue(filters, column, false);\n }\n /**\n * Gets the value of the filter prop, set temporarly.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n * @returns {string} Value of the filter.\n */\n getTextFilterValueTmp(filters: GenericFilter = {}, column: string): string {\n return this._getTextFilterValue(filters, column, true);\n }\n\n private _getTextFilterValue(\n filters: GenericFilter = {},\n column: string,\n tmp: boolean\n ): string {\n let value: string = '';\n\n if (filters == null) {\n return value;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n return value;\n }\n value = tmp ? filter.textFieldTmp : filter.textField;\n return value;\n }\n\n /**\n * Returns whether a column has filters or not.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {KupDataColumn} column - Name of the column.\n * @returns {boolean} True when a given column has filters.\n */\n hasFiltersForColumn(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): boolean {\n return this._hasFiltersForColumn(filters, column, false);\n }\n /**\n * Returns whether a column has filters or not.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {KupDataColumn} column - Name of the column.\n * @returns {boolean} True when a given column has filters.\n */\n hasFiltersForColumnTmp(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): boolean {\n return this._hasFiltersForColumn(filters, column, true);\n }\n /**\n * Returns whether a column has filters or not.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {KupDataColumn} column - Name of the column.\n * @returns {boolean} True when a given column has filters.\n */\n private _hasFiltersForColumn(\n filters: GenericFilter = {},\n column: KupDataColumn,\n tmp: boolean\n ): boolean {\n if (!column) {\n return false;\n }\n let textfield: string = this._getTextFilterValue(\n filters,\n column.name,\n tmp\n );\n if (textfield != null && textfield.trim() != '') {\n return true;\n }\n if (this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {\n return true;\n }\n let checkboxes = this.getCheckBoxFilterValues(filters, column.name);\n if (checkboxes == null || checkboxes.length < 1) {\n return false;\n }\n return true;\n }\n /**\n * Returns the values of column menu's checkboxes.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n * @returns {Array<string>} Array of checkboxes values.\n */\n getCheckBoxFilterValues(\n filters: GenericFilter = {},\n column: string\n ): ValueDisplayedValue[] {\n let values = [];\n if (filters == null) {\n return values;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n return values;\n }\n if (filter.checkBoxes == null) {\n return values;\n }\n values = filter.checkBoxes;\n return values;\n }\n /**\n * Returns whether a text field should be a date or time picker.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {KupDataColumn} column - Name of the column.\n * @returns {boolean} True when the text field is a date or time picker.\n */\n hasIntervalTextFieldFilterValues(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): boolean {\n return this._hasIntervalTextFieldFilterValues(filters, column, false);\n }\n\n hasIntervalTextFieldFilterValuesTmp(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): boolean {\n return this._hasIntervalTextFieldFilterValues(filters, column, true);\n }\n\n private _hasIntervalTextFieldFilterValues(\n filters: GenericFilter = {},\n column: KupDataColumn,\n tmp: boolean\n ): boolean {\n if (column == null) {\n return false;\n }\n if (!this.isColumnFiltrableByInterval(column)) {\n return false;\n }\n let intervalFrom = this._getIntervalTextFieldFilterValue(\n filters,\n column.name,\n FilterInterval.FROM,\n tmp\n );\n if (intervalFrom != null && intervalFrom.trim() != '') {\n return true;\n }\n let intervalTo = this._getIntervalTextFieldFilterValue(\n filters,\n column.name,\n FilterInterval.TO,\n tmp\n );\n if (intervalTo != null && intervalTo.trim() != '') {\n return true;\n }\n return false;\n }\n /**\n * Triggers when a new filter checkbox becomes checked.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n * @param {ValueDisplayedValue} newFilter - Added filter.\n */\n addCheckboxFilter(\n filters: GenericFilter = {},\n column: string,\n newFilterItem: ValueDisplayedValue\n ): void {\n if (filters == null) {\n return;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n filter = {\n textField: '',\n textFieldTmp: '',\n checkBoxes: [],\n interval: null,\n intervalTmp: null,\n };\n filters[column] = filter;\n }\n if (filter.checkBoxes == null) {\n filter.checkBoxes = [];\n }\n if (newFilterItem == null || newFilterItem.value == null) {\n filter.checkBoxes = [];\n } else {\n if (\n !Filters.valuesArrayContainsValue(\n filter.checkBoxes,\n newFilterItem.value\n )\n ) {\n filter.checkBoxes[filter.checkBoxes.length] = newFilterItem;\n }\n }\n }\n /**\n * Triggers when a filter checkbox becomes unchecked.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n * @param {string} remFilter - Removed filter.\n */\n removeCheckboxFilter(\n filters: GenericFilter = {},\n column: string,\n remFilter: string\n ) {\n if (filters == null || remFilter == null) {\n return;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n return;\n }\n if (filter.checkBoxes == null) {\n filter.checkBoxes = [];\n }\n let index = Filters.indexOfValueInValuesArray(\n filter.checkBoxes,\n remFilter\n );\n if (index >= 0) {\n let chs = [];\n for (let i = 0; i < filter.checkBoxes.length; i++) {\n if (i != index) {\n chs[chs.length] = filter.checkBoxes[i];\n }\n }\n filter.checkBoxes = [...chs];\n }\n }\n\n isColumnFiltrableByInterval(column: KupDataColumn): boolean {\n return this.isObjFiltrableByInterval(column.obj);\n }\n\n getIntervalTextFieldFilterValues(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): Array<string> {\n return this._getIntervalTextFieldFilterValues(filters, column, false);\n }\n getIntervalTextFieldFilterValuesTmp(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): Array<string> {\n return this._getIntervalTextFieldFilterValues(filters, column, true);\n }\n\n private _getIntervalTextFieldFilterValues(\n filters: GenericFilter = {},\n column: KupDataColumn,\n tmp: boolean\n ): Array<string> {\n if (!this._hasIntervalTextFieldFilterValues(filters, column, tmp)) {\n return ['', ''];\n }\n\n let values = [\n this._getIntervalTextFieldFilterValue(\n filters,\n column.name,\n FilterInterval.FROM,\n tmp\n ),\n this._getIntervalTextFieldFilterValue(\n filters,\n column.name,\n FilterInterval.TO,\n tmp\n ),\n ];\n return values;\n }\n\n getIntervalTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n index: FilterInterval\n ): string {\n return this._getIntervalTextFieldFilterValue(\n filters,\n column,\n index,\n false\n );\n }\n getIntervalTextFieldFilterValueTmp(\n filters: GenericFilter = {},\n column: string,\n index: FilterInterval\n ): string {\n return this._getIntervalTextFieldFilterValue(\n filters,\n column,\n index,\n true\n );\n }\n private _getIntervalTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n index: FilterInterval,\n tmp: boolean\n ): string {\n let value = '';\n\n if (filters == null) {\n return value;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n return value;\n }\n if (tmp && filter.intervalTmp == null) {\n return value;\n }\n if (!tmp && filter.interval == null) {\n return value;\n }\n value = tmp ? filter.intervalTmp[index] : filter.interval[index];\n return value;\n }\n\n setTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n newFilter: string\n ) {\n this._setTextFieldFilterValue(filters, column, newFilter, true);\n }\n private _setTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n newFilter: string,\n tmp: boolean\n ) {\n if (filters == null) {\n return;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n filter = {\n textField: '',\n textFieldTmp: '',\n checkBoxes: [],\n interval: null,\n intervalTmp: null,\n };\n filters[column] = filter;\n }\n if (tmp) {\n filter.textFieldTmp =\n newFilter != null ? newFilter.trim() : newFilter;\n } else {\n filter.textField = newFilter != null ? newFilter.trim() : newFilter;\n }\n }\n\n setIntervalTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n newFilter: string,\n index: FilterInterval\n ) {\n this._setIntervalTextFieldFilterValue(\n filters,\n column,\n newFilter,\n index,\n true\n );\n }\n\n private _setIntervalTextFieldFilterValue(\n filters: GenericFilter = {},\n column: string,\n newFilter: string,\n index: FilterInterval,\n tmp: boolean\n ) {\n if (filters == null) {\n return;\n }\n let filter: Filter = filters[column];\n if (filter == null) {\n filter = {\n textField: '',\n textFieldTmp: '',\n checkBoxes: [],\n interval: null,\n intervalTmp: null,\n };\n filters[column] = filter;\n }\n if (filter.interval == null) {\n filter.interval = [];\n filter.interval.push('', '');\n }\n if (filter.intervalTmp == null) {\n filter.intervalTmp = [];\n filter.intervalTmp.push('', '');\n }\n if (tmp) {\n filter.intervalTmp[index] =\n newFilter != null ? newFilter.trim() : newFilter;\n } else {\n filter.interval[index] =\n newFilter != null ? newFilter.trim() : newFilter;\n }\n }\n\n saveTextualFilters(filters: GenericFilter = {}, column: string) {\n this._setTextFieldFilterValue(\n filters,\n column,\n this.getTextFilterValueTmp(filters, column),\n false\n );\n this._setIntervalTextFieldFilterValue(\n filters,\n column,\n this.getIntervalTextFieldFilterValueTmp(\n filters,\n column,\n FilterInterval.FROM\n ),\n FilterInterval.FROM,\n false\n );\n this._setIntervalTextFieldFilterValue(\n filters,\n column,\n this.getIntervalTextFieldFilterValueTmp(\n filters,\n column,\n FilterInterval.TO\n ),\n FilterInterval.TO,\n false\n );\n }\n\n resetTextualFilters(filters: GenericFilter = {}, column: string) {\n this._setTextFieldFilterValue(\n filters,\n column,\n this.getTextFilterValue(filters, column),\n true\n );\n this._setIntervalTextFieldFilterValue(\n filters,\n column,\n this.getIntervalTextFieldFilterValue(\n filters,\n column,\n FilterInterval.FROM\n ),\n FilterInterval.FROM,\n true\n );\n this._setIntervalTextFieldFilterValue(\n filters,\n column,\n this.getIntervalTextFieldFilterValue(\n filters,\n column,\n FilterInterval.TO\n ),\n FilterInterval.TO,\n true\n );\n }\n\n getFilterValueForTooltip(\n filters: GenericFilter = {},\n column: KupDataColumn\n ): string {\n let txtFilter = this.getTextFilterValue(filters, column.name);\n let interval = this.getIntervalTextFieldFilterValues(filters, column);\n let chkFilters = this.getCheckBoxFilterValues(filters, column.name);\n\n let separator = '';\n\n let txtFiterRis = getValueForDisplay(\n txtFilter,\n column.obj,\n column.decimals\n );\n if (txtFilter != '') {\n separator = ' AND ';\n }\n if (interval[FilterInterval.FROM] != '') {\n txtFiterRis +=\n separator +\n '(>= ' +\n getValueForDisplay(\n interval[FilterInterval.FROM],\n column.obj,\n column.decimals\n ) +\n ')';\n separator = ' AND ';\n }\n if (interval[FilterInterval.TO] != '') {\n txtFiterRis +=\n separator +\n '(<= ' +\n getValueForDisplay(\n interval[FilterInterval.TO],\n column.obj,\n column.decimals\n ) +\n ')';\n separator = ' AND ';\n }\n\n separator = '';\n let ris = '';\n chkFilters.forEach((f) => {\n ris += separator + getValueForDisplay2(f, column);\n separator = ' OR ';\n });\n\n if (ris != '') {\n ris = '(' + ris + ')';\n if (txtFiterRis != '') {\n ris = ' AND ' + ris;\n }\n }\n ris = txtFiterRis + ris;\n return ris;\n }\n\n /**\n * Triggers when a filter must be removed, for column.\n * @param {GenericFilter} filters - Filters of the component.\n * @param {string} column - Name of the column.\n */\n removeFilter(filters: GenericFilter = {}, column: string) {\n filters[column] = {\n textField: '',\n textFieldTmp: '',\n checkBoxes: [],\n interval: null,\n intervalTmp: null,\n };\n }\n}\n","import {\n KupDataCell,\n KupDataColumn,\n KupDataNode,\n KupDataRow,\n} from '../../managers/kup-data/kup-data-declarations';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport { GenericMap, KupEventPayload } from '../../types/GenericTypes';\nimport { KupCardEventPayload } from '../kup-card/kup-card-declarations';\n/**\n * Props of the kup-tree component.\n * Used to export every prop in an object.\n */\nexport enum KupTreeProps {\n asAccordion = 'When enabled, the first level of depth will give an accordion look to nodes.',\n columns = 'The columns of the tree when tree visualization is active.',\n customStyle = 'Custom style of the component.',\n data = 'The json data used to populate the tree view: the basic, always visible tree nodes.',\n density = \"The density of the rows, defaults at 'medium' and can also be set to 'dense' or 'wide'.\",\n dynamicExpansionCallback = 'Function that gets invoked when a new set of nodes must be loaded as children of a node. When useDynamicExpansion is set, the tree component will have two different behaviors depending on the value of this prop. If this prop is set to null, no callback to download data is available: the component will emit an event requiring the parent to load the children of the given node. If this prop is set to have a callback, then the component will automatically make requests to load children of a given node. After the load has been completed, a different event will be fired to alert the parent of the change.',\n enableExtraColumns = 'Enables adding extra columns.',\n expanded = 'Flag: the nodes of the whole tree must be already expanded upon loading. Disabled nodes do NOT get expanded.',\n expansionMode = \"Behavior of nodes' expansion: it can be chosen between expanding a node by clicking on the dropdown icon, or by clicking on the whole node.\",\n filters = 'List of filters set by the user.',\n globalFilter = 'When set to true it activates the global filter.',\n globalFilterValue = 'The value of the global filter.',\n globalFilterMode = 'The mode of the global filter.',\n removableColumns = 'Sets the possibility to remove the selected column.',\n preventXScroll = 'Experimental feature: when active, the tree will try to prevent horizontal overflowing elements by setting a width on the content of the table cells. It works only on cells of the main column.',\n ripple = \"When enabled displays Material's ripple effect on nodes (only when no columns are displayed).\",\n scrollOnHover = 'Activates the scroll on hover function.',\n showColumns = 'Shows the tree data as a table.',\n showFilters = 'When set to true enables the column filters.',\n showFooter = 'When set to true shows the footer.',\n showHeader = 'Flag: shows the header of the tree when the tree is displayed as a table.',\n showIcons = 'Shows the icons of the nodes.',\n stateId = '',\n store = '',\n totals = 'Defines the current totals options.',\n useDynamicExpansion = 'When the component must use the dynamic expansion feature to open its nodes, it means that not all the nodes of the tree have been passed inside the data property. Therefore, when expanding a node, the tree must emit an event (or run a given callback) and wait for the child nodes to be downloaded from the server.',\n}\n\nexport interface KupTreeNode extends KupDataNode {\n expandable?: boolean;\n iconColor?: string;\n style?: GenericMap;\n visible?: boolean;\n}\n\nexport type TreeNodePath = number[];\n\n/**\n * The name of the constant used by the tree component to identify the main tree in column menu\n * @constant\n */\nexport const treeMainColumnName = 'TREE_COLUMN';\n\n/**\n * Contains all the data of an event.\n */\nexport interface KupTreeEventHandlerDetails {\n area: string;\n cell: KupDataCell;\n column: KupDataColumn;\n filterRemove: HTMLSpanElement;\n originalEvent: PointerEvent;\n row: KupDataRow;\n td: HTMLElement;\n th: HTMLElement;\n tr: HTMLElement;\n}\n\nexport enum KupTreeExpansionMode {\n DROPDOWN = 'dropdown',\n NODE = 'node',\n}\n\nexport interface KupTreeNodeCollapseEventPayload extends KupEventPayload {\n treeNodePath: TreeNodePath;\n treeNode: KupDataNode;\n}\n\nexport interface KupTreeNodeExpandEventPayload\n extends KupTreeNodeCollapseEventPayload {\n usesDynamicExpansion?: boolean;\n dynamicExpansionRequireChildren?: boolean;\n}\n\nexport interface KupTreeNodeSelectedEventPayload\n extends KupTreeNodeCollapseEventPayload {\n columnName: string;\n}\n\nexport interface KupTreeNodeButtonClickEventPayload\n extends KupTreeNodeCollapseEventPayload {\n column: KupDataColumn;\n columnName: string;\n}\n\nexport interface KupTreeContextMenuEventPayload extends KupEventPayload {\n details: KupTreeEventHandlerDetails;\n}\n\nexport interface KupTreeColumnMenuEventPayload extends KupEventPayload {\n card: HTMLKupCardElement;\n event: CustomEvent<KupCardEventPayload | KupEventPayload>;\n open: boolean;\n}\n\nexport interface KupTreeDynamicMassExpansionEventPayload\n extends KupEventPayload {\n treeNodePath?: TreeNodePath;\n treeNode?: KupDataNode;\n expandAll?: boolean;\n}\n\nexport interface KupTreeColumnRemoveEventPayload extends KupEventPayload {\n column: KupDataColumn;\n}\n","import type {\n GenericFilter,\n ValueDisplayedValue,\n} from './filters-declarations';\nimport type { KupDataTable } from '../../components/kup-data-table/kup-data-table';\nimport type { KupTree } from '../../components/kup-tree/kup-tree';\nimport {\n getCellValueForDisplay,\n getColumnByName,\n getValueForDisplay,\n} from '../cell-utils';\nimport { Filters } from './filters';\nimport { FiltersColumnMenu } from './filters-column-menu';\nimport { treeMainColumnName } from '../../components/kup-tree/kup-tree-declarations';\nimport { KupObjects } from '../../managers/kup-objects/kup-objects';\nimport { KupDom } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRow,\n KupDataRowCells,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupData } from '../../managers/kup-data/kup-data';\n\nconst dom: KupDom = document.documentElement as KupDom;\nconst kupObjects: KupObjects = dom.ketchup\n ? dom.ketchup.objects\n : new KupObjects();\nconst kupData: KupData = dom.ketchup ? dom.ketchup.data : new KupData();\n\n/**\n * Filtering algorithms related to data-table rows.\n * @module FiltersRows\n * @todo Should contain EVERY row-specific filtering method.\n */\nexport class FiltersRows extends Filters {\n isFilterCompliantForCell(\n cellValue: KupDataCell,\n filterValue: string,\n interval: string[]\n ) {\n if (!cellValue) {\n return false;\n }\n\n return this.isFilterCompliantForSimpleValue(\n cellValue.value,\n cellValue.obj,\n filterValue,\n interval\n );\n }\n\n isFilterCompliantForCellObj(\n cellValue: KupDataCell,\n filterValue: string,\n interval: string[]\n ) {\n if (!cellValue) {\n return false;\n }\n if (!cellValue.obj) {\n return false;\n }\n return this.isFilterCompliantForSimpleValue(\n cellValue.obj.k,\n cellValue.obj,\n filterValue,\n interval\n );\n }\n\n isRowCompliant(\n r: KupDataRow,\n filters: GenericFilter = {},\n globalFilter: string = '',\n isUsingGlobalFilter: boolean = false,\n columns: KupDataColumn[] = [],\n columnFilters?: FiltersColumnMenu\n ): boolean {\n return this.areCellsCompliant(\n r.cells,\n filters,\n globalFilter,\n isUsingGlobalFilter,\n columns,\n columnFilters\n );\n }\n\n areCellsCompliant(\n cells: KupDataRowCells,\n filters: GenericFilter = {},\n globalFilter: string = '',\n isUsingGlobalFilter: boolean = false,\n columns: KupDataColumn[] = [],\n columnFilters?: FiltersColumnMenu\n ): boolean {\n if (isUsingGlobalFilter) {\n let retValue = true;\n // There are no columns -> display element\n if (columns && columns != null && columns.length > 0) {\n retValue = false;\n let _filterIsNegative = this.filterIsNegative(globalFilter);\n\n // Search among all visible columns for the global filter\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].visible == false) {\n continue;\n }\n const cell = cells[columns[i].name];\n if (cell == null) {\n continue;\n }\n retValue = this.isFilterCompliantForValue(\n cell.value,\n globalFilter\n );\n let displayedValue = getCellValueForDisplay(\n columns[i],\n cell\n );\n if (displayedValue != cell.value) {\n retValue =\n retValue ||\n this.isFilterCompliantForValue(\n displayedValue,\n globalFilter\n );\n }\n if (retValue == true && !_filterIsNegative) {\n break;\n }\n if (retValue == false && _filterIsNegative) {\n break;\n }\n }\n }\n if (!retValue) {\n return false;\n }\n }\n\n if (columnFilters == null) {\n columnFilters = new FiltersColumnMenu();\n }\n // There are no filters to check -> the element is valid\n if (!this.hasFilters(filters, columns, columnFilters)) {\n return true;\n }\n\n let keys = Object.keys(filters);\n // Filters\n for (let i = 0; i < keys.length; i++) {\n let key: string = keys[i];\n\n const cell = cells[key];\n if (!cell) {\n return false;\n }\n\n let filterValue = columnFilters.getTextFilterValue(filters, key);\n let interval = columnFilters.getIntervalTextFieldFilterValues(\n filters,\n getColumnByName(columns, key)\n );\n\n const _filterIsNegative: boolean =\n this.filterIsNegative(filterValue);\n let b1 = this.isFilterCompliantForCell(cell, filterValue, interval);\n let b2 = _filterIsNegative;\n if (\n !kupObjects.isNumber(cell.obj) &&\n !kupObjects.isDate(cell.obj) &&\n !kupObjects.isTime(cell.obj) &&\n !kupObjects.isTimestamp(cell.obj)\n ) {\n b2 = this.isFilterCompliantForCellObj(\n cell,\n filterValue,\n interval\n );\n }\n\n if (_filterIsNegative) {\n if (!b1 || !b2) {\n return false;\n }\n } else {\n if (!b1 && !b2) {\n return false;\n }\n }\n\n let filterValues = columnFilters.getCheckBoxFilterValues(\n filters,\n key\n );\n if (filterValues.length == 0) {\n continue;\n }\n let retValue = false;\n for (let i = 0; i < filterValues.length; i++) {\n let fv = filterValues[i];\n if (fv == null || fv.value == null) {\n continue;\n }\n if (cell.value != null) {\n if (\n cell.value.toLowerCase().trim() ==\n fv.value.toLowerCase().trim()\n ) {\n retValue = true;\n break;\n }\n }\n if (cell.obj != null) {\n if (\n cell.obj.k.toLowerCase().trim() ==\n fv.value.toLowerCase().trim()\n ) {\n retValue = true;\n break;\n }\n }\n }\n if (!retValue) {\n return false;\n }\n }\n return true;\n }\n\n hasFilters(\n filters: GenericFilter = {},\n columns: KupDataColumn[],\n columnFilters?: FiltersColumnMenu\n ) {\n if (filters == null) {\n return false;\n }\n let keys = Object.keys(filters);\n if (keys == null || keys.length < 1) {\n return false;\n }\n if (columnFilters == null) {\n columnFilters = new FiltersColumnMenu();\n }\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let col: KupDataColumn = null;\n if (key === treeMainColumnName) {\n col = {\n name: treeMainColumnName,\n title: '',\n };\n } else {\n col = getColumnByName(columns, key);\n }\n if (columnFilters.hasFiltersForColumn(filters, col)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Filters the rows data of a data-table component according to the parameters\n *\n * @param rows - The data of the rows to filter.\n * @param filters - The the filters for each column.\n * @param globalFilter - A global filter applied to all columns.\n * @param columns - The colmns on which the filter will take effect.\n * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for\n * single filters and global filter, all controls on a single column are done in a single cycle.\n */\n filterRows(\n rows: Array<KupDataRow> = [],\n filters: GenericFilter = {},\n globalFilter: string = '',\n columns: KupDataColumn[] = [],\n columnFilters?: FiltersColumnMenu\n ): Array<KupDataRow> {\n if (!rows || rows == null) {\n return [];\n }\n\n // There are rows to filter\n let filteredRows: Array<KupDataRow> = [];\n const isUsingGlobalFilter: boolean = !!(globalFilter && columns);\n\n if (\n this.hasFilters(filters, columns, columnFilters) ||\n isUsingGlobalFilter\n ) {\n for (let i = 0; i < rows.length; i++) {\n let r: KupDataRow = rows[i];\n if (\n (r.id && r.id.indexOf('insert_') > -1) ||\n this.isRowCompliant(\n r,\n filters,\n globalFilter,\n isUsingGlobalFilter,\n columns,\n columnFilters\n )\n ) {\n filteredRows[filteredRows.length] = r;\n }\n }\n } else {\n filteredRows = [...rows];\n }\n\n return filteredRows;\n }\n\n getColumnValues(\n comp: KupDataTable | KupTree,\n column: KupDataColumn,\n globalFilterValue: string,\n columnFilters?: FiltersColumnMenu\n ): ValueDisplayedValue[] {\n let values: ValueDisplayedValue[] = new Array();\n if (columnFilters == null) {\n columnFilters = new FiltersColumnMenu();\n }\n let value = columnFilters.getTextFilterValueTmp(\n comp.filters,\n column.name\n );\n let interval = columnFilters.getIntervalTextFieldFilterValuesTmp(\n comp.filters,\n column\n );\n let checkboxes = columnFilters.getCheckBoxFilterValues(\n comp.filters,\n column.name\n );\n\n if (\n column.valuesForFilter != null &&\n column.valuesForFilter.length > 0\n ) {\n column.valuesForFilter.forEach((element) => {\n let v = element;\n if (\n Filters.valuesArrayContainsValue(checkboxes, v) ||\n value == '' ||\n columnFilters.isFilterCompliantForSimpleValue(\n v,\n column.obj,\n value,\n interval\n )\n ) {\n values.push({\n value: v,\n displayedValue: getValueForDisplay(\n v,\n column.obj,\n column.decimals\n ),\n });\n }\n });\n return values;\n }\n\n /** è necessario estrarre i valori della colonna di tutte le righe\n * filtrate SENZA il filtro della colonna stessa corrente */\n let tmpFilters: GenericFilter = { ...comp.filters };\n\n tmpFilters[column.name] = {\n textField: value,\n textFieldTmp: value,\n checkBoxes: [],\n interval: interval,\n intervalTmp: interval,\n };\n\n let tmpRows = this.filterRows(\n comp.getRows(),\n tmpFilters,\n globalFilterValue,\n comp.getVisibleColumns(),\n columnFilters\n );\n\n for (let i = 0; i < checkboxes.length; i++) {\n values.push(checkboxes[i]);\n }\n\n return kupData.cell.getUnivocalValue({ rows: tmpRows }, column, true);\n }\n}\n","import {\n SortObject,\n SortMode,\n GroupObject,\n TotalMode,\n TotalsMap,\n KupDataTableRow,\n KupDataTableRowGroup,\n KupDataTableCell,\n KupDataTableDataset,\n} from './kup-data-table-declarations';\nimport { GenericFilter } from '../../utils/filters/filters-declarations';\nimport { FiltersColumnMenu } from '../../utils/filters/filters-column-menu';\nimport {\n getCellValueForDisplay,\n getColumnByName,\n compareCell,\n CMBandACPAdapter,\n RADAdapter,\n CHKAdapter,\n CHIAdapter,\n} from '../../utils/cell-utils';\nimport { FiltersRows } from '../../utils/filters/filters-rows';\nimport { KupDom } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n KupDataColumn,\n KupDataDataset,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupDatesFormats } from '../../managers/kup-dates/kup-dates-declarations';\nimport { FCellShapes } from '../../f-components/f-cell/f-cell-declarations';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\nexport function sortRows(\n rows: Array<KupDataTableRow> = [],\n sort: Array<SortObject> = []\n): Array<KupDataTableRow> {\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // check if row is group\n if (rows[0].group) {\n return sortGroupRows(rows, sort);\n }\n\n // sorting rows\n if (!sort || sort.length === 0) {\n // no sort -> return rows as they are\n return rows;\n }\n\n // check multiple sort\n const isMultiSort = sort.length > 1;\n\n // sorting rows\n return rows.slice(0).sort((r1: KupDataTableRow, r2: KupDataTableRow) => {\n if (isMultiSort) {\n for (let i = 0; i < sort.length; i++) {\n const compare = compareRows(r1, r2, sort[i]);\n\n if (compare !== 0) {\n // not same row\n return compare;\n }\n }\n\n // same row\n return 0;\n } else {\n return compareRows(r1, r2, sort[0]);\n }\n });\n}\n\nfunction sortGroupRows(\n rows: Array<KupDataTableRow> = [],\n sort: Array<SortObject> = []\n): Array<KupDataTableRow> {\n if (!rows || rows.length === 0) {\n return [];\n }\n\n // getting columm group\n const groupColumn = rows[0].group.column;\n\n // check if column is in sort\n let sortObject = getSortOnColumn(groupColumn, sort);\n\n if (!sortObject) {\n sortObject = {\n column: groupColumn,\n sortMode: SortMode.A,\n };\n }\n\n // sorting rows\n rows.sort((r1, r2) => {\n // creating fake cells\n const cell1: KupDataTableCell = {\n obj: r1.group.obj,\n value: r1.group.id,\n };\n\n const cell2: KupDataTableCell = {\n obj: r2.group.obj,\n value: r2.group.id,\n };\n\n return compareCell(cell1, cell2, sortObject.sortMode);\n });\n\n // sorting children\n rows.forEach((row) => {\n row.group.children = sortRows(row.group.children, sort);\n });\n\n return rows;\n}\n\nfunction getSortOnColumn(\n column: string = '',\n sort: Array<SortObject> = []\n): SortObject {\n if (!column || !sort || sort.length === 0) {\n return null;\n }\n\n for (let sortObject of sort) {\n if (sortObject.column === column) {\n return sortObject;\n }\n }\n\n return null;\n}\n\nfunction compareRows(\n r1: KupDataTableRow,\n r2: KupDataTableRow,\n sortObj: SortObject\n): number {\n const cell1: KupDataTableCell = r1.cells[sortObj.column];\n const cell2: KupDataTableCell = r2.cells[sortObj.column];\n\n if (!cell1 && !cell2) {\n return 0;\n }\n\n if (!cell1) {\n return 1;\n }\n\n if (!cell2) {\n return -1;\n }\n\n return compareCell(cell1, cell2, sortObj.sortMode);\n}\n\n//-------- FILTER FUNCTIONS --------\n/**\n * Filters the rows data of a data-table component according to the parameters\n *\n * @param rows - The data of the rows to filter.\n * @param filters - The the filters for each column.\n * @param globalFilter - A global filter applied to all columns.\n * @param columns - The colmns on which the filter will take effect.\n * @todo This function can be improved in its speed by a refactor in which from two different cycles of execution for\n * single filters and global filter, all controls on a single column are done in a single cycle.\n */\n\nexport function filterRows(\n rows: Array<KupDataTableRow> = [],\n filters: GenericFilter = {},\n globalFilter: string = '',\n columns: KupDataColumn[] = [],\n columnFilters?: FiltersColumnMenu,\n filtersRows?: FiltersRows\n): Array<KupDataTableRow> {\n if (filtersRows == null) {\n filtersRows = new FiltersRows();\n }\n\n return filtersRows.filterRows(\n rows,\n filters,\n globalFilter,\n columns,\n columnFilters\n );\n}\n\nexport function groupRows(\n columns: KupDataColumn[] = [],\n rows: KupDataTableRow[] = [],\n groups: GroupObject[] = [],\n totals: TotalsMap = {}\n): Array<KupDataTableRow> {\n if (!rows) {\n return [];\n }\n\n if (!groups || groups.length === 0 || !columns || columns.length === 0) {\n return rows;\n }\n\n // Keeps label of the valid columns\n const columnLabels: { [index: string]: string } = {};\n\n // remove invalid groups and store column labels\n const validGroups = groups.filter(({ column }) => {\n for (let { name, title } of columns) {\n if (name === column) {\n // Store label of the columns\n columnLabels[name] = title;\n return true;\n }\n }\n return false;\n });\n\n if (validGroups.length === 0) {\n // no valid groups\n return rows;\n }\n\n // creating root\n const groupRows: Array<KupDataTableRow> = [];\n\n // obj used to calculate the group distinct value\n let distinctObj = {};\n\n rows.forEach((row: KupDataTableRow) => {\n // getting column name from first group\n const columnName = validGroups[0].column;\n // getting row value\n const cell = row.cells[columnName];\n\n if (cell) {\n const column = getColumnByName(columns, columnName);\n const cellValueForDisplay = getCellValueForDisplay(column, cell);\n const cellValue = cell.value;\n let groupRow: KupDataTableRow = null;\n // check in already in groupedRow\n for (let currentGroupRow of groupRows) {\n if (currentGroupRow.group.label === cellValueForDisplay) {\n groupRow = currentGroupRow;\n break;\n }\n }\n if (groupRow === null) {\n // create group row\n groupRow = {\n group: {\n id: cellValue,\n parent: null,\n column: columnName,\n columnLabel: columnLabels[columnName],\n expanded: false,\n label: cellValueForDisplay,\n children: [],\n obj: cell.obj,\n totals: {},\n },\n cells: {},\n };\n // add group to list\n groupRows.push(groupRow);\n }\n for (let i = 1; i < validGroups.length; i++) {\n const group = validGroups[i];\n // getting cell value\n const tempCell = row.cells[group.column];\n if (tempCell) {\n const column = getColumnByName(columns, group.column);\n const tempCellValueForDisplay = getCellValueForDisplay(\n column,\n tempCell\n );\n const tempCellValue = tempCell.value;\n // check if group already exists\n let tempGroupingRow: KupDataTableRow = null;\n for (let j = 0; j < groupRow.group.children.length; j++) {\n const childGroup = groupRow.group.children[j];\n const groupLabel = childGroup.group.label;\n\n if (groupLabel === tempCellValueForDisplay) {\n tempGroupingRow = childGroup;\n break;\n }\n }\n if (!tempGroupingRow) {\n tempGroupingRow = {\n cells: {},\n group: {\n id: tempCellValue,\n parent: groupRow,\n column: group.column,\n columnLabel: columnLabels[group.column],\n children: [],\n expanded: false,\n label: tempCellValueForDisplay,\n totals: {},\n obj: tempCell.obj,\n },\n };\n adjustGroupId(tempGroupingRow);\n groupRow.group.children.push(tempGroupingRow);\n }\n groupRow = tempGroupingRow;\n }\n }\n // adding row\n groupRow.group.children.push(row);\n\n updateGroupTotal(groupRow, totals, row, distinctObj);\n }\n });\n\n adjustGroupsDistinct(groupRows, totals, distinctObj);\n adjustGroupsAverageOrFormula(groupRows, TotalMode.AVERAGE, totals);\n adjustGroupsAverageOrFormula(groupRows, TotalMode.MATH, totals);\n\n return groupRows;\n}\n\nfunction updateGroupTotal(\n groupRow: KupDataTableRow,\n totals: TotalsMap,\n addedRow: KupDataTableRow,\n distinctObj: Object\n): void {\n if (!groupRow || !totals) {\n return;\n }\n\n const keys = Object.keys(totals);\n\n if (keys.length === 0) {\n return;\n }\n\n keys.forEach((key) => {\n const cell = addedRow.cells[key];\n\n if (cell) {\n const _isNumber = dom.ketchup.objects.isNumber(cell.obj);\n const totalMode = totals[key];\n\n switch (totalMode) {\n case TotalMode.COUNT:\n let currentTotalValue: number =\n groupRow.group.totals[key] || 0;\n groupRow.group.totals[key] = ++currentTotalValue;\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n let currentParentCount: number =\n parent.group.totals[key] || 0;\n parent.group.totals[key] = ++currentParentCount;\n parent = parent.group.parent;\n }\n break;\n case TotalMode.DISTINCT:\n let cellValue;\n if (_isNumber) {\n cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n } else {\n cellValue = cell.value;\n }\n let distinctGroup = distinctObj[groupRow.group.id];\n if (!distinctGroup) {\n distinctObj[groupRow.group.id] = {};\n distinctObj[groupRow.group.id][key] = [];\n distinctObj[groupRow.group.id][key].push(cellValue);\n } else {\n let distinctList = distinctObj[groupRow.group.id][key];\n if (!distinctList) {\n // first round\n distinctObj[groupRow.group.id][key] = [];\n distinctObj[groupRow.group.id][key].push(cellValue);\n } else {\n // update the list\n distinctList.push(cellValue);\n }\n }\n // updating parents\n let distinctParent = groupRow.group.parent;\n while (distinctParent != null) {\n // get parent value\n let distinctGroupParent =\n distinctObj[distinctParent.group.id];\n if (!distinctGroupParent) {\n distinctObj[distinctParent.group.id] = {};\n distinctObj[distinctParent.group.id][key] = [];\n distinctObj[distinctParent.group.id][key].push(\n cellValue\n );\n } else {\n let distinctParentList =\n distinctObj[distinctParent.group.id][key];\n if (!distinctParentList) {\n // first round\n distinctObj[distinctParent.group.id][key] = [];\n distinctObj[distinctParent.group.id][key].push(\n cellValue\n );\n } else {\n // update the list\n distinctParentList.push(cellValue);\n }\n }\n // continue\n distinctParent = distinctParent.group.parent;\n }\n break;\n case TotalMode.SUM:\n case TotalMode.AVERAGE:\n if (_isNumber && cell.value) {\n const cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n\n const currentTotalValue: number =\n groupRow.group.totals[key] || 0;\n groupRow.group.totals[key] =\n cellValue + currentTotalValue;\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n const currentParentSum = dom.ketchup.math.numberify(\n parent.group.totals[key] || 0\n );\n parent.group.totals[key] =\n cellValue + currentParentSum;\n\n parent = parent.group.parent;\n }\n }\n break;\n // TODO DRY the MIN and MAX functions\n case TotalMode.MIN:\n if (_isNumber && cell.value) {\n const currentMinValue = groupRow.group.totals[key];\n const cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n if (currentMinValue) {\n groupRow.group.totals[key] = Math.min(\n currentMinValue,\n cellValue\n );\n } else {\n // first round\n groupRow.group.totals[key] = cellValue;\n }\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n const currentParentMin = parent.group.totals[key];\n if (currentParentMin) {\n parent.group.totals[key] = Math.min(\n currentParentMin,\n cellValue\n );\n } else {\n // first round\n parent.group.totals[key] = cellValue;\n }\n parent = parent.group.parent;\n }\n } else if (\n cell.value &&\n dom.ketchup.objects.isDate(cell.obj)\n ) {\n if (\n dom.ketchup.dates.isValidFormattedStringDate(\n cell.value\n )\n ) {\n const currentMinValue = groupRow.group.totals[key];\n if (currentMinValue) {\n let moments = [];\n moments.push(cellValue);\n moments.push(\n dom.ketchup.dates.toDayjs(currentMinValue)\n );\n groupRow.group.totals[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.min(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n groupRow.group.totals[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n const currentParentMin =\n parent.group.totals[key];\n if (currentParentMin) {\n let moments = [];\n moments.push(cellValue);\n moments.push(\n dom.ketchup.dates.toDayjs(\n currentParentMin\n )\n );\n parent.group.totals[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.min(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n // first round\n parent.group.totals[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n parent = parent.group.parent;\n }\n }\n }\n break;\n // TODO DRY the MIN and MAX functions\n case TotalMode.MAX:\n if (_isNumber && cell.value) {\n const currentMaxValue = groupRow.group.totals[key];\n const cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n if (currentMaxValue) {\n groupRow.group.totals[key] = Math.max(\n currentMaxValue,\n cellValue\n );\n } else {\n // first round\n groupRow.group.totals[key] = cellValue;\n }\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n const currentParentMax = parent.group.totals[key];\n if (currentParentMax) {\n parent.group.totals[key] = Math.max(\n currentParentMax,\n cellValue\n );\n } else {\n // first round\n parent.group.totals[key] = cellValue;\n }\n parent = parent.group.parent;\n }\n } else if (\n cell.value &&\n dom.ketchup.objects.isDate(cell.obj)\n ) {\n if (\n dom.ketchup.dates.isValidFormattedStringDate(\n cell.value\n )\n ) {\n const currentMaxValue = groupRow.group.totals[key];\n if (currentMaxValue) {\n let moments = [];\n moments.push(cellValue);\n moments.push(\n dom.ketchup.dates.toDayjs(currentMaxValue)\n );\n groupRow.group.totals[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.max(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n groupRow.group.totals[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n // updating parents\n let parent = groupRow.group.parent;\n while (parent != null) {\n const currentParentMax =\n parent.group.totals[key];\n if (currentParentMax) {\n let moments = [];\n moments.push(cellValue);\n moments.push(\n dom.ketchup.dates.toDayjs(\n currentParentMax\n )\n );\n parent.group.totals[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.max(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n // first round\n parent.group.totals[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n parent = parent.group.parent;\n }\n }\n }\n break;\n default: {\n if (totalMode.indexOf(TotalMode.MATH) != 0) {\n console.warn(`invalid total mode: ${totalMode}`);\n }\n break;\n }\n }\n }\n });\n}\n\nfunction adjustGroupsDistinct(\n groupRows: Array<KupDataTableRow>,\n totals: TotalsMap,\n distinctObj: Object\n) {\n if (!groupRows || !totals) {\n return;\n }\n\n const keys = Object.keys(totals);\n\n if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {\n return;\n }\n\n let toAdjustKeys = keys.filter((key) => TotalMode.DISTINCT === totals[key]);\n\n if (toAdjustKeys.length > 0) {\n groupRows\n .filter((groupRow) => groupRow.group.children.length > 0)\n .forEach((groupRow) =>\n adjustGroupDistinct(groupRow, toAdjustKeys, distinctObj)\n );\n }\n}\n\nfunction adjustGroupsAverageOrFormula(\n groupRows: Array<KupDataTableRow>,\n type: TotalMode,\n totals: TotalsMap\n): void {\n if (!groupRows || !totals) {\n return;\n }\n\n const keys = Object.keys(totals);\n\n if (groupRows.length === 0 || !groupRows[0].group || keys.length === 0) {\n return;\n }\n\n let toAdjustKeys;\n\n if (type == TotalMode.AVERAGE) {\n toAdjustKeys = keys.filter((key) => TotalMode.AVERAGE === totals[key]);\n }\n if (type == TotalMode.MATH) {\n toAdjustKeys = keys.filter(\n (key) => totals[key].indexOf(TotalMode.MATH) == 0\n );\n }\n\n if (toAdjustKeys.length > 0) {\n groupRows\n .filter((groupRow) => groupRow.group.children.length > 0)\n .forEach((groupRow) =>\n adjustGroupAverageOrFormula(\n groupRow,\n type,\n toAdjustKeys,\n totals\n )\n );\n }\n}\n\nfunction adjustGroupDistinct(\n groupRow: KupDataTableRow,\n toAdjustKeys: Array<string>,\n distinctObj: Object\n) {\n const children = groupRow.group.children;\n\n if (children.length === 0) {\n return;\n }\n\n if (children[0].group) {\n children.forEach((child) => {\n adjustGroupDistinct(child, toAdjustKeys, distinctObj);\n });\n }\n\n toAdjustKeys.forEach((key) => {\n const distinctList = distinctObj[groupRow.group.id][key];\n groupRow.group.totals[key] = new Set(distinctList).size;\n });\n}\n\n/**\n * @returns number of 'leaf' of group\n */\nfunction adjustGroupAverageOrFormula(\n row: KupDataTableRow,\n type: TotalMode,\n toAdjustKeys: Array<string>,\n totals: TotalsMap\n): number {\n const children = row.group.children;\n\n if (children.length === 0) {\n return 0;\n }\n\n let numberOfLeaf = 0;\n\n // check if child is a grouping row\n if (children[0].group) {\n children.forEach((child) => {\n numberOfLeaf += adjustGroupAverageOrFormula(\n child,\n type,\n toAdjustKeys,\n totals\n );\n });\n } else {\n numberOfLeaf = children.length;\n }\n // adjust average/formulas\n toAdjustKeys.forEach((key) => {\n if (type == TotalMode.AVERAGE) {\n row.group.totals[key] = row.group.totals[key] / numberOfLeaf;\n }\n if (type == TotalMode.MATH) {\n let formula = totals[key].substring(TotalMode.MATH.length);\n row.group.totals[key] = dom.ketchup.math.formulas.custom(\n formula,\n row.group.totals\n );\n }\n });\n\n return numberOfLeaf;\n}\n\nexport function normalizeRows(\n columns: Array<KupDataColumn>,\n rows: Array<KupDataTableRow>\n): Array<KupDataTableRow> {\n if (rows) {\n const normalizedrows = Object.assign(rows);\n rows.forEach((row: KupDataTableRow) => {\n columns.forEach((column) => {\n if (row.cells) {\n const cell = row.cells[column.name];\n if (cell && column.obj && !cell.obj) {\n // cell.obj = Object.assign(column.obj);\n cell.obj = {\n t: column.obj.t,\n p: column.obj.p,\n k: cell.value,\n };\n }\n }\n });\n });\n return normalizedrows;\n } else {\n return undefined;\n }\n}\n\nexport function calcTotals(\n rows: Array<KupDataTableRow> = [],\n totals: TotalsMap = {}\n): { [index: string]: number } {\n if (\n dom.ketchup.objects.isEmptyJsObject(rows) ||\n dom.ketchup.objects.isEmptyJsObject(totals)\n ) {\n return {};\n }\n const keys = Object.keys(totals);\n const footerRow: { [index: string]: any } = {};\n const dateColumns: string[] = new Array();\n\n // if there are only COUNT, no need to loop on rows\n let onlyCount =\n keys.length === 0 ||\n keys.every((key) => totals[key] === TotalMode.COUNT);\n if (onlyCount) {\n keys.forEach((columnName) => (footerRow[columnName] = rows.length));\n } else {\n let distinctObj = {};\n rows.forEach((r, index, array) => {\n keys.filter(\n (key) =>\n TotalMode.COUNT !== totals[key] &&\n totals[key].indexOf(TotalMode.MATH) != 0\n ).forEach((key) => {\n // getting cell\n const cell = r.cells[key];\n if (cell) {\n if (totals[key] === TotalMode.DISTINCT) {\n let cellValue;\n if (dom.ketchup.objects.isNumber(cell.obj)) {\n cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n } else {\n cellValue = cell.value;\n }\n let distinctList = distinctObj[key];\n if (!distinctList) {\n // first round\n distinctObj[key] = [];\n distinctObj[key].push(cellValue);\n } else {\n // update the list\n distinctList.push(cellValue);\n }\n } else if (dom.ketchup.objects.isNumber(cell.obj)) {\n const cellValue = dom.ketchup.math.numberify(\n dom.ketchup.math.numberifySafe(cell.value)\n );\n let currentFooterValue = footerRow[key];\n switch (true) {\n // TODO DRY the MIN and MAX functions\n case totals[key] === TotalMode.MIN:\n if (currentFooterValue) {\n footerRow[key] = Math.min(\n currentFooterValue,\n cellValue\n );\n } else {\n footerRow[key] = cellValue;\n }\n break;\n case totals[key] === TotalMode.MAX:\n if (currentFooterValue) {\n footerRow[key] = Math.max(\n currentFooterValue,\n cellValue\n );\n } else {\n footerRow[key] = cellValue;\n }\n break;\n default:\n // SUM\n currentFooterValue = footerRow[key] || 0;\n footerRow[key] =\n cellValue +\n dom.ketchup.math.numberify(\n currentFooterValue\n );\n }\n // TODO DRY the MIN and MAX functions\n } else if (dom.ketchup.objects.isDate(cell.obj)) {\n if (dateColumns.indexOf(key) == -1) {\n dateColumns.push(key);\n }\n if (\n dom.ketchup.dates.isValidFormattedStringDate(\n cell.value\n )\n ) {\n const cellValue = dom.ketchup.dates.toDate(\n dom.ketchup.dates.toDayjs(cell.value)\n );\n const currentFooterValue = footerRow[key]\n ? dom.ketchup.dates.toDate(\n dom.ketchup.dates.toDayjs(footerRow[key])\n )\n : null;\n switch (true) {\n case totals[key] === TotalMode.MIN:\n if (currentFooterValue) {\n let moments = [];\n moments.push(cellValue);\n moments.push(currentFooterValue);\n footerRow[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.min(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n footerRow[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n break;\n case totals[key] === TotalMode.MAX:\n if (currentFooterValue) {\n let moments = [];\n moments.push(cellValue);\n moments.push(currentFooterValue);\n footerRow[key] =\n dom.ketchup.dates.format(\n dom.ketchup.dates.max(moments),\n KupDatesFormats.ISO_DATE\n );\n } else {\n footerRow[key] =\n dom.ketchup.dates.format(\n cellValue,\n KupDatesFormats.ISO_DATE\n );\n }\n break;\n default:\n break;\n }\n }\n }\n }\n if (\n index === array.length - 1 &&\n totals[key] === TotalMode.DISTINCT\n ) {\n // last round\n footerRow[key] = new Set(distinctObj[key]).size;\n distinctObj[key] = [];\n }\n });\n });\n }\n // fixing MATH, AVERAGE and COUNT\n for (let key of keys) {\n switch (true) {\n case totals[key] === TotalMode.AVERAGE:\n const sum: number = footerRow[key];\n if (sum && rows.length > 0) {\n footerRow[key] = sum / rows.length;\n }\n break;\n case totals[key] === TotalMode.COUNT:\n footerRow[key] = rows.length;\n break;\n case totals[key].indexOf(TotalMode.MATH) == 0:\n footerRow[key] = dom.ketchup.math.formulas.custom(\n totals[key].substring(TotalMode.MATH.length),\n footerRow\n );\n break;\n default:\n break;\n }\n if (footerRow[key]) {\n if (dateColumns.indexOf(key) != -1) {\n footerRow[key] = dom.ketchup.dates.format(footerRow[key]);\n } else if (dom.ketchup.math.isNumber(footerRow[key])) {\n footerRow[key] = +footerRow[key].toFixed(2);\n }\n }\n }\n return footerRow;\n}\n\nfunction adjustGroupId(row: KupDataTableRow): void {\n if (!row.group) {\n return;\n }\n\n let groupID = row.group.id;\n\n let parentRow = row.group.parent;\n\n while (parentRow !== null) {\n groupID = `${parentRow.group.id};${groupID}`;\n parentRow = parentRow.group.parent;\n }\n\n row.group.id = groupID;\n}\n\nexport function paginateRows(\n rows: KupDataTableRow[],\n currentPage: number,\n rowsPerPage: number,\n areGrouped: boolean\n) {\n const start: number = currentPage * rowsPerPage - rowsPerPage;\n const end: number = start + Number(rowsPerPage);\n if (areGrouped == false) {\n return rows.slice(start, end);\n }\n let pagRows: Array<KupDataTableRow> = [];\n\n _paginateRows(rows, pagRows, start, Number(rowsPerPage), 0);\n\n return pagRows;\n}\n\nfunction _paginateRows(\n rows: KupDataTableRow[],\n pagRows: KupDataTableRow[],\n start: number,\n rowsPerPage: number,\n ci: number\n): { ci: number; added: boolean } {\n let added: boolean = false;\n for (let i: number = 0; i < rows.length; i++) {\n let originalRow = rows[i];\n let row: KupDataTableRow = cloneRow(rows[i]);\n if (\n originalRow.group != null &&\n originalRow.group.children != null &&\n originalRow.group.children.length > 0\n ) {\n row.group.children = [];\n let retValue: { ci: number; added: boolean } = _paginateRows(\n originalRow.group.children,\n row.group.children,\n start,\n rowsPerPage,\n ci\n );\n ci = retValue.ci;\n added = retValue.added;\n if (added == true) {\n pagRows[pagRows.length] = row;\n }\n } else {\n if (ci >= start) {\n pagRows[pagRows.length] = row;\n added = true;\n }\n ci++;\n }\n\n if (ci >= start + rowsPerPage) {\n break;\n }\n }\n return { ci: ci, added: added };\n}\n\nfunction cloneRow(row: KupDataTableRow): KupDataTableRow {\n if (row == null) {\n return null;\n } else {\n return {\n id: row.id,\n cells: { ...row.cells },\n actions: row.actions ? [...row.actions] : null,\n group: cloneRowGroup(row.group),\n clonedFrom: row,\n readOnly: row.readOnly,\n cssClass: row.cssClass,\n };\n }\n}\n\nfunction cloneRows(rows: Array<KupDataTableRow>): Array<KupDataTableRow> {\n if (rows == null) {\n return null;\n }\n let cloned: Array<KupDataTableRow> = [];\n for (let i: number = 0; i < rows.length; i++) {\n cloned[cloned.length] = cloneRow(rows[i]);\n }\n return cloned;\n}\n\nfunction cloneRowGroup(group: KupDataTableRowGroup): KupDataTableRowGroup {\n if (group == null) {\n return null;\n }\n let cloned: KupDataTableRowGroup = {\n id: group.id,\n parent: { ...group.parent },\n column: group.column,\n columnLabel: group.columnLabel,\n expanded: group.expanded,\n label: group.label,\n children: cloneRows(group.children),\n obj: { ...group.obj },\n totals: { ...group.totals },\n };\n\n return cloned;\n}\n\n/**\n * Returns a KupDataDataset obtained as the difference between originalData and modifiedData\n * The checked data are cell.value and cell.obj.k with the same column and row\n * @param originalData\n * @param modifiedData\n * @param includesAlsoEmptyRows\n * @returns\n */\nexport function getDiffData(\n originalData: KupDataDataset,\n modifiedData: KupDataDataset,\n includesAlsoEmptyRows: boolean = false\n): KupDataDataset {\n const diffDataTable = {\n columns: modifiedData.columns,\n rows: [],\n };\n\n for (const modifiedRow of modifiedData.rows) {\n const newRow = { cells: {}, id: modifiedRow.id };\n\n for (const column of modifiedData.columns) {\n const cellKey = column.name;\n const modifiedCell = modifiedRow.cells[cellKey];\n\n const originalRow = originalData.rows.find(\n (row) => row.id === modifiedRow.id\n );\n const originalCell = originalRow\n ? originalRow.cells[cellKey]\n : null;\n\n if (!originalCell || modifiedCell.value !== originalCell.value) {\n newRow.cells[cellKey] = modifiedCell;\n }\n }\n\n if (Object.keys(newRow.cells).length > 0 || includesAlsoEmptyRows) {\n diffDataTable.rows.push(newRow);\n }\n }\n\n return diffDataTable;\n}\n\nexport function decorateDataTable(data: KupDataTableDataset) {\n data.rows?.forEach((row) => {\n Object.keys(row.cells).forEach((cellKey) => {\n let cell: KupDataTableCell = row.cells[cellKey];\n\n const value = cell.value;\n const options = cell['options'];\n cell.isEditable = cell.isEditable ?? cell['editable'];\n\n if (options) {\n const shapeAdapters = {\n [FCellShapes.AUTOCOMPLETE]: () =>\n CMBandACPAdapter(value, '', options),\n [FCellShapes.COMBOBOX]: () =>\n CMBandACPAdapter(value, '', options),\n [FCellShapes.RADIO]: () => RADAdapter(value, options),\n [FCellShapes.CHECKBOX]: () => CHKAdapter(value, options),\n [FCellShapes.CHIP]: () => CHIAdapter(value),\n };\n\n const adapterFunction = shapeAdapters[cell.shape];\n\n if (adapterFunction) {\n cell.data = adapterFunction();\n } else {\n if (cell.shape) {\n dom.ketchup.debug.logMessage(\n 'kup-data',\n `Shape specified ${\n cell.shape\n } in cell ${JSON.stringify(cell)} unsupported`,\n KupDebugCategory.WARNING\n );\n }\n }\n }\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,c as i,f as s,h as e,H as n,d as h,g as o}from"./p-d7c15b0e.js";import{k as a,ae as r,g as f,s as l,b as d,E as u}from"./p-7df94c07.js";import{K as c,d as p,a as m,b as k,c as w}from"./p-cd3a7d53.js";import{c as b}from"./p-635bb4b3.js";import{F as g}from"./p-81348418.js";import{F as y}from"./p-c4054aba.js";import"./p-029c7cbe.js";import"./p-2b519589.js";import"./p-d4a879fc.js";const v=a();function x(t,i,s,e,n,h,o,a){const r=D(t,i);let f=[];if(s&&e){if(C(s,e)){f=D(s,e)}else{f=[...r]}}let l=[];if(n&&h){if(z(n,h)){l=S(n,h)}else{f=[...r]}}let d=[];if(o&&a){if(z(o,a)){d=S(o,a)}else{f=[...r]}}return{dateValues:r,secDateValues:f,hourValues:l,secHourValues:d}}function D(t,i){let s=[t.value,i.value];if(j(t)&&j(i)){return s}else if(j(t)){return[t.value,t.value]}else if(j(i)){return[i.value,i.value]}else{return s}}function S(t,i){let s=[t.value,i.value];if(O(t)&&O(i)){return s}else if(O(t)){return[t.value,t.value]}else if(O(i)){return[i.value,i.value]}else{return s}}function j(t){return v.objects.isDate(t.obj)&&v.dates.isIsoDate(t.value)}function O(t){return v.objects.isTime(t.obj)||v.objects.isTimeWithSeconds(t.obj)}function C(t,i){return j(t)||j(i)}function z(t,i){return O(t)||O(i)}function T(t,i,s,e,n,h){let o=()=>n.map((i=>r(e.find((t=>t.name==i)),t.cells[i])));if(h){o=h}const a=(n===null||n===void 0?void 0:n.length)>=2?o():[t.cells[i].value,t.cells[s].value];return a}class E{constructor(){this.showSecondaryDates=false;this.detailFilter="";this.detailInitialScrollX=0;this.detailInitialScrollY=0;this.taskFilter="";this.taskInitialScrollX=0;this.taskInitialScrollY=0;this.viewMode="day"}toDebugString(){return"dt state"}}const H=".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:0.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:0.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:0.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:0.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:host{display:block}.filter{margin-bottom:var(--kup-space-04)}.planner-render{padding-top:40px}";const M=H;var P=undefined&&undefined.__classPrivateFieldGet||function(t,i,s,e){if(s==="a"&&!e)throw new TypeError("Private accessor was defined without a getter");if(typeof i==="function"?t!==i||!e:!i.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?e:s==="a"?e.call(t):e?e.value:i.get(t)};var W=undefined&&undefined.__classPrivateFieldSet||function(t,i,s,e,n){if(e==="m")throw new TypeError("Private method is not writable");if(e==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof i==="function"?t!==i||!n:!i.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return e==="a"?n.call(t,s):n?n.value=s:i.set(t,s),s};var I,R,V,Y,K,A,G,X,L,F,N,_,q,B,J,Q,U,Z,$,tt,it,st,et,nt;const ht=class{constructor(s){t(this,s);this.kupClick=i(this,"kup-planner-click",6);this.kupDblClick=i(this,"kup-planner-dblclick",6);this.kupDateChange=i(this,"kup-planner-datechange",6);this.kupPhaseDrop=i(this,"kup-planner-phasedrop",6);this.kupReady=i(this,"kup-planner-ready",6);this.kupContextMenu=i(this,"kup-planner-contextmenu",6);this.kupDidUnload=i(this,"kup-planner-didunload",6);I.add(this);this.state=new E;this.plannerRenderer=undefined;R.set(this,a());V.set(this,void 0);Y.set(this,[]);K.set(this,{});A.set(this,void 0);this.stateId="";this.store=undefined;this.customStyle="";this.data=undefined;this.detailData=undefined;this.detailColorCol=undefined;this.detailColumns=undefined;this.detailDates=undefined;this.detailFilter=undefined;this.detailHeight=undefined;this.detailHours=[];this.detailIconCol=undefined;this.detailIdCol=undefined;this.detailNameCol=undefined;this.detailPrevHours=[];this.detailPrevDates=undefined;this.detailInitialScrollX=undefined;this.detailInitialScrollY=undefined;this.listCellWidth="300px";this.maxWidth="90vw";this.phaseColorCol=undefined;this.phaseColumns=undefined;this.phaseColParDep=undefined;this.phaseDates=undefined;this.phaseHours=[];this.phaseIconCol=undefined;this.phaseIdCol=undefined;this.phaseNameCol=undefined;this.phasePrevHours=[];this.phasePrevDates=undefined;this.readOnly=false;this.showSecondaryDates=false;this.taskColumns=undefined;this.taskDates=undefined;this.taskFilter=undefined;this.taskHeight=undefined;this.taskHours=[];this.taskIconCol=undefined;this.taskIdCol=undefined;this.taskInitialScrollX=undefined;this.taskInitialScrollY=undefined;this.taskNameCol=undefined;this.taskPrevHours=[];this.taskPrevDates=undefined;this.titleMess=undefined;this.viewMode="month";this.mainFilter=undefined;this.secondaryFilter=undefined;this.scrollableTaskList=false;this.plannerProps=undefined}initWithPersistedState(){if(this.store&&this.stateId){const t=this.store.getState(this.stateId);if(t!=null){P(this,R,"f").debug.logMessage(this,"Initializing stateId "+this.stateId);this.detailFilter=t.detailFilter;this.showSecondaryDates=t.showSecondaryDates;this.detailInitialScrollX=t.detailInitialScrollX;this.detailInitialScrollY=t.detailInitialScrollY;this.taskFilter=t.taskFilter;this.taskInitialScrollX=t.taskInitialScrollX;this.taskInitialScrollY=t.taskInitialScrollY;this.viewMode=t.viewMode}}}persistState(){if(this.store&&this.stateId){let t=false;if(!P(this,R,"f").objects.deepEqual(this.state.detailFilter,P(this,A,"f").detailFilter)){this.state.detailFilter=P(this,A,"f").detailFilter;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.showSecondaryDates,P(this,A,"f").showSecondaryDates)){this.state.showSecondaryDates=P(this,A,"f").showSecondaryDates;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.detailInitialScrollX,P(this,A,"f").detailInitialScrollX)){this.state.detailInitialScrollX=P(this,A,"f").detailInitialScrollX;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.detailInitialScrollY,P(this,A,"f").detailInitialScrollY)){this.state.detailInitialScrollY=P(this,A,"f").detailInitialScrollY;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskFilter,P(this,A,"f").taskFilter)){this.state.taskFilter=P(this,A,"f").taskFilter;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskInitialScrollX,P(this,A,"f").taskInitialScrollX)){this.state.taskInitialScrollX=P(this,A,"f").taskInitialScrollX;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskInitialScrollY,P(this,A,"f").taskInitialScrollY)){this.state.taskInitialScrollY=P(this,A,"f").taskInitialScrollY;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.viewMode,P(this,A,"f").viewMode)){this.state.viewMode=P(this,A,"f").viewMode;t=true}if(t){P(this,R,"f").debug.logMessage(this,"Persisting stateId "+this.stateId);this.store.persistState(this.stateId,this.state)}}}dataChanged(){W(this,K,{},"f")}async getProps(t){return f(this,w,t)}async refresh(){s(this);this.plannerRenderer.refresh()}async setProps(t){l(this,w,t)}async addPhases(t,i){var s;const e=P(this,I,"m",L).call(this,t);if(e){P(this,K,"f")[t]=i;e.phases=(s=i.rows)===null||s===void 0?void 0:s.filter((t=>C(t.cells[this.phaseDates[0]],t.cells[this.phaseDates[1]]))).map((t=>{const s=x(t.cells[this.phaseDates[0]],t.cells[this.phaseDates[1]],t.cells[this.phasePrevDates[0]],t.cells[this.phasePrevDates[1]],t.cells[this.phaseHours[0]],t.cells[this.phaseHours[1]],t.cells[this.phasePrevHours[0]],t.cells[this.phasePrevHours[1]]);const n=T(t,this.phaseIdCol,this.phaseNameCol,i.columns,this.phaseColumns,(()=>this.phaseColumns.map((s=>s==this.phaseDates[0]?"#START#":s==this.phaseDates[1]?"#END#":r(i.columns.find((t=>t.name==s)),t.cells[s])))));let h=P(this,I,"m",et).call(this,t,this.phaseIconCol);let o=P(this,I,"m",nt).call(this,t,this.phaseIconCol);let a={taskRow:e.taskRow,phaseRow:t,id:e.id+"_"+t.cells[this.phaseIdCol].value,phaseRowId:t.id,taskRowId:e.taskRowId,name:t.cells[this.phaseNameCol].value,startDate:s.dateValues[0],endDate:s.dateValues[1],secondaryStartDate:s.secDateValues[0],secondaryEndDate:s.secDateValues[1],type:"task",color:t.cells[this.phaseColorCol].value,selectedColor:t.cells[this.phaseColorCol].value,valuesToShow:n,rowType:c.PHASE,icon:h?{url:h,color:o!==null&&o!==void 0?o:"#595959"}:undefined,startHour:s.hourValues[0],endHour:s.hourValues[1],secondaryStartHour:s.secHourValues[0],secondaryEndHour:s.secHourValues[1]};return a}))}this.plannerProps.mainGantt.initialScrollX=P(this,A,"f").taskInitialScrollX;this.plannerProps.mainGantt.initialScrollY=P(this,A,"f").taskInitialScrollY;if(this.plannerProps.secondaryGantt){this.plannerProps.secondaryGantt.initialScrollX=P(this,A,"f").detailInitialScrollX;this.plannerProps.secondaryGantt.initialScrollX=P(this,A,"f").detailInitialScrollY}this.plannerProps=Object.assign({},this.plannerProps);this.refresh()}componentWillLoad(){P(this,R,"f").debug.logLoad(this,false);P(this,R,"f").theme.register(this);this.initWithPersistedState();W(this,A,{detailFilter:this.detailFilter,detailInitialScrollX:this.detailInitialScrollX,detailInitialScrollY:this.detailInitialScrollY,showSecondaryDates:this.showSecondaryDates,taskFilter:this.taskFilter,taskInitialScrollX:this.taskInitialScrollX,taskInitialScrollY:this.taskInitialScrollY,viewMode:this.viewMode},"f")}componentDidLoad(){let t=P(this,I,"m",X).call(this,P(this,I,"m",st).call(this,P(this,A,"f").detailFilter,true));const i=this.rootElement.shadowRoot.querySelector("#main-filter");y(i);const s=this.rootElement.shadowRoot.querySelector("#secondary-filter");if(t){y(s)}let e;let n;let h;const o=500;this.plannerProps={mainGantt:{title:this.titleMess,items:P(this,I,"m",G).call(this,P(this,I,"m",st).call(this,P(this,A,"f").taskFilter,false)),stylingOptions:Object.assign(Object.assign({},p),{listCellWidth:this.listCellWidth}),filter:i,hideLabel:true,ganttHeight:this.taskHeight,showSecondaryDates:P(this,A,"f").showSecondaryDates,onClick:t=>this.handleOnClick(t),onDblClick:t=>this.handleOnDblClick(t),onContextMenu:(t,i)=>this.handleOnContextMenu(t,i),onDateChange:t=>this.handleOnDateChange(t),initialScrollX:this.taskInitialScrollX,initialScrollY:this.taskInitialScrollY,readOnly:this.readOnly,onScrollY:t=>{window.clearTimeout(n);n=window.setTimeout((()=>this.handleTaskGanttScrollY(t)),o)},onPhaseDrop:t=>this.handleOnPhaseDrop(t)},secondaryGantt:t?{title:"",items:t,stylingOptions:Object.assign(Object.assign({},p),{listCellWidth:this.listCellWidth}),filter:s,hideLabel:true,ganttHeight:this.detailHeight,onClick:t=>this.handleOnClick(t),onContextMenu:(t,i)=>this.handleOnContextMenu(t,i),onDateChange:t=>this.handleOnDateChange(t),initialScrollX:this.detailInitialScrollX,initialScrollY:this.detailInitialScrollY,readOnly:this.readOnly,onScrollY:t=>{window.clearTimeout(h);h=window.setTimeout((()=>this.handleDetailGanttScrollY(t)),o)}}:undefined,onSetDoubleView:t=>this.handleOnSetDoubleView(t),onSetViewMode:t=>this.handleOnSetViewMode(t),viewMode:this.viewMode,scrollableTaskList:this.scrollableTaskList,onScrollX:t=>{window.clearTimeout(e);e=window.setTimeout((()=>this.handleOnScrollX(t)),o)}};this.kupReady.emit({comp:this,id:this.rootElement.id,value:undefined});if(this.taskFilter){P(this,I,"m",it).call(this,this.taskFilter)}if(this.detailFilter){P(this,I,"m",it).call(this,this.detailFilter,true)}P(this,R,"f").debug.logLoad(this,true)}componentDidRender(){this.persistState();P(this,R,"f").debug.logRender(this,true)}onKupDblClick(t,i){this.kupDblClick.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupClick(t,i){this.kupClick.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupContextMenu(t,i,s){let e;let n;let h;switch(i.type){case"project":{e=i.taskRow;n=e.cells[this.taskIdCol];h=this.data.columns[this.taskIdCol];break}case"task":{e=i.phaseRow;n=e.cells[this.phaseIdCol];break}case"timeline":{e=i.detailRow;n=e.cells[this.detailIdCol];h=this.data.columns[this.detailIdCol];break}}this.kupContextMenu.emit({comp:this,id:this.rootElement.id,value:i,taskAction:s,details:{cell:n,column:h,originalEvent:t,row:e}})}onKupDateChange(t,i){this.kupDateChange.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupPhaseDrop(t,i){this.kupPhaseDrop.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}handleOnDblClick(t){switch(t.rowType){case c.TASK:if(P(this,I,"m",N).call(this)){this.onKupDblClick(t,m.onDblClick)}break;case c.PHASE:if(P(this,I,"m",_).call(this)){this.onKupDblClick(t,m.onDblClick)}break;case c.DETAIL:if(P(this,I,"m",q).call(this)){this.onKupDblClick(t,m.onDblClick)}break}for(let t=0;t<P(this,Y,"f").length;t++){clearTimeout(P(this,Y,"f")[t]);P(this,R,"f").debug.logMessage(this,"Cleared click timeout("+P(this,Y,"f")[t]+").")}W(this,Y,[],"f")}handleOnClick(t){P(this,Y,"f").push(setTimeout((()=>{switch(t.rowType){case c.TASK:const i=t.phases?m.onTaskClosing:m.onTaskOpening;if(P(this,I,"m",B).call(this,t)){this.onKupClick(t,i)}break;case c.PHASE:if(P(this,I,"m",J).call(this)){this.onKupClick(t,m.onClick)}break;case c.DETAIL:if(P(this,I,"m",Q).call(this)){this.onKupClick(t,m.onClick)}break}}),300))}handleOnContextMenu(t,i){switch(i.rowType){case c.TASK:if(P(this,I,"m",U).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break;case c.PHASE:if(P(this,I,"m",Z).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break;case c.DETAIL:if(P(this,I,"m",$).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break}}handleOnSetDoubleView(t){var i;P(this,A,"f").showSecondaryDates=t;if((i=this.plannerProps)===null||i===void 0?void 0:i.mainGantt){this.plannerProps.mainGantt.showSecondaryDates=t}this.persistState()}handleOnSetViewMode(t){P(this,A,"f").viewMode=t;this.plannerProps.viewMode=t;this.persistState()}handleOnScrollX(t){P(this,A,"f").taskInitialScrollX=t;P(this,A,"f").detailInitialScrollX=t;this.persistState()}handleTaskGanttScrollY(t){P(this,A,"f").taskInitialScrollY=t;this.persistState()}handleDetailGanttScrollY(t){P(this,A,"f").detailInitialScrollY=t;this.persistState()}handleOnDateChange(t){if(P(this,I,"m",tt).call(this,t)){if(t.rowType!=c.DETAIL){this.onKupDateChange(t,m.onResize)}}}handleOnPhaseDrop(t){this.onKupPhaseDrop(t,m.onTask)}render(){var t,i,s;const h=this.plannerProps?Object.assign(Object.assign({},this.plannerProps),{onSetDoubleView:this.handleOnSetDoubleView.bind(this),onSetViewMode:this.handleOnSetViewMode.bind(this),onScrollX:this.handleOnScrollX.bind(this),mainGantt:Object.assign(Object.assign({},(t=this.plannerProps)===null||t===void 0?void 0:t.mainGantt),{onScrollY:this.handleTaskGanttScrollY.bind(this)})}):null;if((i=this.plannerProps)===null||i===void 0?void 0:i.secondaryGantt){h.secondaryGantt=Object.assign(Object.assign({},this.plannerProps.secondaryGantt),{onScrollY:this.handleDetailGanttScrollY.bind(this)})}return e(n,{key:"ab02db06dbbc4cec735bfe4a94be886dccdd074b"},e("style",{key:"a8e138dc9432e9a72e35c5ebbdd90a6ac7a4cdcb"},P(this,R,"f").theme.setKupStyle(this.rootElement)),e("div",{key:"5a7c342a7ca934a076dce7ff708cb4d7c24f430a",id:b,style:{maxWidth:this.maxWidth}},this.plannerProps&&e("kup-planner-renderer",{key:"fb472e15412e52ab4df9fb3c64d37bb00c6d3bfc",props:h,ref:t=>this.plannerRenderer=t})),e("div",{key:"96a4a1cc970e0e1babf8814becbd057eb3c02ee4",style:{display:this.plannerProps?"none":""}},e(g,{key:"ff0b0c6354de9bad576fa94012693e74565c0392",icon:d.SEARCH,id:"main-filter",label:P(this,R,"f").language.translate(u.SEARCH),onKeyDown:t=>{if(t.key==="Enter"){P(this,I,"m",it).call(this,t.target.value)}},value:this.taskFilter,wrapperClass:"filter"}),((s=this.detailData)===null||s===void 0?void 0:s.rows)&&this.detailData.rows.length>0?e(g,{icon:d.SEARCH,id:"secondary-filter",label:P(this,R,"f").language.translate(u.SEARCH),onKeyDown:t=>{if(t.key==="Enter"){P(this,I,"m",it).call(this,t.target.value,true)}},value:this.detailFilter,wrapperClass:"filter"}):null))}disconnectedCallback(){P(this,R,"f").theme.unregister(this);this.kupDidUnload.emit({comp:this,id:this.rootElement.id,storedSettings:P(this,A,"f")})}get rootElement(){return h(this)}static get watchers(){return{data:["dataChanged"]}}};R=new WeakMap,V=new WeakMap,Y=new WeakMap,K=new WeakMap,A=new WeakMap,I=new WeakSet,G=function t(i){var s;if(!i||!i.rows){return[]}let e=(s=i.rows)===null||s===void 0?void 0:s.filter((t=>C(t.cells[this.taskDates[0]],t.cells[this.taskDates[1]]))).map((t=>{const s=x(t.cells[this.taskDates[0]],t.cells[this.taskDates[1]],t.cells[this.taskPrevDates[0]],t.cells[this.taskPrevDates[1]],t.cells[this.taskHours[0]],t.cells[this.taskHours[1]],t.cells[this.taskPrevHours[0]],t.cells[this.taskPrevHours[1]]);const e=T(t,this.taskIdCol,this.taskNameCol,i.columns,this.taskColumns,(()=>this.taskColumns.map((s=>s==this.taskDates[0]?"#START#":s==this.taskDates[1]?"#END#":r(i.columns.find((t=>t.name==s)),t.cells[s])))));let n=P(this,I,"m",et).call(this,t,this.taskIconCol);let h=P(this,I,"m",nt).call(this,t,this.taskIconCol);let o={taskRow:t,taskRowId:t.id,id:t.cells[this.taskIdCol].value,name:t.cells[this.taskNameCol].value,startDate:s.dateValues[0],endDate:s.dateValues[1],secondaryStartDate:s.secDateValues[0],secondaryEndDate:s.secDateValues[1],type:"project",valuesToShow:e,rowType:c.TASK,icon:n?{url:n,color:h!==null&&h!==void 0?h:"#595959"}:undefined,startHour:s.hourValues[0],endHour:s.hourValues[1],secondaryStartHour:s.secHourValues[0],secondaryEndHour:s.secHourValues[1]};return o}));return e},X=function t(i){if(!i||!i.rows){return undefined}let s=[];i.rows.filter((t=>C(t.cells[this.detailDates[0]],t.cells[this.detailDates[1]]))).forEach((t=>{var e,n;const h=t.cells[this.detailIdCol].value;const o=t.cells[this.detailNameCol].value;const a=x(t.cells[this.detailDates[0]],t.cells[this.detailDates[1]],undefined,undefined,t.cells[this.detailHours[0]],t.cells[this.detailHours[1]]);const r=T(t,this.detailIdCol,this.detailNameCol,i.columns,this.detailColumns);let f=s.find((t=>t.id==h));if(!f){f={id:h,name:o,detailRow:t,type:"timeline",valuesToShow:r,rowType:c.DETAIL,schedule:[]};s.push(f)}let l=P(this,I,"m",et).call(this,t,this.detailIconCol);let d=P(this,I,"m",nt).call(this,t,this.detailIconCol);f.schedule.push({startDate:a.dateValues[0],endDate:a.dateValues[1],color:this.detailColorCol?(e=t.cells[this.detailColorCol].value)!==null&&e!==void 0?e:"#D9D9D8":"#D9D9D8",selectedColor:this.detailColorCol?(n=t.cells[this.detailColorCol].value)!==null&&n!==void 0?n:"#D9D9D8":"#D9D9D8",icon:l?{url:l,color:d!==null&&d!==void 0?d:"#595959"}:undefined,startHour:a.hourValues[0],endHour:a.hourValues[1]})}));return s},L=function t(i){return this.plannerProps.mainGantt.items.find((t=>t.id==i))},F=function t(i){const s=P(this,I,"m",L).call(this,i);if(s)s.phases=undefined;this.plannerProps=Object.assign({},this.plannerProps)},N=function t(){return true},_=function t(){return true},q=function t(){return true},B=function t(i){const s=P(this,I,"m",L).call(this,i.id);if(s===null||s===void 0?void 0:s.phases){P(this,I,"m",F).call(this,s.id)}return true},J=function t(){return true},Q=function t(){return true},U=function t(){return true},Z=function t(){return true},$=function t(){return true},tt=function t(i){let s=false;if(!P(this,V,"f")){s=true;W(this,V,new k(i),"f")}else if(!P(this,V,"f").isEquivalent(i)){W(this,V,new k(i),"f");s=true}return s},it=function t(i,s){if(s){P(this,A,"f").detailFilter=i}else{P(this,A,"f").taskFilter=i}const e=s?{secondaryGantt:Object.assign(Object.assign({},this.plannerProps.secondaryGantt),{items:P(this,I,"m",X).call(this,P(this,I,"m",st).call(this,i,s))})}:{mainGantt:Object.assign(Object.assign({},this.plannerProps.mainGantt),{items:P(this,I,"m",G).call(this,P(this,I,"m",st).call(this,i,s))})};this.plannerProps=Object.assign(Object.assign({},this.plannerProps),e);this.persistState()},st=function t(i,s){const e=s?this.detailData:this.data;if(!e||!e.rows||e.rows.length==0){return undefined}if(!i){return e}const n={columns:this.data.columns,rows:[]};const h=[];for(let t=0;t<e.rows.length;t++){const s=e.rows[t];const n=s.cells;for(let t=0;t<e.columns.length;t++){const o=e.columns[t];const a=n[o.name];if(a){const n=r(e.columns[t],a);const o=!!(n.toLowerCase().indexOf(i.toLowerCase())>-1);if(o){h.push({row:s,weight:t});break}}}}h.sort(((t,i)=>t.weight-i.weight)).forEach((t=>{n.rows.push(t.row)}));return n},et=function t(i,s){var e;let n=undefined;if(s){const t=i.cells[s];let h=(e=t===null||t===void 0?void 0:t.data)===null||e===void 0?void 0:e.resource;if(!h){h=t.value}if(h){n=o("./assets/svg/"+h+".svg")}}return n},nt=function t(i,s){var e;let n=undefined;if(s){const t=i.cells[s];n=(e=t===null||t===void 0?void 0:t.data)===null||e===void 0?void 0:e.color;if(n){n=P(this,R,"f").theme.colorCheck(n).hexColor}}return n};ht.style=M;export{ht as kup_planner};
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,c as i,f as e,h as s,H as n,d as h,g as o}from"./p-d7c15b0e.js";import{k as a,ae as r,g as f,s as l,b as d,E as u}from"./p-555e004e.js";import{K as c,d as p,a as m,b as k,c as w}from"./p-cd3a7d53.js";import{c as b}from"./p-635bb4b3.js";import{F as g}from"./p-d823d538.js";import{F as y}from"./p-c4054aba.js";import"./p-029c7cbe.js";import"./p-2b519589.js";import"./p-d4a879fc.js";const v=a();function x(t,i,e,s,n,h,o,a){const r=D(t,i);let f=[];if(e&&s){if(C(e,s)){f=D(e,s)}else{f=[...r]}}let l=[];if(n&&h){if(z(n,h)){l=S(n,h)}else{f=[...r]}}let d=[];if(o&&a){if(z(o,a)){d=S(o,a)}else{f=[...r]}}return{dateValues:r,secDateValues:f,hourValues:l,secHourValues:d}}function D(t,i){let e=[t.value,i.value];if(j(t)&&j(i)){return e}else if(j(t)){return[t.value,t.value]}else if(j(i)){return[i.value,i.value]}else{return e}}function S(t,i){let e=[t.value,i.value];if(O(t)&&O(i)){return e}else if(O(t)){return[t.value,t.value]}else if(O(i)){return[i.value,i.value]}else{return e}}function j(t){return v.objects.isDate(t.obj)&&v.dates.isIsoDate(t.value)}function O(t){return v.objects.isTime(t.obj)||v.objects.isTimeWithSeconds(t.obj)}function C(t,i){return j(t)||j(i)}function z(t,i){return O(t)||O(i)}function T(t,i,e,s,n,h){let o=()=>n.map((i=>r(s.find((t=>t.name==i)),t.cells[i])));if(h){o=h}const a=(n===null||n===void 0?void 0:n.length)>=2?o():[t.cells[i].value,t.cells[e].value];return a}class E{constructor(){this.showSecondaryDates=false;this.detailFilter="";this.detailInitialScrollX=0;this.detailInitialScrollY=0;this.taskFilter="";this.taskInitialScrollX=0;this.taskInitialScrollY=0;this.viewMode="day"}toDebugString(){return"dt state"}}const H=".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:0.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:0.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:0.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:0.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:0.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:host{display:block}.filter{margin-bottom:var(--kup-space-04)}.planner-render{padding-top:40px}";const M=H;var P=undefined&&undefined.__classPrivateFieldGet||function(t,i,e,s){if(e==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof i==="function"?t!==i||!s:!i.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?s:e==="a"?s.call(t):s?s.value:i.get(t)};var W=undefined&&undefined.__classPrivateFieldSet||function(t,i,e,s,n){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof i==="function"?t!==i||!n:!i.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?n.call(t,e):n?n.value=e:i.set(t,e),e};var I,R,V,Y,K,A,G,X,L,F,N,_,q,B,J,Q,U,Z,$,tt,it,et,st,nt;const ht=class{constructor(e){t(this,e);this.kupClick=i(this,"kup-planner-click",6);this.kupDblClick=i(this,"kup-planner-dblclick",6);this.kupDateChange=i(this,"kup-planner-datechange",6);this.kupPhaseDrop=i(this,"kup-planner-phasedrop",6);this.kupReady=i(this,"kup-planner-ready",6);this.kupContextMenu=i(this,"kup-planner-contextmenu",6);this.kupDidUnload=i(this,"kup-planner-didunload",6);I.add(this);this.state=new E;this.plannerRenderer=undefined;R.set(this,a());V.set(this,void 0);Y.set(this,[]);K.set(this,{});A.set(this,void 0);this.stateId="";this.store=undefined;this.customStyle="";this.data=undefined;this.detailData=undefined;this.detailColorCol=undefined;this.detailColumns=undefined;this.detailDates=undefined;this.detailFilter=undefined;this.detailHeight=undefined;this.detailHours=[];this.detailIconCol=undefined;this.detailIdCol=undefined;this.detailNameCol=undefined;this.detailPrevHours=[];this.detailPrevDates=undefined;this.detailInitialScrollX=undefined;this.detailInitialScrollY=undefined;this.listCellWidth="300px";this.maxWidth="90vw";this.phaseColorCol=undefined;this.phaseColumns=undefined;this.phaseColParDep=undefined;this.phaseDates=undefined;this.phaseHours=[];this.phaseIconCol=undefined;this.phaseIdCol=undefined;this.phaseNameCol=undefined;this.phasePrevHours=[];this.phasePrevDates=undefined;this.readOnly=false;this.showSecondaryDates=false;this.taskColumns=undefined;this.taskDates=undefined;this.taskFilter=undefined;this.taskHeight=undefined;this.taskHours=[];this.taskIconCol=undefined;this.taskIdCol=undefined;this.taskInitialScrollX=undefined;this.taskInitialScrollY=undefined;this.taskNameCol=undefined;this.taskPrevHours=[];this.taskPrevDates=undefined;this.titleMess=undefined;this.viewMode="month";this.mainFilter=undefined;this.secondaryFilter=undefined;this.scrollableTaskList=false;this.plannerProps=undefined}initWithPersistedState(){if(this.store&&this.stateId){const t=this.store.getState(this.stateId);if(t!=null){P(this,R,"f").debug.logMessage(this,"Initializing stateId "+this.stateId);this.detailFilter=t.detailFilter;this.showSecondaryDates=t.showSecondaryDates;this.detailInitialScrollX=t.detailInitialScrollX;this.detailInitialScrollY=t.detailInitialScrollY;this.taskFilter=t.taskFilter;this.taskInitialScrollX=t.taskInitialScrollX;this.taskInitialScrollY=t.taskInitialScrollY;this.viewMode=t.viewMode}}}persistState(){if(this.store&&this.stateId){let t=false;if(!P(this,R,"f").objects.deepEqual(this.state.detailFilter,P(this,A,"f").detailFilter)){this.state.detailFilter=P(this,A,"f").detailFilter;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.showSecondaryDates,P(this,A,"f").showSecondaryDates)){this.state.showSecondaryDates=P(this,A,"f").showSecondaryDates;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.detailInitialScrollX,P(this,A,"f").detailInitialScrollX)){this.state.detailInitialScrollX=P(this,A,"f").detailInitialScrollX;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.detailInitialScrollY,P(this,A,"f").detailInitialScrollY)){this.state.detailInitialScrollY=P(this,A,"f").detailInitialScrollY;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskFilter,P(this,A,"f").taskFilter)){this.state.taskFilter=P(this,A,"f").taskFilter;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskInitialScrollX,P(this,A,"f").taskInitialScrollX)){this.state.taskInitialScrollX=P(this,A,"f").taskInitialScrollX;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.taskInitialScrollY,P(this,A,"f").taskInitialScrollY)){this.state.taskInitialScrollY=P(this,A,"f").taskInitialScrollY;t=true}if(!P(this,R,"f").objects.deepEqual(this.state.viewMode,P(this,A,"f").viewMode)){this.state.viewMode=P(this,A,"f").viewMode;t=true}if(t){P(this,R,"f").debug.logMessage(this,"Persisting stateId "+this.stateId);this.store.persistState(this.stateId,this.state)}}}dataChanged(){W(this,K,{},"f")}async getProps(t){return f(this,w,t)}async refresh(){e(this);this.plannerRenderer.refresh()}async setProps(t){l(this,w,t)}async addPhases(t,i){var e;const s=P(this,I,"m",L).call(this,t);if(s){P(this,K,"f")[t]=i;s.phases=(e=i.rows)===null||e===void 0?void 0:e.filter((t=>C(t.cells[this.phaseDates[0]],t.cells[this.phaseDates[1]]))).map((t=>{const e=x(t.cells[this.phaseDates[0]],t.cells[this.phaseDates[1]],t.cells[this.phasePrevDates[0]],t.cells[this.phasePrevDates[1]],t.cells[this.phaseHours[0]],t.cells[this.phaseHours[1]],t.cells[this.phasePrevHours[0]],t.cells[this.phasePrevHours[1]]);const n=T(t,this.phaseIdCol,this.phaseNameCol,i.columns,this.phaseColumns,(()=>this.phaseColumns.map((e=>e==this.phaseDates[0]?"#START#":e==this.phaseDates[1]?"#END#":r(i.columns.find((t=>t.name==e)),t.cells[e])))));let h=P(this,I,"m",st).call(this,t,this.phaseIconCol);let o=P(this,I,"m",nt).call(this,t,this.phaseIconCol);let a={taskRow:s.taskRow,phaseRow:t,id:s.id+"_"+t.cells[this.phaseIdCol].value,phaseRowId:t.id,taskRowId:s.taskRowId,name:t.cells[this.phaseNameCol].value,startDate:e.dateValues[0],endDate:e.dateValues[1],secondaryStartDate:e.secDateValues[0],secondaryEndDate:e.secDateValues[1],type:"task",color:t.cells[this.phaseColorCol].value,selectedColor:t.cells[this.phaseColorCol].value,valuesToShow:n,rowType:c.PHASE,icon:h?{url:h,color:o!==null&&o!==void 0?o:"#595959"}:undefined,startHour:e.hourValues[0],endHour:e.hourValues[1],secondaryStartHour:e.secHourValues[0],secondaryEndHour:e.secHourValues[1]};return a}))}this.plannerProps.mainGantt.initialScrollX=P(this,A,"f").taskInitialScrollX;this.plannerProps.mainGantt.initialScrollY=P(this,A,"f").taskInitialScrollY;if(this.plannerProps.secondaryGantt){this.plannerProps.secondaryGantt.initialScrollX=P(this,A,"f").detailInitialScrollX;this.plannerProps.secondaryGantt.initialScrollX=P(this,A,"f").detailInitialScrollY}this.plannerProps=Object.assign({},this.plannerProps);this.refresh()}componentWillLoad(){P(this,R,"f").debug.logLoad(this,false);P(this,R,"f").theme.register(this);this.initWithPersistedState();W(this,A,{detailFilter:this.detailFilter,detailInitialScrollX:this.detailInitialScrollX,detailInitialScrollY:this.detailInitialScrollY,showSecondaryDates:this.showSecondaryDates,taskFilter:this.taskFilter,taskInitialScrollX:this.taskInitialScrollX,taskInitialScrollY:this.taskInitialScrollY,viewMode:this.viewMode},"f")}componentDidLoad(){let t=P(this,I,"m",X).call(this,P(this,I,"m",et).call(this,P(this,A,"f").detailFilter,true));const i=this.rootElement.shadowRoot.querySelector("#main-filter");y(i);const e=this.rootElement.shadowRoot.querySelector("#secondary-filter");if(t){y(e)}let s;let n;let h;const o=500;this.plannerProps={mainGantt:{title:this.titleMess,items:P(this,I,"m",G).call(this,P(this,I,"m",et).call(this,P(this,A,"f").taskFilter,false)),stylingOptions:Object.assign(Object.assign({},p),{listCellWidth:this.listCellWidth}),filter:i,hideLabel:true,ganttHeight:this.taskHeight,showSecondaryDates:P(this,A,"f").showSecondaryDates,onClick:t=>this.handleOnClick(t),onDblClick:t=>this.handleOnDblClick(t),onContextMenu:(t,i)=>this.handleOnContextMenu(t,i),onDateChange:t=>this.handleOnDateChange(t),initialScrollX:this.taskInitialScrollX,initialScrollY:this.taskInitialScrollY,readOnly:this.readOnly,onScrollY:t=>{window.clearTimeout(n);n=window.setTimeout((()=>this.handleTaskGanttScrollY(t)),o)},onPhaseDrop:t=>this.handleOnPhaseDrop(t)},secondaryGantt:t?{title:"",items:t,stylingOptions:Object.assign(Object.assign({},p),{listCellWidth:this.listCellWidth}),filter:e,hideLabel:true,ganttHeight:this.detailHeight,onClick:t=>this.handleOnClick(t),onContextMenu:(t,i)=>this.handleOnContextMenu(t,i),onDateChange:t=>this.handleOnDateChange(t),initialScrollX:this.detailInitialScrollX,initialScrollY:this.detailInitialScrollY,readOnly:this.readOnly,onScrollY:t=>{window.clearTimeout(h);h=window.setTimeout((()=>this.handleDetailGanttScrollY(t)),o)}}:undefined,onSetDoubleView:t=>this.handleOnSetDoubleView(t),onSetViewMode:t=>this.handleOnSetViewMode(t),viewMode:this.viewMode,scrollableTaskList:this.scrollableTaskList,onScrollX:t=>{window.clearTimeout(s);s=window.setTimeout((()=>this.handleOnScrollX(t)),o)}};this.kupReady.emit({comp:this,id:this.rootElement.id,value:undefined});if(this.taskFilter){P(this,I,"m",it).call(this,this.taskFilter)}if(this.detailFilter){P(this,I,"m",it).call(this,this.detailFilter,true)}P(this,R,"f").debug.logLoad(this,true)}componentDidRender(){this.persistState();P(this,R,"f").debug.logRender(this,true)}onKupDblClick(t,i){this.kupDblClick.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupClick(t,i){this.kupClick.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupContextMenu(t,i,e){let s;let n;let h;switch(i.type){case"project":{s=i.taskRow;n=s.cells[this.taskIdCol];h=this.data.columns[this.taskIdCol];break}case"task":{s=i.phaseRow;n=s.cells[this.phaseIdCol];break}case"timeline":{s=i.detailRow;n=s.cells[this.detailIdCol];h=this.data.columns[this.detailIdCol];break}}this.kupContextMenu.emit({comp:this,id:this.rootElement.id,value:i,taskAction:e,details:{cell:n,column:h,originalEvent:t,row:s}})}onKupDateChange(t,i){this.kupDateChange.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}onKupPhaseDrop(t,i){this.kupPhaseDrop.emit({comp:this,id:this.rootElement.id,value:t,taskAction:i})}handleOnDblClick(t){switch(t.rowType){case c.TASK:if(P(this,I,"m",N).call(this)){this.onKupDblClick(t,m.onDblClick)}break;case c.PHASE:if(P(this,I,"m",_).call(this)){this.onKupDblClick(t,m.onDblClick)}break;case c.DETAIL:if(P(this,I,"m",q).call(this)){this.onKupDblClick(t,m.onDblClick)}break}for(let t=0;t<P(this,Y,"f").length;t++){clearTimeout(P(this,Y,"f")[t]);P(this,R,"f").debug.logMessage(this,"Cleared click timeout("+P(this,Y,"f")[t]+").")}W(this,Y,[],"f")}handleOnClick(t){P(this,Y,"f").push(setTimeout((()=>{switch(t.rowType){case c.TASK:const i=t.phases?m.onTaskClosing:m.onTaskOpening;if(P(this,I,"m",B).call(this,t)){this.onKupClick(t,i)}break;case c.PHASE:if(P(this,I,"m",J).call(this)){this.onKupClick(t,m.onClick)}break;case c.DETAIL:if(P(this,I,"m",Q).call(this)){this.onKupClick(t,m.onClick)}break}}),300))}handleOnContextMenu(t,i){switch(i.rowType){case c.TASK:if(P(this,I,"m",U).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break;case c.PHASE:if(P(this,I,"m",Z).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break;case c.DETAIL:if(P(this,I,"m",$).call(this)){this.onKupContextMenu(t,i,m.onRightClick)}break}}handleOnSetDoubleView(t){var i;P(this,A,"f").showSecondaryDates=t;if((i=this.plannerProps)===null||i===void 0?void 0:i.mainGantt){this.plannerProps.mainGantt.showSecondaryDates=t}this.persistState()}handleOnSetViewMode(t){P(this,A,"f").viewMode=t;this.plannerProps.viewMode=t;this.persistState()}handleOnScrollX(t){P(this,A,"f").taskInitialScrollX=t;P(this,A,"f").detailInitialScrollX=t;this.persistState()}handleTaskGanttScrollY(t){P(this,A,"f").taskInitialScrollY=t;this.persistState()}handleDetailGanttScrollY(t){P(this,A,"f").detailInitialScrollY=t;this.persistState()}handleOnDateChange(t){if(P(this,I,"m",tt).call(this,t)){if(t.rowType!=c.DETAIL){this.onKupDateChange(t,m.onResize)}}}handleOnPhaseDrop(t){this.onKupPhaseDrop(t,m.onTask)}render(){var t,i,e;const h=this.plannerProps?Object.assign(Object.assign({},this.plannerProps),{onSetDoubleView:this.handleOnSetDoubleView.bind(this),onSetViewMode:this.handleOnSetViewMode.bind(this),onScrollX:this.handleOnScrollX.bind(this),mainGantt:Object.assign(Object.assign({},(t=this.plannerProps)===null||t===void 0?void 0:t.mainGantt),{onScrollY:this.handleTaskGanttScrollY.bind(this)})}):null;if((i=this.plannerProps)===null||i===void 0?void 0:i.secondaryGantt){h.secondaryGantt=Object.assign(Object.assign({},this.plannerProps.secondaryGantt),{onScrollY:this.handleDetailGanttScrollY.bind(this)})}return s(n,{key:"ab02db06dbbc4cec735bfe4a94be886dccdd074b"},s("style",{key:"a8e138dc9432e9a72e35c5ebbdd90a6ac7a4cdcb"},P(this,R,"f").theme.setKupStyle(this.rootElement)),s("div",{key:"5a7c342a7ca934a076dce7ff708cb4d7c24f430a",id:b,style:{maxWidth:this.maxWidth}},this.plannerProps&&s("kup-planner-renderer",{key:"fb472e15412e52ab4df9fb3c64d37bb00c6d3bfc",props:h,ref:t=>this.plannerRenderer=t})),s("div",{key:"96a4a1cc970e0e1babf8814becbd057eb3c02ee4",style:{display:this.plannerProps?"none":""}},s(g,{key:"ff0b0c6354de9bad576fa94012693e74565c0392",icon:d.SEARCH,id:"main-filter",label:P(this,R,"f").language.translate(u.SEARCH),onKeyDown:t=>{if(t.key==="Enter"){P(this,I,"m",it).call(this,t.target.value)}},value:this.taskFilter,wrapperClass:"filter"}),((e=this.detailData)===null||e===void 0?void 0:e.rows)&&this.detailData.rows.length>0?s(g,{icon:d.SEARCH,id:"secondary-filter",label:P(this,R,"f").language.translate(u.SEARCH),onKeyDown:t=>{if(t.key==="Enter"){P(this,I,"m",it).call(this,t.target.value,true)}},value:this.detailFilter,wrapperClass:"filter"}):null))}disconnectedCallback(){P(this,R,"f").theme.unregister(this);this.kupDidUnload.emit({comp:this,id:this.rootElement.id,storedSettings:P(this,A,"f")})}get rootElement(){return h(this)}static get watchers(){return{data:["dataChanged"]}}};R=new WeakMap,V=new WeakMap,Y=new WeakMap,K=new WeakMap,A=new WeakMap,I=new WeakSet,G=function t(i){var e;if(!i||!i.rows){return[]}let s=(e=i.rows)===null||e===void 0?void 0:e.filter((t=>C(t.cells[this.taskDates[0]],t.cells[this.taskDates[1]]))).map((t=>{const e=x(t.cells[this.taskDates[0]],t.cells[this.taskDates[1]],t.cells[this.taskPrevDates[0]],t.cells[this.taskPrevDates[1]],t.cells[this.taskHours[0]],t.cells[this.taskHours[1]],t.cells[this.taskPrevHours[0]],t.cells[this.taskPrevHours[1]]);const s=T(t,this.taskIdCol,this.taskNameCol,i.columns,this.taskColumns,(()=>this.taskColumns.map((e=>e==this.taskDates[0]?"#START#":e==this.taskDates[1]?"#END#":r(i.columns.find((t=>t.name==e)),t.cells[e])))));let n=P(this,I,"m",st).call(this,t,this.taskIconCol);let h=P(this,I,"m",nt).call(this,t,this.taskIconCol);let o={taskRow:t,taskRowId:t.id,id:t.cells[this.taskIdCol].value,name:t.cells[this.taskNameCol].value,startDate:e.dateValues[0],endDate:e.dateValues[1],secondaryStartDate:e.secDateValues[0],secondaryEndDate:e.secDateValues[1],type:"project",valuesToShow:s,rowType:c.TASK,icon:n?{url:n,color:h!==null&&h!==void 0?h:"#595959"}:undefined,startHour:e.hourValues[0],endHour:e.hourValues[1],secondaryStartHour:e.secHourValues[0],secondaryEndHour:e.secHourValues[1]};return o}));return s},X=function t(i){if(!i||!i.rows){return undefined}let e=[];i.rows.filter((t=>C(t.cells[this.detailDates[0]],t.cells[this.detailDates[1]]))).forEach((t=>{var s,n;const h=t.cells[this.detailIdCol].value;const o=t.cells[this.detailNameCol].value;const a=x(t.cells[this.detailDates[0]],t.cells[this.detailDates[1]],undefined,undefined,t.cells[this.detailHours[0]],t.cells[this.detailHours[1]]);const r=T(t,this.detailIdCol,this.detailNameCol,i.columns,this.detailColumns);let f=e.find((t=>t.id==h));if(!f){f={id:h,name:o,detailRow:t,type:"timeline",valuesToShow:r,rowType:c.DETAIL,schedule:[]};e.push(f)}let l=P(this,I,"m",st).call(this,t,this.detailIconCol);let d=P(this,I,"m",nt).call(this,t,this.detailIconCol);f.schedule.push({startDate:a.dateValues[0],endDate:a.dateValues[1],color:this.detailColorCol?(s=t.cells[this.detailColorCol].value)!==null&&s!==void 0?s:"#D9D9D8":"#D9D9D8",selectedColor:this.detailColorCol?(n=t.cells[this.detailColorCol].value)!==null&&n!==void 0?n:"#D9D9D8":"#D9D9D8",icon:l?{url:l,color:d!==null&&d!==void 0?d:"#595959"}:undefined,startHour:a.hourValues[0],endHour:a.hourValues[1]})}));return e},L=function t(i){return this.plannerProps.mainGantt.items.find((t=>t.id==i))},F=function t(i){const e=P(this,I,"m",L).call(this,i);if(e)e.phases=undefined;this.plannerProps=Object.assign({},this.plannerProps)},N=function t(){return true},_=function t(){return true},q=function t(){return true},B=function t(i){const e=P(this,I,"m",L).call(this,i.id);if(e===null||e===void 0?void 0:e.phases){P(this,I,"m",F).call(this,e.id)}return true},J=function t(){return true},Q=function t(){return true},U=function t(){return true},Z=function t(){return true},$=function t(){return true},tt=function t(i){let e=false;if(!P(this,V,"f")){e=true;W(this,V,new k(i),"f")}else if(!P(this,V,"f").isEquivalent(i)){W(this,V,new k(i),"f");e=true}return e},it=function t(i,e){if(e){P(this,A,"f").detailFilter=i}else{P(this,A,"f").taskFilter=i}const s=e?{secondaryGantt:Object.assign(Object.assign({},this.plannerProps.secondaryGantt),{items:P(this,I,"m",X).call(this,P(this,I,"m",et).call(this,i,e))})}:{mainGantt:Object.assign(Object.assign({},this.plannerProps.mainGantt),{items:P(this,I,"m",G).call(this,P(this,I,"m",et).call(this,i,e))})};this.plannerProps=Object.assign(Object.assign({},this.plannerProps),s);this.persistState()},et=function t(i,e){const s=e?this.detailData:this.data;if(!s||!s.rows||s.rows.length==0){return undefined}if(!i){return s}const n={columns:this.data.columns,rows:[]};const h=[];for(let t=0;t<s.rows.length;t++){const e=s.rows[t];const n=e.cells;for(let t=0;t<s.columns.length;t++){const o=s.columns[t];const a=n[o.name];if(a){const n=r(s.columns[t],a);const o=!!(n.toLowerCase().indexOf(i.toLowerCase())>-1);if(o){h.push({row:e,weight:t});break}}}}h.sort(((t,i)=>t.weight-i.weight)).forEach((t=>{n.rows.push(t.row)}));return n},st=function t(i,e){var s;let n=undefined;if(e){const t=i.cells[e];let h=(s=t===null||t===void 0?void 0:t.data)===null||s===void 0?void 0:s.resource;if(!h){h=t.value}if(h){n=o("./assets/svg/"+h+".svg")}}return n},nt=function t(i,e){var s;let n=undefined;if(e){const t=i.cells[e];n=(s=t===null||t===void 0?void 0:t.data)===null||s===void 0?void 0:s.color;if(n){n=P(this,R,"f").theme.colorCheck(n).hexColor}}return n};ht.style=M;export{ht as kup_planner};
|
|
2
|
+
//# sourceMappingURL=p-b8537818.entry.js.map
|