Merge branch 'master' into gh-pages
This commit is contained in:
@@ -46,6 +46,7 @@ Possible breaking changes
|
|||||||
* Require new underscore.deferred vendor library for all use (jQuery no longer required if just using recline.dataset.js)
|
* Require new underscore.deferred vendor library for all use (jQuery no longer required if just using recline.dataset.js)
|
||||||
* View.el is now the raw DOM element. If you want a jQuery-wrapped version, use view.$el. #350
|
* View.el is now the raw DOM element. If you want a jQuery-wrapped version, use view.$el. #350
|
||||||
* Upgraded timelinejs lib - #316
|
* Upgraded timelinejs lib - #316
|
||||||
|
* Pager widget now takes Dataset object rather than QueryState object #386
|
||||||
|
|
||||||
### v0.5 - July 5th 2012 (first public release)
|
### v0.5 - July 5th 2012 (first public release)
|
||||||
|
|
||||||
|
|||||||
23
dist/recline.js
vendored
23
dist/recline.js
vendored
@@ -3674,13 +3674,15 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
model.set(v);
|
model.set(v);
|
||||||
});
|
});
|
||||||
this._slickHandler.subscribe(this.grid.onClick,function(e, args){
|
this._slickHandler.subscribe(this.grid.onClick,function(e, args){
|
||||||
|
//try catch , because this fail in qunit , but no
|
||||||
|
//error on browser.
|
||||||
|
try{e.preventDefault()}catch(e){}
|
||||||
if (args.cell == 0 && self.state.get("gridOptions").enabledDelRow == true){
|
if (args.cell == 0 && self.state.get("gridOptions").enabledDelRow == true){
|
||||||
// We need to delete the associated model
|
// We need to delete the associated model
|
||||||
var model = data.getModel(args.row);
|
var model = data.getModel(args.row);
|
||||||
model.destroy()
|
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}));
|
||||||
|
|
||||||
@@ -4408,11 +4410,16 @@ my.Pager = Backbone.View.extend({
|
|||||||
},
|
},
|
||||||
onFormSubmit: function(e) {
|
onFormSubmit: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var newFrom = parseInt(this.$el.find('input[name="from"]').val());
|
// filter is 0-based; form is 1-based
|
||||||
newFrom = Math.min(this.model.recordCount, Math.max(newFrom, 1))-1;
|
var formFrom = parseInt(this.$el.find('input[name="from"]').val())-1;
|
||||||
var newSize = parseInt(this.$el.find('input[name="to"]').val()) - newFrom;
|
var formTo = parseInt(this.$el.find('input[name="to"]').val())-1;
|
||||||
newSize = Math.min(Math.max(newSize, 1), this.model.recordCount);
|
var maxRecord = this.model.recordCount-1;
|
||||||
this.model.queryState.set({size: newSize, from: newFrom});
|
if (this.model.queryState.get('from') != formFrom) { // changed from; update from
|
||||||
|
this.model.queryState.set({from: Math.min(maxRecord, Math.max(formFrom, 0))});
|
||||||
|
} else if (this.model.queryState.get('to') != formTo) { // change to; update size
|
||||||
|
var to = Math.min(maxRecord, Math.max(formTo, 0));
|
||||||
|
this.model.queryState.set({size: Math.min(maxRecord+1, Math.max(to-formFrom+1, 1))});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onPaginationUpdate: function(e) {
|
onPaginationUpdate: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -4422,10 +4429,10 @@ my.Pager = Backbone.View.extend({
|
|||||||
var size = this.model.queryState.get('size');
|
var size = this.model.queryState.get('size');
|
||||||
var updateQuery = false;
|
var updateQuery = false;
|
||||||
if ($el.parent().hasClass('prev')) {
|
if ($el.parent().hasClass('prev')) {
|
||||||
newFrom = Math.max(currFrom - Math.max(0, size), 1)-1;
|
newFrom = Math.max(currFrom - Math.max(0, size), 0);
|
||||||
updateQuery = newFrom != currFrom;
|
updateQuery = newFrom != currFrom;
|
||||||
} else {
|
} else {
|
||||||
newFrom = Math.max(currFrom + size, 1);
|
newFrom = Math.max(currFrom + size, 0);
|
||||||
updateQuery = (newFrom < this.model.recordCount);
|
updateQuery = (newFrom < this.model.recordCount);
|
||||||
}
|
}
|
||||||
if (updateQuery) {
|
if (updateQuery) {
|
||||||
|
|||||||
@@ -313,13 +313,15 @@ my.SlickGrid = Backbone.View.extend({
|
|||||||
model.set(v);
|
model.set(v);
|
||||||
});
|
});
|
||||||
this._slickHandler.subscribe(this.grid.onClick,function(e, args){
|
this._slickHandler.subscribe(this.grid.onClick,function(e, args){
|
||||||
|
//try catch , because this fail in qunit , but no
|
||||||
|
//error on browser.
|
||||||
|
try{e.preventDefault()}catch(e){}
|
||||||
if (args.cell == 0 && self.state.get("gridOptions").enabledDelRow == true){
|
if (args.cell == 0 && self.state.get("gridOptions").enabledDelRow == true){
|
||||||
// We need to delete the associated model
|
// We need to delete the associated model
|
||||||
var model = data.getModel(args.row);
|
var model = data.getModel(args.row);
|
||||||
model.destroy()
|
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}));
|
||||||
|
|
||||||
|
|||||||
@@ -30,11 +30,16 @@ my.Pager = Backbone.View.extend({
|
|||||||
},
|
},
|
||||||
onFormSubmit: function(e) {
|
onFormSubmit: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var newFrom = parseInt(this.$el.find('input[name="from"]').val());
|
// filter is 0-based; form is 1-based
|
||||||
newFrom = Math.min(this.model.recordCount, Math.max(newFrom, 1))-1;
|
var formFrom = parseInt(this.$el.find('input[name="from"]').val())-1;
|
||||||
var newSize = parseInt(this.$el.find('input[name="to"]').val()) - newFrom;
|
var formTo = parseInt(this.$el.find('input[name="to"]').val())-1;
|
||||||
newSize = Math.min(Math.max(newSize, 1), this.model.recordCount);
|
var maxRecord = this.model.recordCount-1;
|
||||||
this.model.queryState.set({size: newSize, from: newFrom});
|
if (this.model.queryState.get('from') != formFrom) { // changed from; update from
|
||||||
|
this.model.queryState.set({from: Math.min(maxRecord, Math.max(formFrom, 0))});
|
||||||
|
} else if (this.model.queryState.get('to') != formTo) { // change to; update size
|
||||||
|
var to = Math.min(maxRecord, Math.max(formTo, 0));
|
||||||
|
this.model.queryState.set({size: Math.min(maxRecord+1, Math.max(to-formFrom+1, 1))});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onPaginationUpdate: function(e) {
|
onPaginationUpdate: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -44,10 +49,10 @@ my.Pager = Backbone.View.extend({
|
|||||||
var size = this.model.queryState.get('size');
|
var size = this.model.queryState.get('size');
|
||||||
var updateQuery = false;
|
var updateQuery = false;
|
||||||
if ($el.parent().hasClass('prev')) {
|
if ($el.parent().hasClass('prev')) {
|
||||||
newFrom = Math.max(currFrom - Math.max(0, size), 1)-1;
|
newFrom = Math.max(currFrom - Math.max(0, size), 0);
|
||||||
updateQuery = newFrom != currFrom;
|
updateQuery = newFrom != currFrom;
|
||||||
} else {
|
} else {
|
||||||
newFrom = Math.max(currFrom + size, 1);
|
newFrom = Math.max(currFrom + size, 0);
|
||||||
updateQuery = (newFrom < this.model.recordCount);
|
updateQuery = (newFrom < this.model.recordCount);
|
||||||
}
|
}
|
||||||
if (updateQuery) {
|
if (updateQuery) {
|
||||||
|
|||||||
@@ -42,6 +42,37 @@ test('basics', function () {
|
|||||||
view.remove();
|
view.remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('change inputs', function () {
|
||||||
|
var dataset = Fixture.getDataset();
|
||||||
|
var size = parseInt(dataset.recordCount/3);
|
||||||
|
dataset.queryState.set({ size : size }, { silent : true });
|
||||||
|
var view = new recline.View.Pager({
|
||||||
|
model: dataset
|
||||||
|
});
|
||||||
|
$('.fixtures').append(view.el);
|
||||||
|
var toSelector = 'input[name=to]';
|
||||||
|
var fromSelector = 'input[name=from]';
|
||||||
|
|
||||||
|
// change from: update to, keep size
|
||||||
|
var fromVal = size;
|
||||||
|
$(fromSelector).val(fromVal).change();
|
||||||
|
equal($(fromSelector).val(), fromVal);
|
||||||
|
// UI is 1-based but model is zero-based
|
||||||
|
equal(dataset.queryState.get('from'), fromVal-1);
|
||||||
|
equal($(toSelector).val(), fromVal+(size-1));
|
||||||
|
|
||||||
|
// change to: update from, change size
|
||||||
|
var toVal = dataset.recordCount;
|
||||||
|
$(toSelector).val(toVal).change();
|
||||||
|
equal($(toSelector).val(), toVal);
|
||||||
|
equal($(fromSelector).val(), fromVal);
|
||||||
|
// UI is 1-based but model is zero-based
|
||||||
|
equal(dataset.queryState.get('from'), fromVal-1);
|
||||||
|
notEqual(dataset.queryState.get('size'), size);
|
||||||
|
|
||||||
|
view.remove();
|
||||||
|
});
|
||||||
|
|
||||||
test('bounds checking', function () {
|
test('bounds checking', function () {
|
||||||
var dataset = Fixture.getDataset();
|
var dataset = Fixture.getDataset();
|
||||||
var size = dataset.recordCount/2 + 1;
|
var size = dataset.recordCount/2 + 1;
|
||||||
@@ -62,10 +93,9 @@ test('bounds checking', function () {
|
|||||||
|
|
||||||
// enter size-1 in from: reloads size-1 - size
|
// enter size-1 in from: reloads size-1 - size
|
||||||
var fromVal = size-1;
|
var fromVal = size-1;
|
||||||
var toVal = parseInt($(toSelector).val());
|
|
||||||
$(fromSelector).val(fromVal).change();
|
$(fromSelector).val(fromVal).change();
|
||||||
equal($(fromSelector).val(), fromVal);
|
equal($(fromSelector).val(), fromVal);
|
||||||
equal($(toSelector).val(), toVal);
|
equal($(toSelector).val(), fromVal+(size-1));
|
||||||
// UI is 1-based but model is zero-based
|
// UI is 1-based but model is zero-based
|
||||||
equal(dataset.queryState.get('from'), fromVal-1);
|
equal(dataset.queryState.get('from'), fromVal-1);
|
||||||
|
|
||||||
@@ -80,17 +110,17 @@ test('bounds checking', function () {
|
|||||||
// click next on end -> nothing happens
|
// click next on end -> nothing happens
|
||||||
var queryCalls = querySpy.callCount;
|
var queryCalls = querySpy.callCount;
|
||||||
fromVal = parseInt($(fromSelector).val());
|
fromVal = parseInt($(fromSelector).val());
|
||||||
toVal = parseInt($(toSelector).val());
|
var toVal = parseInt($(toSelector).val());
|
||||||
view.$el.find('.next a').click();
|
view.$el.find('.next a').click();
|
||||||
equal(querySpy.callCount, queryCalls);
|
equal(querySpy.callCount, queryCalls);
|
||||||
equal($(fromSelector).val(), fromVal);
|
equal($(fromSelector).val(), fromVal);
|
||||||
equal($(toSelector).val(), toVal);
|
equal($(toSelector).val(), toVal);
|
||||||
|
|
||||||
// reset from to 1
|
// reset from=1
|
||||||
// type value past the end in to: 1-recordCount
|
|
||||||
fromVal = 1;
|
fromVal = 1;
|
||||||
|
$(fromSelector).val(fromVal).change();
|
||||||
|
// type value past the end in to: 1-recordCount
|
||||||
toVal = dataset.recordCount + 10;
|
toVal = dataset.recordCount + 10;
|
||||||
$(fromSelector).val(fromVal);
|
|
||||||
$(toSelector).val(toVal).change();
|
$(toSelector).val(toVal).change();
|
||||||
equal($(fromSelector).val(), 1);
|
equal($(fromSelector).val(), 1);
|
||||||
equal($(toSelector).val(), dataset.recordCount);
|
equal($(toSelector).val(), dataset.recordCount);
|
||||||
|
|||||||
Reference in New Issue
Block a user