/** * Allows GroupTab to render a table structure. */ Ext.define('Ext.ux.GroupTabRenderer', { alias: 'plugin.grouptabrenderer', extend: 'Ext.AbstractPlugin', tableTpl: new Ext.XTemplate( '
', '{%', 'values.view.renderRows(values.rows, values.viewStartIndex, out);', '%}', '
', { priority: 5 } ), rowTpl: new Ext.XTemplate( '{%', 'Ext.Array.remove(values.itemClasses, "', Ext.baseCSSPrefix + 'grid-row");', 'var dataRowCls = values.recordIndex === -1 ? "" : " ' + Ext.baseCSSPrefix + 'grid-data-row";', '%}', '
', '' + '{%', 'parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)', '%}', '', '
', { priority: 5 } ), cellTpl: new Ext.XTemplate( '{%values.tdCls = values.tdCls.replace(" ' + Ext.baseCSSPrefix + 'grid-cell "," ");%}', '
', '
{value}
', '
', '
', '
', { priority: 5 } ), selectors: { // Outer table bodySelector: 'div.' + Ext.baseCSSPrefix + 'grid-table-resizer', // Element which contains rows nodeContainerSelector: 'div.' + Ext.baseCSSPrefix + 'grid-table-resizer', // row itemSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-row', // row which contains cells as opposed to wrapping rows dataRowSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-row', // cell cellSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-cell', getCellSelector: function(header) { var result = 'div.' + Ext.baseCSSPrefix + 'grid-cell'; if (header) { result += '-' + header.getItemId(); } return result; } }, init: function(grid) { var view = grid.getView(), me = this; view.addTableTpl(me.tableTpl); view.addRowTpl(me.rowTpl); view.addCellTpl(me.cellTpl); Ext.apply(view, me.selectors); } });