GroupTabRenderer.js 3.0 KB

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