UNPKG

@syncfusion/ej2-pivotview

Version:

The pivot grid, or pivot table, is used to visualize large sets of relational data in a cross-tabular format, similar to an Excel pivot table.

901 lines 148 kB
import { Reorder, headerRefreshed, getScrollBarWidth } from '@syncfusion/ej2-grids'; import { Grid, Resize, ExcelExport, PdfExport, ContextMenu, Freeze } from '@syncfusion/ej2-grids'; import { Selection } from '@syncfusion/ej2-grids'; import { createElement, setStyleAttribute, remove, isNullOrUndefined, EventHandler, getElement, closest, append, formatUnit } from '@syncfusion/ej2-base'; import { addClass, removeClass, SanitizeHtmlHelper, select, selectAll } from '@syncfusion/ej2-base'; import * as cls from '../../common/base/css-constant'; import * as events from '../../common/base/constant'; import { AggregateMenu } from '../../common/popups/aggregate-menu'; import { PivotUtil } from '../../base/util'; /** * Module to render PivotGrid control */ /** @hidden */ var Render = /** @class */ (function () { /** Constructor for render module * * @param {PivotView} parent - Instance of pivot table. */ function Render(parent) { /** @hidden */ this.isAutoFitEnabled = false; /** @hidden */ this.pivotColumns = []; /** @hidden */ this.indentCollection = {}; this.colPos = 0; this.lastSpan = 0; this.lvlCollection = {}; this.hierarchyCollection = {}; this.lvlPosCollection = {}; this.hierarchyPosCollection = {}; this.position = 0; this.measurePos = 0; this.maxMeasurePos = 0; this.hierarchyCount = 0; this.actualText = ''; this.drilledLevelInfo = {}; /** @hidden */ this.selectedCells = []; this.parent = parent; this.resColWidth = !this.parent.isTabular ? (this.parent.showGroupingBar && this.parent.groupingBarModule ? (this.parent.isAdaptive ? 180 : 250) : (this.parent.isAdaptive ? 140 : 200)) : (this.parent.showGroupingBar && this.parent.groupingBarModule ? (this.parent.isAdaptive ? 110 : 150) : this.parent.gridSettings.columnWidth); this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule; this.gridSettings = this.parent.gridSettings; this.formatList = this.getFormatList(); this.aggMenu = new AggregateMenu(this.parent); } /** @hidden */ Render.prototype.render = function (refreshRequired) { if (refreshRequired) { if (this.timeOutObj) { clearTimeout(this.timeOutObj); this.timeOutObj = undefined; } this.removeAllHyperlinkEventHandlers(); this.initProperties(); } this.resColWidth = !this.parent.isTabular ? (this.parent.showGroupingBar && this.parent.groupingBarModule ? (this.parent.isAdaptive ? 180 : 250) : (this.parent.isAdaptive ? 140 : 200)) : (this.parent.showGroupingBar && this.parent.groupingBarModule ? (this.parent.isAdaptive ? 110 : 150) : this.parent.gridSettings.columnWidth); this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule; this.gridSettings = this.parent.gridSettings; this.formatList = this.getFormatList(); this.parent.gridCellCollection = {}; this.injectGridModules(this.parent); this.rowStartPos = this.getRowStartPos(); if (this.parent.grid && this.parent.grid.element && this.parent.element.querySelector('.' + cls.GRID_CLASS)) { this.parent.notEmpty = true; if (!this.engine.isEngineUpdated) { this.engine.headerContent = this.frameDataSource('header'); this.engine.valueContent = this.frameDataSource('value'); } else { if (this.parent.dataType !== 'olap') { if (this.parent.isTabular) { this.engine.headerContent = this.frameDataSource('header'); } if (this.parent.enableValueSorting || this.parent.isTabular) { this.engine.valueContent = this.frameDataSource('value'); } } } this.engine.isEngineUpdated = false; var frozenColumnsLength = this.parent.isTabular ? (this.parent.engineModule.rowMaxLevel + 1) : 1; this.parent.grid.setProperties({ frozenColumns: frozenColumnsLength, columns: this.frameStackedHeaders(), dataSource: ((this.parent.dataType === 'olap' && this.parent.dataSourceSettings.url !== '') ? true : (this.parent.dataSourceSettings.dataSource && this.parent.engineModule.data.length > 0 && this.parent.dataSourceSettings.values.length > 0)) && !this.engine.isEmptyData ? this.frameGridDataSource(this.engine.valueContent) : this.frameDataSource('value') }, true); this.parent.grid.notify('datasource-modified', {}); if (this.parent.isScrolling) { this.parent.resizeInfo = {}; } this.parent.grid.width = this.calculateGridWidth(); this.parent.grid.refreshColumns(); if (this.parent.showGroupingBar && this.parent.groupingBarModule && this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) { this.parent.groupingBarModule.setGridRowWidth(); } if (this.isAutoFitEnabled) { this.addPivotAutoFitClass(); } else { this.removePivotAutoFitClass(); } if (!this.gridSettings.allowAutoResizing && this.parent.showGroupingBar && this.parent.groupingBarModule && this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) { this.parent.groupingBarModule.refreshUI(); } if (!this.parent.isScrolling) { this.calculateGridHeight(true); } //this.parent.isScrolling = false; } else { this.parent.element.innerHTML = ''; this.bindGrid(this.parent, (this.engine.isEmptyData ? true : false)); var gridElement = createElement('div', { id: this.parent.element.id + '_grid' }); this.parent.element.appendChild(gridElement); this.parent.grid.isStringTemplate = true; this.parent.grid.appendTo(gridElement); } this.parent.grid.on(headerRefreshed, this.refreshHeader, this); }; Render.prototype.initProperties = function () { this.rowStartPos = undefined; this.maxIndent = undefined; this.resColWidth = undefined; this.isOverflows = undefined; this.indentCollection = {}; this.formatList = undefined; this.colPos = 0; this.colGrandPos = undefined; this.rowGrandPos = undefined; this.lastSpan = 0; this.field = undefined; this.fieldCaption = undefined; this.lvlCollection = {}; this.hierarchyCollection = {}; this.lvlPosCollection = {}; this.hierarchyPosCollection = {}; this.position = 0; this.measurePos = 0; this.maxMeasurePos = 0; this.hierarchyCount = 0; this.actualText = ''; this.timeOutObj = undefined; }; Render.prototype.refreshHeader = function () { var mCont = this.parent.element.querySelector('.' + cls.CONTENT_VIRTUALTABLE_DIV); if (this.parent.enableVirtualization && !isNullOrUndefined(mCont)) { var virtualTable = closest(mCont, '.' + cls.GRID_CONTENT).querySelector('.' + cls.VIRTUALTABLE_DIV); var mHdr = this.parent.element.querySelector('.' + cls.MOVABLEHEADER_DIV); var vtr = mCont.querySelector('.' + cls.VIRTUALTRACK_DIV); this.parent.virtualHeaderDiv = mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV); if (mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV)) { remove(mHdr.querySelector('.' + cls.VIRTUALTRACK_DIV)); } else { this.parent.virtualHeaderDiv = createElement('div', { className: cls.VIRTUALTRACK_DIV }); } mHdr.appendChild(this.parent.virtualHeaderDiv); if (vtr) { setStyleAttribute(this.parent.virtualHeaderDiv, { height: 0, width: vtr.style.width }); } if (mHdr.querySelector('.' + cls.TABLE)) { setStyleAttribute(mHdr.querySelector('.' + cls.TABLE), { transform: (mCont.querySelector('.' + cls.TABLE).style.transform).split(',')[0] + ',' + 0 + 'px)' }); var freezedCellValue = parseInt(mHdr.querySelector('.' + cls.TABLE) .style.transform.split('(')[1].split(',')[0].split('px')[0], 10); if (this.parent.enableRtl) { this.parent.element.querySelector('.' + cls.FREEZED_CELL).style.right = Number(freezedCellValue) + 'px'; } else { this.parent.element.querySelector('.' + cls.FREEZED_CELL).style.left = Number(-freezedCellValue) + 'px'; } } var ele = this.parent.isAdaptive ? mCont : (virtualTable && (virtualTable.style.display !== 'none')) ? virtualTable : mCont.parentElement; mHdr.scrollLeft = ele.scrollLeft; } }; /** @hidden */ Render.prototype.bindGrid = function (parent, isEmpty) { this.injectGridModules(parent); this.parent.grid = new Grid({ cssClass: this.parent.cssClass, frozenColumns: 1, frozenRows: 0, enableHover: false, dataSource: isEmpty ? this.frameEmptyData() : this.frameDataSource('value'), columns: isEmpty ? this.frameEmptyColumns() : this.frameStackedHeaders(), height: isEmpty ? 'auto' : this.calculateGridHeight(), width: isEmpty ? (this.gridSettings.allowAutoResizing ? this.parent.width : 400) : this.calculateGridWidth(), locale: parent.locale, enableRtl: parent.enableRtl, allowExcelExport: parent.allowExcelExport, allowPdfExport: parent.allowPdfExport, allowResizing: this.gridSettings.allowResizing, allowTextWrap: this.gridSettings.allowTextWrap, clipMode: this.gridSettings.clipMode, allowReordering: this.gridSettings.allowReordering, allowSelection: this.gridSettings.allowSelection, contextMenuItems: this.gridSettings.contextMenuItems, selectedRowIndex: this.gridSettings.selectedRowIndex, selectionSettings: this.gridSettings.selectionSettings, textWrapSettings: this.gridSettings.textWrapSettings, printMode: this.gridSettings.printMode, rowHeight: this.gridSettings.rowHeight, gridLines: this.gridSettings.gridLines, contextMenuClick: this.contextMenuClick.bind(this), contextMenuOpen: this.contextMenuOpen.bind(this), beforeCopy: this.gridSettings.beforeCopy ? this.gridSettings.beforeCopy.bind(this.parent) : undefined, beforePrint: this.gridSettings.beforePrint ? this.gridSettings.beforePrint.bind(this.parent) : undefined, printComplete: this.gridSettings.printComplete ? this.gridSettings.printComplete.bind(this.parent) : undefined, rowSelecting: this.gridSettings.rowSelecting ? this.gridSettings.rowSelecting.bind(this.parent) : undefined, rowSelected: this.rowSelected.bind(this), rowDeselecting: this.gridSettings.rowDeselecting ? this.gridSettings.rowDeselecting.bind(this.parent) : undefined, rowDeselected: this.rowDeselected.bind(this), cellSelecting: this.cellSelecting.bind(this), cellSelected: this.cellSelected.bind(this), cellDeselecting: this.gridSettings.cellDeselecting ? this.gridSettings.cellDeselecting.bind(this.parent) : undefined, cellDeselected: this.cellDeselected.bind(this), resizeStart: this.gridSettings.resizeStart ? this.gridSettings.resizeStart.bind(this.parent) : undefined, columnDragStart: this.gridSettings.columnDragStart ? this.gridSettings.columnDragStart.bind(this) : undefined, columnDrag: this.gridSettings.columnDrag ? this.gridSettings.columnDrag.bind(this) : undefined, columnDrop: this.gridSettings.columnDrop ? this.gridSettings.columnDrop.bind(this) : undefined, beforeExcelExport: this.beforeExcelExport.bind(this), resizing: this.setGroupWidth.bind(this), resizeStop: this.onResizeStop.bind(this), queryCellInfo: this.queryCellInfo.bind(this), dataBound: this.dataBound.bind(this), headerCellInfo: this.headerCellInfo.bind(this), excelHeaderQueryCellInfo: this.excelHeaderQueryCellInfo.bind(this), pdfHeaderQueryCellInfo: this.pdfHeaderQueryCellInfo.bind(this), excelQueryCellInfo: this.excelQueryCellInfo.bind(this), pdfQueryCellInfo: this.pdfQueryCellInfo.bind(this), beforePdfExport: this.gridSettings.beforePdfExport ? this.gridSettings.beforePdfExport.bind(this) : undefined, pdfExportComplete: this.pdfExportComplete.bind(this), excelExportComplete: this.excelExportComplete.bind(this), actionComplete: this.actionComplete.bind(this) }); this.parent.grid.on('header-refreshed', this.headerRefreshed.bind(this)); this.parent.grid.on('export-DataBound', this.excelDataBound.bind(this)); }; Render.prototype.actionComplete = function (args) { if (args && args.requestType === 'refresh' && this.isAutoFitEnabled) { this.removePivotAutoFitClass(); } if (this.parent && this.parent.isWindowResized && this.selectedCells && this.selectedCells.length > 0) { this.parent.grid.clearSelection(); var parentElement_1 = this.parent.element; var selectedElements_1 = []; this.selectedCells.forEach(function (cell) { if (cell.colIndex != null) { var ariaColIndex = cell.colIndex + 1; var selector = "[aria-colindex=\"" + ariaColIndex + "\"]"; if (cell.rowIndex != null) { selector += "[index=\"" + cell.rowIndex + "\"]"; } var element = parentElement_1.querySelector(selector); if (element) { selectedElements_1.push(element); } } }); selectedElements_1.forEach(function (element) { addClass([element], [cls.CELL_ACTIVE_BGCOLOR, cls.SELECTED_BGCOLOR]); }); } this.parent.isWindowResized = false; }; /** * It is used to add the pivot autofit class * * @returns {void} * @hidden */ Render.prototype.addPivotAutoFitClass = function () { if (!document.body.classList.contains(cls.PIVOT_VIEW_CLASS)) { document.body.classList.add(cls.PIVOT_VIEW_CLASS); } if (!document.body.classList.contains(cls.PIVOT_VIEW_AUTOFIT)) { document.body.classList.add(cls.PIVOT_VIEW_AUTOFIT); } }; /** * It is used to remove the pivot autofit class * * @returns {void} * @hidden */ Render.prototype.removePivotAutoFitClass = function () { if (document.body.classList.contains(cls.PIVOT_VIEW_CLASS)) { document.body.classList.remove(cls.PIVOT_VIEW_CLASS); } if (document.body.classList.contains(cls.PIVOT_VIEW_AUTOFIT)) { document.body.classList.remove(cls.PIVOT_VIEW_AUTOFIT); } }; Render.prototype.headerRefreshed = function () { var mHdr = this.parent.element.querySelector('.' + cls.MOVABLEHEADER_DIV); if (this.parent.lastGridSettings && Object.keys(this.parent.lastGridSettings).indexOf('allowResizing') > -1 && !isNullOrUndefined(mHdr) && mHdr.querySelector('.' + cls.TABLE) && this.parent.showGroupingBar && this.parent.groupingBarModule && this.parent.element.querySelector('.' + cls.GROUPING_BAR_CLASS)) { this.parent.lastGridSettings = undefined; this.parent.groupingBarModule.setGridRowWidth(); } }; Render.prototype.beforeExcelExport = function (args) { if (!isNullOrUndefined(args.gridObject.columns) && !isNullOrUndefined(this.parent.pivotColumns)) { args.gridObject.columns[args.gridObject.columns.length - 1].width = this.parent.pivotColumns[this.parent.pivotColumns.length - 1].width; } this.parent.trigger(events.beforeExcelExport, args); }; Render.prototype.rowSelected = function (args) { this.parent.renderModule.selected(); this.parent.trigger(events.rowSelected, args); }; Render.prototype.rowDeselected = function (args) { this.parent.renderModule.selected(); this.parent.trigger(events.rowDeselected, args); }; Render.prototype.cellSelected = function (args) { if (this.parent.rowRangeSelection.enable) { this.parent.grid.selectionModule.selectRowsByRange(this.parent.rowRangeSelection.startIndex, this.parent.rowRangeSelection.endIndex); this.parent.rowRangeSelection.enable = false; } else { this.parent.renderModule.selected(); this.parent.trigger(events.selected, args); } }; Render.prototype.cellSelecting = function (args) { var target = this.parent.grid.selectionModule['actualTarget']; if (!isNullOrUndefined(target) && ((target.classList.contains('e-expand') || target.classList.contains('e-collapse')) || (this.parent.allowGrouping && !isNullOrUndefined(target.closest('.e-valuescontent'))))) { args.cancel = true; } this.parent.trigger(events.selecting, args); }; Render.prototype.cellDeselected = function (args) { this.parent.renderModule.selected(); this.parent.trigger(events.cellDeselected, args); }; Render.prototype.queryCellInfo = function (args) { this.parent.renderModule.rowCellBoundEvent(args); }; Render.prototype.headerCellInfo = function (args) { this.parent.renderModule.columnCellBoundEvent(args); }; Render.prototype.excelHeaderQueryCellInfo = function (args) { this.parent.renderModule.excelColumnEvent(args); }; Render.prototype.pdfQueryCellInfo = function (args) { this.parent.renderModule.pdfRowEvent(args); }; Render.prototype.excelQueryCellInfo = function (args) { this.parent.renderModule.excelRowEvent(args); }; Render.prototype.pdfHeaderQueryCellInfo = function (args) { this.parent.renderModule.pdfColumnEvent(args); }; Render.prototype.pdfExportComplete = function (args) { if (this.parent.lastColumn !== undefined && this.parent.lastColumn && this.parent.lastColumn.width !== 'auto') { this.parent.lastColumn.width = 'auto'; this.parent.lastColumn = undefined; } var exportCompleteEventArgs = { type: 'PDF', promise: args.promise }; this.parent.trigger(events.exportComplete, exportCompleteEventArgs); }; Render.prototype.excelExportComplete = function (args) { if (this.parent.lastColumn !== undefined && this.parent.lastColumn && this.parent.lastColumn.width !== 'auto') { this.parent.lastColumn.width = 'auto'; this.parent.lastColumn = undefined; } var exportCompleteEventArgs = { type: 'Excel/CSV', promise: args.promise }; this.parent.trigger(events.exportComplete, exportCompleteEventArgs); }; Render.prototype.dataBound = function () { // if ((this.parent.dataSourceSettings.valueAxis === 'row' || // !(this.parent.dataType === 'pivot' && this.parent.dataSourceSettings.valueAxis === 'column' && this.parent.engineModule && !this.parent.engineModule.isLastHeaderHasMeasures)) && // this.parent.element.querySelector('.e-firstcell') && !(this.parent.dataSourceSettings.values.length === 1 && this.parent.dataSourceSettings.columns.length > 0)) { // if (this.parent.enableRtl) { // (this.parent.element.querySelector('.e-firstcell') as HTMLElement).style.borderRight = 'none'; // } else { // (this.parent.element.querySelector('.e-firstcell') as HTMLElement).style.borderLeft = 'none'; // } // } if (this.parent.notEmpty) { this.calculateGridHeight(true); } this.parent.isScrolling = false; this.setFocusOnLastCell(); if (!isNullOrUndefined(this.parent['renderReactTemplates'])) { this.parent['renderReactTemplates'](); } if (this.parent.isInitial) { this.parent.isInitial = false; this.parent.refreshData(); if (this.parent.enableVirtualization) { this.parent.onContentReady(); } } if (this.parent.isTabular) { var rowHeader_1 = this.parent.element.querySelectorAll('.' + cls.HEADERCELL + '.' + cls.FREEZED_CELL); var isRtl_1 = this.parent.enableRtl; rowHeader_1.forEach(function (el, index) { var isLast = index === rowHeader_1.length - 1; if (!isNullOrUndefined(el) && (!isRtl_1 || (isRtl_1 && !isLast))) { el.style.setProperty('border-left-width', '0px'); } }); } this.parent.notify(events.contentReady, {}); }; Render.prototype.setFocusOnLastCell = function () { if (this.parent.keyboardModule && this.parent.keyboardModule.event && this.parent.keyboardModule.event.target.nodeName === 'TD') { var gridFocus = this.parent.grid.serviceLocator.getService('focus'); gridFocus.setFocusedElement(this.parent.keyboardModule.event.target); gridFocus.focus(this.parent.keyboardModule.event); addClass([this.parent.keyboardModule.event.target], ['e-focused', 'e-focus']); this.parent.keyboardModule.event.target.setAttribute('tabindex', '0'); this.parent.keyboardModule.event = undefined; } }; Render.prototype.getCellElement = function (target) { var currentElement = closest(target, 'td'); if (isNullOrUndefined(currentElement)) { currentElement = closest(target, 'th'); } return currentElement; }; Render.prototype.contextMenuOpen = function (args) { var _this = this; if (args.element && this.parent.cssClass) { addClass([args.element.parentElement], this.parent.cssClass); } var elem; var cellTarget = this.parent.lastCellClicked ? this.parent.lastCellClicked : (this.parent.isAdaptive ? args.event.target : this.parent.lastCellClicked); if (cellTarget) { elem = this.getCellElement(cellTarget); } var _loop_1 = function (item) { var bool = void 0; var isGroupElement = void 0; if (!elem || (elem && Number(elem.getAttribute('index')) === 0 && parseInt(elem.getAttribute('aria-colindex'), 10) - 1 === 0)) { args.cancel = true; return { value: void 0 }; } if (elem.classList.contains('e-valuesheader') || elem.classList.contains('e-stot')) { bool = true; } if (this_1.parent.allowGrouping && this_1.parent.groupingModule && !this_1.validateField(elem)) { isGroupElement = true; } var rowIndex = Number(elem.getAttribute('index')); var colIndex = parseInt(elem.getAttribute('aria-colindex'), 10) - 1; var pivotValue1 = this_1.parent.pivotValues[rowIndex][colIndex]; var selectedID = item.id; switch (selectedID) { case this_1.parent.element.id + '_expand': if (elem.querySelectorAll('.' + cls.EXPAND).length > 0) { if (selectAll('#' + this_1.parent.element.id + '_expand', args.element)) { select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_expand', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_expand', args.element).classList.contains(cls.MENU_HIDE)) { select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_HIDE); select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_HIDE); } } else { if (bool) { select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_HIDE); } else { select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE); } } break; case this_1.parent.element.id + '_collapse': if (elem.querySelectorAll('.' + cls.COLLAPSE).length > 0) { if (select('#' + this_1.parent.element.id + '_expand', args.element)) { select('#' + this_1.parent.element.id + '_expand', args.element).classList.add(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_collapse', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_collapse', args.element).classList.contains(cls.MENU_HIDE)) { select('#' + this_1.parent.element.id + '_collapse', args.element).classList.remove(cls.MENU_HIDE); select('#' + this_1.parent.element.id + '_expand', args.element).classList.remove(cls.MENU_HIDE); } } else { if (bool) { select('#' + this_1.parent.element.id + '_collapse', args.element).classList.add(cls.MENU_HIDE); } else { select('#' + this_1.parent.element.id + '_collapse', args.element).classList.add(cls.MENU_DISABLE); } } break; case this_1.parent.element.id + '_custom_group': if (!isGroupElement && args.items.length === 2) { args.cancel = true; } if (selectAll('#' + this_1.parent.element.id + '_custom_group', args.element)) { addClass([select('#' + this_1.parent.element.id + '_custom_group', args.element)], cls.MENU_HIDE); } if (isGroupElement) { if (selectAll('#' + this_1.parent.element.id + '_custom_group', args.element)) { removeClass([select('#' + this_1.parent.element.id + '_custom_group', args.element)], cls.MENU_HIDE); } } break; case this_1.parent.element.id + '_custom_ungroup': if (selectAll('#' + this_1.parent.element.id + '_custom_ungroup', args.element)) { addClass([select('#' + this_1.parent.element.id + '_custom_ungroup', args.element)], cls.MENU_HIDE); } if (isGroupElement) { var isUngroupOption = false; var fieldName = elem.getAttribute('fieldname'); var groupField = PivotUtil.getFieldByName(fieldName, this_1.parent.dataSourceSettings.groupSettings); if (groupField && groupField.type === 'Custom' || (this_1.parent.engineModule.fieldList[fieldName].isCustomField && fieldName.indexOf('_custom_group') > -1)) { groupField = PivotUtil.getFieldByName(fieldName.replace('_custom_group', ''), this_1.parent.dataSourceSettings.groupSettings); if (groupField) { var cell = this_1.parent.engineModule.pivotValues[Number(elem.getAttribute('index'))][parseInt(elem.getAttribute('aria-colindex'), 10) - 1]; var selectedCellsInfo = this_1.parent.groupingModule.getSelectedCells(cell.axis, fieldName, cell.actualText.toString()); selectedCellsInfo.push({ axis: cell.axis, fieldName: fieldName, name: cell.actualText.toString(), cellInfo: cell }); var selectedOptions = this_1.parent.groupingModule.getSelectedOptions(selectedCellsInfo); for (var _i = 0, _a = groupField.customGroups; _i < _a.length; _i++) { var customGroup = _a[_i]; if (selectedOptions.indexOf(customGroup.groupName) > -1) { isUngroupOption = true; break; } } } } else if (groupField && (groupField.type === 'Date' || groupField.type === 'Number') || (this_1.parent.engineModule.fieldList[fieldName].isCustomField && fieldName.indexOf('_date_group') > -1)) { isUngroupOption = true; } if (selectAll('#' + this_1.parent.element.id + '_custom_ungroup', args.element) && isUngroupOption) { removeClass([select('#' + this_1.parent.element.id + '_custom_ungroup', args.element)], cls.MENU_HIDE); } } break; case this_1.parent.element.id + '_drillthrough': if (!this_1.parent.allowDrillThrough) { if (select('#' + this_1.parent.element.id + '_drillthrough', args.element)) { select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.add(cls.MENU_DISABLE); } } else if (!(elem.classList.contains('e-summary'))) { if (elem.innerText === '') { if (select('#' + this_1.parent.element.id + '_drillthrough', args.element)) { select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.add(cls.MENU_DISABLE); } } } else { if (select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_drillthrough', args.element).classList.remove(cls.MENU_DISABLE); } } break; case this_1.parent.element.id + '_sortasc': if (!this_1.parent.enableValueSorting) { if (select('#' + this_1.parent.element.id + '_sortasc', args.element)) { select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.add(cls.MENU_DISABLE); } } else if (elem.querySelectorAll('.e-icon-descending').length > 0) { if (select('#' + this_1.parent.element.id + '_sortdesc', args.element)) { select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.add(cls.MENU_DISABLE); } else { select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE); } } else if (select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_sortdesc': if (!this_1.parent.enableValueSorting) { if (select('#' + this_1.parent.element.id + '_sortdesc', args.element)) { select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.add(cls.MENU_DISABLE); } } else if (elem.querySelectorAll('.e-icon-ascending').length > 0) { if (select('#' + this_1.parent.element.id + '_sortasc', args.element)) { select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.add(cls.MENU_DISABLE); } else { select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE); } if (select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_sortdesc', args.element).classList.remove(cls.MENU_DISABLE); } } else if (select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.contains(cls.MENU_DISABLE)) { select('#' + this_1.parent.element.id + '_sortasc', args.element).classList.remove(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_CalculatedField': if (!this_1.parent.allowCalculatedField) { select('#' + this_1.parent.element.id + '_CalculatedField', args.element).classList.add(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_pdf': if (!this_1.parent.allowPdfExport) { select('#' + this_1.parent.element.id + '_pdf', args.element).classList.add(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_excel': if (!this_1.parent.allowExcelExport) { select('#' + this_1.parent.element.id + '_excel', args.element).classList.add(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_csv': if (!this_1.parent.allowExcelExport) { select('#' + this_1.parent.element.id + '_csv', args.element).classList.add(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_exporting': if ((!this_1.parent.allowExcelExport) && (!this_1.parent.allowPdfExport)) { select('#' + this_1.parent.element.id + '_exporting', args.element).classList.add(cls.MENU_DISABLE); } break; case this_1.parent.element.id + '_aggregate': if ((select('#' + this_1.parent.element.id + '_aggregate', args.element)) && (!select('#' + this_1.parent.element.id + '_aggregate', args.element).classList.contains(cls.MENU_DISABLE))) { select('#' + this_1.parent.element.id + '_aggregate', args.element).classList.add(cls.MENU_DISABLE); } if ((elem.classList.contains('e-valuesheader') || elem.classList.contains('e-valuescontent') || (elem.classList.contains('e-stot') && elem.classList.contains('e-rowsheader'))) && this_1.parent.dataType !== 'olap') { var fieldType_1; if (!(elem.innerText === '')) { fieldType_1 = this_1.parent.engineModule.fieldList[pivotValue1.actualText.toString()].type; } var eventArgs = { cancel: false, fieldName: pivotValue1.actualText.toString(), aggregateTypes: this_1.getMenuItem(fieldType_1).slice(), displayMenuCount: 7 }; this_1.parent.trigger(events.aggregateMenuOpen, eventArgs, function (observedArgs) { if (!observedArgs.cancel && !(elem.innerText === '')) { var menuItem = []; var checkDuplicates = []; for (var i = 0; i < observedArgs.aggregateTypes.length; i++) { var key = observedArgs.aggregateTypes[i]; if (fieldType_1 !== 'number') { if ((['Count', 'DistinctCount'].indexOf(key) > -1) && (checkDuplicates.indexOf(key) < 0)) { menuItem.push({ text: _this.parent.localeObj.getConstant(key), id: _this.parent.element.id + '_Agg' + key }); checkDuplicates.push(key); } } else { if ((_this.parent.getAllSummaryType().indexOf(key) > -1) && (checkDuplicates.indexOf(key) < 0)) { menuItem.push({ text: _this.parent.localeObj.getConstant(key), id: _this.parent.element.id + '_Agg' + key }); checkDuplicates.push(key); } } } if (menuItem.length > observedArgs.displayMenuCount) { menuItem.splice(observedArgs.displayMenuCount); menuItem.push({ text: _this.parent.localeObj.getConstant('MoreOption'), id: _this.parent.element.id + '_Agg' + 'MoreOption' }); } if (menuItem && menuItem.length >= 1) { item.items = menuItem; select('#' + _this.parent.element.id + '_aggregate', args.element).classList.remove(cls.MENU_DISABLE); } } }); } break; } }; var this_1 = this; for (var _i = 0, _a = args.items; _i < _a.length; _i++) { var item = _a[_i]; var state_1 = _loop_1(item); if (typeof state_1 === "object") return state_1.value; } this.parent.trigger(events.contextMenuOpen, args); }; Render.prototype.getMenuItem = function (isStringField) { var menuItems = []; for (var i = 0; i < this.parent.aggregateTypes.length; i++) { var key = this.parent.aggregateTypes[i]; if (isStringField !== 'string') { if ((this.parent.getAllSummaryType().indexOf(key) > -1) && (menuItems.indexOf(key) === -1)) { menuItems.push(key); } } else { if ((['Count', 'DistinctCount'].indexOf(key) > -1) && (menuItems.indexOf(key) === -1)) { menuItems.push(key); } } } return menuItems; }; Render.prototype.contextMenuClick = function (args) { var _this = this; // this.parent.gridSettings.contextMenuClick(); var target = this.parent.lastCellClicked; var selected = args.item.id; var exportArgs = {}; var ele; if (target) { ele = this.getCellElement(target); } else { return; } var rowIndx = Number(ele.getAttribute('index')); var colIndx = parseInt(ele.getAttribute('aria-colindex'), 10) - 1; var pivotValue = this.parent.pivotValues[rowIndx][colIndx]; var aggregateType; if (args.item.id.indexOf(this.parent.element.id + '_Agg') > -1) { this.field = this.parent.engineModule.fieldList[pivotValue.actualText.toString()].id; this.fieldCaption = this.parent.engineModule.fieldList[pivotValue.actualText.toString()].caption; aggregateType = args.item.id.split('_Agg')[1]; } switch (selected) { case this.parent.element.id + '_pdf': exportArgs = { pdfDoc: undefined, isBlob: false, isMultipleExport: false, pdfExportProperties: { fileName: 'Export.pdf' } }; this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) { _this.parent.pdfExport(observedArgs.pdfExportProperties, observedArgs.isMultipleExport, observedArgs.pdfDoc, observedArgs.isBlob); }); break; case this.parent.element.id + '_excel': exportArgs = { isBlob: false, isMultipleExport: false, workbook: undefined, excelExportProperties: { fileName: 'Export.xlsx' } }; this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) { _this.parent.excelExport(observedArgs.excelExportProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob); }); break; case this.parent.element.id + '_csv': exportArgs = { isBlob: false, workbook: undefined, isMultipleExport: false, excelExportProperties: { fileName: 'Export.csv' } }; this.parent.trigger(events.beforeExport, exportArgs, function (observedArgs) { _this.parent.csvExport(observedArgs.excelExportProperties, observedArgs.isMultipleExport, observedArgs.workbook, observedArgs.isBlob); }); break; case this.parent.element.id + '_drillthrough_menu': { var event_1 = new MouseEvent('dblclick', { 'view': window, 'bubbles': true, 'cancelable': true }); ele.dispatchEvent(event_1); break; } case this.parent.element.id + '_sortasc': this.parent.setProperties({ dataSourceSettings: { valueSortSettings: { columnHeaderText: pivotValue.valueSort.levelName, headerDelimiter: this.parent.dataSourceSettings.valueSortSettings.headerDelimiter } } }); this.parent.dataSourceSettings.valueSortSettings.sortOrder = 'Ascending'; break; case this.parent.element.id + '_sortdesc': this.parent.setProperties({ dataSourceSettings: { valueSortSettings: { columnHeaderText: pivotValue.valueSort.levelName, headerDelimiter: this.parent.dataSourceSettings.valueSortSettings.headerDelimiter } } }); this.parent.dataSourceSettings.valueSortSettings.sortOrder = 'Descending'; break; case this.parent.element.id + '_expand': if (ele.querySelectorAll('.' + cls.EXPAND)) { var exp = ele.querySelectorAll('.' + cls.EXPAND)[0]; this.parent.onDrill(exp); } break; case this.parent.element.id + '_collapse': if (ele.querySelectorAll('.' + cls.COLLAPSE)) { var colp = ele.querySelectorAll('.' + cls.COLLAPSE)[0]; this.parent.onDrill(colp); } break; case this.parent.element.id + '_CalculatedField': this.parent.calculatedFieldModule.createCalculatedFieldDialog(); break; case this.parent.element.id + '_AggMoreOption': case this.parent.element.id + '_AggDifferenceFrom': case this.parent.element.id + '_AggPercentageOfDifferenceFrom': case this.parent.element.id + '_AggPercentageOfParentTotal': ele.setAttribute('id', this.field); ele.setAttribute('data-caption', this.fieldCaption); ele.setAttribute('data-field', this.field); ele.setAttribute('data-type', this.engine.fieldList[pivotValue.actualText.toString()].aggregateType); ele.setAttribute('data-basefield', this.engine.fieldList[pivotValue.actualText.toString()].baseField); ele.setAttribute('data-baseItem', this.engine.fieldList[pivotValue.actualText.toString()].baseItem); this.aggMenu.createValueSettingsDialog(ele, this.parent.element, aggregateType); break; case this.parent.element.id + '_Agg' + aggregateType: this.updateAggregate(aggregateType); break; case this.parent.element.id + '_custom_group': case this.parent.element.id + '_custom_ungroup': if (this.parent.groupingModule) { var args_1 = { target: ele, option: selected, parentElement: this.parent.element }; this.parent.notify(events.initGrouping, args_1); this.parent.grid.contextMenuModule.contextMenu.close(); } break; } this.parent.trigger(events.contextMenuClick, args); }; Render.prototype.validateColumnTotalcell = function (columnIndex) { var headerPosKeys = Object.keys(this.engine.headerContent); var keysLength = headerPosKeys.length; var sumLock = false; var fieldName = ''; for (var pos = keysLength - 1; pos >= 0; pos--) { var cell = this.engine.headerContent[Number(headerPosKeys[pos])][columnIndex]; if (cell) { sumLock = sumLock && fieldName !== '' ? fieldName === cell.valueSort.axis : false; fieldName = cell.valueSort.axis ? cell.valueSort.axis.toString() : ''; if (cell.type === 'sum') { sumLock = true; } if (sumLock && cell.members && cell.members.length > 0) { return true; } } else { return false; } } return false; }; Render.prototype.validateField = function (target) { var isValueField = false; if (target.classList.contains('e-stot') || target.classList.contains('e-gtot') || target.classList.contains('e-valuescontent') || target.classList.contains('e-valuesheader')) { isValueField = true; } else { var fieldName = target.getAttribute('fieldName'); if (!fieldName || fieldName === '') { var rowIndx = Number(target.getAttribute('index')); var colIndx = parseInt(target.getAttribute('aria-colindex'), 10) - 1; fieldName = this.engine.pivotValues[rowIndx][colIndx].actualText; } var valuefields = this.parent.dataSourceSettings.values; for (var valueCnt = 0; valueCnt < valu