From 61f11eae595d454c8e21262a770dc56ab0754bbb Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Sat, 5 Apr 2014 17:36:23 +0300 Subject: web client: disable sorting if any member is invalid --- web/transaction.js | 10 +++++++++- web/widget/inline.js | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/web/transaction.js b/web/transaction.js index b4c9aa5..26a8c35 100644 --- a/web/transaction.js +++ b/web/transaction.js @@ -84,11 +84,15 @@ define( }); } + function invalidSubordinates() { + return findSubordinateKeys(invalid, path); + } + var set = data.meta.type == "set"; if (type.isCollection(data.meta) && !set) { var level = pth.split(path).length; - _.each(findSubordinateKeys(invalid, path), function(p) { + _.each(invalidSubordinates(), function(p) { ensureKeyPresence(pth.split(p)[level]); }); } @@ -125,6 +129,10 @@ define( return null; }; + data.isSubtreeValid = function() { + return !_.size(invalidSubordinates(invalid, path)); + }; + data.validate = function() { var valid = true; if (data.meta.required) { diff --git a/web/widget/inline.js b/web/widget/inline.js index 25e1f24..57d492a 100644 --- a/web/widget/inline.js +++ b/web/widget/inline.js @@ -144,6 +144,11 @@ define( ui.item.data("index", ui.item.index()); }, stop: function(event, ui) { + if (!data.isSubtreeValid()) { + el.sortable("cancel"); + return; + } + var oldIndex = ui.item.data("index") + 1; var newIndex = ui.item.index() + 1; if (newIndex != oldIndex) -- cgit v1.2.3