| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <!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>
 |