all files / grid/renderer/ row-renderer.js

97.14% Statements 102/105
93.24% Branches 69/74
100% Functions 9/9
97.12% Lines 101/104
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   30372× 30372× 30372× 30372×   196619×   43× 36× 36×   43× 43× 43× 43× 43× 328× 328×     196662× 196662× 196662× 196662× 989203× 196662× 196662× 28×   196662× 177818×   196662×             196662× 196662× 196662× 196662× 196662× 983175× 983175× 983175× 983175× 983175×   983175× 983175× 982400× 888719×       888719× 56× 56×     982400× 982323×       196662× 196662× 177818×   196662× 360×   196662× 28×   196634×   196662× 524×   196662× 32× 32× 32× 32× 32× 32×         196662×   36× 287× 287×   36×   196662× 196662× 196662× 196662× 177818×   196662× 83110×   196662× 177817×   196662×   196662× 178566×   196662× 24×   196662×   196662× 196662×        
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;
});