[build][xs]: .
This commit is contained in:
233
dist/recline.js
vendored
233
dist/recline.js
vendored
@@ -3066,37 +3066,7 @@ this.recline.View = this.recline.View || {};
|
|||||||
|
|
||||||
(function($, my) {
|
(function($, my) {
|
||||||
"use strict";
|
"use strict";
|
||||||
// Add new grid Control to display a new row add menu bouton
|
|
||||||
// It display a simple side-bar menu ,for user to add new
|
|
||||||
// row to grid
|
|
||||||
|
|
||||||
my.GridControl= Backbone.View.extend({
|
|
||||||
className: "recline-row-add",
|
|
||||||
// Template for row edit menu , change it if you don't love
|
|
||||||
template: '<h1><a href="#" class="recline-row-add btn">Add row</a></h1>',
|
|
||||||
|
|
||||||
initialize: function(options){
|
|
||||||
var self = this;
|
|
||||||
_.bindAll(this, 'render');
|
|
||||||
this.state = new recline.Model.ObjectState();
|
|
||||||
this.render();
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
|
||||||
var self = this;
|
|
||||||
this.$el.html(this.template)
|
|
||||||
},
|
|
||||||
|
|
||||||
events : {
|
|
||||||
"click .recline-row-add" : "addNewRow"
|
|
||||||
},
|
|
||||||
|
|
||||||
addNewRow : function(e){
|
|
||||||
e.preventDefault()
|
|
||||||
this.state.trigger("change")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// ## SlickGrid Dataset View
|
// ## SlickGrid Dataset View
|
||||||
//
|
//
|
||||||
// Provides a tabular view on a Dataset, based on SlickGrid.
|
// Provides a tabular view on a Dataset, based on SlickGrid.
|
||||||
@@ -3117,7 +3087,11 @@ this.recline.View = this.recline.View || {};
|
|||||||
// state: {
|
// state: {
|
||||||
// gridOptions: {
|
// gridOptions: {
|
||||||
// editable: true,
|
// editable: true,
|
||||||
// enableAddRows: true
|
// enableAddRow: true
|
||||||
|
// // Enable support for row delete
|
||||||
|
// enabledDelRow: true,
|
||||||
|
// // Enable support for row Reorder
|
||||||
|
// enableReOrderRow:true,
|
||||||
// ...
|
// ...
|
||||||
// },
|
// },
|
||||||
// columnsEditor: [
|
// columnsEditor: [
|
||||||
@@ -3165,6 +3139,7 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
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) {
|
||||||
@@ -3176,6 +3151,7 @@ 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({
|
||||||
@@ -3188,6 +3164,7 @@ 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
|
||||||
@@ -3202,6 +3179,7 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// we need to be sure that user is entering a valid input , for exemple if
|
// we need to be sure that user is entering a valid input , for exemple if
|
||||||
// field is date type and field.format ='YY-MM-DD', we should be sure that
|
// field is date type and field.format ='YY-MM-DD', we should be sure that
|
||||||
// user enter a correct value
|
// user enter a correct value
|
||||||
@@ -3210,21 +3188,16 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
if (field.type == "date" && isNaN(Date.parse(value))){
|
if (field.type == "date" && isNaN(Date.parse(value))){
|
||||||
return {
|
return {
|
||||||
valid: false,
|
valid: false,
|
||||||
msg: "A date is required, check field field-date-format"};
|
msg: "A date is required, check field field-date-format"
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
return {valid: true, msg :null }
|
return {valid: true, msg :null }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//Add row delete support, check if enableReOrderRow is set to true , by
|
|
||||||
//default it is set to false
|
// Add column for row reorder support
|
||||||
// state: {
|
if (this.state.get("gridOptions") && this.state.get("gridOptions").enableReOrderRow == true) {
|
||||||
// gridOptions: {
|
|
||||||
// enableReOrderRow: true,
|
|
||||||
// },
|
|
||||||
if(this.state.get("gridOptions")
|
|
||||||
&& this.state.get("gridOptions").enableReOrderRow != undefined
|
|
||||||
&& this.state.get("gridOptions").enableReOrderRow == true ){
|
|
||||||
columns.push({
|
columns.push({
|
||||||
id: "#",
|
id: "#",
|
||||||
name: "",
|
name: "",
|
||||||
@@ -3235,15 +3208,8 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
cssClass: "recline-cell-reorder"
|
cssClass: "recline-cell-reorder"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//Add row delete support, check if enabledDelRow is set to true , by
|
// Add column for row delete support
|
||||||
//default it is set to false
|
if (this.state.get("gridOptions") && this.state.get("gridOptions").enabledDelRow == true) {
|
||||||
// state: {
|
|
||||||
// gridOptions: {
|
|
||||||
// enabledDelRow: true,
|
|
||||||
// },
|
|
||||||
if(this.state.get("gridOptions")
|
|
||||||
&& this.state.get("gridOptions").enabledDelRow != undefined
|
|
||||||
&& this.state.get("gridOptions").enabledDelRow == true ){
|
|
||||||
columns.push({
|
columns.push({
|
||||||
id: 'del',
|
id: 'del',
|
||||||
name: '',
|
name: '',
|
||||||
@@ -3254,6 +3220,7 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
validator:validator
|
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,
|
||||||
@@ -3315,6 +3282,7 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
columns = columns.concat(tempHiddenColumns);
|
columns = columns.concat(tempHiddenColumns);
|
||||||
|
|
||||||
// Transform a model object into a row
|
// Transform a model object into a row
|
||||||
function toRow(m) {
|
function toRow(m) {
|
||||||
var row = {};
|
var row = {};
|
||||||
@@ -3347,7 +3315,6 @@ 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();
|
||||||
@@ -3365,70 +3332,9 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
this.grid.setSortColumn(column, sortAsc);
|
this.grid.setSortColumn(column, sortAsc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.state.get("gridOptions") && this.state.get("gridOptions").enableReOrderRow) {
|
||||||
/* Row reordering support based on
|
this._setupRowReordering();
|
||||||
https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example9-row-reordering.html
|
|
||||||
|
|
||||||
*/
|
|
||||||
self.grid.setSelectionModel(new Slick.RowSelectionModel());
|
|
||||||
|
|
||||||
var moveRowsPlugin = new Slick.RowMoveManager({
|
|
||||||
cancelEditOnDrag: true
|
|
||||||
});
|
|
||||||
|
|
||||||
moveRowsPlugin.onBeforeMoveRows.subscribe(function (e, data) {
|
|
||||||
for (var i = 0; i < data.rows.length; i++) {
|
|
||||||
// no point in moving before or after itself
|
|
||||||
if (data.rows[i] == data.insertBefore || data.rows[i] == data.insertBefore - 1) {
|
|
||||||
e.stopPropagation();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
moveRowsPlugin.onMoveRows.subscribe(function (e, args) {
|
|
||||||
|
|
||||||
var extractedRows = [], left, right;
|
|
||||||
var rows = args.rows;
|
|
||||||
var insertBefore = args.insertBefore;
|
|
||||||
|
|
||||||
var data = self.model.records.toJSON()
|
|
||||||
left = data.slice(0, insertBefore);
|
|
||||||
right= data.slice(insertBefore, data.length);
|
|
||||||
|
|
||||||
rows.sort(function(a,b) { return a-b; });
|
|
||||||
|
|
||||||
for (var i = 0; i < rows.length; i++) {
|
|
||||||
extractedRows.push(data[rows[i]]);
|
|
||||||
}
|
|
||||||
|
|
||||||
rows.reverse();
|
|
||||||
|
|
||||||
for (var i = 0; i < rows.length; i++) {
|
|
||||||
var row = rows[i];
|
|
||||||
if (row < insertBefore) {
|
|
||||||
left.splice(row, 1);
|
|
||||||
} else {
|
|
||||||
right.splice(row - insertBefore, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data = left.concat(extractedRows.concat(right));
|
|
||||||
var selectedRows = [];
|
|
||||||
for (var i = 0; i < rows.length; i++)
|
|
||||||
selectedRows.push(left.length + i);
|
|
||||||
|
|
||||||
self.model.records.reset(data)
|
|
||||||
|
|
||||||
});
|
|
||||||
//register The plugin to handle row Reorder
|
|
||||||
if(this.state.get("gridOptions")
|
|
||||||
&& this.state.get("gridOptions").enableReOrderRow != undefined
|
|
||||||
&& this.state.get("gridOptions").enableReOrderRow == true ){
|
|
||||||
self.grid.registerPlugin(moveRowsPlugin);
|
|
||||||
}
|
|
||||||
/* end row reordering support*/
|
|
||||||
|
|
||||||
this._slickHandler.subscribe(this.grid.onSort, function(e, args){
|
this._slickHandler.subscribe(this.grid.onSort, function(e, args){
|
||||||
var order = (args.sortAsc) ? 'asc':'desc';
|
var order = (args.sortAsc) ? 'asc':'desc';
|
||||||
@@ -3495,7 +3401,67 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
self.rendered = false;
|
self.rendered = false;
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Row reordering support based on
|
||||||
|
// https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example9-row-reordering.html
|
||||||
|
_setupRowReordering: function() {
|
||||||
|
var self = this;
|
||||||
|
self.grid.setSelectionModel(new Slick.RowSelectionModel());
|
||||||
|
|
||||||
|
var moveRowsPlugin = new Slick.RowMoveManager({
|
||||||
|
cancelEditOnDrag: true
|
||||||
|
});
|
||||||
|
|
||||||
|
moveRowsPlugin.onBeforeMoveRows.subscribe(function (e, data) {
|
||||||
|
for (var i = 0; i < data.rows.length; i++) {
|
||||||
|
// no point in moving before or after itself
|
||||||
|
if (data.rows[i] == data.insertBefore || data.rows[i] == data.insertBefore - 1) {
|
||||||
|
e.stopPropagation();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
moveRowsPlugin.onMoveRows.subscribe(function (e, args) {
|
||||||
|
var extractedRows = [], left, right;
|
||||||
|
var rows = args.rows;
|
||||||
|
var insertBefore = args.insertBefore;
|
||||||
|
|
||||||
|
var data = self.model.records.toJSON()
|
||||||
|
left = data.slice(0, insertBefore);
|
||||||
|
right= data.slice(insertBefore, data.length);
|
||||||
|
|
||||||
|
rows.sort(function(a,b) { return a-b; });
|
||||||
|
|
||||||
|
for (var i = 0; i < rows.length; i++) {
|
||||||
|
extractedRows.push(data[rows[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
rows.reverse();
|
||||||
|
|
||||||
|
for (var i = 0; i < rows.length; i++) {
|
||||||
|
var row = rows[i];
|
||||||
|
if (row < insertBefore) {
|
||||||
|
left.splice(row, 1);
|
||||||
|
} else {
|
||||||
|
right.splice(row - insertBefore, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data = left.concat(extractedRows.concat(right));
|
||||||
|
var selectedRows = [];
|
||||||
|
for (var i = 0; i < rows.length; i++)
|
||||||
|
selectedRows.push(left.length + i);
|
||||||
|
|
||||||
|
self.model.records.reset(data)
|
||||||
|
|
||||||
|
});
|
||||||
|
//register The plugin to handle row Reorder
|
||||||
|
if(this.state.get("gridOptions") && this.state.get("gridOptions").enableReOrderRow) {
|
||||||
|
self.grid.registerPlugin(moveRowsPlugin);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
remove: function () {
|
remove: function () {
|
||||||
@@ -3521,6 +3487,36 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Add new grid Control to display a new row add menu bouton
|
||||||
|
// It display a simple side-bar menu ,for user to add new
|
||||||
|
// row to grid
|
||||||
|
my.GridControl= Backbone.View.extend({
|
||||||
|
className: "recline-row-add",
|
||||||
|
// Template for row edit menu , change it if you don't love
|
||||||
|
template: '<h1><a href="#" class="recline-row-add btn">Add row</a></h1>',
|
||||||
|
|
||||||
|
initialize: function(options){
|
||||||
|
var self = this;
|
||||||
|
_.bindAll(this, 'render');
|
||||||
|
this.state = new recline.Model.ObjectState();
|
||||||
|
this.render();
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function() {
|
||||||
|
var self = this;
|
||||||
|
this.$el.html(this.template)
|
||||||
|
},
|
||||||
|
|
||||||
|
events : {
|
||||||
|
"click .recline-row-add" : "addNewRow"
|
||||||
|
},
|
||||||
|
|
||||||
|
addNewRow : function(e){
|
||||||
|
e.preventDefault()
|
||||||
|
this.state.trigger("change")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
})(jQuery, recline.View);
|
})(jQuery, recline.View);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3639,7 +3635,14 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Slick.Controls.ColumnPicker
|
// Slick.Controls.ColumnPicker
|
||||||
$.extend(true, window, { Slick:{ Controls:{ ColumnPicker:SlickColumnPicker }}});
|
$.extend(true, window, {
|
||||||
|
Slick: {
|
||||||
|
Controls: {
|
||||||
|
ColumnPicker: SlickColumnPicker
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|
||||||
/*jshint multistr:true */
|
/*jshint multistr:true */
|
||||||
|
|||||||
Reference in New Issue
Block a user