UNPKG

smart-webcomponents-react

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-00JS8f7.svg)](https://jqwidgets.com/license/)

6 lines (4 loc) 102 kB
/* Smart UI v23.0.8 (2025-05-13) Copyright (c) 2011-2024 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?o.length:0,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&&!(t&&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(){}expandAllRows(){const e=this;if(e._isExpandCollapseForbidden())return;e.beginUpdate();const t=e["smart-table"===e.nodeName.toLowerCase()?"dataSource":"rows"].boundHierarchy;if(e._collapsedIds=[],t)for(let a=0;a<t.length;a++){const l=t[a],o=t=>{if(!t.leaf&&(t.expanded=!0,e._expandCollapse(t.tr,null,!0),e._expandedIds.push(t.$.id),e._expandedIdsAlt[t.$.id]=!0,t.children))for(let a=0;a<t.children.length;a++){const l=t.children[a];o(l),e._expandCollapse(l.tr,null,!0)}};o(l)}e.endUpdate(),e._updateGroupColumnsVisibility(),e._updateDisplayedRecordsVisibility(e.rows.boundHierarchy),e._updateDisplayedRecordsUIVisibility(e.rows.boundHierarchy),e._updateGrandTotalRow()}_expandCollapse(e,t,a){const l=this;let o,i;const r=l.animation;function n(e){e.forEach((e=>{const t=e.children;l._expandSingleChildRow(e.tr),t&&e.expanded&&requestAnimationFrame((()=>n(t)))}))}if(l.animation="none","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 r=o.level;i=o.children,o.expanded=a,0===r?(e.setAttribute("aria-expanded",a),e.classList.toggle("expanded",a)):r>0&&o===o.parent.children[0]&&t.classList.toggle("main",a);let n=o.children[0],s=t.nextElementSibling;for(;n&&!n.leaf&&n.expanded;)s.classList.toggle("main",a),n=n.children[0],s=t.nextElementSibling;t.classList.toggle("expanded",a),a?l._expanded[r].push(o):l._expanded[r]=l._expanded[r].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,i=o.children,o.expanded=a,e.setAttribute("aria-expanded",a),e.classList.toggle("expanded",a);a?(requestAnimationFrame((()=>n(i))),l.$.fireEvent("expand",{record:o})):(function e(t){t.forEach((t=>{const a=t.children;l._collapseSingleChildRow(t.tr),a&&e(a)}))}(i),l.$.fireEvent("collapse",{record:o})),setTimeout((()=>{l.animation=r}),100)}_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;if(!e)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;if(e)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