@syncfusion/ej2-treegrid 31.1.17 → 31.1.20
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 +13 -4
- package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
- package/dist/es6/ej2-treegrid.es5.js +13 -4
- 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/package.json +14 -50
- package/src/treegrid/actions/edit.js +1 -1
- package/src/treegrid/actions/rowdragdrop.js +12 -3
- package/styles/bootstrap4-lite.css +8 -0
- package/styles/bootstrap4.css +8 -0
- package/styles/treegrid/bootstrap4.css +8 -0
- package/dist/ts/index.d.ts +0 -4
- package/dist/ts/index.ts +0 -4
- package/dist/ts/treegrid/actions/batch-edit.d.ts +0 -74
- package/dist/ts/treegrid/actions/batch-edit.ts +0 -627
- package/dist/ts/treegrid/actions/clipboard.d.ts +0 -36
- package/dist/ts/treegrid/actions/clipboard.ts +0 -174
- package/dist/ts/treegrid/actions/column-chooser.d.ts +0 -37
- package/dist/ts/treegrid/actions/column-chooser.ts +0 -55
- package/dist/ts/treegrid/actions/column-menu.d.ts +0 -24
- package/dist/ts/treegrid/actions/column-menu.ts +0 -39
- package/dist/ts/treegrid/actions/command-column.d.ts +0 -24
- package/dist/ts/treegrid/actions/command-column.ts +0 -32
- package/dist/ts/treegrid/actions/context-menu.d.ts +0 -42
- package/dist/ts/treegrid/actions/context-menu.ts +0 -149
- package/dist/ts/treegrid/actions/crud-actions.d.ts +0 -66
- package/dist/ts/treegrid/actions/crud-actions.ts +0 -388
- package/dist/ts/treegrid/actions/detail-row.d.ts +0 -39
- package/dist/ts/treegrid/actions/detail-row.ts +0 -124
- package/dist/ts/treegrid/actions/edit.d.ts +0 -121
- package/dist/ts/treegrid/actions/edit.ts +0 -1083
- package/dist/ts/treegrid/actions/excel-export.d.ts +0 -67
- package/dist/ts/treegrid/actions/excel-export.ts +0 -240
- package/dist/ts/treegrid/actions/filter.d.ts +0 -57
- package/dist/ts/treegrid/actions/filter.ts +0 -231
- package/dist/ts/treegrid/actions/freeze-column.d.ts +0 -28
- package/dist/ts/treegrid/actions/freeze-column.ts +0 -119
- package/dist/ts/treegrid/actions/index.d.ts +0 -24
- package/dist/ts/treegrid/actions/index.ts +0 -24
- package/dist/ts/treegrid/actions/infinite-scroll.d.ts +0 -96
- package/dist/ts/treegrid/actions/infinite-scroll.ts +0 -320
- package/dist/ts/treegrid/actions/logger.d.ts +0 -25
- package/dist/ts/treegrid/actions/logger.ts +0 -136
- package/dist/ts/treegrid/actions/page.d.ts +0 -67
- package/dist/ts/treegrid/actions/page.ts +0 -212
- package/dist/ts/treegrid/actions/pdf-export.d.ts +0 -63
- package/dist/ts/treegrid/actions/pdf-export.ts +0 -182
- package/dist/ts/treegrid/actions/print.d.ts +0 -37
- package/dist/ts/treegrid/actions/print.ts +0 -69
- package/dist/ts/treegrid/actions/reorder.d.ts +0 -36
- package/dist/ts/treegrid/actions/reorder.ts +0 -60
- package/dist/ts/treegrid/actions/resize.d.ts +0 -36
- package/dist/ts/treegrid/actions/resize.ts +0 -54
- package/dist/ts/treegrid/actions/rowdragdrop.d.ts +0 -405
- package/dist/ts/treegrid/actions/rowdragdrop.ts +0 -1896
- package/dist/ts/treegrid/actions/selection.d.ts +0 -51
- package/dist/ts/treegrid/actions/selection.ts +0 -530
- package/dist/ts/treegrid/actions/sort.d.ts +0 -63
- package/dist/ts/treegrid/actions/sort.ts +0 -149
- package/dist/ts/treegrid/actions/summary.d.ts +0 -47
- package/dist/ts/treegrid/actions/summary.ts +0 -231
- package/dist/ts/treegrid/actions/toolbar.d.ts +0 -52
- package/dist/ts/treegrid/actions/toolbar.ts +0 -154
- package/dist/ts/treegrid/actions/virtual-scroll.d.ts +0 -90
- package/dist/ts/treegrid/actions/virtual-scroll.ts +0 -306
- package/dist/ts/treegrid/base/constant.d.ts +0 -158
- package/dist/ts/treegrid/base/constant.ts +0 -158
- package/dist/ts/treegrid/base/data.d.ts +0 -90
- package/dist/ts/treegrid/base/data.ts +0 -904
- package/dist/ts/treegrid/base/index.d.ts +0 -11
- package/dist/ts/treegrid/base/index.ts +0 -11
- package/dist/ts/treegrid/base/interface.d.ts +0 -186
- package/dist/ts/treegrid/base/interface.ts +0 -191
- package/dist/ts/treegrid/base/treegrid-model.d.ts +0 -1100
- package/dist/ts/treegrid/base/treegrid.d.ts +0 -2422
- package/dist/ts/treegrid/base/treegrid.ts +0 -5962
- package/dist/ts/treegrid/enum.d.ts +0 -152
- package/dist/ts/treegrid/enum.ts +0 -217
- package/dist/ts/treegrid/index.d.ts +0 -9
- package/dist/ts/treegrid/index.ts +0 -9
- package/dist/ts/treegrid/models/column-chooser-settings-model.d.ts +0 -62
- package/dist/ts/treegrid/models/column-chooser-settings.d.ts +0 -53
- package/dist/ts/treegrid/models/column-chooser-settings.ts +0 -67
- package/dist/ts/treegrid/models/column-model.d.ts +0 -30
- package/dist/ts/treegrid/models/column.d.ts +0 -697
- package/dist/ts/treegrid/models/column.ts +0 -800
- package/dist/ts/treegrid/models/edit-settings-model.d.ts +0 -100
- package/dist/ts/treegrid/models/edit-settings.d.ts +0 -89
- package/dist/ts/treegrid/models/edit-settings.ts +0 -111
- package/dist/ts/treegrid/models/filter-settings-model.d.ts +0 -216
- package/dist/ts/treegrid/models/filter-settings.d.ts +0 -195
- package/dist/ts/treegrid/models/filter-settings.ts +0 -237
- package/dist/ts/treegrid/models/index.d.ts +0 -24
- package/dist/ts/treegrid/models/index.ts +0 -24
- package/dist/ts/treegrid/models/infinite-scroll-settings-model.d.ts +0 -29
- package/dist/ts/treegrid/models/infinite-scroll-settings.d.ts +0 -25
- package/dist/ts/treegrid/models/infinite-scroll-settings.ts +0 -31
- package/dist/ts/treegrid/models/loading-indicator-model.d.ts +0 -21
- package/dist/ts/treegrid/models/loading-indicator.d.ts +0 -19
- package/dist/ts/treegrid/models/loading-indicator.ts +0 -21
- package/dist/ts/treegrid/models/page-settings-model.d.ts +0 -66
- package/dist/ts/treegrid/models/page-settings.d.ts +0 -57
- package/dist/ts/treegrid/models/page-settings.ts +0 -73
- package/dist/ts/treegrid/models/rowdrop-settings-model.d.ts +0 -15
- package/dist/ts/treegrid/models/rowdrop-settings.d.ts +0 -34
- package/dist/ts/treegrid/models/rowdrop-settings.ts +0 -37
- package/dist/ts/treegrid/models/search-settings-model.d.ts +0 -79
- package/dist/ts/treegrid/models/search-settings.d.ts +0 -73
- package/dist/ts/treegrid/models/search-settings.ts +0 -83
- package/dist/ts/treegrid/models/selection-settings-model.d.ts +0 -76
- package/dist/ts/treegrid/models/selection-settings.d.ts +0 -68
- package/dist/ts/treegrid/models/selection-settings.ts +0 -82
- package/dist/ts/treegrid/models/sort-settings-model.d.ts +0 -49
- package/dist/ts/treegrid/models/sort-settings.d.ts +0 -43
- package/dist/ts/treegrid/models/sort-settings.ts +0 -51
- package/dist/ts/treegrid/models/summary-model.d.ts +0 -93
- package/dist/ts/treegrid/models/summary.d.ts +0 -126
- package/dist/ts/treegrid/models/summary.ts +0 -170
- package/dist/ts/treegrid/models/textwrap-settings-model.d.ts +0 -21
- package/dist/ts/treegrid/models/textwrap-settings.d.ts +0 -19
- package/dist/ts/treegrid/models/textwrap-settings.ts +0 -21
- package/dist/ts/treegrid/renderer/index.d.ts +0 -5
- package/dist/ts/treegrid/renderer/index.ts +0 -5
- package/dist/ts/treegrid/renderer/render.d.ts +0 -41
- package/dist/ts/treegrid/renderer/render.ts +0 -379
- package/dist/ts/treegrid/renderer/virtual-row-model-generator.d.ts +0 -16
- package/dist/ts/treegrid/renderer/virtual-row-model-generator.ts +0 -90
- package/dist/ts/treegrid/renderer/virtual-tree-content-render.d.ts +0 -353
- package/dist/ts/treegrid/renderer/virtual-tree-content-render.ts +0 -1125
- package/dist/ts/treegrid/utils.d.ts +0 -70
- package/dist/ts/treegrid/utils.ts +0 -217
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { TreeGrid } from '../base/treegrid';
|
|
2
|
-
import { parentsUntil } from '@syncfusion/ej2-grids';
|
|
3
|
-
import { Column, ColumnModel } from '../models/column';
|
|
4
|
-
import { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';
|
|
5
|
-
import { ITreeData } from '../base';
|
|
6
|
-
import { addClass, isNullOrUndefined } from '@syncfusion/ej2-base';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* TreeGrid Freeze module
|
|
10
|
-
*
|
|
11
|
-
* @hidden
|
|
12
|
-
*/
|
|
13
|
-
export class Freeze {
|
|
14
|
-
private parent: TreeGrid;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Constructor for render module
|
|
18
|
-
*
|
|
19
|
-
* @param {TreeGrid} parent - Tree Grid instance
|
|
20
|
-
*/
|
|
21
|
-
constructor(parent?: TreeGrid) {
|
|
22
|
-
Grid.Inject(FreezeColumn);
|
|
23
|
-
this.parent = parent;
|
|
24
|
-
this.addEventListener();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public addEventListener(): void {
|
|
28
|
-
this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);
|
|
29
|
-
this.parent.on('dataBoundArg', this.dataBoundArg, this);
|
|
30
|
-
this.parent.grid.on('dblclick', this.dblClickHandler, this);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public removeEventListener(): void {
|
|
34
|
-
if (this.parent.isDestroyed) { return; }
|
|
35
|
-
this.parent.off('rowExpandCollapse', this.rowExpandCollapse);
|
|
36
|
-
this.parent.off('dataBoundArg', this.dataBoundArg);
|
|
37
|
-
this.parent.grid.off('dblclick', this.dblClickHandler);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
private rowExpandCollapse(args: {
|
|
41
|
-
detailrows: HTMLTableRowElement[], action: string,
|
|
42
|
-
record?: ITreeData, row?: HTMLTableRowElement
|
|
43
|
-
}): void {
|
|
44
|
-
const movableRows: HTMLTableRowElement[] = <HTMLTableRowElement[]>this.parent.getDataRows();
|
|
45
|
-
const frozenrows: HTMLTableRowElement[] = this.parent.getRows();
|
|
46
|
-
let rows: HTMLTableRowElement[];
|
|
47
|
-
let frozenRightRows: HTMLTableRowElement[];
|
|
48
|
-
const freeze: boolean = (this.parent.getFrozenLeftColumnsCount() > 0 ||
|
|
49
|
-
this.parent.getFrozenRightColumnsCount() > 0) ? true : false;
|
|
50
|
-
if (freeze) {
|
|
51
|
-
frozenRightRows = <HTMLTableRowElement[]>this.parent.getRows().filter(
|
|
52
|
-
(e: HTMLTableRowElement) =>
|
|
53
|
-
e.querySelector(
|
|
54
|
-
'.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1)
|
|
55
|
-
));
|
|
56
|
-
}
|
|
57
|
-
if (!args.detailrows.length) {
|
|
58
|
-
rows = movableRows.filter(
|
|
59
|
-
(e: HTMLTableRowElement) =>
|
|
60
|
-
e.querySelector(
|
|
61
|
-
'.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1)
|
|
62
|
-
));
|
|
63
|
-
} else {
|
|
64
|
-
rows = args.detailrows;
|
|
65
|
-
}
|
|
66
|
-
for (let i: number = 0; i < rows.length; i++) {
|
|
67
|
-
const row: HTMLTableRowElement = rows[parseInt(i.toString(), 10)];
|
|
68
|
-
const rData: ITreeData = this.parent.grid.getRowObjectFromUID(row.getAttribute('data-uid')).data;
|
|
69
|
-
if (!isNullOrUndefined(movableRows) && row.parentElement.firstElementChild.clientHeight > 0) {
|
|
70
|
-
row.style.height = row.parentElement.firstElementChild.clientHeight + 'px';
|
|
71
|
-
}
|
|
72
|
-
this.parent['toggleRowVisibility'](row, args.action);
|
|
73
|
-
if (freeze && frozenRightRows.length) {
|
|
74
|
-
this.parent['toggleRowVisibility'](frozenRightRows[parseInt(i.toString(), 10)], args.action);
|
|
75
|
-
}
|
|
76
|
-
const queryselector: string = args.action === 'e-childrow-hidden' ? '.e-treecolumn-container .e-treegridcollapse'
|
|
77
|
-
: '.e-treecolumn-container .e-treegridexpand';
|
|
78
|
-
if (frozenrows[row.rowIndex].querySelector(queryselector)) {
|
|
79
|
-
const cRow: HTMLTableRowElement[] = [];
|
|
80
|
-
for (let i: number = 0; i < movableRows.length; i++) {
|
|
81
|
-
if (movableRows[parseInt(i.toString(), 10)].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {
|
|
82
|
-
cRow.push(movableRows[parseInt(i.toString(), 10)]);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (cRow.length) {
|
|
86
|
-
const data: ITreeData = this.parent.getCurrentViewRecords()[cRow[0].rowIndex];
|
|
87
|
-
this.rowExpandCollapse({ detailrows: cRow, action: args.action, record: data });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
private dblClickHandler(e: MouseEvent): void {
|
|
93
|
-
if (parentsUntil(e.target as Element, 'e-rowcell') &&
|
|
94
|
-
this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell' && (!e.target['classList'].contains('e-treegridcollapse') && !e.target['classList'].contains('e-treegridexpand'))) {
|
|
95
|
-
this.parent.startEdit(parentsUntil(e.target as Element, 'e-row') as HTMLTableRowElement);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
private dataBoundArg(): void {
|
|
99
|
-
const checkboxColumn: Column[] = this.parent.getColumns().filter((e: ColumnModel) => {
|
|
100
|
-
return e.showCheckbox;
|
|
101
|
-
});
|
|
102
|
-
if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {
|
|
103
|
-
addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
public destroy(): void {
|
|
107
|
-
this.removeEventListener();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* For internal use only - Get the module name.
|
|
112
|
-
*
|
|
113
|
-
* @private
|
|
114
|
-
* @returns {string} Returns Freeze module name
|
|
115
|
-
*/
|
|
116
|
-
private getModuleName(): string {
|
|
117
|
-
return 'freeze';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* actions export
|
|
3
|
-
*/
|
|
4
|
-
export * from './filter';
|
|
5
|
-
export * from './excel-export';
|
|
6
|
-
export * from './pdf-export';
|
|
7
|
-
export * from './page';
|
|
8
|
-
export * from './toolbar';
|
|
9
|
-
export * from './summary';
|
|
10
|
-
export * from './sort';
|
|
11
|
-
export * from './reorder';
|
|
12
|
-
export * from './resize';
|
|
13
|
-
export * from './clipboard';
|
|
14
|
-
export * from './column-menu';
|
|
15
|
-
export * from './context-menu';
|
|
16
|
-
export * from './edit';
|
|
17
|
-
export * from './command-column';
|
|
18
|
-
export * from './selection';
|
|
19
|
-
export * from './detail-row';
|
|
20
|
-
export * from './virtual-scroll';
|
|
21
|
-
export * from './freeze-column';
|
|
22
|
-
export * from './column-chooser';
|
|
23
|
-
export * from './logger';
|
|
24
|
-
export * from './infinite-scroll';
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* actions export
|
|
3
|
-
*/
|
|
4
|
-
export * from './filter';
|
|
5
|
-
export * from './excel-export';
|
|
6
|
-
export * from './pdf-export';
|
|
7
|
-
export * from './page';
|
|
8
|
-
export * from './toolbar';
|
|
9
|
-
export * from './summary';
|
|
10
|
-
export * from './sort';
|
|
11
|
-
export * from './reorder';
|
|
12
|
-
export * from './resize';
|
|
13
|
-
export * from './clipboard';
|
|
14
|
-
export * from './column-menu';
|
|
15
|
-
export * from './context-menu';
|
|
16
|
-
export * from './edit';
|
|
17
|
-
export * from './command-column';
|
|
18
|
-
export * from './selection';
|
|
19
|
-
export * from './detail-row';
|
|
20
|
-
export * from './virtual-scroll';
|
|
21
|
-
export * from './freeze-column';
|
|
22
|
-
export * from './column-chooser';
|
|
23
|
-
export * from './logger';
|
|
24
|
-
export * from './infinite-scroll';
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { TreeGrid } from '../base/treegrid';
|
|
2
|
-
/**
|
|
3
|
-
* TreeGrid Infinite Scroll module will handle Infinite Scrolling.
|
|
4
|
-
*
|
|
5
|
-
* @hidden
|
|
6
|
-
*/
|
|
7
|
-
export declare class InfiniteScroll {
|
|
8
|
-
private parent;
|
|
9
|
-
private visualData;
|
|
10
|
-
/**
|
|
11
|
-
* Constructor for VirtualScroll module
|
|
12
|
-
*
|
|
13
|
-
* @param {TreeGrid} parent - Tree Grid instance
|
|
14
|
-
*/
|
|
15
|
-
constructor(parent?: TreeGrid);
|
|
16
|
-
/**
|
|
17
|
-
* For internal use only - Get the module name.
|
|
18
|
-
*
|
|
19
|
-
* @private
|
|
20
|
-
* @returns {string} - Returns Logger module name
|
|
21
|
-
*/
|
|
22
|
-
protected getModuleName(): string;
|
|
23
|
-
/**
|
|
24
|
-
* @hidden
|
|
25
|
-
* @returns {void}
|
|
26
|
-
*/
|
|
27
|
-
addEventListener(): void;
|
|
28
|
-
/**
|
|
29
|
-
* @hidden
|
|
30
|
-
* @returns {void}
|
|
31
|
-
*/
|
|
32
|
-
removeEventListener(): void;
|
|
33
|
-
/**
|
|
34
|
-
* Handles the Expand Collapse action for Remote data with infinite scrolling.
|
|
35
|
-
*
|
|
36
|
-
* @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data
|
|
37
|
-
* @param { number } args.index - expanded row index
|
|
38
|
-
* @param { ITreeData[] } args.childData - child data of expanded row
|
|
39
|
-
* @returns {void}
|
|
40
|
-
*/
|
|
41
|
-
private infiniteRemoteExpand;
|
|
42
|
-
/**
|
|
43
|
-
* Resetted the row index for expand collapse action for cache support.
|
|
44
|
-
*
|
|
45
|
-
* @returns {void}
|
|
46
|
-
*/
|
|
47
|
-
private contentready;
|
|
48
|
-
/**
|
|
49
|
-
* Handles the page query for Data operations and CRUD actions.
|
|
50
|
-
*
|
|
51
|
-
* @param {{ result: ITreeData[], count: number, actionArgs: object }} pageingDetails - data, its count and action details
|
|
52
|
-
* @param {ITreeData[]} pageingDetails.result - data on scroll action
|
|
53
|
-
* @param {number} pageingDetails.count - data count on scroll action
|
|
54
|
-
* @param {Object} pageingDetails.actionArgs - scroll action details
|
|
55
|
-
* @returns {void}
|
|
56
|
-
*/
|
|
57
|
-
private infinitePageAction;
|
|
58
|
-
/**
|
|
59
|
-
* Handles the currentviewdata for delete operation.
|
|
60
|
-
*
|
|
61
|
-
* @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details
|
|
62
|
-
* @param {InfiniteScrollArgs} args.e - scroller details while CRUD
|
|
63
|
-
* @param {Object[]} args.result - data details while CRUD
|
|
64
|
-
* @returns {void}
|
|
65
|
-
*/
|
|
66
|
-
private infiniteEditHandler;
|
|
67
|
-
/**
|
|
68
|
-
* Handles the row objects for delete operation.
|
|
69
|
-
*
|
|
70
|
-
* @param {ActionEventArgs} args - crud action details
|
|
71
|
-
* @returns {void}
|
|
72
|
-
*/
|
|
73
|
-
private infiniteDeleteHandler;
|
|
74
|
-
/**
|
|
75
|
-
* Handles the row objects for delete operation.
|
|
76
|
-
*
|
|
77
|
-
* @param {Element[]} rowElms - row elements
|
|
78
|
-
* @param {Row<Column>[]} rows - Row object collection
|
|
79
|
-
* @param {Object[]} data - data collection
|
|
80
|
-
* @param {string} keyField - primary key name
|
|
81
|
-
* @param { boolean} isFrozen - Specifies whether frozen column enabled
|
|
82
|
-
* @returns {void}
|
|
83
|
-
*/
|
|
84
|
-
private removeRows;
|
|
85
|
-
/**
|
|
86
|
-
* Handles the row objects for Add operation.
|
|
87
|
-
*/
|
|
88
|
-
private createRows;
|
|
89
|
-
/**
|
|
90
|
-
* To destroy the infiniteScroll module
|
|
91
|
-
*
|
|
92
|
-
* @returns {void}
|
|
93
|
-
* @hidden
|
|
94
|
-
*/
|
|
95
|
-
destroy(): void;
|
|
96
|
-
}
|
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
import { TreeGrid } from '../base/treegrid';
|
|
2
|
-
import { Grid, InfiniteScroll as GridInfiniteScroll, ActionEventArgs } from '@syncfusion/ej2-grids';
|
|
3
|
-
import { InfiniteScrollArgs, Column, Row, RowRenderer, ServiceLocator, resetRowIndex } from '@syncfusion/ej2-grids';
|
|
4
|
-
import { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';
|
|
5
|
-
import * as events from '../base/constant';
|
|
6
|
-
import { ITreeData } from '../base';
|
|
7
|
-
import { DataManager, Predicate, Query } from '@syncfusion/ej2-data';
|
|
8
|
-
import { findChildrenRecords } from '../utils';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* TreeGrid Infinite Scroll module will handle Infinite Scrolling.
|
|
12
|
-
*
|
|
13
|
-
* @hidden
|
|
14
|
-
*/
|
|
15
|
-
export class InfiniteScroll {
|
|
16
|
-
private parent: TreeGrid;
|
|
17
|
-
private visualData: ITreeData[];
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Constructor for VirtualScroll module
|
|
21
|
-
*
|
|
22
|
-
* @param {TreeGrid} parent - Tree Grid instance
|
|
23
|
-
*/
|
|
24
|
-
constructor(parent?: TreeGrid) {
|
|
25
|
-
this.parent = parent;
|
|
26
|
-
Grid.Inject(GridInfiniteScroll);
|
|
27
|
-
this.addEventListener();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* For internal use only - Get the module name.
|
|
32
|
-
*
|
|
33
|
-
* @private
|
|
34
|
-
* @returns {string} - Returns Logger module name
|
|
35
|
-
*/
|
|
36
|
-
protected getModuleName(): string {
|
|
37
|
-
return 'infiniteScroll';
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* @hidden
|
|
41
|
-
* @returns {void}
|
|
42
|
-
*/
|
|
43
|
-
public addEventListener(): void {
|
|
44
|
-
this.parent.on(events.pagingActions, this.infinitePageAction, this);
|
|
45
|
-
this.parent.on('infinite-remote-expand', this.infiniteRemoteExpand, this);
|
|
46
|
-
this.parent.grid.on('delete-complete', this.infiniteDeleteHandler, this);
|
|
47
|
-
this.parent.grid.on('infinite-edit-handler', this.infiniteEditHandler, this);
|
|
48
|
-
this.parent.grid.on('infinite-crud-cancel', this.createRows, this);
|
|
49
|
-
this.parent.grid.on('content-ready', this.contentready, this);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @hidden
|
|
53
|
-
* @returns {void}
|
|
54
|
-
*/
|
|
55
|
-
public removeEventListener(): void {
|
|
56
|
-
if (this.parent.isDestroyed) { return; }
|
|
57
|
-
this.parent.off('infinite-remote-expand', this.infiniteRemoteExpand);
|
|
58
|
-
this.parent.grid.off('delete-complete', this.infiniteDeleteHandler);
|
|
59
|
-
this.parent.grid.off('infinite-edit-handler', this.infiniteEditHandler);
|
|
60
|
-
this.parent.off(events.pagingActions, this.infinitePageAction);
|
|
61
|
-
this.parent.grid.off('infinite-crud-cancel', this.createRows);
|
|
62
|
-
this.parent.grid.off('content-ready', this.contentready);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Handles the Expand Collapse action for Remote data with infinite scrolling.
|
|
67
|
-
*
|
|
68
|
-
* @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data
|
|
69
|
-
* @param { number } args.index - expanded row index
|
|
70
|
-
* @param { ITreeData[] } args.childData - child data of expanded row
|
|
71
|
-
* @returns {void}
|
|
72
|
-
*/
|
|
73
|
-
private infiniteRemoteExpand(args: { index: number, childData: ITreeData[] }): void {
|
|
74
|
-
const rowObjects: Row<Column>[] = this.parent.grid.getRowsObject();
|
|
75
|
-
const locator: string = 'serviceLocator'; const generateRows: string = 'generateRows';
|
|
76
|
-
const serviceLocator: ServiceLocator = this.parent.grid.infiniteScrollModule[`${locator}`];
|
|
77
|
-
const rowRenderer: RowRenderer<Column> = new RowRenderer<Column>(serviceLocator, null, this.parent.grid);
|
|
78
|
-
const rows: Element[] = this.parent.getRows();
|
|
79
|
-
const position: string = args.index === rows.length - 1 ? 'after' : 'before';
|
|
80
|
-
const cols: Column[] = this.parent.grid.getColumns();
|
|
81
|
-
const childRowObjects: Row<Column>[] = this.parent.grid.infiniteScrollModule[`${generateRows}`](args.childData, args);
|
|
82
|
-
const childRowElements: Element[] = [];
|
|
83
|
-
for (let i: number = 0; i < childRowObjects.length; i++) {
|
|
84
|
-
childRowElements.push(rowRenderer.render(childRowObjects[parseInt(i.toString(), 10)], cols));
|
|
85
|
-
}
|
|
86
|
-
rowObjects.splice(args.index + 1, 0, ...childRowObjects);
|
|
87
|
-
for (let i: number = 0; i < childRowElements.length; i++) {
|
|
88
|
-
if (position === 'after') {
|
|
89
|
-
rows[args.index + i][`${position}`](childRowElements[parseInt(i.toString(), 10)]);
|
|
90
|
-
} else {
|
|
91
|
-
rows[args.index + i + 1][`${position}`](childRowElements[parseInt(i.toString(), 10)]);
|
|
92
|
-
}
|
|
93
|
-
rows.splice(args.index + 1 + i, 0, childRowElements[parseInt(i.toString(), 10)]);
|
|
94
|
-
}
|
|
95
|
-
resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows() as HTMLTableRowElement[], 0);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Resetted the row index for expand collapse action for cache support.
|
|
100
|
-
*
|
|
101
|
-
* @returns {void}
|
|
102
|
-
*/
|
|
103
|
-
private contentready (): void {
|
|
104
|
-
if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(this.parent.editModule)) {
|
|
105
|
-
const updateIndex: string = 'updateIndex';
|
|
106
|
-
this.parent.editModule[`${updateIndex}`](this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());
|
|
107
|
-
if (this.parent.getFrozenColumns()) {
|
|
108
|
-
this.parent.editModule[`${updateIndex}`](this.parent.grid.dataSource, this.parent.getDataRows(),
|
|
109
|
-
this.parent.getCurrentViewRecords());
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Handles the page query for Data operations and CRUD actions.
|
|
116
|
-
*
|
|
117
|
-
* @param {{ result: ITreeData[], count: number, actionArgs: object }} pageingDetails - data, its count and action details
|
|
118
|
-
* @param {ITreeData[]} pageingDetails.result - data on scroll action
|
|
119
|
-
* @param {number} pageingDetails.count - data count on scroll action
|
|
120
|
-
* @param {Object} pageingDetails.actionArgs - scroll action details
|
|
121
|
-
* @returns {void}
|
|
122
|
-
*/
|
|
123
|
-
private infinitePageAction(pageingDetails: { result: ITreeData[], count: number, actionArgs: Object }): void {
|
|
124
|
-
const dm: DataManager = new DataManager(pageingDetails.result);
|
|
125
|
-
const expanded: Predicate = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);
|
|
126
|
-
const visualData: ITreeData[] = dm.executeLocal(new Query().where(expanded));
|
|
127
|
-
const actionArgs: ActionEventArgs = getValue('actionArgs', pageingDetails.actionArgs);
|
|
128
|
-
const actions: string[] = getValue('actions', this.parent.grid.infiniteScrollModule);
|
|
129
|
-
if (this.parent.grid.infiniteScrollModule['isInitialRender'] && !this.parent.initialRender) {
|
|
130
|
-
this.parent.grid.pageSettings.currentPage = 1;
|
|
131
|
-
}
|
|
132
|
-
const initial: boolean = actions.some((value: string): boolean => { return value === actionArgs.requestType; });
|
|
133
|
-
const initialRender: boolean = initial ? true : this.parent.initialRender ? true : false;
|
|
134
|
-
this.visualData = visualData;
|
|
135
|
-
pageingDetails.count = visualData.length;
|
|
136
|
-
if (getValue('isPrinting', pageingDetails.actionArgs)) {
|
|
137
|
-
pageingDetails.result = visualData;
|
|
138
|
-
} else {
|
|
139
|
-
let query: Query = new Query();
|
|
140
|
-
const isCache: boolean = this.parent.infiniteScrollSettings.enableCache;
|
|
141
|
-
if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {
|
|
142
|
-
this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;
|
|
143
|
-
}
|
|
144
|
-
const size: number = initialRender ?
|
|
145
|
-
this.parent.grid.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :
|
|
146
|
-
this.parent.grid.pageSettings.pageSize;
|
|
147
|
-
const current: number = this.parent.grid.pageSettings.currentPage;
|
|
148
|
-
if (!isNullOrUndefined(actionArgs)) {
|
|
149
|
-
const lastIndex: number = getValue('lastIndex', this.parent.grid.infiniteScrollModule);
|
|
150
|
-
const firstIndex: number = getValue('firstIndex', this.parent.grid.infiniteScrollModule);
|
|
151
|
-
if (!isCache && actionArgs.requestType === 'delete') {
|
|
152
|
-
const skip: number = lastIndex - (<Object[]>actionArgs.data).length + 1;
|
|
153
|
-
const take: number = (<Object[]>actionArgs.data).length;
|
|
154
|
-
query = query.skip(skip).take(take);
|
|
155
|
-
} else if (isCache && actionArgs.requestType === 'delete' ||
|
|
156
|
-
(actionArgs.requestType === 'save' && actionArgs.action === 'add')) {
|
|
157
|
-
query = query.skip(firstIndex);
|
|
158
|
-
query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);
|
|
159
|
-
} else {
|
|
160
|
-
query = query.page(current, size);
|
|
161
|
-
}
|
|
162
|
-
} else {
|
|
163
|
-
query = query.page(current, size);
|
|
164
|
-
}
|
|
165
|
-
dm.dataSource.json = visualData;
|
|
166
|
-
if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {
|
|
167
|
-
pageingDetails.result = [actionArgs.data];
|
|
168
|
-
} else {
|
|
169
|
-
pageingDetails.result = dm.executeLocal(query);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
this.parent.notify('updateAction', pageingDetails);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Handles the currentviewdata for delete operation.
|
|
178
|
-
*
|
|
179
|
-
* @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details
|
|
180
|
-
* @param {InfiniteScrollArgs} args.e - scroller details while CRUD
|
|
181
|
-
* @param {Object[]} args.result - data details while CRUD
|
|
182
|
-
* @returns {void}
|
|
183
|
-
*/
|
|
184
|
-
private infiniteEditHandler(args: { e: InfiniteScrollArgs, result: Object[] }): void {
|
|
185
|
-
const infiniteData: string = 'infiniteCurrentViewData';
|
|
186
|
-
const infiniteCurrentViewData: { [x: number]: Object[] } = this.parent.grid.infiniteScrollModule[`${infiniteData}`];
|
|
187
|
-
const keys: string[] = Object.keys(infiniteCurrentViewData);
|
|
188
|
-
if (args.e.requestType === 'delete' && args.result.length > 1) {
|
|
189
|
-
for (let i: number = 1; i < args.result.length; i++) {
|
|
190
|
-
infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[parseInt(i.toString(), 10)]);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Handles the row objects for delete operation.
|
|
198
|
-
*
|
|
199
|
-
* @param {ActionEventArgs} args - crud action details
|
|
200
|
-
* @returns {void}
|
|
201
|
-
*/
|
|
202
|
-
private infiniteDeleteHandler(args: ActionEventArgs): void {
|
|
203
|
-
if (args.requestType === 'delete') {
|
|
204
|
-
const rows: Row<Column>[] = this.parent.grid.getRowsObject();
|
|
205
|
-
const rowElms: Element[] = this.parent.getRows();
|
|
206
|
-
const data: Object[] = args.data instanceof Array ? args.data : [args.data];
|
|
207
|
-
const keyField: string = this.parent.grid.getPrimaryKeyFieldNames()[0];
|
|
208
|
-
this.removeRows(rowElms, rows, data, keyField, true);
|
|
209
|
-
if (this.parent.getFrozenColumns() > 0) {
|
|
210
|
-
const mRows: Row<Column>[] = this.parent.grid.getRowsObject();
|
|
211
|
-
const mRowElms: Element[] = this.parent.grid.getRows();
|
|
212
|
-
this.removeRows(mRowElms, mRows, data, keyField);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Handles the row objects for delete operation.
|
|
220
|
-
*
|
|
221
|
-
* @param {Element[]} rowElms - row elements
|
|
222
|
-
* @param {Row<Column>[]} rows - Row object collection
|
|
223
|
-
* @param {Object[]} data - data collection
|
|
224
|
-
* @param {string} keyField - primary key name
|
|
225
|
-
* @param { boolean} isFrozen - Specifies whether frozen column enabled
|
|
226
|
-
* @returns {void}
|
|
227
|
-
*/
|
|
228
|
-
private removeRows(rowElms: Element[], rows: Row<Column>[], data: Object[], keyField: string, isFrozen?: boolean): void {
|
|
229
|
-
const resetInfiniteCurrentViewData: string = 'resetInfiniteCurrentViewData';
|
|
230
|
-
for (let i: number = 0; i < data.length; i++) {
|
|
231
|
-
rows.filter((e: Row<Column>, index: number) => {
|
|
232
|
-
if (e.data[`${keyField}`] === data[parseInt(i.toString(), 10)][`${keyField}`]) {
|
|
233
|
-
if (isFrozen) {
|
|
234
|
-
const page: number = Math.ceil((index + 1) / this.parent.grid.pageSettings.pageSize);
|
|
235
|
-
this.parent.grid.infiniteScrollModule[`${resetInfiniteCurrentViewData}`](page, index);
|
|
236
|
-
}
|
|
237
|
-
rows.splice(index, 1);
|
|
238
|
-
remove(rowElms[parseInt(index.toString(), 10)]);
|
|
239
|
-
rowElms.splice(index, 1);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Handles the row objects for Add operation.
|
|
249
|
-
*/
|
|
250
|
-
|
|
251
|
-
private createRows(eventArgs: {
|
|
252
|
-
rows: Row<Column>[], row: Row<Column>[], cancel: boolean, args: { e: ActionEventArgs, result: Object[] },
|
|
253
|
-
isMovable?: boolean, isFrozenRows?: boolean, isFrozenRight?: boolean
|
|
254
|
-
}): void {
|
|
255
|
-
const locator: string = 'serviceLocator';
|
|
256
|
-
const actionArgs: ActionEventArgs = eventArgs.args.e;
|
|
257
|
-
const row: Row<Column>[] = eventArgs.row;
|
|
258
|
-
const serviceLocator: ServiceLocator = this.parent.grid.infiniteScrollModule[`${locator}`];
|
|
259
|
-
const rowRenderer: RowRenderer<Column> = new RowRenderer<Column>(serviceLocator, null, this.parent.grid);
|
|
260
|
-
let tbody: HTMLElement;
|
|
261
|
-
const currentData: ITreeData[] = this.parent.getCurrentViewRecords();
|
|
262
|
-
const currentRows: HTMLTableRowElement[] = eventArgs.isMovable ? <HTMLTableRowElement[]>this.parent.grid.getRows()
|
|
263
|
-
: <HTMLTableRowElement[]>this.parent.grid.getDataRows();
|
|
264
|
-
if (eventArgs.isFrozenRight) {
|
|
265
|
-
tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector('tbody');
|
|
266
|
-
} else {
|
|
267
|
-
tbody = !this.parent.grid.isFrozenGrid() ? this.parent.getContent().querySelector('tbody') : eventArgs.isMovable
|
|
268
|
-
? this.parent.grid.getContent().querySelector('tbody')
|
|
269
|
-
: this.parent.grid.getContent().querySelector('tbody');
|
|
270
|
-
}
|
|
271
|
-
if (this.parent.frozenRows) {
|
|
272
|
-
tbody = eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType !== 'add'
|
|
273
|
-
|| !eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType === 'add'
|
|
274
|
-
? !this.parent.grid.isFrozenGrid() ? this.parent.getHeaderContent().querySelector('tbody')
|
|
275
|
-
: eventArgs.isMovable ? this.parent.grid.getHeaderContent().querySelector('tbody')
|
|
276
|
-
: eventArgs.isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector('tbody')
|
|
277
|
-
: this.parent.grid.getHeaderContent().querySelector('tbody') : tbody;
|
|
278
|
-
}
|
|
279
|
-
let position: string;
|
|
280
|
-
const addRowIndex: string = 'addRowIndex';
|
|
281
|
-
let newRowIndex: number = this.parent.editModule[`${addRowIndex}`];
|
|
282
|
-
for (let i: number = 0; i < row.length; i++) {
|
|
283
|
-
const newRow: HTMLTableRowElement = <HTMLTableRowElement>rowRenderer.render(row[parseInt(i.toString(), 10)],
|
|
284
|
-
this.parent.grid.getColumns());
|
|
285
|
-
if (actionArgs.requestType === 'save' && actionArgs.action === 'add') {
|
|
286
|
-
if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {
|
|
287
|
-
if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {
|
|
288
|
-
position = 'after';
|
|
289
|
-
newRowIndex += findChildrenRecords(currentData[parseInt(newRowIndex.toString(), 10)]).length;
|
|
290
|
-
if (this.parent.editSettings.newRowPosition === 'Child') {
|
|
291
|
-
newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1
|
|
292
|
-
}
|
|
293
|
-
currentRows[parseInt(newRowIndex.toString(), 10)][`${position}`](newRow);
|
|
294
|
-
} else if (this.parent.editSettings.newRowPosition === 'Above') {
|
|
295
|
-
position = 'before';
|
|
296
|
-
currentRows[this.parent.editModule[`${addRowIndex}`]][`${position}`](newRow);
|
|
297
|
-
}
|
|
298
|
-
} else if (this.parent.editSettings.newRowPosition === 'Bottom') {
|
|
299
|
-
tbody.appendChild(newRow);
|
|
300
|
-
} else {
|
|
301
|
-
tbody.insertBefore(newRow, tbody.firstElementChild);
|
|
302
|
-
}
|
|
303
|
-
} else if (actionArgs.requestType === 'delete') {
|
|
304
|
-
tbody.appendChild(newRow);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
eventArgs.cancel = true;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* To destroy the infiniteScroll module
|
|
312
|
-
*
|
|
313
|
-
* @returns {void}
|
|
314
|
-
* @hidden
|
|
315
|
-
*/
|
|
316
|
-
public destroy(): void {
|
|
317
|
-
this.removeEventListener();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { TreeGrid } from '../base/treegrid';
|
|
2
|
-
import { Logger as GridLogger, IGrid, CheckOptions } from '@syncfusion/ej2-grids';
|
|
3
|
-
export interface TreeItemDetails {
|
|
4
|
-
type: string;
|
|
5
|
-
logType: string;
|
|
6
|
-
message?: string;
|
|
7
|
-
check: (args: Object, parent: TreeGrid) => CheckOptions;
|
|
8
|
-
generateMessage: (args: Object, parent: TreeGrid, checkOptions?: Object) => string;
|
|
9
|
-
}
|
|
10
|
-
export declare class Logger extends GridLogger {
|
|
11
|
-
private treeGridObj;
|
|
12
|
-
constructor(parent: IGrid);
|
|
13
|
-
/**
|
|
14
|
-
* For internal use only - Get the module name.
|
|
15
|
-
*
|
|
16
|
-
* @private
|
|
17
|
-
* @returns {string} - Returns Logger module name
|
|
18
|
-
*/
|
|
19
|
-
getModuleName(): string;
|
|
20
|
-
log(types: string | string[], args: Object): void;
|
|
21
|
-
treeLog(types: string | string[], args: Object, treeGrid: TreeGrid): void;
|
|
22
|
-
}
|
|
23
|
-
export declare const treeGridDetails: {
|
|
24
|
-
[key: string]: TreeItemDetails;
|
|
25
|
-
};
|