<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>The source code</title> <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" /> <script type="text/javascript" src="../resources/prettify/prettify.js"></script> <style type="text/css"> .highlight { display: block; background-color: #ddd; } </style> <script type="text/javascript"> function highlight() { document.getElementById(location.hash.replace(/#/, "")).className = "highlight"; } </script> </head> <body onload="prettyPrint(); highlight();"> <pre class="prettyprint lang-js"><span id='Ext-view-TableChunker'>/** </span> * Produces optimized XTemplates for chunks of tables to be * used in grids, trees and other table based widgets. */ Ext.define('Ext.view.TableChunker', { singleton: true, requires: ['Ext.XTemplate'], metaTableTpl: [ '{%if (this.openTableWrap)out.push(this.openTableWrap())%}', '<table class="' + Ext.baseCSSPrefix + 'grid-table ' + Ext.baseCSSPrefix + 'grid-table-resizer" border="0" cellspacing="0" cellpadding="0" {[this.embedFullWidth(values)]}>', '<tbody>', '<tr class="' + Ext.baseCSSPrefix + 'grid-header-row">', '<tpl for="columns">', '<th class="' + Ext.baseCSSPrefix + 'grid-col-resizer-{id}" style="width: {width}px; height: 0px;"></th>', '</tpl>', '</tr>', '{[this.openRows()]}', '{row}', '<tpl for="features">', '{[this.embedFeature(values, parent, xindex, xcount)]}', '</tpl>', '{[this.closeRows()]}', '</tbody>', '</table>', '{%if (this.closeTableWrap)out.push(this.closeTableWrap())%}' ], constructor: function() { Ext.XTemplate.prototype.recurse = function(values, reference) { return this.apply(reference ? values[reference] : values); }; }, embedFeature: function(values, parent, x, xcount) { var tpl = ''; if (!values.disabled) { tpl = values.getFeatureTpl(values, parent, x, xcount); } return tpl; }, embedFullWidth: function(values) { var result = 'style="width:{fullWidth}px;'; // If there are no records, we need to give the table a height so that it // is displayed and causes q scrollbar if the width exceeds the View's width. if (!values.rowCount) { result += 'height:1px;'; } return result + '"'; }, openRows: function() { return '<tpl for="rows">'; }, closeRows: function() { return '</tpl>'; }, metaRowTpl: [ '<tr class="' + Ext.baseCSSPrefix + 'grid-row {[this.embedRowCls()]}" {[this.embedRowAttr()]}>', '<tpl for="columns">', '<td class="{cls} ' + Ext.baseCSSPrefix + 'grid-cell ' + Ext.baseCSSPrefix + 'grid-cell-{columnId} {{id}-modified} {{id}-tdCls} {[this.firstOrLastCls(xindex, xcount)]}" {{id}-tdAttr}>', '<div {unselectableAttr} class="' + Ext.baseCSSPrefix + 'grid-cell-inner {unselectableCls}" style="text-align: {align}; {{id}-style};">{{id}}</div>', '</td>', '</tpl>', '</tr>' ], firstOrLastCls: function(xindex, xcount) { if (xindex === 1) { return Ext.view.Table.prototype.firstCls; } else if (xindex === xcount) { return Ext.view.Table.prototype.lastCls; } }, embedRowCls: function() { return '{rowCls}'; }, embedRowAttr: function() { return '{rowAttr}'; }, openTableWrap: undefined, closeTableWrap: undefined, getTableTpl: function(cfg, textOnly) { var tpl, tableTplMemberFns = { openRows: this.openRows, closeRows: this.closeRows, embedFeature: this.embedFeature, embedFullWidth: this.embedFullWidth, openTableWrap: this.openTableWrap, closeTableWrap: this.closeTableWrap }, tplMemberFns = {}, features = cfg.features || [], ln = features.length, i = 0, memberFns = { embedRowCls: this.embedRowCls, embedRowAttr: this.embedRowAttr, firstOrLastCls: this.firstOrLastCls, unselectableAttr: cfg.enableTextSelection ? '' : 'unselectable="on"', unselectableCls: cfg.enableTextSelection ? '' : Ext.baseCSSPrefix + 'unselectable' }, // copy the default metaRowTpl = Array.prototype.slice.call(this.metaRowTpl, 0), metaTableTpl; for (; i < ln; i++) { if (!features[i].disabled) { features[i].mutateMetaRowTpl(metaRowTpl); Ext.apply(memberFns, features[i].getMetaRowTplFragments()); Ext.apply(tplMemberFns, features[i].getFragmentTpl()); Ext.apply(tableTplMemberFns, features[i].getTableFragments()); } } metaRowTpl = new Ext.XTemplate(metaRowTpl.join(''), memberFns); cfg.row = metaRowTpl.applyTemplate(cfg); metaTableTpl = new Ext.XTemplate(this.metaTableTpl.join(''), tableTplMemberFns); tpl = metaTableTpl.applyTemplate(cfg); // TODO: Investigate eliminating. if (!textOnly) { tpl = new Ext.XTemplate(tpl, tplMemberFns); } return tpl; } }); </pre> </body> </html>