1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 | 1×
1×
1×
1×
65×
65×
1×
56×
56×
56×
56×
56×
77×
4×
73×
56×
4×
4×
4×
4×
56×
16×
16×
56×
41×
56×
16×
56×
1×
17×
1×
35×
1×
17×
1×
18×
1×
27×
1×
17×
1×
8×
8×
16×
16×
16×
16×
16×
16×
16×
16×
136×
136×
16×
16×
16×
8×
1×
16×
8000×
16×
7984×
16×
1×
1×
| define(["require", "exports", "@syncfusion/ej2-base", "../base/util", "../base/enum"], function (require, exports, ej2_base_1, util_1, enum_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CellMergeRender = (function () {
function CellMergeRender(serviceLocator, parent) {
this.serviceLocator = serviceLocator;
this.parent = parent;
}
CellMergeRender.prototype.render = function (cellArgs, row, i, td) {
var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');
var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || enum_1.CellType.Data);
var span = row.cells[i].cellSpan ? row.cells[i].cellSpan :
(cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;
var visible = 0;
for (var j = i + 1; j < i + span && j < row.cells.length; j++) {
if (row.cells[j].visible === false) {
visible++;
}
else {
row.cells[j].isSpanned = true;
}
}
if (visible > 0) {
for (var j = i + span; j < i + span + visible && j < row.cells.length; j++) {
row.cells[j].isSpanned = true;
}
Eif (i + span + visible >= row.cells.length) {
span -= (i + span + visible) - row.cells.length;
}
}
if (row.cells[i].cellSpan) {
row.data[cellArgs.column.field] = row.cells[i].spanText;
td = cellRenderer.render(row.cells[i], row.data, { 'index': !ej2_base_1.isNullOrUndefined(row.index) ? row.index.toString() : '' });
}
if (span > 1) {
ej2_base_1.attributes(td, { 'colSpan': span.toString(), 'aria-colSpan': span.toString() });
}
if (this.parent.enableColumnVirtualization && !row.cells[i].cellSpan &&
!this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {
this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);
}
return td;
};
CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {
this.setMergeCells(this.generteKey(fName, data), span);
};
CellMergeRender.prototype.generteKey = function (fname, data) {
return fname + '__' + data.toString();
};
CellMergeRender.prototype.splitKey = function (key) {
return key.split('__');
};
CellMergeRender.prototype.containsKey = function (fname, data) {
return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));
};
CellMergeRender.prototype.getMergeCells = function () {
return this.parent.mergeCells;
};
CellMergeRender.prototype.setMergeCells = function (key, span) {
this.parent.mergeCells[key] = span;
};
CellMergeRender.prototype.updateVirtualCells = function (rows) {
var mCells = this.getMergeCells();
for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {
var key = _a[_i];
var value = mCells[key];
var merge = this.splitKey(key);
var columnIndex = this.getIndexFromAllColumns(merge[0]);
var vColumnIndices = this.parent.getColumnIndexesInView();
var span = value - (vColumnIndices[0] - columnIndex);
Eif (columnIndex < vColumnIndices[0] && span > 1) {
for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {
var row = rows_1[_b];
if (row.data[merge[0]].toString() === merge[1].toString()) {
row.cells[0].cellSpan = span;
row.cells[0].spanText = merge[1];
break;
}
}
}
}
return rows;
};
CellMergeRender.prototype.getIndexFromAllColumns = function (field) {
var index = util_1.iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {
if (item.field === field) {
return index;
}
return undefined;
})[0];
return index;
};
return CellMergeRender;
}());
exports.CellMergeRender = CellMergeRender;
});
|