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