X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/7a654f8d43fdb43d78b63d90528bed6e86b608cc..HEAD:/docs/source/GroupingSummary.html diff --git a/docs/source/GroupingSummary.html b/docs/source/GroupingSummary.html index efa6afc4..4bd33485 100644 --- a/docs/source/GroupingSummary.html +++ b/docs/source/GroupingSummary.html @@ -1,12 +1,29 @@ -
/**
+
+
+
+
+ The source code
+
+
+
+
+
+
+ /**
* @class Ext.grid.feature.GroupingSummary
* @extends Ext.grid.feature.Grouping
- *
+ *
* This feature adds an aggregate summary row at the bottom of each group that is provided
- * by the {@link Ext.grid.feature.Grouping} feature. There are 2 aspects to the summary:
- *
+ * by the {@link Ext.grid.feature.Grouping} feature. There are two aspects to the summary:
+ *
* ## Calculation
- *
+ *
* The summary value needs to be calculated for each column in the grid. This is controlled
* by the summaryType option specified on the column. There are several built in summary types,
* which can be specified as a string on the column configuration. These call underlying methods
@@ -20,19 +37,20 @@
*
* Alternatively, the summaryType can be a function definition. If this is the case,
* the function is called with an array of records to calculate the summary value.
- *
+ *
* ## Rendering
- *
+ *
* Similar to a column, the summary also supports a summaryRenderer function. This
* summaryRenderer is called before displaying a value. The function is optional, if
* not specified the default calculated value is shown. The summaryRenderer is called with:
*
* - value {Object} - The calculated value.
- * - data {Object} - Contains all raw summary values for the row.
+ * - summaryData {Object} - Contains all raw summary values for the row.
* - field {String} - The name of the field we are calculating
- *
+ *
* ## Example Usage
*
+ * @example
* Ext.define('TestResult', {
* extend: 'Ext.data.Model',
* fields: ['student', 'subject', {
@@ -40,7 +58,7 @@
* type: 'int'
* }]
* });
- *
+ *
* Ext.create('Ext.grid.Panel', {
* width: 200,
* height: 240,
@@ -75,7 +93,7 @@
* text: 'Name',
* summaryType: 'count',
* summaryRenderer: function(value){
- * return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : '');
+ * return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : '');
* }
* }, {
* dataIndex: 'mark',
@@ -85,28 +103,28 @@
* });
*/
Ext.define('Ext.grid.feature.GroupingSummary', {
-
+
/* Begin Definitions */
-
+
extend: 'Ext.grid.feature.Grouping',
-
+
alias: 'feature.groupingsummary',
-
+
mixins: {
summary: 'Ext.grid.feature.AbstractSummary'
},
-
+
/* End Definitions */
-
- /**
+
+ /**
* Modifies the row template to include the summary row.
* @private
* @return {String} The modified template
*/
getFeatureTpl: function() {
var tpl = this.callParent(arguments);
-
+
if (this.showSummaryRow) {
// lop off the end </tpl> so we can attach it
tpl = tpl.replace('</tpl>', '');
@@ -114,8 +132,8 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
}
return tpl;
},
-
- /**
+
+ /**
* Gets any fragments needed for the template.
* @private
* @return {Object} The fragments
@@ -123,7 +141,7 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
getFragmentTpl: function() {
var me = this,
fragments = me.callParent();
-
+
Ext.apply(fragments, me.getSummaryFragments());
if (me.showSummaryRow) {
// this gets called before render, so we'll setup the data here.
@@ -132,8 +150,8 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
}
return fragments;
},
-
- /**
+
+ /**
* Gets the data for printing a template row
* @private
* @param {Number} index The index in the template
@@ -148,7 +166,7 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
name = me.summaryGroups[index - 1].name,
active = me.summaryData[name],
column;
-
+
for (; i < length; ++i) {
column = columns[i];
column.gridSummaryValue = this.getColumnValue(column, active);
@@ -156,8 +174,8 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
}
return data;
},
-
- /**
+
+ /**
* Generates all of the summary data to be used when processing the template
* @private
* @return {Object} The summary data
@@ -171,44 +189,50 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
reader = store.proxy.reader,
groups = me.summaryGroups,
columns = me.view.headerCt.getColumnsForTpl(),
+ remote,
i,
length,
fieldData,
root,
key,
comp;
-
+
for (i = 0, length = groups.length; i < length; ++i) {
data[groups[i].name] = {};
}
-
- /**
- * @cfg {String} remoteRoot. The name of the property
- * which contains the Array of summary objects. Defaults to <tt>undefined</tt>.
- * It allows to use server-side calculated summaries.
- */
+
+ /**
+ * @cfg {String} [remoteRoot=undefined] The name of the property which contains the Array of
+ * summary objects. It allows to use server-side calculated summaries.
+ */
if (me.remoteRoot && reader.rawData) {
// reset reader root and rebuild extractors to extract summaries data
root = reader.root;
reader.root = me.remoteRoot;
reader.buildExtractors(true);
Ext.Array.each(reader.getRoot(reader.rawData), function(value) {
- data[value[groupField]] = value;
- data[value[groupField]]._remote = true;
+ remoteData[value[groupField]] = value;
});
// restore initial reader configuration
reader.root = root;
reader.buildExtractors(true);
}
-
+
for (i = 0, length = columns.length; i < length; ++i) {
comp = Ext.getCmp(columns[i].id);
fieldData = me.getSummary(store, comp.summaryType, comp.dataIndex, true);
-
+
for (key in fieldData) {
if (fieldData.hasOwnProperty(key)) {
- if (!data[key]._remote) {
- data[key][comp.dataIndex] = fieldData[key];
+ data[key][comp.id] = fieldData[key];
+ }
+ }
+
+ for (key in remoteData) {
+ if (remoteData.hasOwnProperty(key)) {
+ remote = remoteData[key][comp.dataIndex];
+ if (remote !== undefined && data[key] !== undefined) {
+ data[key][comp.id] = remote;
}
}
}
@@ -216,4 +240,6 @@ Ext.define('Ext.grid.feature.GroupingSummary', {
return data;
}
});
-
\ No newline at end of file
+
+
+