[#384, slickgrid][s]: slickgrid add support for row-delete
This commit is contained in:
@@ -55,13 +55,8 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
|
|
||||||
);
|
);
|
||||||
this.state = new recline.Model.ObjectState(state);
|
this.state = new recline.Model.ObjectState(state);
|
||||||
|
|
||||||
this._slickHandler = new Slick.EventHandler();
|
this._slickHandler = new Slick.EventHandler();
|
||||||
},
|
},
|
||||||
|
|
||||||
events: {
|
|
||||||
},
|
|
||||||
|
|
||||||
onRecordChanged: function(record) {
|
onRecordChanged: function(record) {
|
||||||
// Ignore if the grid is not yet drawn
|
// Ignore if the grid is not yet drawn
|
||||||
if (!this.grid) {
|
if (!this.grid) {
|
||||||
@@ -74,10 +69,8 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
this.grid.getData().updateItem(record, row_index);
|
this.grid.getData().updateItem(record, row_index);
|
||||||
this.grid.render();
|
this.grid.render();
|
||||||
},
|
},
|
||||||
|
render: function() {
|
||||||
render: function() {
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var options = _.extend({
|
var options = _.extend({
|
||||||
enableCellNavigation: true,
|
enableCellNavigation: true,
|
||||||
enableColumnReorder: true,
|
enableColumnReorder: true,
|
||||||
@@ -88,15 +81,23 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
|
|
||||||
// We need all columns, even the hidden ones, to show on the column picker
|
// We need all columns, even the hidden ones, to show on the column picker
|
||||||
var columns = [];
|
var columns = [];
|
||||||
|
|
||||||
// custom formatter as default one escapes html
|
// custom formatter as default one escapes html
|
||||||
// plus this way we distinguish between rendering/formatting and computed value (so e.g. sort still works ...)
|
// plus this way we distinguish between rendering/formatting and computed value (so e.g. sort still works ...)
|
||||||
// row = row index, cell = cell index, value = value, columnDef = column definition, dataContext = full row values
|
// row = row index, cell = cell index, value = value, columnDef = column definition, dataContext = full row values
|
||||||
var formatter = function(row, cell, value, columnDef, dataContext) {
|
var formatter = function(row, cell, value, columnDef, dataContext) {
|
||||||
var field = self.model.fields.get(columnDef.id);
|
// If row delete field format , change here if for example insteed
|
||||||
|
// of link we can have bouton or image depending of what you need
|
||||||
|
// RUFFUS! Do you think we should have a variable to set if
|
||||||
|
// ie template_del = '<a href="#" class="recline-column-delete">X</a>'
|
||||||
|
if (columnDef.id == "del"){
|
||||||
|
return '<a href="#" class="recline-column-delete">X</a>'
|
||||||
|
}
|
||||||
|
var field = self.model.fields.get(columnDef.id);
|
||||||
if (field.renderer) {
|
if (field.renderer) {
|
||||||
return field.renderer(value, field, dataContext);
|
return field.renderer(value, field, dataContext);
|
||||||
} else {
|
}else {
|
||||||
return value;
|
return value
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -112,6 +113,16 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
//Add row delete support
|
||||||
|
columns.push({
|
||||||
|
id: 'del',
|
||||||
|
name: 'del',
|
||||||
|
field: 'del',
|
||||||
|
sortable: true,
|
||||||
|
width: 10,
|
||||||
|
formatter: formatter,
|
||||||
|
validator:validator
|
||||||
|
})
|
||||||
_.each(this.model.fields.toJSON(),function(field){
|
_.each(this.model.fields.toJSON(),function(field){
|
||||||
var column = {
|
var column = {
|
||||||
id: field.id,
|
id: field.id,
|
||||||
@@ -205,6 +216,7 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
rows[i] = toRow(m);
|
rows[i] = toRow(m);
|
||||||
models[i] = m;
|
models[i] = m;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = new RowSet();
|
var data = new RowSet();
|
||||||
@@ -250,16 +262,22 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
|
|
||||||
this._slickHandler.subscribe(this.grid.onCellChange, function (e, args) {
|
this._slickHandler.subscribe(this.grid.onCellChange, function (e, args) {
|
||||||
// We need to change the model associated value
|
// We need to change the model associated value
|
||||||
//
|
|
||||||
var grid = args.grid;
|
var grid = args.grid;
|
||||||
var model = data.getModel(args.row);
|
var model = data.getModel(args.row);
|
||||||
var field = grid.getColumns()[args.cell].id;
|
var field = grid.getColumns()[args.cell].id;
|
||||||
var v = {};
|
var v = {};
|
||||||
v[field] = args.item[field];
|
v[field] = args.item[field];
|
||||||
model.set(v);
|
model.set(v);
|
||||||
});
|
});
|
||||||
|
this._slickHandler.subscribe(this.grid.onClick,function(e, args){
|
||||||
|
if (args.cell == 0){
|
||||||
|
// We need to delete the associated model
|
||||||
|
var model = data.getModel(args.row);
|
||||||
|
model.destroy()
|
||||||
|
}
|
||||||
|
}) ;
|
||||||
|
|
||||||
var columnpicker = new Slick.Controls.ColumnPicker(columns, this.grid,
|
var columnpicker = new Slick.Controls.ColumnPicker(columns, this.grid,
|
||||||
_.extend(options,{state:this.state}));
|
_.extend(options,{state:this.state}));
|
||||||
|
|
||||||
if (self.visible){
|
if (self.visible){
|
||||||
|
|||||||
Reference in New Issue
Block a user