AbstractGridView.js
Ext.grid.AbstractGridView = function(){
this.grid = null;
this.events = {
'beforerowsremoved' : true,
'beforerowsinserted' : true,
'beforerefresh' : true,
'rowsremoved' : true,
'rowsinserted' : true,
'rowupdated' : true,
'refresh' : true
};
};
Ext.extend(Ext.grid.AbstractGridView, Ext.util.Observable, {
rowClass : 'x-grid-row',
cellClass : 'x-grid-cell',
tdClass : 'x-grid-td',
hdClass : 'x-grid-hd',
splitClass : 'x-grid-hd-split',
init: function(grid){
this.grid = grid;
var cid = this.grid.container.id;
this.colSelector = '#' + cid + ' .' + this.cellClass + '-';
this.tdSelector = '#' + cid + ' .' + this.tdClass + '-';
this.hdSelector = '#' + cid + ' .' + this.hdClass + '-';
this.splitSelector = '#' + cid + ' .' + this.splitClass + '-';
},
/**
* @private
* Utility method that gets an array of the cell renderers
*/
getColumnRenderers : function(){
var renderers = [];
var cm = this.grid.colModel;
var colCount = cm.getColumnCount();
for(var i = 0; i < colCount; i++){
renderers[i] = cm.getRenderer(i);
}
return renderers;
},
getColumnIds : function(){
var ids = [];
var cm = this.grid.colModel;
var colCount = cm.getColumnCount();
for(var i = 0; i < colCount; i++){
ids[i] = cm.getColumnId(i);
}
return ids;
},
buildIndexMap : function(){
var colToData = {};
var dataToCol = {};
var cm = this.grid.colModel;
var dm = this.grid.dataSource;
for(var i = 0, len = cm.getColumnCount(); i < len; i++){
var di = cm.getDataIndex(i);
var trueDataIndex = dm.getIndex(di);
colToData[i] = trueDataIndex;
dataToCol[trueDataIndex] = i;
}
return {'colToData': colToData, 'dataToCol': dataToCol};
},
getDataIndexes : function(){
if(!this.indexMap){
this.indexMap = this.buildIndexMap();
}
return this.indexMap.colToData;
},
getColumnIndexByDataIndex : function(dataIndex){
if(!this.indexMap){
this.indexMap = this.buildIndexMap();
}
return this.indexMap.dataToCol[dataIndex];
},
/**
* Set a css style for a column dynamically.
* @param {Number} colIndex The index of the column
* @param {String} name The css property name
* @param {String} value The css value
*/
setCSSStyle : function(colIndex, name, value){
var selector = "#" + this.grid.id + " .x-grid-col-" + colIndex;
Ext.util.CSS.updateRule(selector, name, value);
},
generateRules : function(cm){
var ruleBuf = [];
for(var i = 0, len = cm.getColumnCount(); i < len; i++){
var cid = cm.getColumnId(i);
ruleBuf.push(this.colSelector, cid, ' {\n', cm.config[i].css, '}\n',
this.tdSelector, cid, ' {\n}\n',
this.hdSelector, cid, ' {\n}\n',
this.splitSelector, cid, ' {\n}\n');
}
return Ext.util.CSS.createStyleSheet(ruleBuf.join(''));
}
});
yui-ext - Copyright © 2006 Jack Slocum. |
Yahoo! UI - Copyright © 2006 Yahoo! Inc.
All rights reserved.