From 4057e981315e6853b54507bfe7d160723b61ec20 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Thu, 30 May 2013 13:48:24 +0200 Subject: [PATCH] Fix #1186 Reorder of admin fields Fix tests --- www/scripts/apps/admin/fields/views/list.js | 23 +++++++++------------ www/scripts/tests/specs/admin/fields.js | 2 +- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/www/scripts/apps/admin/fields/views/list.js b/www/scripts/apps/admin/fields/views/list.js index 0767d781f6..96f93a1fc2 100644 --- a/www/scripts/apps/admin/fields/views/list.js +++ b/www/scripts/apps/admin/fields/views/list.js @@ -114,25 +114,22 @@ define([ }, updateSortAction: function(event, model, ui) { var newPosition = ui.item.index(); - var curPosition = this.collection.indexOf(model); - - // reorder all collection model - this.collection.each(function(el, index) { - if (newPosition > curPosition && (index > curPosition && index <= curPosition)) index -= 1; - else if (newPosition < curPosition && (index >= curPosition && index < curPosition)) index += 1; - - el.set("sorter", index); + this.collection.remove(model, {silent: true}); + this.collection.each(function (model, index) { + var ordinal = index; + if (index >= newPosition) ordinal += 1; + model.set({'sorter': ordinal}, {silent: true}); }); - - this.render(); + model.set({'sorter': newPosition}, {silent: true}); + this.collection.add(model, {at: newPosition}); this.itemViews[0].animate(Math.abs(ui.firstItemPosition)); - // update edit view model - AdminFieldApp.fieldEditView.model = this.collection.find(function(el) { + AdminFieldApp.fieldEditView.updateModel(this.collection.find(function(el) { return el.get("id") === AdminFieldApp.fieldEditView.model.get("id"); - }); + })); + AdminFieldApp.fieldEditView.render(); AdminFieldApp.saveView.updateStateButton(); return this; diff --git a/www/scripts/tests/specs/admin/fields.js b/www/scripts/tests/specs/admin/fields.js index 9824b523a8..e82149240c 100644 --- a/www/scripts/tests/specs/admin/fields.js +++ b/www/scripts/tests/specs/admin/fields.js @@ -304,7 +304,7 @@ define([ it("should reorder collection on drop action", function() { var ui = {item: {index: function() {return 2;}}}; AdminFieldApp.fieldListView.itemViews[0].dropAction({},ui); - assert.equal(AdminFieldApp.fieldListView.collection.last().get('sorter'), 3, 'model is updated'); + assert.equal(AdminFieldApp.fieldListView.collection.last().get('sorter'), 2, 'model is updated'); }); }); });