summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-04-05 17:36:23 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-04-06 10:32:14 +0300
commit61f11eae595d454c8e21262a770dc56ab0754bbb (patch)
tree2e44e428c5583b5f3d5f76a3b45f0bfb89ac3280
parent7502eb7b53581b1e78f0b559498af9b877b7870f (diff)
downloadaconf-61f11eae595d454c8e21262a770dc56ab0754bbb.tar.bz2
aconf-61f11eae595d454c8e21262a770dc56ab0754bbb.tar.xz
web client: disable sorting if any member is invalid
-rw-r--r--web/transaction.js10
-rw-r--r--web/widget/inline.js5
2 files changed, 14 insertions, 1 deletions
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)