]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * Allows GroupTab to render a table structure.\r | |
3 | */\r | |
4 | Ext.define('Ext.ux.GroupTabRenderer', {\r | |
5 | extend: 'Ext.plugin.Abstract',\r | |
6 | alias: 'plugin.grouptabrenderer',\r | |
7 | \r | |
8 | tableTpl: new Ext.XTemplate(\r | |
9 | '<div id="{view.id}-body" class="' + Ext.baseCSSPrefix + '{view.id}-table ' + Ext.baseCSSPrefix + 'grid-table-resizer" style="{tableStyle}">',\r | |
10 | '{%',\r | |
11 | 'values.view.renderRows(values.rows, values.viewStartIndex, out);',\r | |
12 | '%}',\r | |
13 | '</div>',\r | |
14 | {\r | |
15 | priority: 5\r | |
16 | }\r | |
17 | ),\r | |
18 | \r | |
19 | rowTpl: new Ext.XTemplate(\r | |
20 | '{%',\r | |
21 | 'Ext.Array.remove(values.itemClasses, "', Ext.baseCSSPrefix + 'grid-row");',\r | |
22 | 'var dataRowCls = values.recordIndex === -1 ? "" : " ' + Ext.baseCSSPrefix + 'grid-data-row";',\r | |
23 | '%}',\r | |
24 | '<div {[values.rowId ? ("id=\\"" + values.rowId + "\\"") : ""]} ',\r | |
25 | 'data-boundView="{view.id}" ',\r | |
26 | 'data-recordId="{record.internalId}" ',\r | |
27 | 'data-recordIndex="{recordIndex}" ',\r | |
28 | 'class="' + Ext.baseCSSPrefix + 'grouptab-row {[values.itemClasses.join(" ")]} {[values.rowClasses.join(" ")]}{[dataRowCls]}" ',\r | |
29 | '{rowAttr:attributes}>',\r | |
30 | '<tpl for="columns">' +\r | |
31 | '{%',\r | |
32 | 'parent.view.renderCell(values, parent.record, parent.recordIndex, parent.rowIndex, xindex - 1, out, parent)',\r | |
33 | '%}',\r | |
34 | '</tpl>',\r | |
35 | '</div>',\r | |
36 | {\r | |
37 | priority: 5\r | |
38 | }\r | |
39 | ),\r | |
40 | \r | |
41 | cellTpl: new Ext.XTemplate(\r | |
42 | '{%values.tdCls = values.tdCls.replace(" ' + Ext.baseCSSPrefix + 'grid-cell "," ");%}',\r | |
43 | '<div class="' + Ext.baseCSSPrefix + 'grouptab-cell {tdCls}" {tdAttr}>',\r | |
44 | '<div {unselectableAttr} class="' + Ext.baseCSSPrefix + 'grid-cell-inner" style="text-align: {align}; {style};">{value}</div>',\r | |
45 | '<div class="x-grouptabs-corner x-grouptabs-corner-top-left"></div>',\r | |
46 | '<div class="x-grouptabs-corner x-grouptabs-corner-bottom-left"></div>',\r | |
47 | '</div>',\r | |
48 | {\r | |
49 | priority: 5\r | |
50 | }\r | |
51 | ),\r | |
52 | \r | |
53 | selectors: {\r | |
54 | // Outer table\r | |
55 | bodySelector: 'div.' + Ext.baseCSSPrefix + 'grid-table-resizer',\r | |
56 | \r | |
57 | // Element which contains rows\r | |
58 | nodeContainerSelector: 'div.' + Ext.baseCSSPrefix + 'grid-table-resizer',\r | |
59 | \r | |
60 | // row\r | |
61 | itemSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-row',\r | |
62 | \r | |
63 | // row which contains cells as opposed to wrapping rows\r | |
64 | rowSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-row',\r | |
65 | \r | |
66 | // cell\r | |
67 | cellSelector: 'div.' + Ext.baseCSSPrefix + 'grouptab-cell', \r | |
68 | \r | |
69 | getCellSelector: function(header) {\r | |
70 | return header ? header.getCellSelector() : this.cellSelector; \r | |
71 | }\r | |
72 | \r | |
73 | },\r | |
74 | \r | |
75 | init: function(grid) {\r | |
76 | var view = grid.getView(), \r | |
77 | me = this;\r | |
78 | view.addTpl(me.tableTpl);\r | |
79 | view.addRowTpl(me.rowTpl);\r | |
80 | view.addCellTpl(me.cellTpl);\r | |
81 | Ext.apply(view, me.selectors);\r | |
82 | }\r | |
83 | });\r | |
84 | \r | |
85 | \r | |
86 | \r |