/**
* @class Ext.grid.RowBodyFeature
* @extends Ext.grid.Feature
*
* The rowbody feature enhances the grid's markup to have an additional
* tr -> td -> div which spans the entire width of the original row.
*
* This is useful to to associate additional information with a particular
* record in a grid.
*
* Rowbodies are initially hidden unless you override getAdditionalData.
*
* Will expose additional events on the gridview with the prefix of 'rowbody'.
* For example: 'rowbodyclick', 'rowbodydblclick', 'rowbodycontextmenu'.
*
* @ftype rowbody
*/
Ext.define('Ext.grid.RowBodyFeature', {
extend: 'Ext.grid.Feature',
alias: 'feature.rowbody',
rowBodyHiddenCls: Ext.baseCSSPrefix + 'grid-row-body-hidden',
eventPrefix: 'rowbody',
eventSelector: '.' + Ext.baseCSSPrefix + 'grid-rowbody-tr',
getRowBody: function(values) {
return [
'',
'',
' {rowBody} ',
' | ',
'
'
].join('');
},
// injects getRowBody into the metaRowTpl.
getMetaRowTplFragments: function() {
return {
getRowBody: this.getRowBody
};
},
mutateMetaRowTpl: function(metaRowTpl) {
metaRowTpl.push('{[this.getRowBody(values)]}');
},
/**
* Provide additional data to the prepareData call within the grid view.
* The rowbody feature adds 3 additional variables into the grid view's template.
* These are rowBodyCls, rowBodyColspan, and rowBody.
* @param {Object} data The data for this particular record.
* @param {Number} idx The row index for this record.
* @param {Ext.data.Model} record The record instance
* @param {Object} orig The original result from the prepareData call to massage.
*/
getAdditionalData: function(data, idx, record, orig) {
var headerCt = this.view.headerCt,
colspan = headerCt.getCount();
return {
rowBody: "",
rowBodyCls: this.rowBodyCls,
rowBodyColspan: colspan
};
}
});