-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart.pivottable.js
6 lines (4 loc) · 97.4 KB
/
smart.pivottable.js
1
2
3
4
5
6
/* Smart UI v15.2.0 (2023-04-20)
Copyright (c) 2011-2023 jQWidgets.
License: https://htmlelements.com/license/ */ //
Smart("smart-pivot-table",class extends Smart.Table{static get properties(){return{columnTotals:{value:!1,type:"boolean"},columnTotalsPosition:{value:"near",allowedValues:["near","far"],type:"string"},defaultSortByRowGroups:{value:!1,type:"boolean"},designer:{value:!1,type:"boolean"},designerPosition:{value:"far",allowedValues:["near","far"],type:"string"},drillDown:{value:!1,type:"boolean"},drillDownDataExport:{value:"",allowedValues:["","xlsx","pdf","html","json","csv","tsv","xml"],type:"string"},drillDownDataExportFileName:{value:"smartPivotTableDrillDownDetails",type:"string"},drillDownTableInit:{value:null,type:"function?"},drillDownCustomAction:{value:null,type:"function?"},enableSortByRowGroups:{value:!1,type:"boolean"},getDefaultSummaryFunction:{value:null,type:"function?"},grandTotal:{value:!1,type:"boolean"},groupLayout:{value:"default",allowedValues:["default","classic"],type:"string"},hideCellSelectionTooltip:{value:!1,type:"boolean"},hideEmptyRows:{value:!1,type:"boolean"},messages:{value:{en:{average:"Average",calculation:"Calculation",center:"center",clear:"Clear",columns:"Columns",columnSettings:"Column settings",count:"Count",decimalPlaces:"Decimal places",decimalSeparator:"Decimal separator",details:"Details",dragHereRowGroups:"Drag here to set row groups",dragHereSummaries:"Drag here to set summaries",dragHerePivots:"Drag here to set pivots",fields:"Fields",filter:"Filter",filters:"Filters",grandTotal:"Grand Total",groupHeader:"Group",left:"left",moveTo:"Move to",negativesInBrackets:"Negatives in brackets",numberAlignment:"Number alignment",numberFormat:"Number format",numberPrefix:"Number prefix",notApplicable:"N/A",export:"Export to",pivots:"Pivots",right:"right",row:"Row",rowGroups:"Row Groups",sameSummaryFunctionRequired:'smartPivotTable: When "columnTotals" is enabled, all summary columns must have the same "summary" function set (e.g. \'{{example}}\').',search:"Search...",showRows:"Show records where:",sum:"Sum",summaries:"Summaries",summaryRequired:'smartPivotTable: At least one column with "summary" is required.',textAlignment:"Text alignment",total:"Total",thousandsSeparator:"Thousands separator",summaryPrefix:"of",previousButton:"Previous",itemsPerPage:"Items per page:",firstButton:"First",lastButton:"Last",nextButton:"Next"}},type:"object",extend:!0},nullDefaultValue:{value:null,type:"number?"},rowSort:{value:!1,type:"boolean"},rowSummary:{value:!0,type:"boolean"},rowTotals:{value:!1,type:"boolean"},rowTotalsPosition:{value:"near",allowedValues:["near","far"],type:"string"},selectionMode:{value:"many",type:"string",allowedValues:["many","extended","cell"]},toolbar:{value:!1,type:"boolean"}}}static get listeners(){return{resize:"_overriddenTableHandler","designerContainer.change":"_designerChangeHandler","designerContainer.clear":"_designerFilterHandler","designerContainer.filter":"_designerFilterHandler","fieldsButton.click":"_fieldsButtonClickHandler","tableContainer.change":"_overriddenTableHandler","tableContainer.keyup":"_overriddenTableHandler","tableContainer.touchmove":"_tableContainerTouchmoveHandler","toolbar.close":"_breadcrumbCloseHandler","toolbar.dragEnd":"_breadcrumbDragEndHandler","toolbar.dragging":"_breadcrumbDraggingHandler"}}template(){return'<div id="container" class="smart-container" role="presentation">\n <div id="toolbar" class="smart-pivot-table-toolbar" role="toolbar">\n <smart-breadcrumb id="rowGroupBreadcrumb" class="smart-pivot-table-row-group-breadcrumb" allow-drag allow-drop animation="[[animation]]" close-buttons right-to-left="[[rightToLeft]]" theme="[[theme]]"></smart-breadcrumb>\n <smart-breadcrumb id="pivotBreadcrumb" class="smart-pivot-table-pivot-breadcrumb" allow-drag allow-drop animation="[[animation]]" close-buttons right-to-left="[[rightToLeft]]" theme="[[theme]]"></smart-breadcrumb>\n <smart-button id="conditionalFormattingButton" class="smart-table-toolbar-button conditional-formatting" animation="[[animation]]" right-to-left="[[rightToLeft]]" theme="[[theme]]" aria-label="Conditional Formatting"></smart-button>\n <smart-button id="fieldsButton" class="smart-table-toolbar-button fields" animation="[[animation]]" right-to-left="[[rightToLeft]]" theme="[[theme]]" aria-label="Fields"></smart-button>\n </div>\n <div id="main" class="smart-pivot-table-main-container">\n <table id="tableContainer" class="smart-table-container"></table>\n </div>\n <smart-pager id="pager" animation="[[animation]]" locale="[[locale]]" page-index="[[pageIndex]]" page-size="[[pageSize]]" pages-count="null" show-first-last-navigation-buttons show-page-size-selector show-prev-next-navigation-buttons show-summary right-to-left="[[rightToLeft]]" theme="[[theme]]"></smart-pager>\n <div id="designerContainer" class="smart-pivot-table-designer-container"></div>\n </div>'}clearFilters(){const e=this;e._filterInfo.appliedFilters&&(e._clearSortByRow(!0),delete e._filterInfo.appliedFilters,e._clearDesignerFilters(),e.dataSource.clearFilter(),e.refresh(!0),e._originalDynamicColumnsOrder=e._dynamicColumns.map((e=>e.id)),e.$.fireEvent("filter",{action:"remove"}))}clearSelection(){const e=this;"cell"===e.selectionMode?e._clearCellSelection(!0):super.clearSelection()}exportData(e,t,a){const l=this,o=getComputedStyle(l),i=o.borderRightColor,r={hierarchical:!0},n={},s=l._dynamicColumns;let d=[];if(s&&0!==s.length){if(r.style={border:"1px solid "+i,borderCollapse:"collapse",backgroundColor:o.backgroundColor,color:o.color,fontFamily:"Helvetica",header:{border:"1px solid "+i,fontWeight:"bold"},columns:{border:"1px solid "+i}},-1!==["csv","json","tsv","xml"].indexOf(e)){for(let e=0;e<s.length;e++){const t=s[e];t.group?n[t.id]=t.label:n[t.id]=t.dataFields.map((e=>e.label)).join(" -> ")}d.push(n)}else{const e=[],t=[];for(let a=0;a<s.length;a++){const o=s[a],i=o.id,n={},d={};if(l._getColumnExportFormat(o,n,d),r.style.columns[i]=d,r.style.header[i]=n,o.group){n.width=1.25*l._cellWidth+"px",e.push({label:o.label,dataField:i});continue}n.width=l._cellWidth+"px";const c=o.dataFields,u={label:c[c.length-1].label,dataField:i};if(e.push(u),1!==c.length)for(let e=c.length-2;e>=0;e--){const a=c[e].label,l=c.slice(0,e+1).map((e=>e.label)).join("_").replace(/[ ,]/g,"_");if(e===c.length-2&&(u.columnGroup=l),t.find((e=>e.name===l)))continue;const o={label:a,name:l};c[e-1]&&(o.parentGroup=c[e-1].label.replace(/[ ,]/g,"_")),t.push(o)}}n.columns=e,n.columngroups=t,r.header=n}for(let t=0;t<l.rows.length;t++){const a=l.rows[t],o={};for(let t in a){if(-1!==["$","children","count","expanded","leaf","level","parent","sortOrder","tr"].indexOf(t))continue;if("id"===t){o._keyDataField=a.id;continue}if("parentid"===t){o._parentDataField=a.parentid;continue}const l=a[t];o[t]=null!==l?l:"pdf"===e?" ":""}!0!==a.leaf&&(o._expanded=!0===a.expanded),d.push(o)}return new Smart.Utilities.DataExporter(r).exportData(d,e,t,a)}}getDynamicColumns(){return this._dynamicColumns}getSelection(){const e=this;return"cell"===e.selectionMode?e._selectedCells.collection.map((e=>({dataField:e.dataField,rowId:e.rowData.$.id}))):super.getSelection()}select(e,t){const a=this;a.selection&&("cell"!==a.selectionMode?super.select(e):a._toggleCellSelectionProgrammatically(e,t,!0))}sortBy(e,t){const a=this;let l;if(e){let t=null;if(e.group&&(t=a._rowGroupColumns.find((t=>t.label===e.label?t:null))),!t&&(-1===a._dynamicColumns.indexOf(e)||0===a._rowGroupColumns.length))return;if(!1===e.dataFields[e.dataFields.length-1].originalColumn.allowSort)return;l=e.id}a._sortBy({column:e,columnDataField:l,sortOrder:t,dataFields:a._dynamicDataFields,columnByDataField:"_getDynamicColumnById"})}unselect(e,t){const a=this;a.selection&&("cell"!==a.selectionMode?super.unselect(e):a._toggleCellSelectionProgrammatically(e,t,!1))}propertyChangedHandler(e,t,a){const l=this;function o(){l._dynamicColumns.filter((e=>e.rowTotal)).forEach((e=>{delete l._getDynamicColumnById[e.id],l._dynamicDataFields=l._dynamicDataFields.filter((t=>t.name!==e.id))})),l._dynamicColumns=l._dynamicColumns.filter((e=>!0!==e.rowTotal))}switch(e){case"animation":case"rightToLeft":case"theme":super.propertyChangedHandler(e,t,a),l._designer&&(l._designer[e]=a,"rightToLeft"===e&&(l._designer.inverted=l.designer&&("near"===l.designerPosition&&!a||"far"===l.designerPosition&&a))),"rightToLeft"===e&&l.selection&&"cell"===l.selectionMode&&l._showSelectionDetails(!0);break;case"columns":l._conditionalFormatting&&delete l._conditionalFormatting,l._updateColumns(),l._formattingPanel&&(l._formattingPanel.columns=l._aggregateColumns.map((e=>({label:`${e.summary}(${e.label})`,dataField:e.dataField,dataType:"number"}))));break;case"columnTotals":l._clearSortByRow(!0),l.refresh(!0),l._originalDynamicColumnsOrder=l._dynamicColumns.map((e=>e.id));break;case"columnTotalsPosition":{if(!l.columnTotals)return;l._clearSortByRow(!0,!0),o();const e=l._dynamicColumns.filter((e=>e.columnTotal&&0===e.pivotLevel)),t=l._dynamicColumns.filter((e=>e.group)),i=[];!function e(t,l){for(let o=0;o<t.length;o++){const i=t[o];"far"===a&&i.columnTotal&&e(i.children,l),l.push(i),"near"===a&&i.columnTotal&&e(i.children,l)}}(e,i),t.push(...i),l._dynamicColumns=t,l._addRowTotalsDynamicColumnDefinitions(),l.refresh(void 0,l._getCurrentDataStructure()),l._originalDynamicColumnsOrder=l._dynamicColumns.map((e=>e.id));break}case"conditionalFormatting":l._applyInitialConditionalFormatting(l.rows),l.refresh(void 0,l._getCurrentDataStructure());break;case"dataSource":delete l._dataSourceSortedByDefault,delete l._filterInfo.appliedFilters,l._sortColumns=[],l._clearSortByRow(!0),l._clearDesignerFilters(),l._validateDataSource(),l.refresh(!0),l._dynamicColumns&&(l._originalDynamicColumnsOrder=l._dynamicColumns.map((e=>e.id)));break;case"designer":a&&(l._designer?(l._dialog&&l._dialog.classList.contains("fields")&&l._dialog.close(),l._designer.inverted="near"===l.designerPosition&&!l.rightToLeft||"far"===l.designerPosition&&l.rightToLeft,l.$.designerContainer.appendChild(l._designer)):l._initDesigner(l.$.designerContainer));break;case"designerPosition":l.designer&&(l._designer.inverted="near"===a&&!l.rightToLeft||"far"===a&&l.rightToLeft);break;case"disabled":case"unfocusable":case"keyboardNavigation":super.propertyChangedHandler(e,t,a),l._designer&&(l._designer.unfocusable=l.disabled||l.unfocusable||!l.keyboardNavigation);break;case"filtering":a||l.clearFilters();break;case"grandTotal":a?(l.footerRow="footer",l.freezeFooter=!0,l._createGrandTotalRow(l.rows.boundHierarchy,!0)):(l.footerRow=null,l.freezeFooter=!1,l.$.tableContainer.querySelector("tfoot").remove());break;case"groupLayout":l.refresh(!0);break;case"hideCellSelectionTooltip":if(!l.selection||"cell"!==l.selectionMode)return;if(a){const e=l.$.tableContainer.querySelector("[selection-detail]");e&&(e.removeAttribute("selection-detail"),e.removeAttribute("detail-position-x"),e.removeAttribute("detail-position-y"))}else l._showSelectionDetails();break;case"hideEmptyRows":l._rowGroupColumns.length>0&&l.refresh(!0,l._getCurrentDataStructure());break;case"locale":case"messages":if(super.propertyChangedHandler(e,t,a),l._rowGroupColumns){const e=l.$.tableContainer.querySelectorAll(".smart-pivot-table-grouping-header");e[e.length-1].innerHTML=l.localize("groupHeader")}l.columnTotals&&l._dynamicColumns.forEach((e=>{e.columnTotal&&(e.cell.textContent=`${l._totalSummaryFunction}(${l.localize("total")})`)})),l._designer&&(l._designer[e]=l[e]),l.selection&&"cell"===l.selectionMode&&l._showSelectionDetails();break;case"nullDefaultValue":l.refresh(!0,l._getCurrentDataStructure());break;case"rowSort":!a&&l._sortRow&&l._clearSortByRow();break;case"rowTotals":case"rowTotalsPosition":{if(0===l._pivotColumns.length||"rowTotalsPosition"===e&&!l.rowTotals)return;let t=!1;l._clearSortByRow(!0,!0),"rowTotals"===e?a?(t=!0,l._addRowTotalsDynamicColumnDefinitions()):o():"rowTotalsPosition"===e&&(o(),l._addRowTotalsDynamicColumnDefinitions()),l.refresh(t,l._getCurrentDataStructure()),l._originalDynamicColumnsOrder=l._dynamicColumns.map((e=>e.id));break}case"selection":{const e="cell"!==l.selectionMode;e&&l.refresh(void 0,l._getCurrentDataStructure()),a?(l.$.tableContainer.setAttribute("aria-multiselectable",!0),e?l._updateSelectAllState():(l._selectedCells.collection.forEach((e=>e.element.classList.add("selected"))),l._showSelectionDetails(),l.$.main.onscroll=l._mainContainerOnscroll.bind(l))):(l.$.tableContainer.removeAttribute("aria-multiselectable"),e||(l._clearCellSelection(),l.$.main.onscroll=null));break}case"selectionMode":if(super.propertyChangedHandler(e,t,a),"many"===t&&"extended"===a||"many"===a&&"extended"===t)return;"cell"===a?l._selectedIds=[]:l._selectedCells={collection:[]},l.selection&&(l.refresh(void 0,l._getCurrentDataStructure()),l.$.main.onscroll="cell"===a?l._mainContainerOnscroll.bind(l):null);break;default:super.propertyChangedHandler(e,t,a)}}_updateColumns(e){const t=this,a=t._filterInfo.appliedFilters;if(delete t._filterInfo.appliedFilters,t._sortColumns=[],t._clearSortByRow(!0),t._initColumns(),t._designerFiltersApplied)if(e){t._applyingDesignerFilters=!0,t._restoringFilters=!0;for(const e in a)t.addFilter(e,a[e]);delete t._applyingDesignerFilters,delete t._restoringFilters}else t._clearDesignerFilters();t.refresh(!0),t._originalDynamicColumnsOrder=t._dynamicColumns.map((e=>e.id))}_pagerChangeHandler(e){const t=this;(t.isInShadowDOM?e.composedPath()[0]:e.target)===t.$.pager&&(t.pageIndex=e.detail.index,t.refresh(!1,t._getCurrentDataStructure()),t.$.fireEvent("page",{action:"pageIndexChange"}))}_pagerPageSizeChanged(e){const t=this;t.pageSize=e.detail.value,t.refresh(!1,t._getCurrentDataStructure()),t.$.fireEvent("page",{action:"pageSizeChange"})}_createElement(){const e=this;e.classList.add("smart-table"),e._cellWidth=parseFloat(getComputedStyle(e.$.container).getPropertyValue("--smart-pivot-table-cell-width")),e._autoScrollCoefficient*=2,e._filterInfo={},e._selectedCells={collection:[]},e.$.header={offsetHeight:0},e.grandTotal&&(e.footerRow="footer",e.freezeFooter=!0),e.selection&&"cell"===e.selectionMode&&(e.$.main.onscroll=e._mainContainerOnscroll.bind(e)),e._setMainContainerMaxHeight(),e._localize(),e._validateDataSource(),e._initColumns(),e.refresh(!0),e.designer&&e._initDesigner(e.$.designerContainer),e._originalDynamicColumnsOrder=(e._dynamicColumns||[]).map((e=>e.id))}_setMainContainerMaxHeight(){const e=getComputedStyle(this.$.container).maxHeight;isNaN(parseFloat(e))||(this.$.main.style.maxHeight=`calc(${e} - 2 * var(--smart-border-width)`)}_validateDataSource(){const e=this,t=e.dataSource;if(!(t instanceof Smart.DataAdapter))if(Array.isArray(e.dataSource)){let a;if(t.length>0){const e=t[0];a=[];for(let t in e){const l=e[t];"number"==typeof l?a.push({name:t,dataType:"number"}):"boolean"==typeof l?a.push({name:t,dataType:"boolean"}):l instanceof Date?a.push({name:t,dataType:"date"}):a.push({name:t,dataType:"string"})}}e.dataSource=new Smart.DataAdapter({dataSource:e.dataSource,dataFields:a})}else e.dataSource=new Smart.DataAdapter({dataSource:[]})}_processPivotColumns(){const e=this,t=e.columnTotals,a=[],l=[],o=[],i=[],r=[];let n,s=e.dataSource;if(0===e._columns.length)return!1;for(let s=0;s<e._columns.length;s++){const d=e._columns[s];d.pivot&&d.allowPivot&&(a.push(d),i.push(d.dataField)),d.rowGroup&&d.allowRowGroup&&(l.push(d),r.push(d.dataField)),d.summary&&(o.push(d),n?t&&n!==d.summary&&e.error(e.localize("sameSummaryFunctionRequired",{example:n})):n=d.summary)}return 0===o.length&&e.error(e.localize("summaryRequired")),e._groupByPrimary=i,e._groupBySecondary=r,e._pivotColumns=a,e._rowGroupColumns=l,e._aggregateColumns=o,e._totalSummaryFunction=n,e.defaultSortByRowGroups&&!e._dataSourceSortedByDefault&&l.length>0&&(s=new Smart.DataAdapter({dataSource:e._defaultSortByRowGroups(s),dataFields:s.dataFields}),e.dataSource=s),s.groupBy=i,s.refreshHierarchy(),e._primaryHierarchy=s.boundHierarchy,e.$.rowGroupBreadcrumb.dataSource=l.map((e=>({label:e.label,value:e}))),e.$.pivotBreadcrumb.dataSource=a.map((e=>({label:e.label,value:e}))),!0}refresh(e,t){const a=this,l=a.isRendered;if(a.columns.canNotify=!1,l&&!t&&(a.$.tableContainer.innerHTML=""),t){const e=a.$.tableContainer.firstElementChild,l=document.createDocumentFragment();e.innerHTML="",a._createHeaderCells(t,l),e.appendChild(l)}else{if(!a._processPivotColumns())return;a._createHeader()}a._hideColumnTotalsBorder(),e&&(a._selectedCells={collection:[]},a._createAggregatesSource(),a._applyInitialConditionalFormatting(a.rows)),a._createDataRows(!t);const o=a._sortColumns;l&&(e||t)&&o&&(delete a._sortColumns,o.forEach((e=>{const t=a._getDynamicColumnById[e.dataField];t&&(delete t.sortOrder,a.sortBy(t,e.direction))}))),a.columns.canNotify=!0}_createHeader(){const e=this,t=e.columnTotals,a=e.columnTotalsPosition,l=document.createElement("thead"),o=document.createDocumentFragment(),i=e._pivotColumns.length,r=[];function n(a,l,o){if(t)for(let t=0;t<=i;t++)t<a?r[t].push(l[t]):t===a?r[t].push(o.label):t===i?r[t].push(`TL="${a}"${e._totalSummaryFunction}(${e.localize("total")})`):r[t].push("")}function s(a){const l=e._aggregateColumns;return t&&0===a&&r[0].push(`TL="0"${e._totalSummaryFunction}(${e.localize("total")})`),l.forEach((e=>{r[a].push(`${e.summary}(${e.label})`)})),l.length}for(let e=0;e<=i;e++)r.push([]);i>0?function t(l,o,i){let d=0;for(let c=0;c<l.length;c++){const u=l[c];let m=0;e._filterInfo.appliedFilters&&!e._areChildrenFiltered(void 0,u.children)||("near"===a&&n(o,i,u),u.children&&u.children.length>0&&!0!==u.children[0].leaf?m+=t(u.children,o+1,i.concat([u.label])):m+=s(o+1),"far"===a&&n(o,i,u),r[o].push(...Array(m).fill(u.label)),d+=m)}return d}(e._primaryHierarchy,0,[]):s(0),e._createDynamicColumnDefinitions(r),e._createHeaderCells(r,o),l.appendChild(o),e.$.tableContainer.appendChild(l)}_createDynamicColumnDefinitions(e){const t=this,a=e[e.length-1].length,l=[],o=[],i={};let r=-1;t._dynamicColumns=l,t._dynamicDataFields=o,t._getDynamicColumnById=i;for(let n=0;n<a;n++){const a=e[e.length-1][n];if(t._createTotalColumnDefinition(a,e,n))continue;const s={dataFields:[]},d=[];r++;for(let a=0;a<e.length-1;a++){const l=e[a][n],o=t._pivotColumns[a],i={originalColumn:o,label:l,dataField:o.dataField};s.dataFields.push(i),d.push(l),e[a][n]={label:l,columnDefinition:s,info:i}}const c=t._aggregateColumns[r%t._aggregateColumns.length],u={originalColumn:c,label:a,dataField:c.dataField,summary:c.summary};s.dataFields.push(u),d.push(c.dataField),e[e.length-1][n]={label:a,columnDefinition:s,info:u},s.id=d.join(",").replace(/[ ,]/g,"_"),l.push(s),o.push({name:s.id,dataType:"any"}),i[s.id]=s}if(t._rowGroupColumns.length>0){const e=t.localize("groupHeader"),a={dataFields:t._rowGroupColumns.map((t=>({originalColumn:t,label:e}))),id:"pivotgroup",label:e,group:!0};let r;l.unshift(a),i.pivotgroup=a;for(let e=0;e<a.dataFields.length&&(r=a.dataFields[e].originalColumn.dataType,"string"!==r);e++);o.push({name:"pivotgroup",dataType:r}),o.push({name:"count",dataType:"number"})}t._setColumnTotalsRelations(),t._addRowTotalsDynamicColumnDefinitions(),t.$.tableContainer.removeAttribute("aria-colcount")}_createTotalColumnDefinition(e,t,a){const l=this,o=/TL="(\d+)"/.exec(e);if(!o)return!1;const i=parseFloat(o[1]),r={dataFields:[]},n=[];e=e.replace(/TL="(\d+)"/,"");for(let e=0;e<t.length-1;e++){if(e>i){t[e][a]=Object.assign({},t[e-1][a],{label:""});continue}const o=t[e][a],s=l._pivotColumns[e],d={originalColumn:s,label:o,dataField:s.dataField};r.dataFields.push(d),n.push(o),t[e][a]={label:o,columnDefinition:r,info:d}}return n.push("TOTAL"),r.columnTotal=!0,r.emptyCells=[],r.expanded=!1,r.id=n.join(",").replace(/[ ,]/g,"_"),r.pivotLevel=i,t[t.length-1][a]={label:e,columnDefinition:r,info:{originalColumn:{},label:e,dataField:"TOTAL"}},l._dynamicColumns.push(r),l._dynamicDataFields.push({name:r.id,dataType:"any"}),l._getDynamicColumnById[r.id]=r,!0}_setColumnTotalsRelations(){const e=this;if(!e.columnTotals)return;const t=e._dynamicColumns;for(let a=0;a<e._dynamicColumns.length;a++){const l=e._dynamicColumns[a];if(!l.columnTotal)continue;const o=l.id.replace("_TOTAL","");let i;0===e._pivotColumns.length?(l.expanded=!0,i=t.filter((e=>{if(!e.columnTotal&&!e.group)return e.parent=l,!0}))):i=l.pivotLevel===e._pivotColumns.length-1?t.filter((e=>{if(!e.columnTotal&&0===e.id.indexOf(o))return e.parent=l,!0})):t.filter((e=>{if(e.columnTotal&&e.pivotLevel===l.pivotLevel+1&&0===e.id.indexOf(o))return e.parent=l,!0})),l.children=i}}_addRowTotalsDynamicColumnDefinitions(){const e=this;if(!e.rowTotals||0===e._pivotColumns.length)return;const t=[];e._aggregateColumns.forEach((a=>{const l=a.dataField,o="TOTAL_"+l,i={dataFields:[{originalColumn:a,label:`${a.summary}(${a.label})`,dataField:l,summary:a.summary}],id:o,rowTotal:!0};t.push(i),e._getDynamicColumnById[o]=i,e._dynamicDataFields.push({name:o,dataType:"any"})})),"near"===e.rowTotalsPosition?e._dynamicColumns.splice(0+Number(e._rowGroupColumns.length>0),0,...t):e._dynamicColumns.push(...t)}_createHeaderCells(e,t){const a=this,l=e[e.length-1].length,o=a.columnTotals,i=a.selection&&"cell"!==a.selectionMode,r=a.onColumnRender,n=a.rowTotalsPosition,s=a._rowGroupColumns.length>0,d=a._cellWidth;function c(t,a){if(0===a)return!0;let l=t,o=!1;for(;l>=0&&!o;){const t=e[l][a-1],i=e[l][a];o=t.label!==i.label||JSON.stringify(t.info)!==JSON.stringify(i.info),l--}return o}for(let u=0;u<e.length;u++){const m=document.createElement("tr"),p=e[u];if(i)if(u===e.length-1)m.innerHTML='<th class="smart-pivot-table-selection-header smart-table-select-all freeze-near"><div role="checkbox" aria-checked="false" aria-label="Toggle selection of all rows"></div></th>';else{const e=document.createElement("th");0===u&&(e.style.width=getComputedStyle(a.$.container).getPropertyValue("--smart-table-row-height")),e.classList.add("smart-pivot-table-selection-header","freeze-near"),m.appendChild(e)}s&&a._createGroupHeaderCells(u,e,m),"near"===n&&a._createRowTotalsHeaders(u,e,m);const g={};for(let t=0;t<l;t++){let i=p[t],n=i.label,s=i.columnDefinition;if(void 0===n)break;const f=document.createElement("th");if(c(u,t)){if(g.cell&&!o&&(g.span>1&&(g.cell.colSpan=g.span),0===u&&(g.cell.style.width=d*g.span+"px")),t===l-1&&0===u?o||(f.style.width=d+"px"):(g.cell=f,g.span=1),f.columnDefinition=s,s.columnTotal&&""===n)s.emptyCells.push(f),f.classList.add("empty");else if(r){const e={text:n,cell:f,column:i.info,fullDefinition:s};a.onColumnRender(e),n=e.text}u===e.length-1&&(a._addSortingCapability(f,s),n=`<div class="wrapper" role="presentation"><div class="label">${n}</div></div>`),i.info&&i.info.originalColumn&&i.info.originalColumn.align&&f.classList.add("align-"+i.info.originalColumn.align),f.innerHTML=n,o&&a._processColumnTotalsHeaderCells(f,s,u),m.appendChild(f)}else g.span++,t!==l-1||o||(g.cell.colSpan=g.span,0===u&&(g.cell.style.width=d*g.span+"px"))}"far"===n&&a._createRowTotalsHeaders(u,e,m),t.appendChild(m)}}_createGroupHeaderCells(e,t,a){const l=this,o="classic"===l.groupLayout,i=o?l._rowGroupColumns.length:1;for(let r=0;r<i;r++){const i=document.createElement("th");if(i.classList.add("smart-pivot-table-grouping-header"),e===t.length-1){const e=l._dynamicColumns[0];let t=o?e.dataFields[r].originalColumn.label:l.localize("groupHeader");if(l.onColumnRender){const a={text:t,cell:i,column:e.dataFields[0],fullDefinition:e};l.onColumnRender(a),t=a.text}if(0===r)l._addSortingCapability(i,e),t=`<div class="wrapper" role="presentation"><div class="label">${t}</div></div>`;else if(o&&l.enableSortByRowGroups){const a=JSON.parse(JSON.stringify(l._dynamicColumns[0]));a.dataFields=[],a.dataFields.push(e.dataFields[r]),a.headerCellElement=i,a.cell=i,a.id=e.dataFields[r].originalColumn.dataField,a.label=e.dataFields[r].originalColumn.label,l._getDynamicColumnById[a.id]=a,l._addSortingCapability(i,a),t=`<div class="wrapper" role="presentation"><div class="label">${t}</div></div>`}i.innerHTML=t}a.appendChild(i)}}_processColumnTotalsHeaderCells(e,t,a){const l=this,o=l.columnTotalsPosition;if(a<l._pivotColumns.length&&!e.classList.contains("empty")){const i=document.createElement("div");if(i.className="total-arrow smart-arrow smart-arrow-right",i.setAttribute("role","button"),i.setAttribute("aria-label","Toggle column"),!l.keyboardNavigation||l.disabled||l.unfocusable||(i.tabIndex=0),e.appendChild(i),"far"!==o||t.columnTotal)e.controller=t;else{let o=l._pivotColumns.length,i=t;for(;o>a;)i=i.parent,o--;e.controller=i}e.controller.arrowCell=e,l._getColumnTotalColspan(e)}const i=function e(t){return!!t.parent&&(!t.parent.expanded||e(t.parent))}(t);t.hidden=i,"near"===o?(e.classList.toggle("smart-hidden",i),e.classList.toggle("expanded",t.expanded)):(e.controller&&t!==e.controller||e.classList.toggle("smart-hidden",i),t.arrowCell&&t.arrowCell!==e&&(t.arrowCell.classList.toggle("smart-hidden",i),t.arrowCell.classList.toggle("expanded",t.expanded)))}_getColumnTotalColspan(e){const t=function e(t){let a=1;if(t.expanded)for(let l=0;l<t.children.length;l++){const o=t.children[l];o.columnTotal?a+=e(o):a+=1}return a}(e.controller);t>1?e.colSpan=t:e.removeAttribute("colspan"),e.style.width=this._cellWidth*t+"px"}_createRowTotalsHeaders(e,t,a){const l=this;if(l.rowTotals&&0!==l._pivotColumns.length)for(let o=0;o<l._aggregateColumns.length;o++){const i=l._getDynamicColumnById["TOTAL_"+l._aggregateColumns[o].dataField],r=document.createElement("th");if(r.classList.add("smart-pivot-table-total-header"),e===t.length-1){let e=i.dataFields[0].label;if(l.onColumnRender){const t={text:e,cell:r,column:i.dataFields[0],fullDefinition:i};l.onColumnRender(t),e=t.text}r.innerHTML=`<div class="wrapper" role="presentation"><div class="label">${e}</div></div>`,l._addSortingCapability(r,i)}a.appendChild(r)}}_createAggregatesSource(){const e=this,t=e.dataSource,a=e.hideEmptyRows,l=e.nullDefaultValue,o=e._aggregateColumns,i=[],r=[],n={id:0,totals:[]},s=[],d=e._selectedIds.slice(0);let c;e._cachedSecondaryHierarchy=null;for(let e=0;e<o.length;e++){const t=o[e],a={};a[t.dataField]=[t.summary],r.push(a)}function u(t,a){for(let l=e._groupByPrimary.length-1;l>=0;l--){const o=t[e._groupByPrimary[l]],i=a[e._groupByPrimary[l]];if(o instanceof Date){if(o.getTime()!==i.getTime())return!1}else if(o!==i)return!1}return!0}function m(a,l,o,i){if(0!==e._pivotColumns.length)for(let n=0;n<a.length;n++){const s=a[n];if(s.children&&s.children.length>0&&!0!==s.children[0].leaf)m(s.children,l,o,i.concat([s.label]));else{const a=l.children.filter((e=>!1!==e.$.filtered&&(!c||u(s.data,e))));if(0===a.length)continue;const n=i.concat([s.label]).filter((e=>void 0!==e)),d=t.summarize(r,a);e._setRowValue(o,n,d,a)}}else{const a=l.children.filter((e=>!1!==e.$.filtered));if(a.length>0){const l=t.summarize(r,a);e._setRowValue(o,i,l,a)}}}if(e._originalRecords={},e._cachedSecondaryHierarchy=null,0===e._rowGroupColumns.length?(function a(l,o){if(0!==e._pivotColumns.length)for(let i=0;i<l.length;i++){const s=l[i];if(s.children&&s.children.length>0){const l=o.concat([s.label]);if(!0!==s.children[0].leaf)a(s.children,l);else{const a=s.children.filter((e=>!1!==e.$.filtered));if(0===a.length)continue;const o=t.summarize(r,a);e._setRowValue(n,l,o,a)}}}else{const a=e.dataSource.toArray().filter((e=>!1!==e.$.filtered));if(0===a.length)return;const l=t.summarize(r,a);e._setRowValue(n,o,l,a)}}(e._primaryHierarchy,[]),i.push(n),s.push(n.id)):(c=e._groupByPrimary[e._groupByPrimary.length-1],function l(o,r,n){let d=e._getSecondaryHierarchy(o);if(r)for(let e=0;e<n.length;e++)d=d[n[e]].children;d.forEach(((d,c)=>{let u=d.children.length;if(e._filterInfo.appliedFilters&&(u=e._areChildrenFiltered(void 0,d.children),!1===d.data.$.filtered&&!u))return;const p={},g=new Smart.DataAdapter({dataSource:d.children,dataFields:t.dataFields,groupBy:e._groupByPrimary});if(r&&(p.parentid=r.id),p.id=(r?r.id:"")+d.label+o,p.level=o,p.totals=[],s.push(p.id),m(g.boundHierarchy||g,d,p,[]),a){let e=!0;for(const t in p){if(-1!==["children","count","expanded","pivotgroup","group","id","level","parent","parentid","totals","tr"].indexOf(t))continue;const a=p[t];if(0!==a&&null!==a){e=!1;break}}if(e)return void(r&&(r.hiddenChildren?r.hiddenChildren++:r.hiddenChildren=1))}i.push(p),o<e._groupBySecondary.length-1&&l(o+1,p,n.concat([c])),p.hiddenChildren&&(u-=p.hiddenChildren,delete p.hiddenChildren),p[e._dynamicColumns[0].id]=d.label,p.count=u}))}(0,void 0,[])),e._setRowTotalsSource(i,r),e._setColumnTotalsSource(i),null!==l)for(const t of i)for(const a of e._dynamicDataFields)void 0===t[a.name]&&(t[a.name]=l);if(e.rows=new Smart.DataAdapter({dataSource:i,id:"id",keyDataField:"id",parentDataField:"parentid",dataFields:e._dynamicDataFields}),!e.isRendered&&e.onInit&&e.onInit(),d.length>0){const t=[];for(let e=0;e<d.length;e++)-1!==s.indexOf(d[e])&&t.push(d[e]);e._selectedIds=t}delete e._selectionStart,e.selection&&"cell"!==e.selectionMode&&e._updateSelectAllState()}_setRowValue(e,t,a,l){const o=this;let i=[];o._aggregateColumns.forEach((r=>{const n=r.dataField,s=a[n][r.summary],d=t.concat([n]).join(",").replace(/[ ,]/g,"_");e[d]=s,o._originalRecords[e.id+d]=l,i.push({dataPoint:s})})),e.totals=e.totals.concat(l)}_setRowTotalsSource(e,t){const a=this;if(!a.rowTotals||0===a._pivotColumns.length)return;const l=new Smart.DataAdapter({dataSource:[],dataFields:a.dataSource._dataFields});for(let o=0;o<e.length;o++){const i=e[o],r=i.id,n=i.totals,s=l.summarize(t,n);for(let e in s)i["TOTAL_"+e]=Object.values(s[e])[0],a._originalRecords[r+"TOTAL_"+e]=n;delete i.totals}}_setColumnTotalsSource(e){const t=this;if(!t.columnTotals)return;const a=t._dynamicColumns.filter((e=>e.columnTotal)),l=new Smart.DataAdapter({dataSource:[],dataFields:[{name:"dataPoint"}]});for(let o=0;o<e.length;o++){const i=e[o],r=i.id;for(let e=0;e<a.length;e++){const o=a[e],n=t._getColumnTotalsOriginalRecords(o,r);0!==n.length&&(t._originalRecords[r+o.id]=n,i[o.id]=t._getTotalSummary(n,l))}}}_getTotalSummary(e,t){const a=[];return this._aggregateColumns.forEach((t=>{e.forEach((e=>{a.push({dataPoint:e[t.dataField]})}))})),t.summarize([{dataPoint:[this._totalSummaryFunction]}],a).dataPoint[this._totalSummaryFunction]}_getSecondaryHierarchy(e){const t=this,a=t.dataSource;return t._cachedSecondaryHierarchy&&t._cachedSecondaryHierarchy[e]?t._cachedSecondaryHierarchy[e]:(Array.isArray(a.groupBy)?a._groupBy=t._groupBySecondary.slice(0,e+1):(a._groupBy.canNotify=!1,a._groupBy=t._groupBySecondary.slice(0,e+1),a._groupBy.canNotify=!0),a.refreshHierarchy(),t._cachedSecondaryHierarchy||(t._cachedSecondaryHierarchy=[]),t._cachedSecondaryHierarchy[e]=a.boundHierarchy,a.boundHierarchy)}_createDataRows(e){const t=this;let a,l,o=t.rows.boundHierarchy,i=document.createDocumentFragment(),r={collection:[]},n=0,s=o.length,d=!1;if(t.paging&&o&&o.length>0){const e=t.pageSize;if(t._filterInfo.query||t._filterInfo.rowFilters||t._filterInfo.appliedFilters){let e=0;for(let t=0;t<s;t++)!1!==o[t].$.filtered&&e++;s=e,d=!0}const a=Math.max(Math.ceil(s/e),1);if(t.$.pager.pagesCount=a,t.$.pager.totalRecords=s,t.pageIndex=Math.max(Math.min(t.pageIndex,a-1),0),n=t.pageIndex*e,s=n+e,d){let e=-1,t=[];for(let a=0;a<o.length;a++){const l=o[a];if(l&&!1!==l.$.filtered){if(e++,e<n)continue;if(e>=s)break;t.push(l)}}o=t}else{let e=[];for(let t=n;t<s;t++){const a=o[t];a&&!1!==a.$.filtered&&e.push(a)}o=e}}o&&o.length>0&&("default"===t.groupLayout?t._createRowElements(o,i,r):(t._expanded=[],t._hidden={},t._rowGroupColumns.forEach(((e,a)=>{t._expanded.push([]),t._hidden[a]=!1})),t._createRowElementsClassic(o,i,r))),i.appendChild(t._createLastRow()),e?(a=document.createElement("tbody"),t.$.tableContainer.appendChild(a)):(a=t.$.tableContainer.querySelector("tbody"),a.innerHTML=""),a.appendChild(i),"classic"===t.groupLayout&&(t._updateGroupColumnsVisibility(),t._updateDisplayedRecordsVisibility(t.rows.boundHierarchy),t._updateDisplayedRecordsUIVisibility(t.rows.boundHierarchy)),t._createGrandTotalRow(o,e),t._selectedCells=r,t.selection&&"cell"===t.selectionMode&&(l=!0,t._showSelectionDetails()),t.getRootNode().activeElement===t.$.tableContainer&&(l&&r.start?super._focusCell(r.start.element):t._tableContainerFocusHandler())}_createRowElements(e,t,a){const l=this,o=l.selection&&"cell"!==l.selectionMode,i=l._dynamicColumns;for(let r=0;r<e.length;r++){const n=document.createElement("tr"),s=e[r],d=s.level;if(s.tr=n,n.data=s,o){const e=document.createElement("td"),t=-1!==l._selectedIds.indexOf(s.$.id);e.className="smart-table-select-row freeze-near"+(t?" selected":""),e.innerHTML=`<div class="selection-checkbox" role="checkbox" aria-checked="${t}" aria-label="Toggle row selection"></div>`,n.appendChild(e),n.setAttribute("aria-selected",t)}for(let e=0;e<i.length;e++){const t=document.createElement("td"),o=i[e],r=s[o.id];let c,u,m=r;if(l._restoreSelectedCells(t,o,s,m,a),0===e&&o.group){const e=s.leaf;c=o.dataFields[d].originalColumn,m=l._formatCellValue(s,c,t,m),l.rowSummary&&(m=`${m}<span class="group-label-count"> (${s.count})</span>`),e||(t.classList.add("tree-cell"),u=!0),d>0&&(t.classList.add("outline-level-"+d),e&&t.classList.add("tree-leaf")),c.align&&t.classList.add("align-"+c.align),s.sortOrder&&(t.classList.add("sort-by",s.sortOrder),t.setAttribute("aria-sort",s.sortOrder+"ending"))}else c=o.columnTotal?l._aggregateColumns[0]:o.dataFields[o.dataFields.length-1].originalColumn,m=l._formatSummaryValue(s,c,t,m);l.onCellRender&&l.onCellRender(s,o,r,t),l._applyConditionalFormattingToCell(t,o.id,s.$.index),t.setAttribute("data-field",o.id),t.classList.toggle("smart-hidden",!0===o.hidden),l._setCellContent(t,m,u),n.appendChild(t)}s.expanded&&(n.setAttribute("aria-expanded",!0),n.classList.add("expanded")),d>0&&l._isCollapsed(s)&&(n.setAttribute("aria-hidden",!0),n.classList.add("collapsed","smart-hidden")),n.setAttribute("row-id",s.$.id),t.appendChild(n),s.children&&s.children.length>0&&l._createRowElements(s.children,t,a)}}_restoreSelectedCells(e,t,a,l,o){const i=this._selectedCells;if(0===i.collection.length)return;if(!i.collection.find((e=>e.dataField===t.id&&e.rowData.$.id===a.$.id)))return;const r={dataField:t.id,element:e,row:a.tr,rowData:a,value:l};o.collection.push(r),r.dataField===i.start.dataField&&r.rowData.$.id===i.start.rowData.$.id&&(o.start=r),r.dataField===i.end.dataField&&r.rowData.$.id===i.end.rowData.$.id&&(o.end=r),this.selection&&e.classList.add("selected")}_createRowElementsClassic(e,t,a){const l=this,o=l.selection&&"cell"!==l.selectionMode,i=l._dynamicColumns;for(let r=0;r<e.length;r++){const n=e[r],s=n.level;if(s>0&&0===r){n.expanded&&l._expanded[s].push(n),n.children&&n.children.length>0&&l._createRowElementsClassic(n.children,t,a);continue}const d=document.createElement("tr");let c=l._getRecordToDisplay(n);if(n.tr=d,d.data=n,n.expanded&&(d.setAttribute("aria-expanded",!0),d.classList.add("expanded"),l._expanded[s].push(n)),s>0&&l._isCollapsed(n)&&(d.setAttribute("aria-hidden",!0),d.classList.add("collapsed","smart-hidden")),o){const e=document.createElement("td"),t=-1!==l._selectedIds.indexOf(n.$.id);e.className="smart-table-select-row freeze-near"+(t?" selected":""),e.innerHTML=`<div class="selection-checkbox" role="checkbox" aria-checked="${t}" aria-label="Toggle row selection"></div>`,d.appendChild(e),d.setAttribute("aria-selected",t)}for(let e=0;e<i.length;e++){const t=i[e];let o,r=n[t.id],s=r;if(0===e&&t.group){l._createGroupCellsClassic(d,n,t,r,a);continue}const u=document.createElement("td");r=c[t.id],s=r,l._restoreSelectedCells(u,t,n,s,a),o=t.columnTotal?l._aggregateColumns[0]:t.dataFields[t.dataFields.length-1].originalColumn,s=l._formatSummaryValue(c,o,u,s),l.onCellRender&&l.onCellRender(c,t,r,u),l._applyConditionalFormattingToCell(u,t.id,c.$.index),u.setAttribute("data-field",t.id),u.classList.toggle("smart-hidden",!0===t.hidden),l._setCellContent(u,s),d.appendChild(u)}d.setAttribute("row-id",n.$.id),t.appendChild(d),n.children&&n.children.length>0&&l._createRowElementsClassic(n.children,t,a)}}_updateGroupColumnsVisibility(){const e=this,t=e._expanded;function a(e){return!e.parent||!!e.parent.expanded&&a(e.parent)}if(!(t.length<2)){for(let l=0;l<t.length-1;l++){const o=t[l],i=l+1;let r=0;if(o.forEach((e=>r+=Number(a(e)))),0===r&&!e._hidden[i]||r>0&&e._hidden[i]||e._hidden[l]&&!e._hidden[i]){e._hidden[i]=!e._hidden[i];const t=Array.from(e.$.tableContainer.querySelectorAll(`.smart-pivot-table-grouping-header:nth-child(${i+1+Number(e.selection&&"cell"!==e.selectionMode)})`)).concat(Array.from(e.$.tableContainer.querySelectorAll(`td[data-field="group${i}"]`)));e._hidden[i]?t.forEach((e=>e.classList.add("smart-hidden"))):t.forEach((e=>e.classList.remove("smart-hidden")))}}if(e._focusedCell&&e._focusedCell.classList.contains("smart-hidden")&&-1!==e._focusedCell.getAttribute("data-field").indexOf("pivotgroup")){let t=e._focusedCell.previousElementSibling;for(;t.classList.contains("smart-hidden");)t=t.previousElementSibling;e._focusCell(t)}}}_getRecordToDisplay(e){return e.leaf||!e.expanded?e:this._getRecordToDisplay(e.children[0])}_getFirstChildAtLevel(e,t){let a=t.children[0];for(;a.children&&a.level!==e;)a=a.children[0];return a}_createGroupCellsClassic(e,t,a,l,o){const i=this,r=i._rowGroupColumns.length,n=t.level;for(let s=0;s<r;s++){const r=document.createElement("td");if(i._restoreSelectedCells(r,a,t,l,o),r.setAttribute("data-field","pivotgroup"+s),e.appendChild(r),s<n)continue;let d,c=t,u=a.dataFields[s].originalColumn;s>n?(c=i._getFirstChildAtLevel(s,t),l=c[a.id]):r.classList.add("main"),c.cell=r,c.sortOrder&&(r.classList.add("sort-by",c.sortOrder),r.setAttribute("aria-sort",c.sortOrder+"ending"));let m=l;m=i._formatCellValue(c,u,r,m),i.rowSummary&&(m=`${m}<span class="group-label-count"> (${c.count})</span>`),c.leaf||(r.data=c,d=!0,r.classList.add("tree-cell"),c.expanded&&r.classList.add("expanded","main")),u.align&&r.classList.add("align-"+u.align),i.onCellRender&&i.onCellRender(c,a,l,r),i._applyConditionalFormattingToCell(r,a.id,t.$.index),i._setCellContent(r,m,d)}}_createGrandTotalRow(e,t){const a=this;if(!a._rowGroupColumns)return;if(!a.grandTotal||0===a._rowGroupColumns.length||!e)return;const l=a.columnTotals,o=a._dynamicColumns,i=l?new Smart.DataAdapter({dataSource:[],dataFields:[{name:"dataPoint"}]}):void 0,r=document.createElement("tr"),n={grandTotal:!0};let s;function d(e){const t=[{}],o=e.dataFields[e.dataFields.length-1],i=o.dataField;return t[0][i]=[l?a._totalSummaryFunction:o.summary],t}if(a.selection&&"cell"!==a.selectionMode){const e=document.createElement("td");e.className="freeze-near",r.appendChild(e)}for(let t=0;t<o.length;t++){const l=document.createElement("td"),s=o[t];let c,u,m;if(0===t&&s.group)c=a.localize("grandTotal"),u=c,a._sortRow&&a._sortRow.grandTotal&&(n.sortOrder=a._sortRow.sortOrder,a._sortRow=n,l.classList.add("sort-by",n.sortOrder),l.setAttribute("aria-sort",n.sortOrder+"ending"));else{const t=s.columnTotal?a._aggregateColumns[0]:s.dataFields[s.dataFields.length-1].originalColumn;let o=[];for(let t=0;t<e.length;t++){const l=a._originalRecords[e[t].id+s.id];l&&(o=o.concat(l))}0!==o.length&&(s.columnTotal?(m=a._getTotalSummary(o,i),c=m):(m=a.rows.summarize(d(s),o),c=Object.values(Object.values(m)[0])[0]),a._originalRecords["GRAND_TOTAL"+s.id]=o),u=c,void 0!==m&&void 0!==u&&(u=a._formatSummaryValue(m,t,l,u))}if(a.onCellRender&&a.onCellRender(m,s,c,l),n[s.id]=void 0!==c?c:0,l.setAttribute("data-field",s.id),l.classList.toggle("smart-hidden",!0===s.hidden),a._setCellContent(l,u),r.appendChild(l),0===t&&s.group&&"classic"===a.groupLayout){l.setAttribute("data-field","pivotgroup0");for(let e=1;e<a._rowGroupColumns.length;e++){const t=document.createElement("td");t.setAttribute("data-field","pivotgroup"+e),a._hidden[e]&&t.classList.add("smart-hidden"),r.appendChild(t)}}}r.classList.add("grand-total"),r.data=n,t?(s=document.createElement("tfoot"),a.$.tableContainer.appendChild(s)):(s=a.$.tableContainer.querySelector("tfoot"),s.innerHTML=""),s.appendChild(r)}_updateGrandTotalRow(){const e=this;if(!e.grandTotal||0===e._rowGroupColumns.length)return;const t=e._dynamicColumns,a=e.querySelector("tfoot .grand-total");for(let l=0;l<t.length;l++){const o=t[l];if(0===l&&o.group&&"classic"===e.groupLayout)for(let t=1;t<e._rowGroupColumns.length;t++){const l=a.children[t];e._hidden[t]?l.classList.add("smart-hidden"):l.classList.remove("smart-hidden")}}}_formatSummaryValue(e,t,a,l){const o=this;let i=t.summarySettings;if(t.formatFunction||!i)return o._formatCellValue(e,t,a,l);if(i.align&&a.classList.add("align-"+i.align),isNaN(l)||""===l|null===l)return o._formatCellValue(e,t,a,l);let r=l;if(void 0!==i.decimalPlaces||void 0!==i.thousandsSeparator&&""!==i.thousandsSeparator||void 0!==i.decimalSeparator){const e=new Smart.Utilities.NumberRenderer(l);let t="F";void 0!==i.thousandsSeparator&&""!==i.thousandsSeparator&&(e.localizationObject.thousandsseparator=i.thousandsSeparator,t="N"),void 0!==i.decimalSeparator&&(e.localizationObject.decimalseparator=i.decimalSeparator),isNaN(i.decimalPlaces)&&(i.decimalPlaces=e.localizationObject.defaultPrecision),r=e.formatNumber(l,t+i.decimalPlaces)}return!0===i.negativesInBrackets&&l<0&&(r=`(${r.toString().replace("-","")})`),void 0!==i.prefix&&(r=i.prefix.toString()+r),o._formatCellValue(e,t,a,r)}_overriddenTableHandler(){}_hierarchyArrowClickHandler(e,t,a){const l=this;let o,i,r;function n(e){e.forEach((e=>{const t=e.children;l._expandSingleChildRow(e.tr),t&&e.expanded&&requestAnimationFrame((()=>n(t)))}))}if("classic"===l.groupLayout){for(t=t&&t.data?t:Array.from(e.querySelectorAll('td[data-field^="pivotgroup"]')).find((e=>e.data));!t.classList.contains("main")&&!t.previousElementSibling.classList.contains("expanded");)t=t.previousElementSibling;o=t.data;const a=o.level;r=o.children,i=!o.expanded,o.expanded=i,0===a?(e.setAttribute("aria-expanded",i),e.classList.toggle("expanded",i)):a>0&&o===o.parent.children[0]&&t.classList.toggle("main",i);let n=o.children[0],s=t.nextElementSibling;for(;n&&!n.leaf&&n.expanded;)s.classList.toggle("main",i),n=n.children[0],s=t.nextElementSibling;t.classList.toggle("expanded",i),i?l._expanded[a].push(o):l._expanded[a]=l._expanded[a].filter((e=>e!==o)),l._updateDisplayedRecord(o,e),l._updateGroupColumnsVisibility(),l._updateDisplayedRecordsVisibility(l.rows.boundHierarchy),l._updateDisplayedRecordsUIVisibility(l.rows.boundHierarchy),l._updateGrandTotalRow()}else o=e.data,r=o.children,i=!o.expanded,o.expanded=i,e.setAttribute("aria-expanded",i),e.classList.toggle("expanded",i);if(i?(requestAnimationFrame((()=>n(r))),l.$.fireEvent("expand",{record:o})):(function e(t){t.forEach((t=>{const a=t.children;l._collapseSingleChildRow(t.tr),a&&e(a)}))}(r),l.$.fireEvent("collapse",{record:o})),a&&"cell"===l.selectionMode){const e=l._selectedCells.collection;e.length>1&&(l._selectedCells.isDirty=!0),e.forEach(((t,a)=>{e[a]=l._getCellInfo(t.element)})),l._selectedCells.start&&(l._selectedCells.start=l._getCellInfo(l._selectedCells.start.element)),l._selectedCells.end&&(l._selectedCells.end=l._getCellInfo(l._selectedCells.end.element)),"none"!==l.animation?l.$.tableContainer.ontransitionend=function(){requestAnimationFrame(l._showSelectionDetails.bind(l)),l.$.tableContainer.ontransitionend=null}:requestAnimationFrame(l._showSelectionDetails.bind(l))}}_updateDisplayedRecord(e,t){const a=this;if("classic"!==a.groupLayout)return;const l=a._getRecordToDisplay(e);for(let e=0;e<a._dynamicColumns.length;e++){const o=a._dynamicColumns[e],i=o.id;if("pivotgroup"===i)continue;const r=t.querySelector('td[data-field="'+i+'"]'),n=o.columnTotal?a._aggregateColumns[0]:o.dataFields[o.dataFields.length-1].originalColumn;let s=l[o.id];s=a._formatSummaryValue(l,n,r,s),r.style.backgroundColor=null,r.style.color=null,r.style.fontFamily=null,r.style.fontSize=null,a._applyConditionalFormattingToCell(r,o.id,l.$.index),a._setCellContent(r,s)}}_updateDisplayedRecordsUIVisibility(e){const t=this;if("classic"!==t.groupLayout)return;const a=t._rowGroupColumns.length;for(let l=0;l<e.length;l++){const o=e[l];let i=t._getRecordToDisplay(o),r=i.tr;if((!r||r&&!r.parentNode)&&i.parent){r=i.parent.tr;let e=i.parent;for(;e&&(r=e.tr,!r);)e=e.parent}o.level>0&&a>1&&o.level<=a-1&&((()=>{let e=o.parent,t=e.expanded;for(;e;)!1===e.expanded&&(t=!1),e=e.parent;return t})()?r.children[o.level].style.color="":r.children[o.level].style.color="rgba(0,0,0,0)"),o.children&&o.children.length>0&&t._updateDisplayedRecordsUIVisibility(o.children)}}_updateDisplayedRecordsVisibility(e){const t=this;if("classic"!==t.groupLayout)return;const a=t._dynamicColumns;for(let l=0;l<e.length;l++){const o=e[l];if(o.level>0&&0===l){o.children&&o.children.length>0&&t._updateDisplayedRecordsVisibility(o.children);continue}let i=t._getRecordToDisplay(o),r=i.tr;if((!r||r&&!r.parentNode)&&i.parent){r=i.parent.tr;let e=i.parent;for(;e&&(r=e.tr,!r);)e=e.parent}for(let e=0;e<a.length;e++){const l=a[e];0===e&&l.group&&r&&t._updateGroupCellsClassic(r,o)}o.children&&o.children.length>0&&t._updateDisplayedRecordsVisibility(o.children)}}_updateGroupCellsClassic(e,t){const a=this,l=a._rowGroupColumns.length,o=t.level;for(let t=0;t<l;t++){const l=e.children[t];t<o||(a._hidden[t]?l.classList.add("smart-hidden"):l.classList.remove("smart-hidden"))}}_addSortingCapability(e,t){const a=this;t.cell=e,"pivotgroup"!==t.id&&e.setAttribute("data-field",t.id),0!==a._rowGroupColumns.length&&(t.headerCellElement=e,e.onclick=function(){const l=t.dataFields[t.dataFields.length-1].originalColumn;a.$.fireEvent("columnClick",{columnDefinition:t,dataField:l.dataField}),"none"===a.sortMode||!1===l.allowSort||a._preventClickSort||(a._addSortIconContainer(t),e.sortIconContainerElement.classList.contains("asc")?a.sortBy(t,"desc"):e.sortIconContainerElement.classList.contains("desc")?a.sortBy(t,null):a.sortBy(t,"asc"))})}_sortCallback(e,t,a){const l=this,o=l.rows;if(l._rowGroupColumns.length>0&&l.enableSortByRowGroups){const a=e[0],i=l._rowGroupColumns.find((e=>e.dataField===a?e:null));if(i){i.sortOrder=t[0];const e=l._rowGroupColumns.indexOf(i);for(let a=0;a<o.length;a++){const l=o[a];if(l.children.length>0&&l.level===e-1){const e=Smart.DataAdapter.Sort(l.children,["pivotgroup"],t);l.children=e}}return void l._createDataRows()}}o._sort(o.boundSource,e,t,a),o.refreshHierarchy(),l._createDataRows()}_selectAllCheckboxClickHandler(e){super._selectAllCheckboxClickHandler(e,this.rows)}_updateSelectAllState(){super._updateSelectAllState(this.rows.length)}_refreshFilters(e){const t=this,a=[];for(const e in t._filterInfo.appliedFilters){let l=t._filterInfo.appliedFilters[e];a.push([e,l])}0!==a.length?(t.dataSource._filter(a,t._applyingDesignerFilters?"and":"or"),t._applyingDesignerFilters||t.refresh(!0),t._restoringFilters&&t.$.fireEvent("filter",{action:e,filters:a})):t.clearFilters()}_areChildrenFiltered(e,t){if(1===arguments.length&&(t=e.children),!t||0===t.length)return;let a=0;for(let e=0;e<t.length;e++)!1===t[e].leaf?a+=this._areChildrenFiltered(void 0,t[e].children)?1:0:!1!==t[e].$.filtered&&a++;return a}_localize(){const e=this,t=e.$.pager;e.$.rowGroupBreadcrumb.placeholder=e.localize("dragHereRowGroups"),e.$.pivotBreadcrumb.placeholder=e.localize("dragHerePivots"),e.$.conditionalFormattingButton.setAttribute("tooltip",e.localize("conditionalFormatting")),e.$.fieldsButton.setAttribute("tooltip",e.localize("fields")),t.messages[e.locale]||(t.messages[e.locale]={}),t.messages[e.locale].pageSizeLabel=e.localize("itemsPerPage"),t.messages[e.locale].summaryPrefix=e.localize("summaryPrefix"),t.messages[e.locale].summarySuffix="",t.$.firstButton.setAttribute("tooltip",e.localize("firstButton")),t.$.previousButton.setAttribute("tooltip",e.localize("previousButton")),t.$.nextButton.setAttribute("tooltip",e.localize("nextButton")),t.$.lastButton.setAttribute("tooltip",e.localize("lastButton"))}_columnNotify(e){const t=this,a=e.propertyName,l=e.target;switch(a){case"allowFilter":{const a=t._designer;if(a&&a._filtersViewInitialized){const o=Array.from(a.$.filtersView.querySelectorAll("smart-filter-panel")).find((e=>e.column.dataField===l.dataField));o&&(!1===e.newValue?(o.closest("smart-accordion-item.filtered")&&(t._clearDesignerFilters(l.dataField),t._designerFilterHandler({target:o})),o.disabled=!0):o.disabled=!1)}break}case"allowPivot":if(!0!==l.pivot)return;break;case"allowRowGroup":if(!0!==l.rowGroup)return;break;case"pivot":if(!0!==l.allowPivot)return;break;case"rowGroup":if(!0!==l.allowRowGroup)return;break;case"summary":if(!e.newValue&&e.oldValue&&1===t._aggregateColumns.length||t.columnTotals&&e.newValue!==t._totalSummaryFunction)return void(l.summary=e.oldValue)}t._refreshColumns()}_refreshColumns(){const e=this;e._columns=e.columns._array,e.columnByDataField=[],e._columns.forEach((t=>e.columnByDataField[t.dataField]=t)),e.refresh(!0),e._designer&&(e._designer.columns=JSON.parse(JSON.stringify(e._columns)))}_initDesigner(e){const t=this,a=t.rightToLeft,l=document.createElement("smart-pivot-panel");l.animation=t.animation,l.columns=JSON.parse(JSON.stringify(t._columns)),l.dataSource=t.dataSource.toArray(),l.inverted=e===t.$.designerContainer&&("near"===t.designerPosition&&!a||"far"===t.designerPosition&&a),l.locale=t.locale,l.messages=t.messages,l.rightToLeft=a,l.theme=t.theme,l.unfocusable=!t.keyboardNavigation||t.disabled||t.unfocusable,l.ownerElement=t,t._designer=l,e&&e.appendChild(l)}_designerChangeHandler(e){const t=this;(t.isInShadowDOM?e.composedPath()[0]:e.target)instanceof Smart.PivotPanel!=0&&(t.columns=e.detail.columns,t._updateColumns(!0))}_designerFilterHandler(){const e=this,t=Array.from(e._designer.$.filtersView.querySelectorAll("smart-filter-panel")),a=[];if(t.forEach((e=>{const t=e.column,l=e.getFilter();l.filters.length>0&&a.push([t.dataField,l])})),e._filterInfo.appliedFilters){if(0===a.length)return void e.clearFilters();delete e._filterInfo.appliedFilters,e.dataSource.clearFilter()}e._applyingDesignerFilters=!0,a.forEach((t=>e.addFilter(...t))),delete e._applyingDesignerFilters,e.refresh(!0),e._designerFiltersApplied=!0}_clearDesignerFilters(e){const t=this;if(!t._designerFiltersApplied||t._applyingDesignerFilters)return;const a=t._designer,l=a.view,o=Array.from(a.$.filtersView.querySelectorAll("smart-filter-panel"));a.view="filters",o.forEach((t=>{e&&e!==t.column.dataField||(t._filterHandler.excelClear(),t.closest("smart-accordion-item").classList.remove("filtered"))})),a.view=l}_setFocusable(){const e=this,t=!e.keyboardNavigation||e.disabled||e.unfocusable;super._setFocusable(),e._designer&&(e._designer.unfocusable=t);const a=Array.from(e.$.tableContainer.getElementsByClassName("total-arrow"));t?a.forEach((e=>e.removeAttribute("tabindex"))):a.forEach((e=>e.setAttribute("tabindex",0)))}_addDragFeedback(){const e=this,t=e._dragDetails.Item,a=document.createElement("div");return a.className="smart-table-feedback",a.setAttribute("parent-table-id",e.id),a.innerHTML=t.columnDefinition.dataFields.map((e=>e.label)).join("→"),e.theme&&a.setAttribute("theme",e.theme),document.body.appendChild(a),a}_applyColumnReorder(e,t){const a=this,l=a.rightToLeft,o=a._dynamicColumns,i=e.Item.columnDefinition,r=t.classList.contains("right"),n=a._dynamicColumns.filter((e=>e!==i)),s=n.indexOf(t.columnDefinition);t.classList.remove("drop-column","left","right"),r&&!l||!r&&l?n.splice(s+1,0,i):n.splice(s,0,i),o.map((e=>e.id)).join(",")!==n.map((e=>e.id)).join(",")&&(a._clearSortByRow(!0),a._dynamicColumns=n,a.refresh(void 0,a._getCurrentDataStructure()))}_getCurrentDataStructure(){const e=this,t=e._dynamicColumns,a=[],l=`${e._totalSummaryFunction}(${e.localize("total")})`;let o=Number(e._rowGroupColumns.length>0),i=0;if(e.rowTotals&&e._pivotColumns.length>0){const t=e._aggregateColumns.length;"near"===e.rowTotalsPosition?o+=t:i=t}const r=t.find((e=>!e.rowTotal&&!e.columnTotal&&!e.group)).dataFields.length;for(let e=0;e<r;e++)for(let n=o;n<t.length-i;n++){void 0===a[e]&&(a[e]=[]);const o=t[n];if(o.columnTotal){const t=o.dataFields[e];e===r-1?a[e].push({label:l,columnDefinition:o,info:{dataField:"TOTAL",label:l,originalColumn:{}}}):t?a[e].push({label:t.label,columnDefinition:o,info:t}):a[e].push({label:"",columnDefinition:o,info:o.dataFields[e-1]})}else a[e].push({label:o.dataFields[e].label,columnDefinition:o,info:o.dataFields[e]})}return a}_breadcrumbCloseHandler(e){const t=this,a=t.columns.find((t=>t.dataField===e.detail.item.value.dataField));a&&((t.isInShadowDOM?e.composedPath()[0]:e.target===t.$.rowGroupBreadcrumb)?a.rowGroup=void 0:a.pivot=void 0)}_breadcrumbDragEndHandler(e){const t=this,a=t.isInShadowDOM?e.composedPath()[0]:e.target,l=a===t.$.rowGroupBreadcrumb,o=t._breadcrumbOperation;let i=t.columns.find((t=>t.dataField===e.detail.item.data.value.dataField));if("forbidden"===o)return void(a.dataSource=l?t._rowGroupColumns.map((e=>({label:e.label,value:e}))):t._pivotColumns.map((e=>({label:e.label,value:e}))));const r=t.columns;if("remove"!==o){if("reorder"===o){const a=e.detail.target;if(!a)return;const l=a.data.value;if(void 0===i||void 0===l||i.dataField===l.dataField)return;const o=e.detail.droppedBeforeTarget?"top":"bottom",n=r.findIndex((e=>e.dataField===i.dataField));let s=r.findIndex((e=>e.dataField===l.dataField));if(n>s&&"bottom"===o||n<s&&"top"===o)return;r.canNotify=!1,r.splice(n,1),s=r.findIndex((e=>e.dataField===l.dataField)),"bottom"===o?r.splice(s+1,0,i):r.splice(s,0,i),t.columns=r,r.canNotify=!0}else o instanceof HTMLElement&&(o.$.container.classList.remove("drop-target"),r.canNotify=!1,o===t.$.rowGroupBreadcrumb||t._designer&&o===t._designer.$.rowGroupsTree?(i.pivot=void 0,i.rowGroup=!0):t._designer&&o===t._designer.$.summariesTree?(i[l?"rowGroup":"pivot"]=void 0,i.summary=t._getDefaultSummaryFunction(i)):(o===t.$.pivotBreadcrumb||t._designer&&o===t._designer.$.pivotsTree)&&(i.rowGroup=void 0,i.pivot=!0),r.canNotify=!0);t._refreshColumns()}else l?i.rowGroup=void 0:i.pivot=void 0}_getDefaultSummaryFunction(e){const t=this;return t.columnTotals?t._totalSummaryFunction:t.getDefaultSummaryFunction?t.getDefaultSummaryFunction(e):"count"}_breadcrumbDraggingHandler(e){const t=this,a=t.isInShadowDOM?e.composedPath()[0]:e.target,l=a._dragDrop.dragDetails.feedback,o=e.detail.item.data.value,i=e.detail.originalEvent,r=t._isMobile?t.getRootNode().elementFromPoint(i.clientX,i.clientY):t.isInShadowDOM?i.composedPath()[0]:i.target;let n,s;if(l){if(l.classList.remove("cancel","delete","row-group","summary","pivot"),t._breadcrumbOperation&&t._breadcrumbOperation instanceof HTMLElement&&t._breadcrumbOperation.$.container.classList.remove("drop-target"),a.contains(r))s="reorder";else if(r===document)n="delete",s="remove";else{const e=t._designer;if(s=r.closest("smart-breadcrumb, smart-tree"),s&&s instanceof Smart.Breadcrumb)s===t.$.rowGroupBreadcrumb&&!o.allowRowGroup||s===t.$.pivotBreadcrumb&&!o.allowPivot?(n="cancel",s="forbidden"):n=s===t.$.rowGroupBreadcrumb?"row-group":"pivot";else if(s&&e&&s!==e.$.columnsTree)switch(s){case e.$.rowGroupsTree:a===t.$.rowGroupBreadcrumb?(n="row-group",s="forbidden"):o.allowRowGroup?n="row-group":(n="cancel",s="forbidden");break;case e.$.summariesTree:n="summary";break;case e.$.pivotsTree:a===t.$.pivotBreadcrumb?(n="pivot",s="forbidden"):o.allowPivot?n="pivot":(n="cancel",s="forbidden")}else n="delete",s="remove"}n&&l.classList.add(n),t._breadcrumbOperation=s,s instanceof HTMLElement&&s.$.container.classList.add("drop-target")}}_tableContainerClickHandler(e){const t=this,a=t.isInShadowDOM?e.composedPath()[0]:e.target;if(a.classList.contains("total-arrow"))t._totalArrowClickHandler(a);else{if(t.rowSort&&!a.classList.contains("hierarchy-arrow")){const e=a.closest('td[data-field^="pivotgroup"]');if(e){if("classic"===t.groupLayout&&(""===e.textContent||e.closest('td:not(.expanded)+td[data-field^="pivotgroup"]:not(.main), td.expanded:not(.main)+td[data-field^="pivotgroup"]:not(.main)')))return;return void t._sortByRow(e)}}super._tableContainerClickHandler(e)}}_tableContainerKeydownHandler(e){const t=this,a=t.getRootNode().activeElement;"Enter"===e.key&&a.classList.contains("total-arrow")?t._totalArrowClickHandler(a):"F2"===e.key&&t._focusedCell?t._drillDown({cell:t._focusedCell,dataField:t._focusedCell.getAttribute("data-field"),rowElement:t._focusedCell.parentElement}):super._tableContainerKeydownHandler(e)}_totalArrowClickHandler(e){const t=this,a=e.parentElement,l=a.controller;l.expanded?(l.expanded=!1,function e(a){if(a.children)for(let l=0;l<a.children.length;l++){const o=a.children[l];Array.from(t.$.tableContainer.querySelectorAll(`td[data-field="${o.id}"]`)).forEach((e=>e.classList.add("smart-hidden"))),e(o),o.hidden=!0,o.cell.classList.add("smart-hidden"),o.columnTotal&&(o.arrowCell.classList.add("smart-hidden"),o.emptyCells.forEach((e=>e.classList.add("smart-hidden"))))}}(l),t.$.fireEvent("collapseTotalColumn",{columnDefinition:l})):(l.expanded=!0,function e(a){if(a.children)for(let l=0;l<a.children.length;l++){const o=a.children[l];Array.from(t.$.tableContainer.querySelectorAll(`td[data-field="${o.id}"]`)).forEach((e=>e.classList.remove("smart-hidden"))),o.expanded&&e(o),o.hidden=!1,o.cell.classList.remove("smart-hidden"),o.columnTotal&&(o.arrowCell.classList.remove("smart-hidden"),o.emptyCells.forEach((e=>e.classList.remove("smart-hidden"))))}}(l),t.$.fireEvent("expandTotalColumn",{columnDefinition:l})),a.classList.toggle("expanded",l.expanded),function e(a){const l=a.controller;t._getColumnTotalColspan(a),l.parent&&e(l.parent.arrowCell)}(a),t._hideColumnTotalsBorder(),"cell"===t.selectionMode&&t._selectedCells.collection.length>1&&(t._selectedCells.isDirty=!0)}_hideColumnTotalsBorder(){if(!this.columnTotals)return;const e=this.$.tableContainer.firstElementChild;Array.from(e.querySelectorAll(".last-visible")).forEach((e=>e.classList.remove("last-visible")));for(let t=1;t<e.childElementCount;t++){const a=e.children[t].querySelectorAll("th:not(.smart-hidden)");a[a.length-1].classList.add("last-visible")}}_getColumnExportFormat(e,t,a){if(e.columnTotal)return;const l=e.dataFields[e.dataFields.length-1].originalColumn;if(l.align&&(e.group?a.textAlign=l.align:t.textAlign=l.align),e.group||!l.summarySettings)return;const o=l.summarySettings;let i="#.",r=!1;o.align&&(a.textAlign=o.align),void 0!==o.thousandsSeparator&&""!==o.thousandsSeparator&&(i="#"+o.thousandsSeparator+i,r=!0),void 0!==o.decimalPlaces&&(i+="0".repeat(o.decimalPlaces),r=!0),void 0!==o.prefix&&(i=o.prefix.toString()+i,r=!0),o.negativesInBrackets&&(i=`${i};(${i})`,r=!0),r&&(a.format=i)}_beginEdit(e){this._drillDown(e)}_drillDown(e){const t=this,a=e.dataField;if(/^group\d*$/g.test(a))return;const l=e.rowElement,o=e.cell,i=document.createElement("div"),r=document.createElement("smart-table"),n=t._dynamicColumns.find((e=>e.id===a)),s=[],d=JSON.parse(JSON.stringify(t._columns)),c=t.localize("total");let u,m,p,g,f=l.data;if(f&&!l.classList.contains("grand-total"))if("classic"===t.groupLayout&&(f=t._getRecordToDisplay(f)),u=f.$.id,f.group){for(m=[f.group.replace(/ \(\d+\)/,"")],g=f.parent;g;)m.push(g.group.replace(/ \(\d+\)/,"")),g=g.parent;m=m.reverse().join("→")}else if(f.pivotgroup){for(m=[f.pivotgroup.replace(/ \(\d+\)/,"")],g=f.parent;g;)m.push(g.pivotgroup.replace(/ \(\d+\)/,"")),g=g.parent;m=m.reverse().join("→")}else m=t.localize("notApplicable");else u="GRAND_TOTAL",m=t.localize("grandTotal");if(!n)return;if(n.rowTotal)s.push(c);else if(n.columnTotal){for(let e=0;e<=n.dataFields.length-1;e++)s.push(n.dataFields[e].label);s.push(c),p=`${t._totalSummaryFunction}(${c})`}else for(let e=0;e<n.dataFields.length;e++)s.push(n.dataFields[e].label);const h=t._originalRecords[u+n.id];if(h&&0!==h.length){if(i.innerHTML=`<div class="drill-down-details">\n <span>${t.localize("row")}:</span><strong>${m}</strong>\n <span>${t.localize("column")}</span><strong>${s.join("→")||t.localize("notApplicable")}</strong>\n <span>${p||n.dataFields[n.dataFields.length-1].label}:</span><strong>${o.textContent}</strong>\n </div>`,i.appendChild(r),""!==t.drillDownDataExport){const e=document.createElement("smart-button");e.innerHTML=t.localize("export")+" "+t.drillDownDataExport.toUpperCase(),e.onclick=()=>{r.exportData(t.drillDownDataExport,t.drillDownDataExportFileName)},i.appendChild(e)}d.forEach((e=>e.width=t._cellWidth)),r.columns=d,r.dataSource=new window.Smart.DataAdapter({dataSource:h,dataFields:t.dataSource._dataFields}),r.freezeHeader=!0,r.keyboardNavigation=t.keyboardNavigation,h&&h.length>100&&d&&d.length>10&&(r.virtualization=!0,r.style.height="100%",r.style.width="100%"),t.drillDownTableInit&&t.drillDownTableInit(r),t.drillDownCustomAction?t.drillDownCustomAction(h):t._openDialog(t.localize("details"),i,"drill-down")}}_getColumnTotalsOriginalRecords(e,t){const a=this;let l=[];for(let o=0;o<e.children.length;o++){const i=e.children[o];if(!i.columnTotal){const e=a._originalRecords[t+i.id];e&&(l=e);break}l=l.concat(a._getColumnTotalsOriginalRecords(i,t))}return l}_conditionalFormattingButtonClickHandler(e){const t=this._aggregateColumns.map((e=>({label:`${e.summary}(${e.label})`,dataField:e.dataField,dataType:"number"})));super._conditionalFormattingButtonClickHandler(e,t,this.rows)}_applyConditionalFormatting(){const e=this,t=e._conditionalFormatting;e._conditionalFormatting=e._formattingPanel.apply(),e.conditionalFormatting=e._formattingPanel.getItems(),e._conditionalFormatting!==t&&e.refresh(void 0,e._getCurrentDataStructure())}_fieldsButtonClickHandler(){const e=this;e._designer?e._designer.inverted=!1:e._initDesigner(),e._openDialog(e.localize("fields"),e._designer,"fields")}_addDialogHandlers(){const e=this,t=e._dialog;t.addEventListener("change",e._dialogEventHandler),t.addEventListener("clear",e._dialogEventHandler),t.addEventListener("filter",e._dialogEventHandler),super._addDialogHandlers()}_dialogEventHandler(e){const t=e.type;if(-1===["change","clear","filter"].indexOf(t))return void super._dialogEventHandler(e);const a=this.ownerElement;if(!(this.isInShadowDOM?e.composedPath()[0]:e.target).closest("smart-pivot-panel"))return;const l=a.context;a.context=a,"change"===t?a._designerChangeHandler(e):a._designerFilterHandler(e),a.context=l}_sortByRow(e){const t=this,a=t.columnTotalsPosition,l=t._originalDynamicColumnsOrder,o=e.parentElement,i=o.data;let r=i;function n(e){"asc"===r.sortOrder?e.sort((function(e,t){return e.value-t.value})):e.sort((function(e,t){return t.value-e.value}))}if("classic"===t.groupLayout&&(r=e.data?e.data:t._getRecordToDisplay(i)),r.sortOrder?"asc"===r.sortOrder?r.sortOrder="desc":delete r.sortOrder:r.sortOrder="asc",t._sortRow&&t._sortRow!==r&&delete t._sortRow.sortOrder,r.sortOrder){if(t.columnTotals){const e=[];if(function e(l,o){const i=[];for(const e of l)i.push({dynamicColumnName:e.id,value:r[e.id]});n(i);for(const l of i){const i=t._getDynamicColumnById[l.dynamicColumnName];"near"===a&&o.push(i),i.children&&e(i.children,o),"far"===a&&o.push(i)}}(t._dynamicColumns.filter((e=>e.columnTotal&&0===e.pivotLevel)),e),t._rowGroupColumns.length>0&&e.unshift(t._dynamicColumns[0]),t.rowTotals){const a=t._dynamicColumns.filter((e=>e.rowTotal));"near"===t.rowTotalsPosition?e.splice(1,0,...a):e.push(...a)}t._dynamicColumns=e}else{let e=[];Object.keys(r).filter((e=>-1===["$","children","count","expanded","pivotgroup","group","id","leaf","level","parent","parentid","sortOrder","tr"].indexOf(e))).forEach((t=>{e.push({dynamicColumnName:t,value:r[t]})})),n(e),t._dynamicColumns=t._dynamicColumns.sort((function(a,l){return a.group||a.rowTotal||l.group||l.rowTotal?t._dynamicColumns.indexOf(a)-t._dynamicColumns.indexOf(l):e.findIndex((e=>e.dynamicColumnName===a.id))-e.findIndex((e=>e.dynamicColumnName===l.id))}))}t._sortRow=r}else t._dynamicColumns=t._dynamicColumns.sort((function(e,t){return l.findIndex((t=>t===e.id))-l.findIndex((e=>e===t.id))})),delete t._sortRow;t.refresh(void 0,t._getCurrentDataStructure()),t._focusCell(t.$.tableContainer.querySelector(`tr[row-id="${o.getAttribute("row-id")}"] td[data-field="${e.getAttribute("data-field")}"]`))}_clearSortByRow(e,t){const a=this;if(!a._sortRow)return;if(delete a._sortRow.sortOrder,delete a._sortRow,e&&!t)return;const l=a._originalDynamicColumnsOrder;a._dynamicColumns=a._dynamicColumns.sort((function(e,t){return l.findIndex((t=>t===e.id))-l.findIndex((e=>e===t.id))})),e||a.refresh(void 0,a._getCurrentDataStructure())}_defaultSortByRowGroups(e){const t=this,a=t._rowGroupColumns,l=a.find((e=>-1!==e.dataField.toLowerCase().indexOf("month")&&"string"===e.dataType)),o=new Smart.DataAdapter({dataSource:e,dataFields:e.dataFields}),i=[],r=[],n=[];let s;if(a.forEach((e=>{const t=e.sortOrder?e.sortOrder:"asc";i.push(e.dataField),r.push(t),n.push(e.dataType)})),l){const e=new Intl.DateTimeFormat(t.locale,{month:"long"}),a=[0,1,2,3,4,5,6,7,8,9,10,11].map((t=>e.format(new Date(2e3,t,1))));s=function(e,t,i,r){e.sort((function(e,o){for(let n=0;n<t.length;n++){if(l.dataField===t[n])return a.indexOf(e.month)-a.indexOf(o.month);const s=r[n](e[t[n]],o[t[n]]);if(0===s){if(t[n+1])continue;return void 0!==e.$.index?(e.$.index-o.$.index)*("asc"===i[n]?1:-1):0}return s*("asc"===i[n]?1:-1)}}));for(let t=0;t<e.length;t++)o[t]=e[t]}}return o._sort(o.boundSource,i,r,n,s),t._dataSourceSortedByDefault=!0,o.toArray()}_tableContainerDownHandler(e){const t=this;if(super._tableContainerDownHandler(e),"cell"!==t.selectionMode)return;clearTimeout(t._mobileScrollTimeout),delete t._selectDrag;const a=(t.isInShadowDOM?e.originalEvent.composedPath()[0]:e.originalEvent.target).closest("tbody td[data-field]");if(!a)return;const l=t._selectedCells;if((e.ctrlKey||e.metaKey)&&l.collection.length>0){const e=l.collection.findIndex((e=>e.element===a));if(-1===e)a.classList.add("selected"),l.collection.push(t._getCellInfo(a));else{a.classList.remove("selected"),l.collection.splice(e,1);const t=l.start&&l.start.element===a,o=l.end&&l.end.element===a;(t||o)&&(delete l.start,delete l.end)}return l.collection.length>0&&(l.isDirty=!0),t._showSelectionDetails(),void t.$.fireEvent("change",{type:"interaction"})}if(e.shiftKey&&l.start)return void t._selectTo(e);const o=(new Date).getTime();let i;function r(){const e=l.collection.slice(0);l.collection.forEach((e=>e.element.classList.remove("selected"))),a.classList.add("selected"),delete l.isDirty,l.start=t._getCellInfo(a),l.end=l.start,l.collection=[l.start],l.time=o,t._selectDrag=!0,t._showSelectionDetails(),1===e.length&&e[0].element===a||t.$.fireEvent("change",{type:"interaction"})}t._isMobile&&(i=a.getBoundingClientRect()),t._isMobile?(clearTimeout(t._mobileScrollTimeout),t._mobileScrollTimeout=setTimeout((function(){const e=a.getBoundingClientRect();Math.abs(i.top-e.top)<5&&Math.abs(i.left-e.left)<5&&r()}),500)):r()}_getCellInfo(e){const t=this,a=e.parentElement,l=e.getAttribute("data-field");let o=a.data,i=o[l];return"classic"===this.groupLayout&&(o=t._getRecordToDisplay(o),i=/^group\d*$/.test(l)?o.group:o[l]),{dataField:l,element:e,row:a,rowData:o,value:i}}_documentMoveHandler(e){!this._selectDrag||e.ctrlKey||e.metaKey?super._documentMoveHandler(e):this._selectTo(e)}_selectTo(e){const t=this,a=t._selectedCells;let l;if(l=t._isMobile?t.getRootNode().elementFromPoint(e.originalEvent.clientX,e.originalEvent.clientY):t.isInShadowDOM?e.originalEvent.composedPath()[0]:e.originalEvent.target,!l)return;const o=l.closest("tbody td[data-field]");if(!o||o===a.end.element)return;a.collection.forEach((e=>e.element.classList.remove("selected"))),a.collection=[],a.end=t._getCellInfo(o);let i=Array.from(t.$.tableContainer.querySelectorAll("tbody>tr:not(.smart-hidden)")),r=i.indexOf(a.start.row),n=a.start.row===a.end.row?r:i.indexOf(a.end.row),s=t._getDynamicColumnsForCellSelection(),d=s.findIndex((e=>e.id===a.start.dataField)),c=a.start.dataField===a.end.dataField?d:s.findIndex((e=>e.id===a.end.dataField));for(let e=Math.min(r,n);e<=Math.max(r,n);e++){const t=i[e],l=t.data;for(let e=Math.min(d,c);e<=Math.max(d,c);e++){const o=s[e].id,i=t.querySelector(`td[data-field="${o}"]`);a.collection.push({dataField:o,element:i,row:t,rowData:l,value:l[o]}),i.classList.add("selected")}}t._showSelectionDetails(),t.$.fireEvent("change",{type:"interaction"}),"down"===e.type&&(t._selectDrag=!0,super._focusCell(a.start.element))}_getDynamicColumnsForCellSelection(){const e=this;let t=e._dynamicColumns.filter((e=>!0!==e.hidden));if(e._rowGroupColumns.length>0&&"classic"===e.groupLayout){const a=t.splice(0,1)[0];for(let l=e._rowGroupColumns.length-1;l>=0;l--)t.unshift(Object.assign({},a,{id:"pivotgroup"+l}))}return t}_tableContainerTouchmoveHandler(e){const t=this;t._selectDrag&&t._isMobile&&(t._isMobile&&(new Date).getTime()-t._selectedCells.time<500?delete t._selectDrag:(t.$.main.classList.add("prevent-scroll"),e.preventDefault()))}_showSelectionDetails(e){const t=this;if(t.hideCellSelectionTooltip)return;const a=t._selectedCells.collection,l=t.$.tableContainer.querySelector("[selection-detail]");let o;if(l&&(e&&(o=l.getAttribute("selection-detail")),l.removeAttribute("selection-detail"),l.removeAttribute("detail-position-x"),l.removeAttribute("detail-position-y")),!(a.length<=1)){if(void 0===o){let e=0,l=0;for(const t of a)null===t.value||/^group\d*$/.test(t.dataField)||(e++,l+=t.value);if(e<=1)return;let i=l/e;const r=t._aggregateColumns.find((e=>e.summarySettings));if(r){const e=document.createElement("td"),a={summarySettings:r.summarySettings};l=t._formatSummaryValue(void 0,a,e,l),i=t._formatSummaryValue(void 0,a,e,i)}o=`${t.localize("average")}: ${i}; ${t.localize("count")}: ${e}; ${t.localize("sum")}: ${l}`}t._positionTooltipOnLastVisible(a,o)}}_positionTooltipOnLastVisible(e,t){const a=this,l=a.rightToLeft,o=a._getDynamicColumnsForCellSelection(),i=a.getRootNode(),r=a.$.main,n=a.$.tableContainer,s=Array.from(n.children[1].querySelectorAll("tr:not(.smart-hidden):not(.last-visible)")),d=parseFloat(getComputedStyle(a).getPropertyValue("--smart-pivot-table-cell-width")),c=a.grandTotal?n.lastElementChild.offsetHeight:0,u=r.getBoundingClientRect(),m=u.left,p=u.top,g=r.clientWidth,f=r.clientHeight;let h=n.firstElementChild.offsetHeight,_=1,b=1,y=0;a.freezeHeader||(h=Math.max(0,h-r.scrollTop)),a._rowGroupColumns.length>0&&"classic"===a.groupLayout&&(l?(b=.7,y=Math.max(0,r.offsetWidth-g)):_=.7);const v=i.elementFromPoint(m-d*_+5,p+h+5),C=i.elementFromPoint(m+g+d*b-5,p+h+5);let w,S=i.elementFromPoint(m+5,p+h+5),T=i.elementFromPoint(m+g-5,p+h+5);if(v!==S?(S=i.elementFromPoint(m+d*_-5,p+h+5),w=i.elementFromPoint(m+d*_-5,p+f-c-a._rowHeight-5)):w=i.elementFromPoint(m+5,p+f-c-a._rowHeight-5),S||(S=s[0].querySelector("td:not(.smart-hidden)")),w&&"td"===w.tagName.toLowerCase()||(w=s[s.length-1].querySelector(`td[data-field="${S.getAttribute("data-field")}"]`)),C!==T&&(T=i.elementFromPoint(m+g-d*b+y,p+h+5)),!T){const e=s[0].querySelectorAll("td:not(.smart-hidden)");T=e[e.length-1]}const $=s.indexOf(S.parentElement),F=s.indexOf(w.parentElement);let D,x,L,A=o.findIndex((e=>e.id===S.getAttribute("data-field"))),E=o.findIndex((e=>e.id===T.getAttribute("data-field")));if(l){const e=A;A=E,E=e}for(const t of e){if(t.row.classList.contains("smart-hidden"))continue;let e,a;if(void 0===t.rowIndex?(e=s.indexOf(t.row),t.rowIndex=e):e=t.rowIndex,void 0===t.columnIndex?(a=o.findIndex((e=>e.id===t.dataField)),t.columnIndex=a):a=t.columnIndex,a>=A&&a<=E)if(e>=$&&e<=F){const l=D,o=x;(!D||D.temp||e>=D.rowIndex&&a>=D.columnIndex)&&(D=t),(!x||e>=x.rowIndex&&a<=x.columnIndex)&&(x=t),l&&l.temp&&delete l.temp,o&&o.temp&&delete o.temp}else e>F&&((!D||D.temp&&e<=D.rowIndex&&a>=D.columnIndex)&&(D=t,t.temp=!0),(!x||x.temp&&e<=D.rowIndex&&a<=x.columnIndex)&&(x=t,t.temp=!0))}D&&(Math.abs(D.columnIndex-A)>Math.abs(D.columnIndex-E)?(L=D,l||L.element.setAttribute("detail-position-x","right")):(L=x,l&&L.element.setAttribute("detail-position-x","right")),L.temp&&(L.element.setAttribute("detail-position-y","top"),delete L.temp),L.element.setAttribute("selection-detail",t))}_mainContainerOnscroll(){const e=this;e._selectedCells.collection.length>1&&e._showSelectionDetails(!0)}_focusCell(e,t,a){const l=this;if(!a||"cell"!==l.selectionMode||!l.selection)return void super._focusCell(e,t);const o=l._selectedCells,i=a&&a.shiftKey&&0===a.key.indexOf("Arrow");if(o.isDirty||!i||0===o.collection.length){if(!1===super._focusCell(e,t))return;o.collection.forEach((e=>e.element.classList.remove("selected"))),e.classList.add("selected"),o.start=l._getCellInfo(e),o.end=o.start,o.collection=[o.start],delete o.isDirty,l.$.fireEvent("change",{type:"interaction"})}else l._shiftArrowSelection(a);l._showSelectionDetails()}_shiftArrowSelection(e){const t=this,a=t._selectedCells,l=t._getDynamicColumnsForCellSelection(),o=e.key,i=Array.from(t.$.tableContainer.children[1].querySelectorAll("tr:not(.smart-hidden):not(.last-visible)")),r=i.indexOf(a.start.row),n=i.indexOf(a.end.row),s=l.findIndex((e=>e.id===a.start.dataField)),d=l.findIndex((e=>e.id===a.end.dataField));if("ArrowUp"===o||"ArrowDown"===o){if("ArrowUp"===o&&n<r||"ArrowDown"===o&&n>r||n===r){if("ArrowUp"===o&&0===n||"ArrowDown"===o&&n===i.length-1)return;const e=i[n+1*("ArrowUp"===o?-1:1)];for(let o=Math.min(s,d);o<=Math.max(s,d);o++){const i=e.querySelector(`td[data-field="${l[o].id}"]`),r=t._getCellInfo(i);a.end.dataField===r.dataField&&(a.end=r,super._focusCell(i,!0)),a.collection.push(r),i.classList.add("selected")}}else if("ArrowDown"===o&&n<r||"ArrowUp"===o&&n>r){const e=i[n+1*(n>r?-1:1)];a.collection.filter((e=>e.row===a.end.row)).forEach((e=>e.element.classList.remove("selected"))),a.collection=a.collection.filter((e=>e.row!==a.end.row));const t=a.collection.find((t=>t.row===e&&t.dataField===a.end.dataField));a.end=t,super._focusCell(t.element,!0)}}else{let e="ArrowRight",c="ArrowLeft";if(t.rightToLeft&&(e="ArrowLeft",c="ArrowRight"),o===c&&d<s||o===e&&d>s||d===s){if(o===c&&0===d||o===e&&d===l.length-1)return;const s=l[d+1*(o===c?-1:1)];for(let e=Math.min(r,n);e<=Math.max(r,n);e++){const l=i[e].querySelector(`td[data-field="${s.id}"]`),o=t._getCellInfo(l);a.end.row===o.row&&(a.end=o,super._focusCell(l,!0)),a.collection.push(o),l.classList.add("selected")}}else if(o===e&&d<s||o===c&&d>s){const e=l[d+1*(d>s?-1:1)];a.collection.filter((e=>e.dataField===a.end.dataField)).forEach((e=>e.element.classList.remove("selected"))),a.collection=a.collection.filter((e=>e.dataField!==a.end.dataField));const t=a.collection.find((t=>t.dataField===e.id&&t.row===a.end.row));a.end=t,super._focusCell(t.element,!0)}}t.$.fireEvent("change",{type:"interaction"})}_clearCellSelection(e){const t=this,a=t.$.tableContainer.querySelector("[selection-detail]");a&&(a.removeAttribute("selection-detail"),a.removeAttribute("detail-position-x"),a.removeAttribute("detail-position-y")),t._selectedCells.collection.forEach((e=>e.element.classList.remove("selected"))),e&&(t._selectedCells={collection:[]})}_toggleCellSelectionProgrammatically(e,t,a){const l=this,o=l._getDynamicColumnsForCellSelection(),i=l.rows.dataItemById[e];"pivotgroup"===t&&"classic"===l.groupLayout&&(t="pivotgroup0");const r=o.find((e=>e.id===t));if(!i||!r)return;const n=l._selectedCells,s=n.collection.find((e=>e.rowData.$.id===i.$.id&&e.dataField===t));if(a){if(s)return;const e=l.$.tableContainer.querySelector(`tr[row-id="${i.$.id}"]>td[data-field="${t}"]`),a=l._getCellInfo(e);e.classList.add("selected"),super._focusCell(e,!0),n.collection.push(a),1===n.collection.length?(n.start=a,n.end=a,delete n.isDirty):n.isDirty=!0}else{if(!s)return;const e=n.start&&n.start.rowData.$.id===i.$.id&&n.start.dataField===t,a=n.end&&n.end.rowData.$.id===i.$.id&&n.end.dataField===t;s.element.classList.remove("selected"),n.collection.splice(n.collection.indexOf(s),1),n.isDirty=!0,(e||a)&&(delete n.start,delete n.end)}l._showSelectionDetails(),l.$.fireEvent("change",{type:"programmatic"})}}),Smart("smart-pivot-panel",class extends Smart.BaseElement{static get properties(){return{columns:{value:[],type:"any",reflectToAttribute:!1},dataSource:{value:[],type:"any?",reflectToAttribute:!1},inverted:{value:!1,type:"boolean"},messages:{value:{en:{calculation:"Calculation",cancel:"Cancel",center:"center",clear:"Clear",columns:"Columns",columnSettings:"Column settings",decimalPlaces:"Decimal places",decimalSeparator:"Decimal separator",dragHereRowGroups:"Drag here to set row groups",dragHereSummaries:"Drag here to set summaries",dragHerePivots:"Drag here to set pivots",filter:"Filter",filters:"Filters",left:"left",moveTo:"Move to",negativesInBrackets:"Negatives in brackets",numberAlignment:"Number alignment",numberFormat:"Number format",numberPrefix:"Number prefix",ok:"OK",pivots:"Pivots",right:"right",rowGroups:"Row Groups",search:"Search...",showRows:"Show records where:",summaries:"Summaries",textAlignment:"Text alignment",thousandsSeparator:"Thousands separator"}},type:"object",extend:!0},view:{value:"columns",allowedValues:["columns","filters"],type:"string"}}}static get listeners(){return{keydown:"_keydownHandler","columnsView.click":"_settingsIconClickHandler","columnsView.dragEnd":"_dragEndHandler","columnsView.dragging":"_draggingHandler","filtersView.clear":"_filterPanelFilterHandler","filtersView.expanding":"_accordionItemExpandingHandler","filtersView.filter":"_filterPanelFilterHandler","summariesTree.dragStart":"_summariesTreeDragStartHandler","tabs.click":"_tabsClickHandler"}}template(){return'<div id="container" role="presentation">\n <div id="main" role="presentation">\n <div id="columnsView" class="smart-pivot-panel-columns-view" role="tabpanel">\n <div id="columns" class="smart-pivot-panel-columns-container" role="presentation">\n <smart-tree id="columnsTree" allow-drag allow-drop animation="[[animation]]" filterable selection-mode="zeroOrOne" right-to-left="[[rightToLeft]]" theme="[[theme]]" unfocusable="[[unfocusable]]" aria-label="Columns"></smart-tree>\n </div>\n <div id="rowGroups" class="smart-pivot-panel-active-columns" role="presentation">\n <div id="rowGroupsLabel" class="smart-pivot-panel-row-groups-label smart-pivot-panel-label"><span class="icon" aria-hidden="true"></span><span></span></div>\n <smart-tree id="rowGroupsTree" allow-drag allow-drop animation="[[animation]]" selection-mode="zeroOrOne" right-to-left="[[rightToLeft]]" theme="[[theme]]" unfocusable="[[unfocusable]]"></smart-tree>\n </div>\n <div id="summaries" class="smart-pivot-panel-active-columns" role="presentation">\n <div id="summariesLabel" class="smart-pivot-panel-summaries-label smart-pivot-panel-label"><span class="icon" aria-hidden="true"></span><span></span></div>\n <smart-tree id="summariesTree" allow-drag allow-drop animation="[[animation]]" selection-mode="zeroOrOne" right-to-left="[[rightToLeft]]" theme="[[theme]]" unfocusable="[[unfocusable]]"></smart-tree>\n </div>\n <div id="pivots" class="smart-pivot-panel-active-columns" role="presentation">\n <div id="pivotsLabel" class="smart-pivot-panel-pivots-label smart-pivot-panel-label"><span class="icon" aria-hidden="true"></span><span></span></div>\n <smart-tree id="pivotsTree" allow-drag allow-drop animation="[[animation]]" selection-mode="zeroOrOne" right-to-left="[[rightToLeft]]" theme="[[theme]]" unfocusable="[[unfocusable]]"></smart-tree>\n </div>\n </div>\n <div id="filtersView" class="smart-pivot-panel-filters-view" role="tabpanel"></div>\n </div>\n <div id="tabs" class="smart-pivot-panel-tabs smart-unselectable">\n <div id="columnsTab" class="smart-pivot-panel-tab-item" role="tab" aria-selected="false"><span class="icon" aria-hidden="true"></span><span></span></div>\n <div id="filtersTab" class="smart-pivot-panel-tab-item" role="tab" aria-selected="false"><span class="icon" aria-hidden="true"></span><span></span></div>\n </div>\n </div>'}render(){const e=this;e._isMobile=Smart.Utilities.Core.isMobile,e._initializedFilters={},e._cachedFilters={},e._setFocusable(),e._localize(),e._setAriaRelations(),e.dataSource instanceof Smart.DataAdapter&&(e.dataSource=e.dataSource.toArray()),"columns"===e.view?(e.$.columnsTab.classList.add("selected"),e.$.columnsTab.setAttribute("aria-selected",!0),e.$.filtersView.remove(),e._initializeColumnsView()):(e.$.filtersTab.classList.add("selected"),e.$.filtersTab.setAttribute("aria-selected",!0),e.$.columnsView.remove(),e._initializeFiltersView()),super.render()}attached(){const e=this;super.attached(),e.isCompleted&&e._dialog&&(e._addDialogHandlers(),e.getShadowRootOrBody().appendChild(e._dialog))}detached(){const e=this;if(super.detached(),!e._dialog)return;const t=e._dialog;t.removeEventListener("close",e._dialogCloseHandler),t.removeEventListener("click",e._dialogClickHandler),t.remove()}propertyChangedHandler(e,t,a){super.propertyChangedHandler(e,t,a);const l=this;switch(e){case"animation":case"disabled":case"rightToLeft":case"theme":case"unfocusable":"disabled"!==e&&"unfocusable"!==e||l._setFocusable(),l._columnsViewInitialized&&"filters"===l.view&&[l.$.columnsTree,l.$.rowGroupsTree,l.$.summariesTree,l.$.pivotsTree].forEach((t=>t[e]=a)),l._filtersViewInitialized&&(Array.from(l.$.filtersView.querySelectorAll("smart-filter-panel")).forEach((t=>t[e]=a)),"animation"!==e&&(l.$.filtersView.querySelector("smart-accordion")[e]=a)),l._dialog&&(Array.from(l._dialog.$.container.querySelectorAll(".editor, .ok, .cancel")).forEach((t=>t[e]=a)),l._dialog[e]=a);break;case"columns":case"dataSource":"dataSource"===e&&l.dataSource instanceof Smart.DataAdapter&&(l.dataSource=l.dataSource.toArray()),"columns"===e&&l._columnsViewInitialized&&(delete l._columnsViewInitialized,"columns"===l.view&&l._initializeColumnsView()),l._filtersViewInitialized&&("columns"!==e||t.map((e=>e.dataField)).join(",")!==a.map((e=>e.dataField)).join(",")?("columns"===e&&Array.from(l.$.filtersView.querySelectorAll("smart-accordion-item.filtered smart-filter-panel")).forEach((e=>{l._cachedFilters[e.column.dataField]=e.$.mainContainer.firstElementChild.selectedIndexes})),delete l._filtersViewInitialized,l._initializedFilters={},l.$.filtersView.innerHTML="","filters"===l.view&&l._initializeFiltersView()):"columns"===e&&Array.from(l.$.filtersView.querySelectorAll("smart-accordion-item, smart-filter-panel")).forEach((e=>{e.column=a.find((t=>t.dataField===e.column.dataField))})));break;case"locale":case"messages":{const e=Array.from(l.$.filtersView.querySelectorAll("smart-filter-panel")),t=l._dialog;l._localize(),e.forEach((e=>{e.messages.en.clear=l.localize("clear"),e.messages.en.filter=l.localize("filter"),e.messages.en.showRows=l.localize("showRows"),e.propertyChangedHandler("messages")})),t&&(t.close(),t.removeEventListener("close",l._dialogCloseHandler),t.removeEventListener("click",l._dialogClickHandler),t.remove(),delete l._dialog);break}case"view":l._tabsClickHandler({target:l.$[a+"Tab"]})}}_localize(){const e=this;e.$.columnsTab.children[1].innerHTML=e.localize("columns"),e.$.filtersTab.children[1].innerHTML=e.localize("filters"),e.$.columnsTree.filterInputPlaceholder=e.localize("search"),e.$.rowGroupsLabel.children[1].innerHTML=e.localize("rowGroups"),e.$.summariesLabel.children[1].innerHTML=e.localize("summaries"),e.$.pivotsLabel.children[1].innerHTML=e.localize("pivots")}_initializeColumnsView(){const e=this;e._columnsViewInitialized||(e._columnsViewInitialized=!0,e._createColumnItems())}_initializeFiltersView(){const e=this;if(e._filtersViewInitialized)return;const t=e.columns,a=document.createElement("smart-accordion");e._filtersViewInitialized=!0;for(let l=0;l<t.length;l++){const o=t[l],i=document.createElement("smart-accordion-item");i.label=o.label,i.column=o,0===l&&e._initFilterPanel(i),e._cachedFilters[o.dataField]&&i.classList.add("filtered"),a.appendChild(i)}a.animation="none",a.expandMode="single",a.rightToLeft=e.rightToLeft,a.theme=e.theme,a.unfocusable=e.unfocusable,e.$.filtersView.appendChild(a)}_initFilterPanel(e){const t=this,a=e.column,l=a.dataField;if(t._initializedFilters[l]){const t=e.querySelector("smart-filter-panel");return void(0===t._filterHandler.filterObject.filters.length&&t._filterHandler.tree.select("0"))}const o=document.createElement("smart-filter-panel"),i=a.dataType;o.animation=t.animation,o.column=a,o.disabled=!1===a.allowFilter,o.filterType="number"===i?"numeric":i,o.mode="excel",o.data=t.dataSource,o.dataField=l,o.messages.en.clear=t.localize("clear"),o.messages.en.filter=t.localize("filter"),o.messages.en.showRows=t.localize("showRows"),o.rightToLeft=t.rightToLeft,o.theme=t.theme,o.unfocusable=t.unfocusable,e.isRendered?e.$.contentContainer.appendChild(o):e.appendChild(o),t._initializedFilters[l]=!0,t._cachedFilters[l]&&o.whenRendered((function(){o.$.mainContainer.firstElementChild.selectedIndexes=t._cachedFilters[l],o._filterHandler.excelFilter(),delete t._cachedFilters[l]}))}_accordionItemExpandingHandler(e){const t=this.isInShadowDOM?e.composedPath()[0]:e.target;if(t instanceof Smart.Accordion==0)return;const a=t._items[e.detail.index];this._initFilterPanel(a)}_filterPanelFilterHandler(e){const t=(this.isInShadowDOM?e.composedPath()[0]:e.target).closest("smart-accordion-item");"clear"!==e.type||t.classList.contains("filtered")||e.stopPropagation(),t.classList.toggle("filtered","filter"===e.type)}_tabsClickHandler(e){const t=this,a=t.view,l=e.type&&t.isInShadowDOM?e.composedPath()[0]:e.target;if(t.$.columnsTab.contains(l)){if("columns"===a&&e.type)return;return t.view="columns",t.$.columnsTab.classList.add("selected"),t.$.columnsTab.setAttribute("aria-selected",!0),t.$.filtersTab.classList.remove("selected"),t.$.filtersTab.setAttribute("aria-selected",!1),t.$.filtersView.remove(),t.$.main.appendChild(t.$.columnsView),void t._initializeColumnsView()}if(t.$.filtersTab.contains(l)){if("filters"===a&&e.type)return;t.view="filters",t.$.filtersTab.classList.add("selected"),t.$.filtersTab.setAttribute("aria-selected",!0),t.$.columnsTab.classList.remove("selected"),t.$.columnsTab.setAttribute("aria-selected",!1),t.$.columnsView.remove(),t.$.main.appendChild(t.$.filtersView),t._initializeFiltersView()}}_createColumnItems(e){const t=this,a=t.columns,l=[],o=[],i=[],r=[];for(let t=0;t<a.length;t++){const n=a[t];n.allowPivot&&n.pivot&&l.push(n),n.allowRowGroup&&n.rowGroup&&o.push(n),n.summary&&i.push(n),!1!==e&&r.push({label:n.label,value:n})}function n(e,a){const l=[];for(let a=0;a<e.length;a++)l.push({label:t._getTreeItemLabel(e[a]),value:e[a]});a.dataSource=l}n(l,t.$.pivotsTree),n(o,t.$.rowGroupsTree),n(i,t.$.summariesTree),!1!==e&&(t.$.columnsTree.dataSource=r)}_summariesTreeDragStartHandler(e){const t=this.$.summariesTree;1===Object.keys(t.items).length&&e.preventDefault()}_draggingHandler(e){const t=this,a=e.detail.data.Feedback,l=e.detail.item.closest("smart-tree"),o=e.detail.originalEvent.originalEvent,i=t._isMobile?t.getRootNode().elementFromPoint(o.clientX,o.clientY):t.isInShadowDOM?o.composedPath()[0]:o.target,r=i.closest("smart-tree"),n=e.detail.item.value,s=t.ownerElement;if(t._breadcrumbTarget&&(t._breadcrumbTarget.$.container.classList.remove("drop-target"),delete t._breadcrumbTarget),s&&s.contains(i)){const e=i.closest("smart-breadcrumb");if(e)return a.classList.remove("forbidden"),e===s.$.rowGroupBreadcrumb?n.allowRowGroup?n.rowGroup||e.$.container.classList.add("drop-target"):a.classList.add("forbidden"):n.allowPivot?n.pivot||e.$.container.classList.add("drop-target"):a.classList.add("forbidden"),void(t._breadcrumbTarget=e)}l===t.$.columnsTree&&!r||r===t.$.rowGroupsTree&&!n.allowRowGroup||r===t.$.pivotsTree&&!n.allowPivot?a.classList.add("forbidden"):a.classList.remove("forbidden")}_dragEndHandler(e){const t=this,a=e.detail,l=a.previousContainer,o=a.container,i=a.item,r=t.columns.find((e=>e.dataField===i.value.dataField)),n=a.target,s=a.data.DropDetails?a.data.DropDetails.position:void 0;function d(){switch(o){case t.$.rowGroupsTree:return!!r.allowRowGroup&&(r.rowGroup=!0,!0);case t.$.summariesTree:return r.summary||(r.summary=t._getDefaultSummaryFunction(r)),!0;case t.$.pivotsTree:return!!r.allowPivot&&(r.pivot=!0,!0)}}function c(){const e=document.createElement("smart-tree-item");return e.label=t._getTreeItemLabel(r),e.value=r,e}function u(){if(l!==o)switch(l){case t.$.rowGroupsTree:delete r.rowGroup;break;case t.$.summariesTree:delete r.summary;break;case t.$.pivotsTree:delete r.pivot}}function m(){if(n.value)return t.columns.find((e=>e.dataField===n.value.dataField))}if(t._breadcrumbTarget)t._breadcrumbDropHandler(r,l);else{if(l===t.$.columnsTree){if(o instanceof Smart.Tree==0)return i.selected=!!(r.pivot||r.rowGroup||r.summary),void e.preventDefault();if(o===l){let e=!1;return(r.rowGroup&&Object.keys(t.$.rowGroupsTree.items).length>1||r.summary&&Object.keys(t.$.summariesTree.items).length>1||r.pivot&&Object.keys(t.$.pivotsTree.items).length>1)&&(e=!0),void requestAnimationFrame((()=>{const a=t.context;t.context=t,t.columns=t.$.columnsTree.dataSource.map((e=>e.value)),e&&(t._createColumnItems(!1),t.$.fireEvent("change",{columns:JSON.parse(JSON.stringify(t.columns))})),t.context=a}))}return Object.values(o._menuItems).find((e=>e.value===r))||(d()?(0===o.dataSource.length?o.insert({label:t._getTreeItemLabel(r),value:r}):("top"===s?o.addBefore(c(),n):o.addAfter(c(),n),t._reorder(r,m(),s)),t.$.fireEvent("change",{columns:JSON.parse(JSON.stringify(t.columns))})):i.selected=!!(r.pivot||r.rowGroup||r.summary)),void e.preventDefault()}if(o instanceof Smart.Tree==0||o===t.$.columnsTree)return u(),l.removeItem(i),t.$.fireEvent("change",{columns:JSON.parse(JSON.stringify(t.columns))}),void e.preventDefault();d()?(u(),t._reorder(r,m(),s),t.$.fireEvent("change",{columns:JSON.parse(JSON.stringify(t.columns))})):e.preventDefault()}}_reorder(e,t,a){const l=this,o=l.columns,i=o.indexOf(e);let r=o.indexOf(t);void 0===e||void 0===t||i>r&&"bottom"===a||i<r&&"top"===a||(o.splice(i,1),r=o.indexOf(t),"bottom"===a?o.splice(r+1,0,e):o.splice(r,0,e),l.columns=o,l.$.columnsTree.dataSource=o.map((e=>({label:e.label,value:e,selected:!!(e.pivot||e.rowGroup||e.summary)}))))}_breadcrumbDropHandler(e,t){const a=this,l=a._breadcrumbTarget,o=a.ownerElement,i=o.columns.find((t=>t.dataField===e.dataField)),r=a.context;function n(){switch(a.context=document,o.columns.canNotify=!1,t){case a.$.rowGroupsTree:i.rowGroup=void 0;break;case a.$.summariesTree:i.summary=void 0;break;case a.$.pivotsTree:i.pivot=void 0}}if(l.$.container.classList.remove("drop-target"),delete a._breadcrumbTarget,l===o.$.rowGroupBreadcrumb){if(!e.allowRowGroup||e.rowGroup)return;n(),i.rowGroup=!0}else{if(!e.allowPivot||e.pivot)return;n(),i.pivot=!0}o._refreshColumns(),a.context=r,o.columns.canNotify=!0}_getTreeItemLabel(e){return'<span class="settings-icon"></span>'+e.label}_settingsIconClickHandler(e){const t=this.isInShadowDOM?e.composedPath()[0]:e.target;t.classList.contains("settings-icon")&&this._openDialog(t.closest("smart-tree-item"))}_openDialog(e){const t=this;t._dialog||t._createDialog();const a=t._dialog,l=e.value,o=!!l.summary,i=Array.from(a.$.container.querySelectorAll(".editor"));let r=l.align||"left";if(t.$.container.setAttribute("modal",""),t._editedItem=e,a.classList.toggle("summary",o),a.setAttribute("aria-controls",e.id),i[0].value="",i[0].$.input.dataValue="",i[0].disabled=e.menu===t.$.summariesTree&&1===Object.keys(e.menu.items).length,i[1].value=t.localize(r),i[1].$.input.dataValue=r,o){let e=Object.assign({align:"left",prefix:"",decimalPlaces:0,thousandsSeparator:"",decimalSeparator:".",negativesInBrackets:!1},l.summarySettings||{});i[2].value=l.summary,i[2].disabled=t.ownerElement&&t.ownerElement.columnTotals,i[3].value=t.localize(e.align),i[3].$.input.dataValue=e.align,i[4].value=e.prefix,i[5].value=e.decimalPlaces.toString(),i[6].value=e.thousandsSeparator,i[7].value=e.decimalSeparator,i[8].checked=e.negativesInBrackets}a.open()}_createDialog(){const e=this,t=e.id,a=document.createElement("smart-window"),l=document.createElement("template"),o=` animation=${e.animation} theme="${e.theme}"${e.rightToLeft?" right-to-left":""}${e.unfocusable?" unfocusable":""}`;l.innerHTML=`<smart-button class="ok primary"${o}>${e.localize("ok")}</smart-button>\n<smart-button class="cancel"${o}>${e.localize("cancel")}</smart-button>`;const i=JSON.stringify([{label:e.localize("columns"),value:"columns"},{label:e.localize("rowGroups"),value:"rowGroups"},{label:e.localize("summaries"),value:"summaries"},{label:e.localize("pivots"),value:"pivots"}]),r=JSON.stringify([{label:e.localize("left"),value:"left"},{label:e.localize("center"),value:"center"},{label:e.localize("right"),value:"right"}]),n=JSON.stringify(["min","max","sum","avg","stdev","stdevp","var","varp","product","count","median"]);a.animation=e.animation,a.footerTemplate=l,a.headerButtons=["close"],a.label=e.localize("columnSettings"),a.rightToLeft=e.rightToLeft,a.theme=e.theme,a.unfocusable=e.unfocusable,a.className="smart-pivot-window",a.innerHTML=`<div id="${t}MoveToLabel" class="label">${e.localize("moveTo")}</div>\n <div><smart-input class="editor underlined move-to"${o} data-source='${i}' drop-down-button-position="right" readonly aria-labelledby="${t}MoveToLabel"></smart-input></div>\n <div id="${t}TextAlignmentLabel" class="label">${e.localize("textAlignment")}</div>\n <div><smart-input class="editor underlined text-alignment"${o} data-source='${r}' drop-down-button-position="right" readonly aria-labelledby="${t}TextAlignmentLabel"></smart-input></div>\n <div id="${t}CalculationLabel" class="label summary">${e.localize("calculation")}</div>\n <div class="summary"><smart-input class="editor underlined calculation"${o} data-source='${n}' drop-down-button-position="right" readonly aria-labelledby="${t}CalculationLabel"></smart-input></div>\n <div class="label category summary">${e.localize("numberFormat")}</div>\n <div id="${t}NumberAlignmentLabel" class="label summary">${e.localize("numberAlignment")}</div>\n <div class="summary"><smart-input class="editor underlined number-alignment"${o} data-source='${r}' drop-down-button-position="right" readonly aria-labelledby="${t}NumberAlignmentLabel"></smart-input></div>\n <div id="${t}NumberPrefixLabel" class="label summary">${e.localize("numberPrefix")}</div>\n <div class="summary"><smart-input class="editor underlined number-prefix"${o} aria-labelledby="${t}NumberPrefixLabel"></smart-input></div>\n <div id="${t}DecimalPlacesLabel" class="label summary">${e.localize("decimalPlaces")}</div>\n <div class="summary"><smart-input class="editor underlined decimal-places"${o} aria-labelledby="${t}DecimalPlacesLabel"></smart-input></div>\n <div id="${t}ThousandsSeparatorLabel" class="label summary">${e.localize("thousandsSeparator")}</div>\n <div class="summary"><smart-input class="editor underlined thousands-separator"${o} aria-labelledby="${t}ThousandsSeparatorLabel"></smart-input></div>\n <div id="${t}DecimalSeparatorLabel" class="label summary">${e.localize("decimalSeparator")}</div>\n <div class="summary"><smart-input class="editor underlined decimal-separator"${o} aria-labelledby="${t}DecimalSeparatorLabel"></smart-input></div>\n <div id="${t}NegativesInBracketsLabel" class="label summary">${e.localize("negativesInBrackets")}</div>\n <div class="summary"><smart-check-box class="editor"${o} aria-labelledby="${t}NegativesInBracketsLabel"></smart-check-box></div>`,a.ownerElement=e,e._dialog=a,e._addDialogHandlers(),e.getShadowRootOrBody().appendChild(a),e.setAttribute("aria-owns",a.id)}_addDialogHandlers(){const e=this,t=e._dialog;t.addEventListener("close",e._dialogCloseHandler),t.addEventListener("click",e._dialogClickHandler)}_dialogClickHandler(e){const t=this,a=t.isInShadowDOM?e.composedPath()[0]:e.target;a.closest(".ok")?(t.ok=!0,t.close()):a.closest(".cancel")&&t.close()}_dialogCloseHandler(e){const t=this.ownerElement,a=t._dialog,l=t.context;if((a.isInShadowDOM?e.composedPath()[0]:e.target)!==a)return;const o=t._editedItem;if(t.context=t,t.$.container.removeAttribute("modal"),o.menu.focus(),a.ok){const e=o.value,l=Array.from(a.$.container.querySelectorAll(".editor")),i=l[0].$.input.dataValue,r=l[1].$.input.dataValue;let n=!1,s=!1;if(i&&!("rowGroups"===i&&(e.rowGroup||!e.allowRowGroup)||"summaries"===i&&e.summary||"pivots"===i&&(e.pivot||!e.allowPivot))){const a=o.menu;let l;switch(a.removeItem(o.path),a){case t.$.rowGroupsTree:delete e.rowGroup;break;case t.$.summariesTree:delete e.summary;break;case t.$.pivotsTree:delete e.pivot}switch(i){case"rowGroups":l=t.$.rowGroupsTree,e.rowGroup=!0;break;case"summaries":l=t.$.summariesTree,e.summary=t._getDefaultSummaryFunction(e),s=!0;break;case"pivots":l=t.$.pivotsTree,e.pivot=!0}if(l){const a=document.createElement("smart-tree-item");a.label=t._getTreeItemLabel(e),a.value=e,l.addTo(a),a.previousElementSibling&&t._reorder(e,a.previousElementSibling.value,"bottom")}n=!0}if((!e.align&&"left"!==r||e.align&&e.align!==r)&&(e.align=r,n=!0),e.summary&&!s){const t={align:"left",prefix:"",decimalPlaces:0,thousandsSeparator:"",decimalSeparator:".",negativesInBrackets:!1},a=e.summarySettings,o={align:l[3].$.input.dataValue,prefix:l[4].value,decimalPlaces:parseFloat(l[5].value),thousandsSeparator:l[6].value,decimalSeparator:l[7].value,negativesInBrackets:l[8].checked},i=l[2].value;if(isNaN(o.decimalPlaces)&&(o.decimalPlaces=a?a.decimalPlaces:0),i!==e.summary&&(e.summary=i,n=!0),a){const l=Object.assign({},t,a);Object.keys(l).forEach((t=>{l[t]!==o[t]&&(e.summarySettings[t]=o[t],n=!0)}))}else JSON.stringify(t)!==JSON.stringify(o)&&(e.summarySettings=o,n=!0)}delete a.ok,n&&t.$.fireEvent("change",{columns:JSON.parse(JSON.stringify(t.columns))})}delete t._editedItem,t.context=l}_setFocusable(){const e=this;if(e.disabled||e.unfocusable)return e.$.columnsTab.removeAttribute("tabindex"),void e.$.filtersTab.removeAttribute("tabindex");const t=e.$.columnsTab.getAttribute("tabindex");(null===t||t<0)&&(e.$.columnsTab.setAttribute("tabindex",0),e.$.filtersTab.setAttribute("tabindex",0))}_keydownHandler(e){const t=this,a=e.key,l=t.getRootNode().activeElement;if("Enter"!==a&&" "!==a||l!==t.$.columnsTab&&l!==t.$.filtersTab){if("Enter"===a&&-1!==[t.$.rowGroupsTree,t.$.summariesTree,t.$.pivotsTree].indexOf(l)){const e=l.querySelector("[focus]");e&&this._openDialog(e)}}else t._tabsClickHandler({target:l})}_getDefaultSummaryFunction(e){const t=this.ownerElement;return t&&t._getDefaultSummaryFunction?t._getDefaultSummaryFunction(e):"count"}_setAriaRelations(){const e=this,t=e.id;e.setAttribute("role","tablist"),e.$.columnsView.id=t+"ColumnsView",e.$.columnsTab.id=t+"columnsTab",e.$.columnsTab.setAttribute("aria-controls",e.$.columnsView.id),e.$.columnsView.setAttribute("aria-labelledby",e.$.columnsTab.id),e.$.filtersView.id=t+"FiltersView",e.$.filtersTab.id=t+"FiltersTab",e.$.filtersTab.setAttribute("aria-controls",e.$.filtersView.id),e.$.filtersView.setAttribute("aria-labelledby",e.$.filtersTab.id),e.$.rowGroupsLabel.id=t+"RowGroupsLabel",e.$.rowGroupsTree.setAttribute("aria-labelledby",e.$.rowGroupsLabel.id),e.$.summariesLabel.id=t+"SummariesLabel",e.$.summariesTree.setAttribute("aria-labelledby",e.$.summariesLabel.id),e.$.pivotsLabel.id=t+"PivotsLabel",e.$.pivotsTree.setAttribute("aria-labelledby",e.$.pivotsLabel.id)}});