upgraded to yui 0.12.0
upgraded to yui-ext 0.33 rc2
This commit is contained in:
parent
62b3d90db7
commit
cfd09a5cb6
1271 changed files with 539033 additions and 0 deletions
194
www/extras/yui-ext/examples/grid/PropsGrid.js
vendored
Normal file
194
www/extras/yui-ext/examples/grid/PropsGrid.js
vendored
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
YAHOO.ext.grid.PropsDataModel = function(propertyNames, source){
|
||||
YAHOO.ext.grid.PropsDataModel.superclass.constructor.call(this, []);
|
||||
if(source){
|
||||
this.setSource(source);
|
||||
}
|
||||
this.names = propertyNames || {};
|
||||
};
|
||||
YAHOO.extendX(YAHOO.ext.grid.PropsDataModel, YAHOO.ext.grid.DefaultDataModel, {
|
||||
setSource : function(o){
|
||||
this.source = o;
|
||||
var data = [];
|
||||
for(var key in o){
|
||||
if(this.isEditableValue(o[key])){
|
||||
var vals = [key, o[key]];
|
||||
vals.key = key;
|
||||
data.push(vals);
|
||||
}
|
||||
}
|
||||
this.removeAll();
|
||||
this.addRows(data);
|
||||
},
|
||||
|
||||
getRowId: function(rowIndex){
|
||||
return this.data[rowIndex].key;
|
||||
},
|
||||
|
||||
getPropertyName: function(rowIndex){
|
||||
return this.data[rowIndex].key;
|
||||
},
|
||||
|
||||
isEditableValue: function(val){
|
||||
if(val && val instanceof Date){
|
||||
return true;
|
||||
}else if(typeof val == 'object' || typeof val == 'function'){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
setValueAt : function(value, rowIndex, colIndex){
|
||||
var origVal = this.getValueAt(rowIndex, colIndex);
|
||||
if(typeof origVal == 'boolean'){
|
||||
value = (value == 'true' || value == '1');
|
||||
}
|
||||
YAHOO.ext.grid.PropsDataModel.superclass.setValueAt.call(this, value, rowIndex, colIndex);
|
||||
var key = this.data[rowIndex].key;
|
||||
if(key){
|
||||
this.source[key] = value;
|
||||
}
|
||||
},
|
||||
|
||||
getName : function(propName){
|
||||
if(typeof this.names[propName] != 'undefined'){
|
||||
return this.names[propName];
|
||||
}
|
||||
return propName;
|
||||
},
|
||||
|
||||
getSource : function(){
|
||||
return this.source;
|
||||
}
|
||||
});
|
||||
YAHOO.ext.grid.PropsColumnModel = function(dataModel, customEditors){
|
||||
YAHOO.ext.grid.PropsColumnModel.superclass.constructor.call(this, [
|
||||
{header: 'Name', sortable: true},
|
||||
{header: 'Value'}
|
||||
]);
|
||||
this.dataModel = dataModel;
|
||||
this.bselect = YAHOO.ext.DomHelper.append(document.body, {
|
||||
tag: 'select', cls: 'ygrid-editor', children: [
|
||||
{tag: 'option', value: 'true', html: 'true'},
|
||||
{tag: 'option', value: 'false', html: 'false'}
|
||||
]
|
||||
});
|
||||
YAHOO.util.Dom.generateId(this.bselect);
|
||||
this.editors = {
|
||||
'date' : new YAHOO.ext.grid.DateEditor(),
|
||||
'string' : new YAHOO.ext.grid.TextEditor(),
|
||||
'number' : new YAHOO.ext.grid.NumberEditor(),
|
||||
'boolean' : new YAHOO.ext.grid.SelectEditor(this.bselect)
|
||||
};
|
||||
this.customEditors = customEditors || {};
|
||||
this.renderCellDelegate = this.renderCell.createDelegate(this);
|
||||
};
|
||||
|
||||
YAHOO.extendX(YAHOO.ext.grid.PropsColumnModel, YAHOO.ext.grid.DefaultColumnModel, {
|
||||
isCellEditable : function(colIndex, rowIndex){
|
||||
return colIndex == 1;
|
||||
},
|
||||
|
||||
getRenderer : function(col){
|
||||
if(col == 1){
|
||||
return this.renderCellDelegate;
|
||||
}
|
||||
return YAHOO.ext.grid.DefaultColumnModel.defaultRenderer;
|
||||
},
|
||||
|
||||
renderCell : function(val, rowIndex, colIndex){
|
||||
if(val instanceof Date){
|
||||
return this.renderDate(val);
|
||||
}else if(typeof val == 'boolean'){
|
||||
return this.renderBool(val);
|
||||
}else{
|
||||
return val;
|
||||
}
|
||||
},
|
||||
|
||||
getCellEditor : function(colIndex, rowIndex){
|
||||
var propName = this.dataModel.getPropertyName(rowIndex);
|
||||
if(this.customEditors[propName]){
|
||||
return this.customEditors[propName];
|
||||
}
|
||||
var val = this.dataModel.getValueAt(rowIndex, colIndex);
|
||||
if(val instanceof Date){
|
||||
return this.editors['date'];
|
||||
}else if(typeof val == 'number'){
|
||||
return this.editors['number'];
|
||||
}else if(typeof val == 'boolean'){
|
||||
return this.editors['boolean'];
|
||||
}else{
|
||||
return this.editors['string'];
|
||||
}
|
||||
},
|
||||
|
||||
getCellEditor : function(colIndex, rowIndex){
|
||||
var val = this.dataModel.getValueAt(rowIndex, colIndex);
|
||||
if(val instanceof Date){
|
||||
return this.editors['date'];
|
||||
}else if(typeof val == 'number'){
|
||||
return this.editors['number'];
|
||||
}else if(typeof val == 'boolean'){
|
||||
return this.editors['boolean'];
|
||||
}else{
|
||||
return this.editors['string'];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
YAHOO.ext.grid.PropsColumnModel.prototype.renderDate = function(dateVal){
|
||||
return dateVal.dateFormat('m/j/Y');
|
||||
};
|
||||
|
||||
YAHOO.ext.grid.PropsColumnModel.prototype.renderBool = function(bVal){
|
||||
return bVal ? 'true' : 'false';
|
||||
};
|
||||
|
||||
YAHOO.ext.grid.PropsGrid = function(container, propNames){
|
||||
var dm = new YAHOO.ext.grid.PropsDataModel(propNames);
|
||||
var cm =new YAHOO.ext.grid.PropsColumnModel(dm);
|
||||
dm.sort(cm, 0, 'ASC');
|
||||
YAHOO.ext.grid.PropsGrid.superclass.constructor.call(this, container, dm, cm);
|
||||
this.container.addClass('yprops-grid');
|
||||
this.lastEditRow = null;
|
||||
this.on('cellclick', this.onCellClick, this, true);
|
||||
this.on('beforeedit', this.beforeEdit, this, true);
|
||||
this.on('columnresize', this.onColumnResize, this, true);
|
||||
};
|
||||
YAHOO.extendX(YAHOO.ext.grid.PropsGrid, YAHOO.ext.grid.EditorGrid, {
|
||||
onCellClick : function(grid, rowIndex, colIndex, e){
|
||||
if(colIndex == 0){
|
||||
this.startEditing(rowIndex, 1);
|
||||
}
|
||||
},
|
||||
|
||||
render : function(){
|
||||
YAHOO.ext.grid.PropsGrid.superclass.render.call(this);
|
||||
this.getView().fitColumnsToContainer();
|
||||
},
|
||||
|
||||
autoSize : function(){
|
||||
YAHOO.ext.grid.PropsGrid.superclass.autoSize.call(this);
|
||||
this.getView().fitColumnsToContainer();
|
||||
},
|
||||
|
||||
onColumnResize : function(){
|
||||
this.colModel.setColumnWidth(1, this.getView().wrap.clientWidth - this.colModel.getColumnWidth(0));
|
||||
},
|
||||
|
||||
beforeEdit : function(grid, rowIndex, colIndex){
|
||||
if(this.lastEditRow && rowIndex != this.lastEditRow.rowIndex){
|
||||
YAHOO.util.Dom.removeClass(this.lastEditRow, 'ygrid-prop-edting');
|
||||
}
|
||||
this.lastEditRow = this.getRow(rowIndex);
|
||||
YAHOO.util.Dom.addClass(this.lastEditRow, 'ygrid-prop-edting');
|
||||
},
|
||||
|
||||
setSource : function(source){
|
||||
this.dataModel.setSource(source);
|
||||
},
|
||||
|
||||
getSource : function(){
|
||||
return this.dataModel.getSource();
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue