| 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 | 1×
 
1×
1×
1×
30372×
30372×
30372×
30372×
 
1×
196619×
 
1×
43×
36×
36×
 
43×
43×
43×
43×
43×
328×
328×
 
 
1×
196662×
196662×
196662×
196662×
989203×
196662×
196662×
28×
 
196662×
177818×
 
196662×
 
 
 
 
 
 
196662×
196662×
196662×
196662×
196662×
983175×
983175×
983175×
983175×
983175×
1×
 
983175×
983175×
982400×
888719×
 
 
 
888719×
56×
56×
 
 
982400×
982323×
 
 
 
196662×
196662×
177818×
 
196662×
360×
 
196662×
28×
 
196634×
2×
 
196662×
524×
 
196662×
32×
32×
32×
32×
32×
32×
2×
2×
 
 
 
 
196662×
 
1×
36×
287×
287×
 
36×
 
1×
196662×
196662×
196662×
196662×
177818×
 
196662×
83110×
 
196662×
177817×
 
196662×
1×
 
196662×
178566×
 
196662×
24×
 
196662×
4×
 
196662×
196662×
 
1×
 
1×
 
  | define(["require", "exports", "@syncfusion/ej2-base", "@syncfusion/ej2-base", "../base/constant", "../base/util", "../base/enum", "./cell-merge-renderer"], function (require, exports, ej2_base_1, ej2_base_2, constant_1, util_1, enum_1, cell_merge_renderer_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var RowRenderer = (function () {
        function RowRenderer(serviceLocator, cellType, parent) {
            this.element = ej2_base_2.createElement('tr', { attrs: { role: 'row' } });
            this.cellType = cellType;
            this.serviceLocator = serviceLocator;
            this.parent = parent;
        }
        RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {
            return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);
        };
        RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {
            if (isChanged) {
                row.data = ej2_base_1.extend({}, row.changes);
                this.refreshMergeCells(row);
            }
            var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');
            var tr = this.refreshRow(row, columns, attributes, rowTemplate);
            var cells = [].slice.call(tr.cells);
            node.innerHTML = '';
            for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {
                var cell = cells_1[_i];
                node.appendChild(cell);
            }
        };
        RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode) {
            var tr = !ej2_base_1.isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();
            var rowArgs = { data: row.data };
            var cellArgs = { data: row.data };
            var attrCopy = ej2_base_1.extend({}, attributes, {});
            var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];
            var value = false;
            if (chekBoxEnable) {
                value = util_1.getObject(chekBoxEnable.field, rowArgs.data);
            }
            if (row.isDataRow) {
                row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;
            }
            Iif (row.isDataRow && this.parent.isCheckBoxSelection
                && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {
                row.isSelected = true;
                if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {
                    this.parent.getSelectedRowIndexes().push(row.index);
                }
            }
            this.buildAttributeFromRow(tr, row);
            ej2_base_2.attributes(tr, attrCopy);
            util_1.setStyleAndAttributes(tr, row.attributes);
            var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');
            for (var i = 0, len = row.cells.length; i < len; i++) {
                var cell = row.cells[i];
                cell.isSelected = row.isSelected;
                var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || enum_1.CellType.Data);
                var attrs = { 'index': !ej2_base_1.isNullOrUndefined(row.index) ? row.index.toString() : '' };
                if (row.isExpand && row.cells[i].cellType === enum_1.CellType.DetailExpand) {
                    attrs['class'] = 'e-detailrowexpand';
                }
                var td = cellRenderer.render(row.cells[i], row.data, attrs);
                if (row.cells[i].cellType !== enum_1.CellType.Filter) {
                    if (row.cells[i].cellType === enum_1.CellType.Data || row.cells[i].cellType === enum_1.CellType.CommandColumn) {
                        this.parent.trigger(constant_1.queryCellInfo, ej2_base_1.extend(cellArgs, {
                            cell: td, column: cell.column, colSpan: 1,
                            foreignKeyData: row.cells[i].foreignKeyData
                        }));
                        if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1) {
                            var cellMerge = new cell_merge_renderer_1.CellMergeRender(this.serviceLocator, this.parent);
                            td = cellMerge.render(cellArgs, row, i, td);
                        }
                    }
                    if (!row.cells[i].isSpanned) {
                        tr.appendChild(td);
                    }
                }
            }
            var args = { row: tr, rowHeight: this.parent.rowHeight };
            if (row.isDataRow) {
                this.parent.trigger(constant_1.rowDataBound, ej2_base_1.extend(rowArgs, args));
            }
            if (this.parent.enableVirtualization) {
                rowArgs.rowHeight = this.parent.rowHeight;
            }
            if (rowArgs.rowHeight) {
                tr.style.height = rowArgs.rowHeight + 'px';
            }
            else if (this.parent.rowHeight && tr.querySelector('.e-headercell')) {
                tr.style.height = this.parent.rowHeight + 'px';
            }
            if (row.cssClass) {
                tr.classList.add(row.cssClass);
            }
            if (this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {
                for (var i = 0; i < this.parent.aggregates.length; i++) {
                    var property = 'properties';
                    var column = 'columns';
                    Eif (this.parent.aggregates[i][property][column][0].footerTemplate) {
                        var summarycell = tr.querySelectorAll('.e-summarycell');
                        if (summarycell.length) {
                            var lastSummaryCell = (summarycell[summarycell.length - 1]);
                            ej2_base_1.addClass([lastSummaryCell], ['e-lastsummarycell']);
                        }
                    }
                }
            }
            return tr;
        };
        RowRenderer.prototype.refreshMergeCells = function (row) {
            for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {
                var cell = _a[_i];
                cell.isSpanned = false;
            }
            return row;
        };
        RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {
            var attr = {};
            var prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };
            var classes = [];
            if (row.isDataRow) {
                classes.push('e-row');
            }
            if (row.isAltRow) {
                classes.push('e-altrow');
            }
            if (!ej2_base_1.isNullOrUndefined(row.index)) {
                attr[prop.rowindex] = row.index;
            }
            if (row.rowSpan) {
                attr.rowSpan = row.rowSpan;
            }
            if (row.uid) {
                attr[prop.dataUID] = row.uid;
            }
            if (row.isSelected) {
                attr[prop.ariaSelected] = true;
            }
            if (row.visible === false) {
                classes.push('e-hide');
            }
            attr.class = classes;
            util_1.setStyleAndAttributes(tr, attr);
        };
        return RowRenderer;
    }());
    exports.RowRenderer = RowRenderer;
});
  |