UNPKG

@syncfusion/ej2-grids

Version:

Feature-rich JavaScript datagrid (datatable) control with built-in support for editing, filtering, grouping, paging, sorting, and exporting to Excel.

1,367 lines (1,362 loc) 2.73 MB
import { isNullOrUndefined, setCulture, Internationalization, Property, merge, extend as extend$1, attributes, removeClass, addClass, setValue, getValue, remove, updateBlazorTemplate, setStyleAttribute, Droppable, Draggable, closest, classList, createElement, blazorTemplates, resetBlazorTemplate, getEnumValue, EventHandler, Browser, formatUnit, ChildProperty, isUndefined, select, compile, Collection, L10n, Component, updateCSSText, append, KeyboardEvents, SanitizeHtmlHelper, Complex, Event as Event$1, NotifyPropertyChanges, defaultCurrencyCode, detach, print, selectAll, isObject, debounce, matches, initializeCSPTemplate } from '@syncfusion/ej2-base'; import { Query, DataUtil, DataManager, RemoteSaveAdaptor, Predicate as Predicate$1, Deferred, UrlAdaptor } from '@syncfusion/ej2-data'; import { Dialog, createSpinner, showSpinner, hideSpinner, Tooltip, calculateRelativeBasedPosition, calculatePosition } from '@syncfusion/ej2-popups'; import { Button, createCheckBox, RadioButton, CheckBox, Switch } from '@syncfusion/ej2-buttons'; import { Input, NumericTextBox, TextBox, FormValidator, MaskedTextBox } from '@syncfusion/ej2-inputs'; import { DropDownList, AutoComplete, MultiSelect, CheckBoxSelection, ComboBox } from '@syncfusion/ej2-dropdowns'; import { DatePicker, DateTimePicker, MaskedDateTime, TimePicker } from '@syncfusion/ej2-calendars'; import { ContextMenu as ContextMenu$1, Toolbar as Toolbar$1 } from '@syncfusion/ej2-navigations'; import { Workbook } from '@syncfusion/ej2-excel-export'; import { PdfPageSettings, PdfDocument, PdfGridLayoutFormat, PdfLayoutType, PdfLayoutBreakType, RectangleF, PdfPageOrientation, PdfGrid, PdfFontFamily, PdfColor, PdfStandardFont, PdfSolidBrush, PdfFontStyle, PdfTrueTypeFont, PdfBorders, PdfPen, PdfPaddings, PointF, SizeF, PdfPageTemplateElement, PdfStringFormat, PdfPageNumberField, PdfPageCountField, PdfCompositeField, PdfBitmap, PdfTextWebLink, PdfTextAlignment, PdfVerticalAlignment } from '@syncfusion/ej2-pdf-export'; /** * ValueFormatter class to globalize the value. * * @hidden */ var ValueFormatter = /** @__PURE__ @class */ (function () { function ValueFormatter(cultureName) { this.intl = new Internationalization(); if (!isNullOrUndefined(cultureName)) { this.intl.culture = cultureName; } } ValueFormatter.prototype.getFormatFunction = function (format) { if (!isNullOrUndefined(format) && (format.type === 'dateTime' || format.type === 'datetime' || format.type === 'date' || format.type === 'time')) { return this.intl.getDateFormat(format); } else { return this.intl.getNumberFormat(format); } }; ValueFormatter.prototype.getParserFunction = function (format) { if (format.type) { return this.intl.getDateParser(format); } else { return this.intl.getNumberParser(format); } }; ValueFormatter.prototype.fromView = function (value, format, type) { if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) { return format(value); } else { return value; } }; ValueFormatter.prototype.toView = function (value, format) { var result = value; if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) { result = format(value); } return result; }; ValueFormatter.prototype.setCulture = function (cultureName) { if (!isNullOrUndefined(cultureName)) { setCulture(cultureName); } }; return ValueFormatter; }()); var __extends = (undefined && undefined.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; /** * Represents Grid `Column` model class. */ var Column = /** @__PURE__ @class */ (function () { function Column(options, parent) { var _this = this; /** * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells. * * @default true */ this.disableHtmlEncode = true; /** * If `allowSorting` set to false, then it disables sorting option of a particular column. * By default all columns are sortable. * * @default true */ this.allowSorting = true; /** * If `allowResizing` is set to false, it disables resize option of a particular column. * By default all the columns can be resized. * * @default true */ this.allowResizing = true; /** * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column. * By default all columns are filterable. * * @default true */ this.allowFiltering = true; /** * If `allowGrouping` set to false, then it disables grouping of a particular column. * By default all columns are groupable. * * @default true */ this.allowGrouping = true; /** * If `allowReordering` set to false, then it disables reorder of a particular column. * By default all columns can be reorder. * * @default true */ this.allowReordering = true; /** * If `showColumnMenu` set to false, then it disable the column menu of a particular column. * By default column menu will show for all columns * * @default true */ this.showColumnMenu = true; /** * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values. * * @default true */ this.enableGroupByFormat = false; /** * If `allowEditing` set to false, then it disables editing of a particular column. * By default all columns are editable. * * @default true */ this.allowEditing = true; /** * It is used to customize the default filter options for a specific columns. * * type - Specifies the filter type as menu or checkbox. * * ui - to render custom component for specific column it has following functions. * * ui.create – It is used for creating custom components. * * ui.read - It is used for read the value from the component. * * ui.write - It is used to apply component model as dynamically. * {% codeBlock src="grid/filter-menu-api/index.ts" %}{% endcodeBlock %} * * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization. * * @default {} */ this.filter = {}; /** * If `showInColumnChooser` set to false, then hide the particular column in column chooser. * By default all columns are displayed in column Chooser. * * @default true */ this.showInColumnChooser = true; /** * Defines the `IEditCell` object to customize default edit cell. * * @default {} */ this.edit = {}; /** * If `allowSearching` set to false, then it disables Searching of a particular column. * By default all columns allow Searching. * * @default true */ this.allowSearching = true; /** * If `autoFit` set to true, then the particular column content width will be * adjusted based on its content in the initial rendering itself. * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event. * * @default false */ this.autoFit = false; this.sortDirection = 'Descending'; /** * @returns {Function} returns the edit template * @hidden */ this.getEditTemplate = function () { return _this.editTemplateFn; }; /** * @returns {Function} returns the filter template * @hidden */ this.getFilterTemplate = function () { return _this.filterTemplateFn; }; /** * Determines the behavior of the `aria-label` attribute for cells in template columns. * If enableAriaLabel is set to false, the aria-label attribute is not applied to template column cells, which affects screen reader accessibility. * * @default {} */ this.templateOptions = { enableAriaLabel: true }; merge(this, options); this.parent = parent; if (this.type === 'none') { this.type = null; } else if (this.type) { this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined; } if (this.editType) { this.editType = this.editType.toLowerCase(); } if (isNullOrUndefined(this.uid)) { this.uid = getUid('grid-column'); } var valueFormatter = new ValueFormatter(); if (options.format && (options.format.skeleton || (options.format.format && typeof options.format.format === 'string'))) { this.setFormatter(valueFormatter.getFormatFunction(extend$1({}, options.format))); this.setParser(valueFormatter.getParserFunction(options.format)); } this.toJSON = function () { var col = {}; var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit', 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent']; var keys = Object.keys(_this); for (var i = 0; i < keys.length; i++) { if (keys[parseInt(i.toString(), 10)] === 'columns') { col[keys[parseInt(i.toString(), 10)]] = []; for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) { col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON()); } } else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) { col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]]; } } return col; }; if (!this.field) { this.allowFiltering = false; this.allowGrouping = false; this.allowSorting = false; if (this.columns) { this.allowResizing = this.columns.some(function (col) { return col.allowResizing; }); } } if (this.commands && !this.textAlign) { this.textAlign = 'Right'; } if (this.template || this.commandsTemplate) { this.templateFn = templateCompiler(this.template || this.commandsTemplate); } if (this.headerTemplate) { this.headerTemplateFn = templateCompiler(this.headerTemplate); } if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) { this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate); } if (this.editTemplate) { this.editTemplateFn = templateCompiler(this.editTemplate); } if (this.filterTemplate) { this.filterTemplateFn = templateCompiler(this.filterTemplate); } if (this.isForeignColumn() && (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) { this.editType = 'dropdownedit'; if (this.edit.params && this.edit.params.dataSource) { this.edit.params.ddEditedData = true; } this.edit.params = extend$1({ dataSource: this.dataSource, query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue } }, this.edit.params); } if (this.sortComparer) { var a_1 = this.sortComparer; this.sortComparer = function (x, y, xObj, yObj) { if (typeof a_1 === 'string') { a_1 = getObject(a_1, window); } if (_this.sortDirection === 'Descending') { var z = x; x = y; y = z; var obj = xObj; xObj = yObj; yObj = obj; } return a_1(x, y, xObj, yObj); }; } if (!this.sortComparer && this.isForeignColumn()) { this.sortComparer = function (x, y) { x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]); y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]); return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y); }; } } /** * @returns {string} returns the sort direction * @hidden */ Column.prototype.getSortDirection = function () { return this.sortDirection; }; /** * @param {string} direction - specifies the direction * @returns {void} * @hidden */ Column.prototype.setSortDirection = function (direction) { this.sortDirection = direction; }; /** * @returns {freezeTable} returns the FreezeTable * @hidden */ Column.prototype.getFreezeTableName = function () { return this.freezeTable; }; /** * @param {Column} column - specifies the column * @returns {void} * @hidden */ Column.prototype.setProperties = function (column) { //Angular two way binding var keys = Object.keys(column); var _loop_1 = function (i) { if (keys[parseInt(i.toString(), 10)] === 'columns') { var cols_1 = column[keys[parseInt(i.toString(), 10)]]; var _loop_2 = function (j) { this_1.columns.find(function (col) { return col.field === cols_1[parseInt(j.toString(), 10)] .field; }).setProperties(cols_1[parseInt(j.toString(), 10)]); }; for (var j = 0; j < cols_1.length; j++) { _loop_2(j); } } else { this_1[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]]; } //Refresh the react columnTemplates on state change if (this_1.parent && this_1.parent.isReact) { if (keys[parseInt(i.toString(), 10)] === 'template') { this_1.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]); this_1.parent.refreshReactColumnTemplateByUid(this_1.uid, true); } else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') { this_1.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]); this_1.parent.refreshReactHeaderTemplateByUid(this_1.uid); } else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') { this_1.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]); } else if (keys[parseInt(i.toString(), 10)] === 'filterTemplate') { this_1.filterTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]); } else if (keys[parseInt(i.toString(), 10)] === 'commandsTemplate') { this_1.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]); } } }; var this_1 = this; for (var i = 0; i < keys.length; i++) { _loop_1(i); } }; /** * @returns {boolean} returns true for foreign column * @hidden * It defines the column is foreign key column or not. */ Column.prototype.isForeignColumn = function () { return !!(this.dataSource && this.foreignKeyValue); }; /** * @returns {Function} returns the function * @hidden */ Column.prototype.getFormatter = function () { return this.formatFn; }; /** * @param {Function} value - specifies the value * @returns {void} * @hidden */ Column.prototype.setFormatter = function (value) { this.formatFn = value; }; /** * @returns {Function} returns the function * @hidden */ Column.prototype.getParser = function () { return this.parserFn; }; /** * @param {Function} value - specifies the value * @returns {void} * @hidden */ Column.prototype.setParser = function (value) { this.parserFn = value; }; /** * @returns {Function} returns the function * @hidden */ Column.prototype.getColumnTemplate = function () { return this.templateFn; }; /** * @returns {Function} returns the function * @hidden */ Column.prototype.getHeaderTemplate = function () { return this.headerTemplateFn; }; /** * @returns {Function} returns the function * @hidden */ Column.prototype.getFilterItemTemplate = function () { return this.fltrTemplateFn; }; /** * @returns {string} returns the string * @hidden */ Column.prototype.getDomSetter = function () { return this.disableHtmlEncode ? 'textContent' : 'innerHTML'; }; return Column; }()); /** * Define options for custom command buttons. */ var CommandColumnModel = /** @__PURE__ @class */ (function () { function CommandColumnModel() { } __decorate([ Property() ], CommandColumnModel.prototype, "title", void 0); __decorate([ Property() ], CommandColumnModel.prototype, "type", void 0); __decorate([ Property() ], CommandColumnModel.prototype, "buttonOption", void 0); return CommandColumnModel; }()); /** * Defines Grid column */ var GridColumn = /** @__PURE__ @class */ (function (_super) { __extends(GridColumn, _super); function GridColumn() { return _super !== null && _super.apply(this, arguments) || this; } __decorate([ Property(null) ], GridColumn.prototype, "columns", void 0); return GridColumn; }(Column)); /** * Defines stacked grid column */ var StackedColumn = /** @__PURE__ @class */ (function (_super) { __extends(StackedColumn, _super); function StackedColumn() { return _super !== null && _super.apply(this, arguments) || this; } return StackedColumn; }(GridColumn)); /** @hidden */ var created = 'create'; /** @hidden */ var destroyed = 'destroy'; /** @hidden */ var load = 'load'; /** @hidden */ var rowDataBound = 'rowDataBound'; /** @hidden */ var queryCellInfo = 'queryCellInfo'; /** @hidden */ var headerCellInfo = 'headerCellInfo'; /** @hidden */ var actionBegin = 'actionBegin'; /** @hidden */ var actionComplete = 'actionComplete'; /** @hidden */ var actionFailure = 'actionFailure'; /** @hidden */ var dataBound = 'dataBound'; /** @hidden */ var rowSelecting = 'rowSelecting'; /** @hidden */ var rowSelected = 'rowSelected'; /** @hidden */ var rowDeselecting = 'rowDeselecting'; /** @hidden */ var rowDeselected = 'rowDeselected'; /** @hidden */ var cellSelecting = 'cellSelecting'; /** @hidden */ var cellSelected = 'cellSelected'; /** @hidden */ var cellDeselecting = 'cellDeselecting'; /** @hidden */ var cellDeselected = 'cellDeselected'; /** @hidden */ var columnSelecting = 'columnSelecting'; /** @hidden */ var columnSelected = 'columnSelected'; /** @hidden */ var columnDeselecting = 'columnDeselecting'; /** @hidden */ var columnDeselected = 'columnDeselected'; /** @hidden */ var columnDragStart = 'columnDragStart'; /** @hidden */ var columnDrag = 'columnDrag'; /** @hidden */ var columnDrop = 'columnDrop'; /** @hidden */ var rowDragStartHelper = 'rowDragStartHelper'; /** @hidden */ var rowDragStart = 'rowDragStart'; /** @hidden */ var rowDrag = 'rowDrag'; /** @hidden */ var rowDrop = 'rowDrop'; /** @hidden */ var beforePrint = 'beforePrint'; /** @hidden */ var printComplete = 'printComplete'; /** @hidden */ var detailDataBound = 'detailDataBound'; /** @hidden */ var toolbarClick = 'toolbarClick'; /** @hidden */ var batchAdd = 'batchAdd'; /** @hidden */ var batchCancel = 'batchCancel'; /** @hidden */ var batchDelete = 'batchDelete'; /** @hidden */ var beforeBatchAdd = 'beforeBatchAdd'; /** @hidden */ var beforeBatchDelete = 'beforeBatchDelete'; /** @hidden */ var beforeBatchSave = 'beforeBatchSave'; /** @hidden */ var beginEdit = 'beginEdit'; /** @hidden */ var cellEdit = 'cellEdit'; /** @hidden */ var cellSave = 'cellSave'; /** @hidden */ var cellSaved = 'cellSaved'; /** @hidden */ var endAdd = 'endAdd'; /** @hidden */ var endDelete = 'endDelete'; /** @hidden */ var endEdit = 'endEdit'; /** @hidden */ var recordDoubleClick = 'recordDoubleClick'; /** @hidden */ var recordClick = 'recordClick'; /** @hidden */ var beforeDataBound = 'beforeDataBound'; /** @hidden */ var beforeOpenColumnChooser = 'beforeOpenColumnChooser'; /** @hidden */ var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog'; /** @hidden */ var resizeStart = 'resizeStart'; /** @hidden */ var onResize = 'resizing'; /** @hidden */ var resizeStop = 'resizeStop'; /** @hidden */ var checkBoxChange = 'checkBoxChange'; /** @hidden */ var beforeCopy = 'beforeCopy'; /** @hidden */ var beforePaste = 'beforePaste'; /** @hidden */ var beforeAutoFill = 'beforeAutoFill'; /** @hidden */ var filterChoiceRequest = 'filterchoicerequest'; /** @hidden */ var filterAfterOpen = 'filterAfterOpen'; /** @hidden */ var filterBeforeOpen = 'filterBeforeOpen'; /** @hidden */ var filterSearchBegin = 'filterSearchBegin'; /** @hidden */ var commandClick = 'commandClick'; /** @hidden */ var exportGroupCaption = 'exportGroupCaption'; /** @hidden */ var lazyLoadGroupExpand = 'lazyLoadGroupExpand'; /** @hidden */ var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse'; /** * Specifies grid internal events */ /** @hidden */ var initialLoad = 'initial-load'; /** @hidden */ var initialEnd = 'initial-end'; /** @hidden */ var dataReady = 'data-ready'; /** @hidden */ var contentReady = 'content-ready'; /** @hidden */ var uiUpdate = 'ui-update'; /** @hidden */ var onEmpty = 'on-empty'; /** @hidden */ var inBoundModelChanged = 'inbound-model-changed'; /** @hidden */ var modelChanged = 'model-changed'; /** @hidden */ var colGroupRefresh = 'colgroup-refresh'; /** @hidden */ var headerRefreshed = 'header-refreshed'; /** @hidden */ var pageBegin = 'paging-begin'; /** @hidden */ var pageComplete = 'paging-complete'; /** @hidden */ var sortBegin = 'sorting-begin'; /** @hidden */ var sortComplete = 'sorting-complete'; /** @hidden */ var filterBegin = 'filtering-begin'; /** @hidden */ var filterComplete = 'filtering-complete'; /** @hidden */ var searchBegin = 'searching-begin'; /** @hidden */ var searchComplete = 'searching-complete'; /** @hidden */ var reorderBegin = 'reorder-begin'; /** @hidden */ var reorderComplete = 'reorder-complete'; /** @hidden */ var rowDragAndDropBegin = 'rowdraganddrop-begin'; /** @hidden */ var rowDragAndDropComplete = 'rowdraganddrop-complete'; /** @hidden */ var groupBegin = 'grouping-begin'; /** @hidden */ var groupComplete = 'grouping-complete'; /** @hidden */ var ungroupBegin = 'ungrouping-begin'; /** @hidden */ var ungroupComplete = 'ungrouping-complete'; /** @hidden */ var groupAggregates = 'group-aggregates'; /** @hidden */ var refreshFooterRenderer = 'refresh-footer-rendered'; /** @hidden */ var refreshAggregateCell = 'refresh-aggregate-cell'; /** @hidden */ var refreshAggregates = 'refresh-aggregates'; /** @hidden */ var rowSelectionBegin = 'rowselecting'; /** @hidden */ var rowSelectionComplete = 'rowselected'; /** @hidden */ var columnSelectionBegin = 'columnselecting'; /** @hidden */ var columnSelectionComplete = 'columnselected'; /** @hidden */ var cellSelectionBegin = 'cellselecting'; /** @hidden */ var cellSelectionComplete = 'cellselected'; /** @hidden */ var destroyAutoFillElements = 'destroy-autofill-elements'; /** @hidden */ var beforeCellFocused = 'beforecellfocused'; /** @hidden */ var cellFocused = 'cellfocused'; /** @hidden */ var keyPressed = 'key-pressed'; /** @hidden */ var click = 'click'; /** @hidden */ var destroy = 'destroy'; /** @hidden */ var columnVisibilityChanged = 'column-visible-changed'; /** @hidden */ var scroll = 'scroll'; /** @hidden */ var columnWidthChanged = 'column-width-changed'; /** @hidden */ var columnPositionChanged = 'column-position-changed'; /** @hidden */ var rowDragAndDrop = 'row-drag-and-drop'; /** @hidden */ var rowsAdded = 'rows-added'; /** @hidden */ var rowsRemoved = 'rows-removed'; /** @hidden */ var columnDragStop = 'column-drag-stop'; /** @hidden */ var headerDrop = 'header-drop'; /** @hidden */ var dataSourceModified = 'datasource-modified'; /** @hidden */ var refreshComplete = 'refresh-complete'; /** @hidden */ var refreshVirtualBlock = 'refresh-virtual-block'; /** @hidden */ var dblclick = 'dblclick'; /** @hidden */ var toolbarRefresh = 'toolbar-refresh'; /** @hidden */ var bulkSave = 'bulk-save'; /** @hidden */ var autoCol = 'auto-col'; /** @hidden */ var tooltipDestroy = 'tooltip-destroy'; /** @hidden */ var updateData = 'update-data'; /** @hidden */ var editBegin = 'edit-begin'; /** @hidden */ var editComplete = 'edit-complete'; /** @hidden */ var addBegin = 'add-begin'; /** @hidden */ var addComplete = 'add-complete'; /** @hidden */ var saveComplete = 'save-complete'; /** @hidden */ var deleteBegin = 'delete-begin'; /** @hidden */ var deleteComplete = 'delete-complete'; /** @hidden */ var preventBatch = 'prevent-batch'; /** @hidden */ var dialogDestroy = 'dialog-destroy'; /** @hidden */ var crudAction = 'crud-Action'; /** @hidden */ var addDeleteAction = 'add-delete-Action'; /** @hidden */ var destroyForm = 'destroy-form'; /** @hidden */ var doubleTap = 'double-tap'; /** @hidden */ var beforeExcelExport = 'beforeExcelExport'; /** @hidden */ var excelExportComplete = 'excelExportComplete'; /** @hidden */ var excelQueryCellInfo = 'excelQueryCellInfo'; /** @hidden */ var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo'; /** @hidden */ var exportDetailDataBound = 'exportDetailDataBound'; /** @hidden */ var exportDetailTemplate = 'exportDetailTemplate'; /** @hidden */ var beforePdfExport = 'beforePdfExport'; /** @hidden */ var pdfExportComplete = 'pdfExportComplete'; /** @hidden */ var pdfQueryCellInfo = 'pdfQueryCellInfo'; /** @hidden */ var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo'; /** @hidden */ var accessPredicate = 'access-predicate'; /** @hidden */ var contextMenuClick = 'contextMenuClick'; /** @hidden */ var freezeRender = 'freezerender'; /** @hidden */ var freezeRefresh = 'freezerefresh'; /** @hidden */ var contextMenuOpen = 'contextMenuOpen'; /** @hidden */ var columnMenuClick = 'columnMenuClick'; /** @hidden */ var columnMenuOpen = 'columnMenuOpen'; /** @hidden */ var filterOpen = 'filterOpen'; /** @hidden */ var filterDialogCreated = 'filterDialogCreated'; /** @hidden */ var filterMenuClose = 'filter-menu-close'; /** @hidden */ var initForeignKeyColumn = 'initForeignKeyColumn'; /** @hidden */ var getForeignKeyData = 'getForeignKeyData'; /** @hidden */ var generateQuery = 'generateQuery'; /** @hidden */ var showEmptyGrid = 'showEmptyGrid'; /** @hidden */ var foreignKeyData = 'foreignKeyData'; /** @hidden */ var columnDataStateChange = 'columnDataStateChange'; /** @hidden */ var dataStateChange = 'dataStateChange'; /** @hidden */ var dataSourceChanged = 'dataSourceChanged'; /** @hidden */ var rtlUpdated = 'rtl-updated'; /** @hidden */ var beforeFragAppend = 'beforeFragAppend'; /** @hidden */ var frozenHeight = 'frozenHeight'; /** @hidden */ var textWrapRefresh = 'textWrapRefresh'; /** @hidden */ var recordAdded = 'recordAdded'; /** @hidden */ var cancelBegin = 'cancel-Begin'; /** @hidden */ var editNextValCell = 'editNextValCell'; /** @hidden */ var hierarchyPrint = 'hierarchyprint'; /** @hidden */ var expandChildGrid = 'expandchildgrid'; /** @hidden */ var printGridInit = 'printGrid-Init'; /** @hidden */ var exportRowDataBound = 'export-RowDataBound'; /** @hidden */ var exportDataBound = 'export-DataBound'; /** @hidden */ var rowPositionChanged = 'row-position-changed'; /** @hidden */ var columnChooserOpened = 'columnChooserOpened'; /** @hidden */ var batchForm = 'batchedit-form'; /** @hidden */ var beforeStartEdit = 'edit-form'; /** @hidden */ var beforeBatchCancel = 'before-batch-cancel'; /** @hidden */ var batchEditFormRendered = 'batcheditform-rendered'; /** @hidden */ var partialRefresh = 'partial-refresh'; /** @hidden */ var beforeCustomFilterOpen = 'beforeCustomFilterOpen'; /** @hidden */ var selectVirtualRow = 'select-virtual-Row'; /** @hidden */ var columnsPrepared = 'columns-prepared'; /** @hidden */ var cBoxFltrBegin = 'cbox-filter-begin'; /** @hidden */ var cBoxFltrComplete = 'cbox-filter-complete'; /** @hidden */ var fltrPrevent = 'filter-Prevent'; /** @hidden */ var beforeFltrcMenuOpen = 'before-filter-cmenu-open'; /** @hidden */ var valCustomPlacement = 'validation-custom-placement'; /** @hidden */ var filterCboxValue = 'filter-cbox-value'; /** @hidden */ var componentRendered = 'component-rendered'; /** @hidden */ var restoreFocus = 'restore-Focus'; /** @hidden */ var detailStateChange = 'detail-state-change'; /** @hidden */ var detailIndentCellInfo = 'detail-indentcell-info'; /** @hidden */ var virtaulKeyHandler = 'virtaul-key-handler'; /** @hidden */ var virtaulCellFocus = 'virtaul-cell-focus'; /** @hidden */ var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin'; /** @hidden */ var virtualScrollEditSuccess = 'virtual-scroll-edit-success'; /** @hidden */ var virtualScrollEditCancel = 'virtual-scroll-edit-cancel'; /** @hidden */ var virtualScrollEdit = 'virtual-scroll-edit'; /** @hidden */ var refreshVirtualCache = 'refresh-virtual-cache'; /** @hidden */ var editReset = 'edit-reset'; /** @hidden */ var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin'; /** @hidden */ var getVirtualData = 'get-virtual-data'; /** @hidden */ var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks'; /** @hidden */ var resetInfiniteBlocks = 'reset-infinite-blocks'; /** @hidden */ var infiniteScrollHandler = 'infinite-scroll-handler'; /** @hidden */ var infinitePageQuery = 'infinite-page-query'; /** @hidden */ var infiniteShowHide = 'infinite-show-hide'; /** @hidden */ var appendInfiniteContent = 'append-infinite-content'; /** @hidden */ var removeInfiniteRows = 'remove-infinite-rows'; /** @hidden */ var setInfiniteCache = 'set-infinite-cache'; /** @hidden */ var infiniteEditHandler = 'infinite-edit-handler'; /** @hidden */ var initialCollapse = 'initial-collapse'; /** @hidden */ var getAggregateQuery = 'get-aggregate-query'; /** @hidden */ var closeFilterDialog = 'close-filter-dialog'; /** @hidden */ var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick'; /** @hidden */ var getFilterBarOperator = 'get-filterbar-operator'; /** @hidden */ var resetColumns = 'reset-columns'; /** @hidden */ var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo'; /** @hidden */ var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo'; /** @hidden */ var setGroupCache = 'group-cache'; /** @hidden */ var lazyLoadScrollHandler = 'lazy-load-scroll-handler'; /** @hidden */ var groupCollapse = 'group-collapse'; /** @hidden */ var beforeCheckboxRenderer = 'beforeCheckboxRenderer'; /** @hidden */ var refreshHandlers = 'refreshResizeHandlers'; /** @hidden */ var refreshFrozenColumns = 'refresh-frozen-columns'; /** @hidden */ var setReorderDestinationElement = 'set-reorder-destination-element'; /** @hidden */ var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height'; /** @hidden */ var setFreezeSelection = 'set-freeze-selection'; /** @hidden */ var setInfiniteFrozenHeight = 'set-infinite-frozen-height'; /** @hidden */ var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height'; /** @hidden */ var beforeRefreshOnDataChange = 'before-refresh-on-data-change'; /** @hidden */ var immutableBatchCancel = 'immutable-batch-cancel'; /** @hidden */ var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows'; /** @hidden */ var checkScrollReset = 'check-scroll-reset'; /** @hidden */ var refreshFrozenHeight = 'refresh-frozen-height'; /** @hidden */ var setHeightToFrozenElement = 'set-height-to-frozen-element'; /** @hidden */ var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh'; /** @hidden */ var nextCellIndex = 'next-cell-index'; /** @hidden */ var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data'; /** @hidden */ var infiniteCrudCancel = 'infinite-crud-cancel'; /** @hidden */ var filterDialogClose = 'filter-dialog-close'; /** @hidden */ var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button'; /** @hidden */ var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button'; /** @hidden */ var renderResponsiveCmenu = 'render-responsive-cmenu'; /** @hidden */ var filterCmenuSelect = 'filter-cmenu-select'; /** @hidden */ var customFilterClose = 'custom-filter-close'; /** @hidden */ var setFullScreenDialog = 'set-fullscreen-dialog'; /** @hidden */ var refreshExpandandCollapse = 'refresh-Expand-and-Collapse'; /** @hidden */ var rowModeChange = 'row-mode-change'; /** @hidden */ var enterKeyHandler = 'enter-key-handler'; /** @hidden */ var refreshVirtualMaxPage = 'refresh-virtual-max-page'; /** @hidden */ var setVirtualPageQuery = 'set-virtual-page-query'; /** @hidden */ var selectRowOnContextOpen = 'select-row-on-context-open'; /** @hidden */ var pagerRefresh = 'pager-refresh'; /** @hidden */ var closeInline = 'closeinline'; /** @hidden */ var closeBatch = 'closebatch'; /** @hidden */ var closeEdit = 'close-edit'; /** @hidden */ var resetVirtualFocus = 'reset-virtual-focus'; /** @hidden */ var afterContentRender = 'after-content-renderer'; /** @hidden */ var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells'; /** @hidden */ var scrollToEdit = 'scroll-to-edit'; /** @hidden */ var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query'; /** @hidden */ var createVirtualValidationForm = 'create-virtual-validation-form'; /** @hidden */ var validateVirtualForm = 'validate-virtual-form'; /** @hidden */ var destroyChildGrid = 'destroy-child-grid'; /** @hidden */ var stickyScrollComplete = 'sticky-scroll-complete'; /** @hidden */ var captionActionComplete = 'infinite-group-collapse'; /** @hidden */ var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection'; /** @hidden */ var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex'; /** @hidden */ var afterFilterColumnMenuClose = 'after-filter-column-menu-close'; /** @hidden */ var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer'; /** @hidden */ var commandColumnDestroy = 'commandColumnDestroy'; /** @hidden */ var batchCnfrmDlgCancel = 'cancelcnfrmDlg'; /** @hidden */ var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache'; /** @hidden */ var refreshFrozenPosition = 'refresh-Frozen-Position'; /** @hidden */ var refreshResizePosition = 'refresh-Resize-Position'; /** @hidden */ var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column'; /** @hidden */ var renderResponsiveChangeAction = 'render-Responsive-Change-Action'; /** @hidden */ var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div'; /** @hidden */ var showAddNewRowFocus = 'show-Add-New-Row-Focus'; /** @hidden */ var infiniteScrollComplete = 'infinitescroll-complete'; /** @hidden */ var lastRowCellBorderUpdated = 'last-rowcell-border-updated'; /** @hidden */ var columnChooserSearch = 'columnChooserSearch'; /** @hidden */ var columnChooserClose = 'columnChooserClose'; /** @hidden */ var columnChooserUpdate = 'columnChooserUpdate'; /** @hidden */ var destroyEditForm = 'destroy-edit-form'; /** @hidden */ var beforeDetailTemplateDetach = 'beforeDetailTemplateDetach'; /** @hidden */ var detachDetailTemplate = 'detach-detail-template'; /** * Defines types of Cell * * @hidden */ var CellType; (function (CellType) { /** Defines CellType as Data */ CellType[CellType["Data"] = 0] = "Data"; /** Defines CellType as Header */ CellType[CellType["Header"] = 1] = "Header"; /** Defines CellType as Summary */ CellType[CellType["Summary"] = 2] = "Summary"; /** Defines CellType as GroupSummary */ CellType[CellType["GroupSummary"] = 3] = "GroupSummary"; /** Defines CellType as CaptionSummary */ CellType[CellType["CaptionSummary"] = 4] = "CaptionSummary"; /** Defines CellType as Filter */ CellType[CellType["Filter"] = 5] = "Filter"; /** Defines CellType as Indent */ CellType[CellType["Indent"] = 6] = "Indent"; /** Defines CellType as GroupCaption */ CellType[CellType["GroupCaption"] = 7] = "GroupCaption"; /** Defines CellType as GroupCaptionEmpty */ CellType[CellType["GroupCaptionEmpty"] = 8] = "GroupCaptionEmpty"; /** Defines CellType as Expand */ CellType[CellType["Expand"] = 9] = "Expand"; /** Defines CellType as HeaderIndent */ CellType[CellType["HeaderIndent"] = 10] = "HeaderIndent"; /** Defines CellType as StackedHeader */ CellType[CellType["StackedHeader"] = 11] = "StackedHeader"; /** Defines CellType as DetailHeader */ CellType[CellType["DetailHeader"] = 12] = "DetailHeader"; /** Defines CellType as DetailExpand */ CellType[CellType["DetailExpand"] = 13] = "DetailExpand"; /** Defines CellType as CommandColumn */ CellType[CellType["CommandColumn"] = 14] = "CommandColumn"; /** Defines CellType as DetailFooterIntent */ CellType[CellType["DetailFooterIntent"] = 15] = "DetailFooterIntent"; /** Defines CellType as RowDrag */ CellType[CellType["RowDragIcon"] = 16] = "RowDragIcon"; /** Defines CellType as RowDragHeader */ CellType[CellType["RowDragHIcon"] = 17] = "RowDragHIcon"; })(CellType || (CellType = {})); /** * Defines types of Render * * @hidden */ var RenderType; (function (RenderType) { /** Defines RenderType as Header */ RenderType[RenderType["Header"] = 0] = "Header"; /** Defines RenderType as Content */ RenderType[RenderType["Content"] = 1] = "Content"; /** Defines RenderType as Summary */ RenderType[RenderType["Summary"] = 2] = "Summary"; })(RenderType || (RenderType = {})); /** * Defines Predefined toolbar items. * * @hidden */ var ToolbarItem; (function (ToolbarItem) { ToolbarItem[ToolbarItem["Add"] = 0] = "Add"; ToolbarItem[ToolbarItem["Edit"] = 1] = "Edit"; ToolbarItem[ToolbarItem["Update"] = 2] = "Update"; ToolbarItem[ToolbarItem["Delete"] = 3] = "Delete"; ToolbarItem[ToolbarItem["Cancel"] = 4] = "Cancel"; ToolbarItem[ToolbarItem["Print"] = 5] = "Print"; ToolbarItem[ToolbarItem["Search"] = 6] = "Search"; ToolbarItem[ToolbarItem["ColumnChooser"] = 7] = "ColumnChooser"; ToolbarItem[ToolbarItem["PdfExport"] = 8] = "PdfExport"; ToolbarItem[ToolbarItem["ExcelExport"] = 9] = "ExcelExport"; ToolbarItem[ToolbarItem["CsvExport"] = 10] = "CsvExport"; ToolbarItem[ToolbarItem["WordExport"] = 11] = "WordExport"; })(ToolbarItem || (ToolbarItem = {})); /** * Defines types of responsive dialogs * * @hidden */ var ResponsiveDialogAction; (function (ResponsiveDialogAction) { /** Defines dialog type as Edit */ ResponsiveDialogAction[ResponsiveDialogAction["isEdit"] = 0] = "isEdit"; /** Defines dialog type as Add */ ResponsiveDialogAction[ResponsiveDialogAction["isAdd"] = 1] = "isAdd"; /** Defines dialog type as Sort */ ResponsiveDialogAction[ResponsiveDialogAction["isSort"] = 2] = "isSort"; /** Defines dialog type as Filter */ ResponsiveDialogAction[ResponsiveDialogAction["isFilter"] = 3] = "isFilter"; /** Defines dialog type as ColMenu */ ResponsiveDialogAction[ResponsiveDialogAction["isColMenu"] = 4] = "isColMenu"; /** Defines dialog type as ColumChooser */ ResponsiveDialogAction[ResponsiveDialogAction["isColumnChooser"] = 5] = "isColumnChooser"; })(ResponsiveDialogAction || (ResponsiveDialogAction = {})); /** * Defines responsive toolbar actions * * @hidden */ var ResponsiveToolbarAction; (function (ResponsiveToolbarAction) { /** Defines initial responsive toolbar buttons */ ResponsiveToolbarAction[ResponsiveToolbarAction["isInitial"] = 0] = "isInitial"; /** Defines responsive toolbar search */ ResponsiveToolbarAction[ResponsiveToolbarAction["isSearch"] = 1] = "isSearch"; })(ResponsiveToolbarAction || (ResponsiveToolbarAction = {})); /** * Grid data module is used to generate query and data source. * * @hidden */ var Data = /** @__PURE__ @class */ (function () { /** * Constructor for data module. * * @param {IGrid} parent - specifies the IGrid * @param {ServiceLocator} serviceLocator - specifies the service locator * @hidden */ function Data(parent, serviceLocator) { this.dataState = { isPending: false, resolver: null, group: [] }; this.foreignKeyDataState = { isPending: false, resolver: null }; this.parent = parent; this.serviceLocator = serviceLocator; this.initDataManager(); if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') { return; } this.parent.on(rowsAdded, this.addRows, this); this.parent.on(rowPositionChanged, this.reorderRows, this); this.parent.on(rowsRemoved, this.removeRows, this); this.parent.on(dataSourceModified, this.initDataManager, this); this.parent.on(destroy, this.destroy, this); this.parent.on(updateData, this.crudActions, this); this.parent.on(addDeleteAction, this.getData, this); this.parent.on(autoCol, this.refreshFilteredCols, this); this.parent.on(columnsPrepared, this.refreshFilteredCols, this); } Data.prototype.reorderRows = function (e) { if (this.parent.getDataModule().isRemote()) { this.parent.getCurrentViewRecords().splice(e.toIndex, 0, this.parent.getCurrentViewRecords().splice(e.fromIndex, 1)[0]); } else { this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]); } }; Data.prototype.getModuleName = function () { return 'data'; }; /** * The function used to initialize dataManager and external query * * @returns {void} */ Data.prototype.initDataManager = function () { var gObj = this.parent; this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource : (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource)); if (gObj.isAngular && !(gObj.query instanceof Query)) { gObj.setProperties({ query: new Query() }, true); } else { this.isQueryInvokedFromData = true; if (!(gObj.query instanceof Query)) { gObj.query = new Query(); } } }; /** * The function is used to generate updated Query from Grid model. * * @param {boolean} skipPage - specifies the boolean to skip the page * @param {boolean} isAutoCompleteCall - specifies for auto complete call * @returns {Query} returns the Query * @hidden */ Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) { var gObj = this.parent; var query = !isNullOrUndefined(gObj.getQuery()) ? gObj.getQuery().clone() : new Query(); if (this.parent.columnQueryMode === 'ExcludeHidden') { query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; })); } else if (this.parent.columnQueryMode === 'Schema') { var selectQueryFields = []; var columns = this.parent.columns; for (var i = 0; i < columns.length; i++) { selectQueryFields.push(columns[parseInt(i.toString(), 10)].field); } query.select(selectQueryFields); } this.filterQuery(query); this.searchQuery(query); this.aggregateQuery(query); this.sortQuery(query); if (isGroupAdaptive(this.parent)) { this.virtualGroupPageQuery(query); } else { this.pageQuery(query, skipPage); } if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) { this.groupQuery(query); } return query; }; /** * @param {Query} query - specifies the query * @returns {Query} - returns the query * @hidden */ Data.prototype.aggregateQuery = function (query) { var rows = this.parent.aggregates; for (var i = 0; i < rows.length; i++) { var row = rows[parseInt(i.toString(), 10)]; for (var j = 0; j < row.columns.length; j++) { var cols = row.columns[parseInt(j.toString(), 10)]; var types = cols.type instanceof Array ? cols.type : [cols.type]; for (var k = 0; k < types.length; k++) { query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field); } } } return query; }; Data.prototype.virtualGroupPageQuery = function (query) { var fName = 'fn'; if (query.queries.length) { for (var i = 0; i < query.queries.length; i++) { if (query.queries[parseInt(i.toString(), 10)]["" + fName] === 'onPage') { query.queries.splice(i, 1); } } } return query; }; Data.prototype.pageQuery = function (query, skipPage) { var gObj = this.parent; var fName = 'fn'; var args = { query: query, skipPage: false }; gObj.notify(setVirtualPageQuery, args); if (args.skipPage) { return query; } if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) { gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage); if (gObj.pageSettings.pageCount <= 0) { gObj.pageSettings.pageCount = 8; } if (gObj.pageSettings.pageSize <= 0) { gObj.pageSettings.pageSize = 12; } if (query.queries.length) { for (var i = 0; i < query.queries.length; i++) { if (query.queries[parseInt(i.toString(), 10)]["" + fName] === 'onPage') { query.queries.splice(i, 1); } } } if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) { this.parent.notify(infinitePageQuery, query); } else { query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule && (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) && (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ? null : gObj.pageSettings.pageSize); } } return query; }; Data.prototype.groupQuery = function (query) { var gObj = this.parent; if (gObj.allowGrouping && gObj.groupSettings.columns.length) { if (this.parent.groupSettings.enableLazyLoading) { query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading }); } var columns = gObj.groupSettings.columns; for (var i = 0, len = columns.length; i < len; i++) { var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]); if (!column) { this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] }); } var isGrpFmt = column.enableGroupByFormat; var format = column.format; if (isGrpFmt) { query.group(columns[p