123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <!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-grid-feature-AbstractSummary'>/**
- </span> * A small abstract class that contains the shared behaviour for any summary
- * calculations to be used in the grid.
- */
- Ext.define('Ext.grid.feature.AbstractSummary', {
-
- /* Begin Definitions */
- extend: 'Ext.grid.feature.Feature',
-
- alias: 'feature.abstractsummary',
- /* End Definitions */
- <span id='Ext-grid-feature-AbstractSummary-cfg-showSummaryRow'> /**
- </span> * @cfg
- * True to show the summary row.
- */
- showSummaryRow: true,
- // @private
- nestedIdRe: /\{\{id\}([\w\-]*)\}/g,
- // Listen for store updates. Eg, from an Editor.
- init: function() {
- var me = this;
- // Summary rows must be kept in column order, so view must be refreshed on column move
- me.grid.optimizedColumnMove = false;
- me.view.mon(me.view.store, {
- update: me.onStoreUpdate,
- scope: me
- });
- },
- // Refresh the whole view on edit so that the Summary gets updated
- onStoreUpdate: function() {
- var v = this.view;
- if (this.showSummaryRow) {
- v.saveScrollState();
- v.refresh();
- v.restoreScrollState();
- }
- },
- <span id='Ext-grid-feature-AbstractSummary-method-toggleSummaryRow'> /**
- </span> * Toggle whether or not to show the summary row.
- * @param {Boolean} visible True to show the summary row
- */
- toggleSummaryRow: function(visible){
- this.showSummaryRow = !!visible;
- },
- <span id='Ext-grid-feature-AbstractSummary-method-getSummaryFragments'> /**
- </span> * Gets any fragments to be used in the tpl
- * @private
- * @return {Object} The fragments
- */
- getSummaryFragments: function(){
- var fragments = {};
- if (this.showSummaryRow) {
- Ext.apply(fragments, {
- printSummaryRow: Ext.bind(this.printSummaryRow, this)
- });
- }
- return fragments;
- },
- <span id='Ext-grid-feature-AbstractSummary-method-printSummaryRow'> /**
- </span> * Prints a summary row
- * @private
- * @param {Object} index The index in the template
- * @return {String} The value of the summary row
- */
- printSummaryRow: function(index){
- var inner = this.view.getTableChunker().metaRowTpl.join(''),
- prefix = Ext.baseCSSPrefix;
- inner = inner.replace(prefix + 'grid-row', prefix + 'grid-row-summary');
- inner = inner.replace('{{id}}', '{gridSummaryValue}');
- inner = inner.replace(this.nestedIdRe, '{id$1}');
- inner = inner.replace('{[this.embedRowCls()]}', '{rowCls}');
- inner = inner.replace('{[this.embedRowAttr()]}', '{rowAttr}');
- inner = new Ext.XTemplate(inner, {
- firstOrLastCls: Ext.view.TableChunker.firstOrLastCls
- });
- return inner.applyTemplate({
- columns: this.getPrintData(index)
- });
- },
- <span id='Ext-grid-feature-AbstractSummary-method-getColumnValue'> /**
- </span> * Gets the value for the column from the attached data.
- * @param {Ext.grid.column.Column} column The header
- * @param {Object} data The current data
- * @return {String} The value to be rendered
- */
- getColumnValue: function(column, summaryData){
- var comp = Ext.getCmp(column.id),
- value = summaryData[column.id],
- renderer = comp.summaryRenderer;
-
- if (!value && value !== 0) {
- value = '\u00a0';
- }
- if (renderer) {
- value = renderer.call(
- comp.scope || this,
- value,
- summaryData,
- column.dataIndex
- );
- }
- return value;
- },
- <span id='Ext-grid-feature-AbstractSummary-method-getSummary'> /**
- </span> * Get the summary data for a field.
- * @private
- * @param {Ext.data.Store} store The store to get the data from
- * @param {String/Function} type The type of aggregation. If a function is specified it will
- * be passed to the stores aggregate function.
- * @param {String} field The field to aggregate on
- * @param {Boolean} group True to aggregate in grouped mode
- * @return {Number/String/Object} See the return type for the store functions.
- */
- getSummary: function(store, type, field, group){
- if (type) {
- if (Ext.isFunction(type)) {
- return store.aggregate(type, null, group);
- }
- switch (type) {
- case 'count':
- return store.count(group);
- case 'min':
- return store.min(field, group);
- case 'max':
- return store.max(field, group);
- case 'sum':
- return store.sum(field, group);
- case 'average':
- return store.average(field, group);
- default:
- return group ? {} : '';
-
- }
- }
- }
- });
- </pre>
- </body>
- </html>
|