92 lines
No EOL
3.3 KiB
JavaScript
92 lines
No EOL
3.3 KiB
JavaScript
EditorExample = function(){
|
|
var dataModel;
|
|
var grid;
|
|
var colModel;
|
|
|
|
var formatMoney = function(value){
|
|
value -= 0;
|
|
value = (Math.round(value*100))/100;
|
|
value = (value == Math.floor(value)) ? value + '.00' : ( (value*10 == Math.floor(value*10)) ? value + '0' : value);
|
|
return "$" + value;
|
|
};
|
|
|
|
var formatBoolean = function(value){
|
|
return value ? 'Yes' : 'No';
|
|
};
|
|
|
|
var formatDate = function(value){
|
|
return value.dateFormat('M d, Y');
|
|
};
|
|
|
|
var parseDate = function(value){
|
|
return new Date(Date.parse(value));
|
|
};
|
|
|
|
return {
|
|
init : function(){
|
|
var yg = YAHOO.ext.grid;
|
|
var cols = [{
|
|
header: "Common Name",
|
|
width: 160,
|
|
editor: new yg.TextEditor({allowBlank: false})
|
|
},{
|
|
header: "Light",
|
|
width: 130,
|
|
editor: new yg.SelectEditor('light')
|
|
},{
|
|
header: "Price",
|
|
width: 70,
|
|
renderer: formatMoney,
|
|
editor: new yg.NumberEditor({allowBlank: false, allowNegative: false, maxValue: 10})
|
|
},{
|
|
header: "Available",
|
|
width: 95,
|
|
renderer: formatDate,
|
|
editor: new yg.DateEditor({format: 'm/d/y', minValue: '01/01/06', disabledDays: [0, 6],
|
|
disabledDaysText: 'Plants are not available on the weekends',
|
|
disabledDates : ['^07', '04/15', '12/02/06'],
|
|
disabledDatesText : 'The plants are pollinating on %0, choose a different date.'})
|
|
},{
|
|
header: "Indoor?",
|
|
width: 55,
|
|
renderer: formatBoolean,
|
|
editor: new yg.CheckboxEditor()
|
|
}];
|
|
colModel = new YAHOO.ext.grid.DefaultColumnModel(cols);
|
|
colModel.defaultSortable = true;
|
|
|
|
var schema = {
|
|
tagName: 'plant',
|
|
id: 'use-index',
|
|
fields: ['common', 'light', 'price', 'availability', 'indoor']
|
|
};
|
|
dataModel = new YAHOO.ext.grid.XMLDataModel(schema);
|
|
dataModel.addPreprocessor(2, parseFloat);
|
|
dataModel.addPreprocessor(3, parseDate);
|
|
dataModel.addPreprocessor(4, Boolean);
|
|
dataModel.setDefaultSort(colModel, 0, "ASC");
|
|
|
|
grid = new YAHOO.ext.grid.EditorGrid('editor-grid', dataModel, colModel);
|
|
// to use double click to edit:
|
|
//grid.getSelectionModel().clicksToActivateCell = 2;
|
|
grid.render();
|
|
|
|
dataModel.load('plants.xml');
|
|
},
|
|
|
|
// filtering support, regex, function or text match
|
|
filter : function(e){
|
|
var mfilter = function(value){
|
|
return (value == 'Shade');
|
|
}
|
|
dataModel.filter({0: /^B.*/i, 1: mfilter});
|
|
},
|
|
|
|
// hide columns
|
|
hide : function(e){
|
|
colModel.setHidden(1, true);
|
|
}
|
|
};
|
|
}();
|
|
|
|
YAHOO.ext.EventManager.onDocumentReady(EditorExample.init, EditorExample, true); |