summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-04-05 16:28:52 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-04-06 10:32:08 +0300
commit7502eb7b53581b1e78f0b559498af9b877b7870f (patch)
treea7ccce19e1edd104c75da460fbf2acff63335f15
parent979594ba229c4380fbafac35b78c1c2af8b85f97 (diff)
downloadaconf-7502eb7b53581b1e78f0b559498af9b877b7870f.tar.bz2
aconf-7502eb7b53581b1e78f0b559498af9b877b7870f.tar.xz
web client: track new collection members in transaction manager
-rw-r--r--web/transaction.js10
-rw-r--r--web/widget/inline.js4
2 files changed, 8 insertions, 6 deletions
diff --git a/web/transaction.js b/web/transaction.js
index 7f56a88..b4c9aa5 100644
--- a/web/transaction.js
+++ b/web/transaction.js
@@ -73,6 +73,11 @@ define(
return _.isArray(data.data) ? name - 1 : name;
}
+ function ensureKeyPresence(name) {
+ var key = index(name);
+ if (!(key in data.data)) data.data[key] = null;
+ }
+
function findSubordinateKeys(objmap, path) {
return _.filter(_.keys(objmap), function(p) {
return pth.isSubordinate(p, path);
@@ -84,8 +89,7 @@ define(
if (type.isCollection(data.meta) && !set) {
var level = pth.split(path).length;
_.each(findSubordinateKeys(invalid, path), function(p) {
- var key = index(pth.split(p)[level]);
- if (!(key in data.data) data.data[key] = null;
+ ensureKeyPresence(pth.split(p)[level]);
});
}
@@ -137,8 +141,8 @@ define(
var mpath = pth.join(path, name);
+ ensureKeyPresence(name);
var value = data.get(name, true);
- if (value == undefined) value = null;
var tn = _.isObject(newValue);
var npv = tn ? mpath : newValue;
diff --git a/web/widget/inline.js b/web/widget/inline.js
index 01e36c0..25e1f24 100644
--- a/web/widget/inline.js
+++ b/web/widget/inline.js
@@ -29,7 +29,6 @@ define(
if (!this.table) this.makeSortable(this.div);
var self = this;
- var keys = _.clone(_.keys(data.data));
var button = dom.button("Insert", function() {
@@ -38,11 +37,10 @@ define(
function insert() {
var name = getter();
- if (_.contains(keys, name)) {
+ if (name in data.data) {
statusBar.setError("Already exists: " + name);
return;
}
- keys.push(name);
data.set(
name, type.isTreeNode(meta.members) ? {} : null