@syncfusion/ej2-treegrid 30.2.4 → 31.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-treegrid.min.js +2 -2
- package/dist/ej2-treegrid.umd.min.js +2 -2
- package/dist/ej2-treegrid.umd.min.js.map +1 -1
- package/dist/es6/ej2-treegrid.es2015.js +263 -157
- package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
- package/dist/es6/ej2-treegrid.es5.js +291 -167
- package/dist/es6/ej2-treegrid.es5.js.map +1 -1
- package/dist/global/ej2-treegrid.min.js +2 -2
- package/dist/global/ej2-treegrid.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/dist/ts/index.d.ts +4 -0
- package/dist/ts/index.ts +4 -0
- package/dist/ts/treegrid/actions/batch-edit.d.ts +74 -0
- package/dist/ts/treegrid/actions/batch-edit.ts +627 -0
- package/dist/ts/treegrid/actions/clipboard.d.ts +36 -0
- package/dist/ts/treegrid/actions/clipboard.ts +174 -0
- package/dist/ts/treegrid/actions/column-chooser.d.ts +37 -0
- package/dist/ts/treegrid/actions/column-chooser.ts +55 -0
- package/dist/ts/treegrid/actions/column-menu.d.ts +24 -0
- package/dist/ts/treegrid/actions/column-menu.ts +39 -0
- package/dist/ts/treegrid/actions/command-column.d.ts +24 -0
- package/dist/ts/treegrid/actions/command-column.ts +32 -0
- package/dist/ts/treegrid/actions/context-menu.d.ts +42 -0
- package/dist/ts/treegrid/actions/context-menu.ts +149 -0
- package/dist/ts/treegrid/actions/crud-actions.d.ts +66 -0
- package/dist/ts/treegrid/actions/crud-actions.ts +388 -0
- package/dist/ts/treegrid/actions/detail-row.d.ts +39 -0
- package/dist/ts/treegrid/actions/detail-row.ts +124 -0
- package/dist/ts/treegrid/actions/edit.d.ts +121 -0
- package/dist/ts/treegrid/actions/edit.ts +1083 -0
- package/dist/ts/treegrid/actions/excel-export.d.ts +67 -0
- package/dist/ts/treegrid/actions/excel-export.ts +240 -0
- package/dist/ts/treegrid/actions/filter.d.ts +57 -0
- package/dist/ts/treegrid/actions/filter.ts +231 -0
- package/dist/ts/treegrid/actions/freeze-column.d.ts +28 -0
- package/dist/ts/treegrid/actions/freeze-column.ts +119 -0
- package/dist/ts/treegrid/actions/index.d.ts +24 -0
- package/dist/ts/treegrid/actions/index.ts +24 -0
- package/dist/ts/treegrid/actions/infinite-scroll.d.ts +96 -0
- package/dist/ts/treegrid/actions/infinite-scroll.ts +320 -0
- package/dist/ts/treegrid/actions/logger.d.ts +25 -0
- package/dist/ts/treegrid/actions/logger.ts +136 -0
- package/dist/ts/treegrid/actions/page.d.ts +67 -0
- package/dist/ts/treegrid/actions/page.ts +212 -0
- package/dist/ts/treegrid/actions/pdf-export.d.ts +63 -0
- package/dist/ts/treegrid/actions/pdf-export.ts +182 -0
- package/dist/ts/treegrid/actions/print.d.ts +37 -0
- package/dist/ts/treegrid/actions/print.ts +69 -0
- package/dist/ts/treegrid/actions/reorder.d.ts +36 -0
- package/dist/ts/treegrid/actions/reorder.ts +60 -0
- package/dist/ts/treegrid/actions/resize.d.ts +36 -0
- package/dist/ts/treegrid/actions/resize.ts +54 -0
- package/dist/ts/treegrid/actions/rowdragdrop.d.ts +405 -0
- package/dist/ts/treegrid/actions/rowdragdrop.ts +1896 -0
- package/dist/ts/treegrid/actions/selection.d.ts +51 -0
- package/dist/ts/treegrid/actions/selection.ts +530 -0
- package/dist/ts/treegrid/actions/sort.d.ts +63 -0
- package/dist/ts/treegrid/actions/sort.ts +149 -0
- package/dist/ts/treegrid/actions/summary.d.ts +47 -0
- package/dist/ts/treegrid/actions/summary.ts +231 -0
- package/dist/ts/treegrid/actions/toolbar.d.ts +52 -0
- package/dist/ts/treegrid/actions/toolbar.ts +154 -0
- package/dist/ts/treegrid/actions/virtual-scroll.d.ts +90 -0
- package/dist/ts/treegrid/actions/virtual-scroll.ts +306 -0
- package/dist/ts/treegrid/base/constant.d.ts +158 -0
- package/dist/ts/treegrid/base/constant.ts +158 -0
- package/dist/ts/treegrid/base/data.d.ts +90 -0
- package/dist/ts/treegrid/base/data.ts +904 -0
- package/dist/ts/treegrid/base/index.d.ts +11 -0
- package/dist/ts/treegrid/base/index.ts +11 -0
- package/dist/ts/treegrid/base/interface.d.ts +186 -0
- package/dist/ts/treegrid/base/interface.ts +191 -0
- package/dist/ts/treegrid/base/treegrid-model.d.ts +1100 -0
- package/dist/ts/treegrid/base/treegrid.d.ts +2422 -0
- package/dist/ts/treegrid/base/treegrid.ts +5962 -0
- package/dist/ts/treegrid/enum.d.ts +152 -0
- package/dist/ts/treegrid/enum.ts +217 -0
- package/dist/ts/treegrid/index.d.ts +9 -0
- package/dist/ts/treegrid/index.ts +9 -0
- package/dist/ts/treegrid/models/column-chooser-settings-model.d.ts +62 -0
- package/dist/ts/treegrid/models/column-chooser-settings.d.ts +53 -0
- package/dist/ts/treegrid/models/column-chooser-settings.ts +67 -0
- package/dist/ts/treegrid/models/column-model.d.ts +30 -0
- package/dist/ts/treegrid/models/column.d.ts +697 -0
- package/dist/ts/treegrid/models/column.ts +800 -0
- package/dist/ts/treegrid/models/edit-settings-model.d.ts +100 -0
- package/dist/ts/treegrid/models/edit-settings.d.ts +89 -0
- package/dist/ts/treegrid/models/edit-settings.ts +111 -0
- package/dist/ts/treegrid/models/filter-settings-model.d.ts +216 -0
- package/dist/ts/treegrid/models/filter-settings.d.ts +195 -0
- package/dist/ts/treegrid/models/filter-settings.ts +237 -0
- package/dist/ts/treegrid/models/index.d.ts +24 -0
- package/dist/ts/treegrid/models/index.ts +24 -0
- package/dist/ts/treegrid/models/infinite-scroll-settings-model.d.ts +29 -0
- package/dist/ts/treegrid/models/infinite-scroll-settings.d.ts +25 -0
- package/dist/ts/treegrid/models/infinite-scroll-settings.ts +31 -0
- package/dist/ts/treegrid/models/loading-indicator-model.d.ts +21 -0
- package/dist/ts/treegrid/models/loading-indicator.d.ts +19 -0
- package/dist/ts/treegrid/models/loading-indicator.ts +21 -0
- package/dist/ts/treegrid/models/page-settings-model.d.ts +66 -0
- package/dist/ts/treegrid/models/page-settings.d.ts +57 -0
- package/dist/ts/treegrid/models/page-settings.ts +73 -0
- package/dist/ts/treegrid/models/rowdrop-settings-model.d.ts +15 -0
- package/dist/ts/treegrid/models/rowdrop-settings.d.ts +34 -0
- package/dist/ts/treegrid/models/rowdrop-settings.ts +37 -0
- package/dist/ts/treegrid/models/search-settings-model.d.ts +79 -0
- package/dist/ts/treegrid/models/search-settings.d.ts +73 -0
- package/dist/ts/treegrid/models/search-settings.ts +83 -0
- package/dist/ts/treegrid/models/selection-settings-model.d.ts +76 -0
- package/dist/ts/treegrid/models/selection-settings.d.ts +68 -0
- package/dist/ts/treegrid/models/selection-settings.ts +82 -0
- package/dist/ts/treegrid/models/sort-settings-model.d.ts +49 -0
- package/dist/ts/treegrid/models/sort-settings.d.ts +43 -0
- package/dist/ts/treegrid/models/sort-settings.ts +51 -0
- package/dist/ts/treegrid/models/summary-model.d.ts +93 -0
- package/dist/ts/treegrid/models/summary.d.ts +126 -0
- package/dist/ts/treegrid/models/summary.ts +170 -0
- package/dist/ts/treegrid/models/textwrap-settings-model.d.ts +21 -0
- package/dist/ts/treegrid/models/textwrap-settings.d.ts +19 -0
- package/dist/ts/treegrid/models/textwrap-settings.ts +21 -0
- package/dist/ts/treegrid/renderer/index.d.ts +5 -0
- package/dist/ts/treegrid/renderer/index.ts +5 -0
- package/dist/ts/treegrid/renderer/render.d.ts +41 -0
- package/dist/ts/treegrid/renderer/render.ts +379 -0
- package/dist/ts/treegrid/renderer/virtual-row-model-generator.d.ts +16 -0
- package/dist/ts/treegrid/renderer/virtual-row-model-generator.ts +90 -0
- package/dist/ts/treegrid/renderer/virtual-tree-content-render.d.ts +353 -0
- package/dist/ts/treegrid/renderer/virtual-tree-content-render.ts +1125 -0
- package/dist/ts/treegrid/utils.d.ts +70 -0
- package/dist/ts/treegrid/utils.ts +217 -0
- package/package.json +51 -15
- package/src/treegrid/actions/context-menu.js +3 -1
- package/src/treegrid/actions/excel-export.d.ts +8 -0
- package/src/treegrid/actions/excel-export.js +12 -0
- package/src/treegrid/actions/freeze-column.js +1 -1
- package/src/treegrid/actions/pdf-export.d.ts +8 -0
- package/src/treegrid/actions/pdf-export.js +12 -0
- package/src/treegrid/actions/selection.js +1 -1
- package/src/treegrid/actions/virtual-scroll.js +2 -2
- package/src/treegrid/base/data.js +1 -1
- package/src/treegrid/base/treegrid-model.d.ts +32 -2
- package/src/treegrid/base/treegrid.d.ts +29 -2
- package/src/treegrid/base/treegrid.js +39 -2
- package/src/treegrid/models/column-chooser-settings-model.d.ts +62 -0
- package/src/treegrid/models/column-chooser-settings.d.ts +53 -0
- package/src/treegrid/models/column-chooser-settings.js +52 -0
- package/src/treegrid/renderer/virtual-tree-content-render.js +3 -8
- package/src/treegrid/utils.js +22 -6
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { TreeGrid } from '../base/treegrid';
|
|
2
|
+
import { ExcelExportProperties } from '@syncfusion/ej2-grids';
|
|
3
|
+
import { Fetch } from '@syncfusion/ej2-base';
|
|
4
|
+
import { Query } from '@syncfusion/ej2-data';
|
|
5
|
+
/**
|
|
6
|
+
* TreeGrid Excel Export module
|
|
7
|
+
*
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
export declare class ExcelExport {
|
|
11
|
+
private parent;
|
|
12
|
+
private dataResults;
|
|
13
|
+
private isCollapsedStatePersist;
|
|
14
|
+
/**
|
|
15
|
+
* Constructor for Excel Export module
|
|
16
|
+
*
|
|
17
|
+
* @param {TreeGrid} parent - Tree Grid instance
|
|
18
|
+
*/
|
|
19
|
+
constructor(parent?: TreeGrid);
|
|
20
|
+
/**
|
|
21
|
+
* For internal use only - Get the module name.
|
|
22
|
+
*
|
|
23
|
+
* @private
|
|
24
|
+
* @returns {string} Returns ExcelExport module name
|
|
25
|
+
*/
|
|
26
|
+
protected getModuleName(): string;
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
* @returns {void}
|
|
30
|
+
*/
|
|
31
|
+
addEventListener(): void;
|
|
32
|
+
/**
|
|
33
|
+
* To destroy the Excel Export
|
|
34
|
+
*
|
|
35
|
+
* @returns {void}
|
|
36
|
+
* @hidden
|
|
37
|
+
*/
|
|
38
|
+
destroy(): void;
|
|
39
|
+
/**
|
|
40
|
+
* @hidden
|
|
41
|
+
* @returns {void}
|
|
42
|
+
*/
|
|
43
|
+
removeEventListener(): void;
|
|
44
|
+
private updateExcelResultModel;
|
|
45
|
+
Map(excelExportProperties?: ExcelExportProperties, isMultipleExport?: boolean, workbook?: any, isBlob?: boolean, isCsv?: boolean): Promise<Object>;
|
|
46
|
+
protected generateQuery(query: Query, property?: ExcelExportProperties): Query;
|
|
47
|
+
protected manipulateExportProperties(property?: ExcelExportProperties, dtSrc?: Object, queryResult?: Fetch): Object;
|
|
48
|
+
/**
|
|
49
|
+
* TreeGrid Excel Export cell modifier
|
|
50
|
+
*
|
|
51
|
+
* @param {ExcelQueryCellInfoEventArgs} args - current cell details
|
|
52
|
+
* @hidden
|
|
53
|
+
* @returns {void}
|
|
54
|
+
*/
|
|
55
|
+
private excelQueryCellInfo;
|
|
56
|
+
/**
|
|
57
|
+
* TreeGrid Excel Export Aggregate cell modifier
|
|
58
|
+
*
|
|
59
|
+
* @param {AggregateQueryCellInfoEventArgs} args - current cell details
|
|
60
|
+
* @hidden
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/
|
|
63
|
+
private excelAggregateCellInfo;
|
|
64
|
+
private exportRowDataBound;
|
|
65
|
+
private finalPageSetup;
|
|
66
|
+
private isLocal;
|
|
67
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { TreeGrid } from '../base/treegrid';
|
|
2
|
+
import { ITreeData, TreeGridExcelExportProperties } from '../base/interface';
|
|
3
|
+
import { getObject, Grid, ExcelExport as GridExcel, ExcelExportProperties, BeforeDataBoundArgs, ExportHelper } from '@syncfusion/ej2-grids';
|
|
4
|
+
import { ExcelStyle, ExcelQueryCellInfoEventArgs, AggregateQueryCellInfoEventArgs } from '@syncfusion/ej2-grids';
|
|
5
|
+
import { ExcelRow, Row, Column, Data } from '@syncfusion/ej2-grids';
|
|
6
|
+
import { isRemoteData, isOffline, getParentData, getExpandStatus } from '../utils';
|
|
7
|
+
import { isNullOrUndefined, setValue, Fetch, extend } from '@syncfusion/ej2-base';
|
|
8
|
+
import { DataManager, Query, ReturnOption } from '@syncfusion/ej2-data';
|
|
9
|
+
import * as event from '../base/constant';
|
|
10
|
+
/**
|
|
11
|
+
* TreeGrid Excel Export module
|
|
12
|
+
*
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
export class ExcelExport {
|
|
16
|
+
private parent: TreeGrid;
|
|
17
|
+
private dataResults: ReturnOption;
|
|
18
|
+
private isCollapsedStatePersist: boolean = false;
|
|
19
|
+
/**
|
|
20
|
+
* Constructor for Excel Export module
|
|
21
|
+
*
|
|
22
|
+
* @param {TreeGrid} parent - Tree Grid instance
|
|
23
|
+
*/
|
|
24
|
+
constructor(parent?: TreeGrid) {
|
|
25
|
+
Grid.Inject(GridExcel);
|
|
26
|
+
this.parent = parent;
|
|
27
|
+
this.dataResults = <ReturnOption>{};
|
|
28
|
+
this.addEventListener();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* For internal use only - Get the module name.
|
|
32
|
+
*
|
|
33
|
+
* @private
|
|
34
|
+
* @returns {string} Returns ExcelExport module name
|
|
35
|
+
*/
|
|
36
|
+
protected getModuleName(): string {
|
|
37
|
+
return 'ExcelExport';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @hidden
|
|
41
|
+
* @returns {void}
|
|
42
|
+
*/
|
|
43
|
+
public addEventListener(): void {
|
|
44
|
+
this.parent.on('updateResults', this.updateExcelResultModel, this);
|
|
45
|
+
this.parent.on('excelCellInfo', this.excelQueryCellInfo, this);
|
|
46
|
+
this.parent.grid.on('export-RowDataBound', this.exportRowDataBound, this);
|
|
47
|
+
this.parent.on('excelAggregateCellInfo', this.excelAggregateCellInfo, this);
|
|
48
|
+
this.parent.grid.on('finalPageSetup', this.finalPageSetup, this);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* To destroy the Excel Export
|
|
52
|
+
*
|
|
53
|
+
* @returns {void}
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
public destroy(): void {
|
|
57
|
+
this.removeEventListener();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @hidden
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/
|
|
63
|
+
public removeEventListener(): void {
|
|
64
|
+
if (this.parent.isDestroyed) { return; }
|
|
65
|
+
this.parent.off('updateResults', this.updateExcelResultModel);
|
|
66
|
+
this.parent.off('excelCellInfo', this.excelQueryCellInfo);
|
|
67
|
+
this.parent.grid.off('export-RowDataBound', this.exportRowDataBound);
|
|
68
|
+
this.parent.off('excelAggregateCellInfo', this.excelAggregateCellInfo);
|
|
69
|
+
this.parent.grid.off('finalPageSetup', this.finalPageSetup);
|
|
70
|
+
}
|
|
71
|
+
private updateExcelResultModel(returnResult: { result: ITreeData[], count: number }): void {
|
|
72
|
+
this.dataResults = <ReturnOption>returnResult;
|
|
73
|
+
}
|
|
74
|
+
public Map(
|
|
75
|
+
excelExportProperties?: ExcelExportProperties,
|
|
76
|
+
/* eslint-disable-next-line */
|
|
77
|
+
isMultipleExport?: boolean, workbook?: any, isBlob?: boolean, isCsv?: boolean) : Promise<Object> {
|
|
78
|
+
const dataSource: object = this.parent.dataSource;
|
|
79
|
+
const data: Data = new Data(this.parent.grid);
|
|
80
|
+
const property: Object = Object();
|
|
81
|
+
setValue('isCsv', isCsv, property);
|
|
82
|
+
setValue('cancel', false, property);
|
|
83
|
+
if (!isNullOrUndefined(excelExportProperties)) {
|
|
84
|
+
this.isCollapsedStatePersist = (excelExportProperties as TreeGridExcelExportProperties).isCollapsedStatePersist;
|
|
85
|
+
}
|
|
86
|
+
if (!isNullOrUndefined(excelExportProperties)) {
|
|
87
|
+
if (!this.isLocal() && !isNullOrUndefined(excelExportProperties.dataSource) && !excelExportProperties.dataSource['dataSource']) {
|
|
88
|
+
return this.parent.grid.excelExportModule.Map(
|
|
89
|
+
this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob);
|
|
90
|
+
}
|
|
91
|
+
if (excelExportProperties.exportType === 'CurrentPage') {
|
|
92
|
+
excelExportProperties.dataSource = this.parent.getCurrentViewRecords();
|
|
93
|
+
return this.parent.grid.excelExportModule.Map(
|
|
94
|
+
this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return new Promise((resolve: Function) => {
|
|
98
|
+
const dm: DataManager = this.isLocal() && !(dataSource instanceof DataManager) ? new DataManager(dataSource)
|
|
99
|
+
: <DataManager>this.parent.dataSource;
|
|
100
|
+
let query: Query = new Query();
|
|
101
|
+
if (!this.isLocal()) {
|
|
102
|
+
query = this.generateQuery(query);
|
|
103
|
+
query.queries = this.parent.grid.getDataModule().generateQuery().queries;
|
|
104
|
+
query = ExportHelper.getQuery(this.parent.grid, data);
|
|
105
|
+
if (isNullOrUndefined(this.parent.filterModule)) {
|
|
106
|
+
query.queries = query.queries.slice(1, 2);
|
|
107
|
+
query.params = query.params.slice(0, 0);
|
|
108
|
+
}
|
|
109
|
+
setValue('query', query, property);
|
|
110
|
+
}
|
|
111
|
+
this.parent.trigger(event.beforeExcelExport, extend(property, excelExportProperties));
|
|
112
|
+
if (getObject('cancel', property)) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
dm.executeQuery(query).then((e: Object) => {
|
|
116
|
+
let customData: Object = null;
|
|
117
|
+
if (!isNullOrUndefined(excelExportProperties) && !isNullOrUndefined(excelExportProperties.dataSource)) {
|
|
118
|
+
customData = excelExportProperties.dataSource;
|
|
119
|
+
}
|
|
120
|
+
excelExportProperties = this.manipulateExportProperties(excelExportProperties, dataSource, <Fetch>e);
|
|
121
|
+
return this.parent.grid.excelExportModule.Map(
|
|
122
|
+
this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob).then((book: Object) => {
|
|
123
|
+
if (customData != null) {
|
|
124
|
+
excelExportProperties.dataSource = customData;
|
|
125
|
+
} else {
|
|
126
|
+
delete excelExportProperties.dataSource;
|
|
127
|
+
}
|
|
128
|
+
resolve(book);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
protected generateQuery(query: Query, property?: ExcelExportProperties) : Query {
|
|
134
|
+
if (!isNullOrUndefined(property) && property.exportType === 'CurrentPage'
|
|
135
|
+
&& this.parent.allowPaging) {
|
|
136
|
+
property.exportType = 'AllPages';
|
|
137
|
+
query.addParams('ExportType', 'CurrentPage');
|
|
138
|
+
query.where(this.parent.parentIdMapping, 'equal', null);
|
|
139
|
+
query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);
|
|
140
|
+
}
|
|
141
|
+
return query;
|
|
142
|
+
}
|
|
143
|
+
protected manipulateExportProperties(property?: ExcelExportProperties, dtSrc?: Object, queryResult?: Fetch) : Object {
|
|
144
|
+
//count not required for this query
|
|
145
|
+
let args: BeforeDataBoundArgs = Object();
|
|
146
|
+
if (!isNullOrUndefined(this.parent.grid.getDataModule())) {
|
|
147
|
+
setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);
|
|
148
|
+
}
|
|
149
|
+
setValue('isExport', true, args);
|
|
150
|
+
if (!isNullOrUndefined(property) && !isNullOrUndefined(property.exportType)) {
|
|
151
|
+
setValue('exportType', property.exportType, args);
|
|
152
|
+
}
|
|
153
|
+
if (!this.isLocal()) {
|
|
154
|
+
this.parent.parentData = [];
|
|
155
|
+
this.parent.dataModule.convertToFlatData(getObject('result', queryResult));
|
|
156
|
+
setValue('expresults', this.parent.flatData, args);
|
|
157
|
+
}
|
|
158
|
+
this.parent.notify('dataProcessor', args);
|
|
159
|
+
//args = this.parent.dataModule.dataProcessor(args);
|
|
160
|
+
args = <BeforeDataBoundArgs>this.dataResults;
|
|
161
|
+
dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;
|
|
162
|
+
if (!this.isLocal()) {
|
|
163
|
+
this.parent.flatData = [];
|
|
164
|
+
}
|
|
165
|
+
if (property && property.dataSource) {
|
|
166
|
+
const flatsData: Object[] = this.parent.flatData;
|
|
167
|
+
const dataSrc: Object = property.dataSource instanceof DataManager ? property.dataSource.dataSource.json : property.dataSource;
|
|
168
|
+
this.parent.dataModule.convertToFlatData(dataSrc);
|
|
169
|
+
dtSrc = this.parent.flatData;
|
|
170
|
+
this.parent.flatData = flatsData;
|
|
171
|
+
}
|
|
172
|
+
property = isNullOrUndefined(property) ? Object() : property;
|
|
173
|
+
property.dataSource = new DataManager({json: <Object[]>dtSrc});
|
|
174
|
+
if (this.parent.aggregates.length > 0) {
|
|
175
|
+
property.query = args['query'];
|
|
176
|
+
}
|
|
177
|
+
return property;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* TreeGrid Excel Export cell modifier
|
|
181
|
+
*
|
|
182
|
+
* @param {ExcelQueryCellInfoEventArgs} args - current cell details
|
|
183
|
+
* @hidden
|
|
184
|
+
* @returns {void}
|
|
185
|
+
*/
|
|
186
|
+
private excelQueryCellInfo(args?: ExcelQueryCellInfoEventArgs) : void {
|
|
187
|
+
if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {
|
|
188
|
+
const style: ExcelStyle = {};
|
|
189
|
+
const data: ITreeData = <ITreeData>args.data;
|
|
190
|
+
const ispadfilter: boolean = isNullOrUndefined(data.filterLevel);
|
|
191
|
+
const pad: number = ispadfilter ? data.level : data.filterLevel;
|
|
192
|
+
style.indent = pad;
|
|
193
|
+
args.style = style;
|
|
194
|
+
}
|
|
195
|
+
this.parent.notify('updateResults', args);
|
|
196
|
+
this.parent.trigger('excelQueryCellInfo', args);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* TreeGrid Excel Export Aggregate cell modifier
|
|
200
|
+
*
|
|
201
|
+
* @param {AggregateQueryCellInfoEventArgs} args - current cell details
|
|
202
|
+
* @hidden
|
|
203
|
+
* @returns {void}
|
|
204
|
+
*/
|
|
205
|
+
private excelAggregateCellInfo(args?: AggregateQueryCellInfoEventArgs) : void {
|
|
206
|
+
this.parent.trigger('excelAggregateQueryCellInfo', args);
|
|
207
|
+
}
|
|
208
|
+
private exportRowDataBound(excelRow: {excelRows: ExcelRow[], rowObj: Row<Column>, type: string}) : void {
|
|
209
|
+
if (excelRow.type === 'excel') {
|
|
210
|
+
const excelrowobj: ITreeData = excelRow.rowObj.data;
|
|
211
|
+
const filtercolumnlength: number = this.parent.grid.filterSettings.columns.length;
|
|
212
|
+
const rowlength: number = excelRow.excelRows.length;
|
|
213
|
+
const rowlevel: number = excelrowobj.level;
|
|
214
|
+
if (excelrowobj.parentItem && getParentData(this.parent, excelrowobj.parentItem.uniqueID, Boolean(filtercolumnlength))) {
|
|
215
|
+
let expandedStatus: boolean = false; let sublevelState: boolean = false;
|
|
216
|
+
const state: boolean = getExpandStatus(this.parent, excelrowobj, this.parent.parentData);
|
|
217
|
+
if (this.isCollapsedStatePersist && (!state || !this.parent.isLocalData)) {
|
|
218
|
+
expandedStatus = true;
|
|
219
|
+
sublevelState = excelrowobj.expanded ? false : true;
|
|
220
|
+
}
|
|
221
|
+
excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel, isCollapsed: sublevelState,
|
|
222
|
+
isHidden: expandedStatus };
|
|
223
|
+
}
|
|
224
|
+
else if (excelrowobj.hasChildRecords && isNullOrUndefined(excelrowobj.parentItem)) {
|
|
225
|
+
excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel};
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/* eslint-disable-next-line */
|
|
230
|
+
private finalPageSetup(workbook: any): void {
|
|
231
|
+
for (let i: number = 0; i < workbook.worksheets.length; i++) {
|
|
232
|
+
if (workbook.worksheets[parseInt(i.toString(), 10)].rows) {
|
|
233
|
+
workbook.worksheets[parseInt(i.toString(), 10)].pageSetup = { isSummaryRowBelow: false };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
private isLocal(): boolean {
|
|
238
|
+
return !isRemoteData(this.parent) && isOffline(this.parent);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TreeGrid } from '../base/treegrid';
|
|
2
|
+
/**
|
|
3
|
+
* TreeGrid Filter module will handle filtering action
|
|
4
|
+
*
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
export declare class Filter {
|
|
8
|
+
private parent;
|
|
9
|
+
filteredResult: Object[];
|
|
10
|
+
private flatFilteredData;
|
|
11
|
+
private filteredParentRecs;
|
|
12
|
+
private isHierarchyFilter;
|
|
13
|
+
/**
|
|
14
|
+
* Constructor for Filter module
|
|
15
|
+
*
|
|
16
|
+
* @param {TreeGrid} parent - Tree Grid instance
|
|
17
|
+
*/
|
|
18
|
+
constructor(parent?: TreeGrid);
|
|
19
|
+
/**
|
|
20
|
+
* For internal use only - Get the module name.
|
|
21
|
+
*
|
|
22
|
+
* @private
|
|
23
|
+
* @returns {string} Returns Filter module name
|
|
24
|
+
*/
|
|
25
|
+
protected getModuleName(): string;
|
|
26
|
+
/**
|
|
27
|
+
* To destroy the Filter module
|
|
28
|
+
*
|
|
29
|
+
* @returns {void}
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
destroy(): void;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
* @returns {void}
|
|
36
|
+
*/
|
|
37
|
+
addEventListener(): void;
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
removeEventListener(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Function to update filtered records
|
|
45
|
+
*
|
|
46
|
+
* @param {{data: Object} } dataDetails - Filtered data collection
|
|
47
|
+
* @param {Object} dataDetails.data - Fliltered data collection
|
|
48
|
+
* @hidden
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*/
|
|
51
|
+
private updatedFilteredRecord;
|
|
52
|
+
private updateParentFilteredRecord;
|
|
53
|
+
private addParentRecord;
|
|
54
|
+
private checkChildExsist;
|
|
55
|
+
private updateFilterLevel;
|
|
56
|
+
private clearFilterLevel;
|
|
57
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { TreeGrid } from '../base/treegrid';
|
|
2
|
+
import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';
|
|
3
|
+
import { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';
|
|
4
|
+
import { ITreeData } from '../base';
|
|
5
|
+
import { getParentData } from '../utils';
|
|
6
|
+
import { FilterHierarchyMode } from '..';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* TreeGrid Filter module will handle filtering action
|
|
10
|
+
*
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
export class Filter {
|
|
14
|
+
|
|
15
|
+
private parent: TreeGrid;
|
|
16
|
+
public filteredResult: Object[];
|
|
17
|
+
private flatFilteredData: Object[];
|
|
18
|
+
private filteredParentRecs: Object[];
|
|
19
|
+
private isHierarchyFilter: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Constructor for Filter module
|
|
22
|
+
*
|
|
23
|
+
* @param {TreeGrid} parent - Tree Grid instance
|
|
24
|
+
*/
|
|
25
|
+
constructor(parent?: TreeGrid) {
|
|
26
|
+
Grid.Inject(GridFilter);
|
|
27
|
+
this.parent = parent;
|
|
28
|
+
this.isHierarchyFilter = false;
|
|
29
|
+
this.filteredResult = [];
|
|
30
|
+
this.flatFilteredData = [];
|
|
31
|
+
this.filteredParentRecs = [];
|
|
32
|
+
this.addEventListener();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* For internal use only - Get the module name.
|
|
36
|
+
*
|
|
37
|
+
* @private
|
|
38
|
+
* @returns {string} Returns Filter module name
|
|
39
|
+
*/
|
|
40
|
+
protected getModuleName(): string {
|
|
41
|
+
return 'filter';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* To destroy the Filter module
|
|
45
|
+
*
|
|
46
|
+
* @returns {void}
|
|
47
|
+
* @hidden
|
|
48
|
+
*/
|
|
49
|
+
public destroy(): void {
|
|
50
|
+
this.removeEventListener();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @hidden
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*/
|
|
56
|
+
public addEventListener(): void {
|
|
57
|
+
this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);
|
|
58
|
+
this.parent.on('clearFilters', this.clearFilterLevel, this);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @hidden
|
|
62
|
+
* @returns {void}
|
|
63
|
+
*/
|
|
64
|
+
public removeEventListener(): void {
|
|
65
|
+
if (this.parent.isDestroyed) { return; }
|
|
66
|
+
this.parent.off('updateFilterRecs', this.updatedFilteredRecord);
|
|
67
|
+
this.parent.off('clearFilters', this.clearFilterLevel);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Function to update filtered records
|
|
71
|
+
*
|
|
72
|
+
* @param {{data: Object} } dataDetails - Filtered data collection
|
|
73
|
+
* @param {Object} dataDetails.data - Fliltered data collection
|
|
74
|
+
* @hidden
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
private updatedFilteredRecord(dataDetails: { data: Object }): void {
|
|
78
|
+
setValue('uniqueIDFilterCollection', {}, this.parent);
|
|
79
|
+
this.flatFilteredData = dataDetails.data as Object[];
|
|
80
|
+
this.filteredParentRecs = [];
|
|
81
|
+
this.filteredResult = [];
|
|
82
|
+
this.isHierarchyFilter = false;
|
|
83
|
+
const hierarchyMode: FilterHierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode
|
|
84
|
+
: this.parent.searchSettings.hierarchyMode;
|
|
85
|
+
for (let f: number = 0; f < this.flatFilteredData.length; f++) {
|
|
86
|
+
const rec: ITreeData = this.flatFilteredData[parseInt(f.toString(), 10)];
|
|
87
|
+
this.addParentRecord(rec);
|
|
88
|
+
if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&
|
|
89
|
+
(this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {
|
|
90
|
+
this.isHierarchyFilter = true;
|
|
91
|
+
}
|
|
92
|
+
const ischild: Object[] = getObject('childRecords', rec);
|
|
93
|
+
if (!isNullOrUndefined(ischild) && ischild.length) {
|
|
94
|
+
setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);
|
|
95
|
+
}
|
|
96
|
+
const parent: Object = getObject('parentItem', rec);
|
|
97
|
+
if (!isNullOrUndefined(parent)) {
|
|
98
|
+
const parRecord: ITreeData = getParentData(this.parent, rec.parentItem.uniqueID, true);
|
|
99
|
+
setValue('hasFilteredChildRecords', true, parRecord);
|
|
100
|
+
if (parRecord && parRecord.parentItem) {
|
|
101
|
+
this.updateParentFilteredRecord(parRecord);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {
|
|
106
|
+
this.updateFilterLevel();
|
|
107
|
+
}
|
|
108
|
+
this.parent.notify('updateAction', { result: this.filteredResult });
|
|
109
|
+
}
|
|
110
|
+
private updateParentFilteredRecord(record: ITreeData): void {
|
|
111
|
+
const parRecord: ITreeData = getParentData(this.parent, record.parentItem.uniqueID, true);
|
|
112
|
+
const uniqueIDValue: Object = getValue('uniqueIDFilterCollection', this.parent);
|
|
113
|
+
if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {
|
|
114
|
+
setValue('hasFilteredChildRecords', true, parRecord);
|
|
115
|
+
}
|
|
116
|
+
if (parRecord && parRecord.parentItem) {
|
|
117
|
+
this.updateParentFilteredRecord(parRecord);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
private addParentRecord(record: ITreeData): void {
|
|
121
|
+
const parent: Object = getParentData(this.parent, record.parentUniqueID);
|
|
122
|
+
const hierarchyMode: FilterHierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode
|
|
123
|
+
: this.parent.searchSettings.hierarchyMode;
|
|
124
|
+
if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0
|
|
125
|
+
|| this.parent.grid.searchSettings.key !== '')) {
|
|
126
|
+
if (isNullOrUndefined(parent)) {
|
|
127
|
+
if (this.flatFilteredData.indexOf(record) !== -1) {
|
|
128
|
+
if (this.filteredResult.indexOf(record) === -1) {
|
|
129
|
+
this.filteredResult.push(record);
|
|
130
|
+
setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);
|
|
131
|
+
record.hasFilteredChildRecords = true;
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
this.addParentRecord(parent);
|
|
137
|
+
if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {
|
|
138
|
+
if (this.filteredResult.indexOf(record) === -1) {
|
|
139
|
+
this.filteredResult.push(record);
|
|
140
|
+
setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);
|
|
141
|
+
}
|
|
142
|
+
} else {
|
|
143
|
+
if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {
|
|
144
|
+
this.filteredResult.push(record);
|
|
145
|
+
setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
if (!isNullOrUndefined(parent)) {
|
|
151
|
+
const hierarchyMode: FilterHierarchyMode = this.parent.grid.searchSettings.key === '' ?
|
|
152
|
+
this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;
|
|
153
|
+
if (hierarchyMode === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0
|
|
154
|
+
|| this.parent.grid.searchSettings.key !== '')) {
|
|
155
|
+
if (this.flatFilteredData.indexOf(parent) !== -1) {
|
|
156
|
+
this.addParentRecord(parent);
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
this.addParentRecord(parent);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (this.filteredResult.indexOf(record) === -1) {
|
|
163
|
+
this.filteredResult.push(record);
|
|
164
|
+
setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
private checkChildExsist(records: Object): boolean {
|
|
169
|
+
const childRec: ITreeData[] = getObject('childRecords', records);
|
|
170
|
+
let isExist: boolean = false;
|
|
171
|
+
for (let count: number = 0; count < childRec.length; count++) {
|
|
172
|
+
const ischild: Object[] = childRec[parseInt(count.toString(), 10)].childRecords;
|
|
173
|
+
const hierarchyMode: FilterHierarchyMode = this.parent.grid.searchSettings.key === '' ?
|
|
174
|
+
this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;
|
|
175
|
+
if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0
|
|
176
|
+
|| this.parent.grid.searchSettings.key !== ''))) {
|
|
177
|
+
const uniqueIDValue: Object = getValue('uniqueIDFilterCollection', this.parent);
|
|
178
|
+
if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[parseInt(count.toString(), 10)].uniqueID)) {
|
|
179
|
+
this.filteredResult.push(childRec[parseInt(count.toString(), 10)]);
|
|
180
|
+
setValue('uniqueIDFilterCollection.' + childRec[parseInt(count.toString(), 10)].uniqueID, childRec[parseInt(count.toString(), 10)], this.parent);
|
|
181
|
+
isExist = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if ((hierarchyMode === 'None')
|
|
185
|
+
&& (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {
|
|
186
|
+
if (this.flatFilteredData.indexOf(childRec[parseInt(count.toString(), 10)]) !== -1) {
|
|
187
|
+
isExist = true;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!isNullOrUndefined(ischild) && ischild.length) {
|
|
192
|
+
isExist = this.checkChildExsist(childRec[parseInt(count.toString(), 10)]);
|
|
193
|
+
}
|
|
194
|
+
if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {
|
|
195
|
+
isExist = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return isExist;
|
|
199
|
+
}
|
|
200
|
+
private updateFilterLevel(): void {
|
|
201
|
+
const record: ITreeData[] = this.filteredResult;
|
|
202
|
+
const len: number = this.filteredResult.length;
|
|
203
|
+
for (let c: number = 0; c < len; c++) {
|
|
204
|
+
const parent: ITreeData = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID);
|
|
205
|
+
const isPrst: boolean = record.indexOf(parent) !== -1;
|
|
206
|
+
if (isPrst) {
|
|
207
|
+
const parent: ITreeData = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID, true);
|
|
208
|
+
record[parseInt(c.toString(), 10)].filterLevel = parent.filterLevel + 1;
|
|
209
|
+
} else {
|
|
210
|
+
record[parseInt(c.toString(), 10)].filterLevel = 0;
|
|
211
|
+
this.filteredParentRecs.push(record[parseInt(c.toString(), 10)]);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
private clearFilterLevel(data: { flatData: Object[] }): void {
|
|
216
|
+
let count: number = 0;
|
|
217
|
+
const flatData: ITreeData[] = data.flatData as ITreeData[];
|
|
218
|
+
const len: number = flatData.length;
|
|
219
|
+
let currentRecord: ITreeData;
|
|
220
|
+
for (count; count < len; count++) {
|
|
221
|
+
currentRecord = flatData[parseInt(count.toString(), 10)];
|
|
222
|
+
const fLevel: number = currentRecord.filterLevel;
|
|
223
|
+
if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {
|
|
224
|
+
currentRecord.hasFilteredChildRecords = null;
|
|
225
|
+
currentRecord.filterLevel = null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
this.filteredResult = [];
|
|
229
|
+
this.parent.notify('updateResults', { result: flatData, count: flatData.length });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TreeGrid } from '../base/treegrid';
|
|
2
|
+
/**
|
|
3
|
+
* TreeGrid Freeze module
|
|
4
|
+
*
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
export declare class Freeze {
|
|
8
|
+
private parent;
|
|
9
|
+
/**
|
|
10
|
+
* Constructor for render module
|
|
11
|
+
*
|
|
12
|
+
* @param {TreeGrid} parent - Tree Grid instance
|
|
13
|
+
*/
|
|
14
|
+
constructor(parent?: TreeGrid);
|
|
15
|
+
addEventListener(): void;
|
|
16
|
+
removeEventListener(): void;
|
|
17
|
+
private rowExpandCollapse;
|
|
18
|
+
private dblClickHandler;
|
|
19
|
+
private dataBoundArg;
|
|
20
|
+
destroy(): void;
|
|
21
|
+
/**
|
|
22
|
+
* For internal use only - Get the module name.
|
|
23
|
+
*
|
|
24
|
+
* @private
|
|
25
|
+
* @returns {string} Returns Freeze module name
|
|
26
|
+
*/
|
|
27
|
+
private getModuleName;
|
|
28
|
+
}
|