summaryrefslogtreecommitdiffstats
path: root/web/widget/inline.js
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-06-25 22:35:21 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-06-25 23:35:46 +0300
commit8707c1eccd1f27454ee46ebef5613579c4c3c736 (patch)
tree80d0b770ab3b09e2208524d8ea6e10f912919252 /web/widget/inline.js
parent9b1a1d67f288ef3ba01d2c6c5724d844eb67ca02 (diff)
downloadaconf-8707c1eccd1f27454ee46ebef5613579c4c3c736.tar.bz2
aconf-8707c1eccd1f27454ee46ebef5613579c4c3c736.tar.xz
web client: editable sets of primitive types
Diffstat (limited to 'web/widget/inline.js')
-rw-r--r--web/widget/inline.js29
1 files changed, 18 insertions, 11 deletions
diff --git a/web/widget/inline.js b/web/widget/inline.js
index 87e6bc7..9fd89f8 100644
--- a/web/widget/inline.js
+++ b/web/widget/inline.js
@@ -24,8 +24,7 @@ define(
this.el.append(this.div);
- if (meta.editable &&
- _.contains(["collection", "list"], meta.type)) {
+ if (meta.editable && type.isCollection(meta)) {
if (!this.table) this.makeSortable(this.div);
var self = this;
@@ -36,8 +35,11 @@ define(
function insert() {
var name = getter();
+ var set = meta.type == "set";
+
+ if (set ? _.contains(data.data, name) :
+ name in data.data) {
- if (name in data.data) {
statusBar.setError("Already exists: " + name);
return;
}
@@ -48,8 +50,13 @@ define(
return self.renderCollectionMember(name, meta);
}
+ var task;
if (type.isTreeNode(meta.members))
- data.set(name, {}).done(function(txnValid) {
+ task = data.set(name, {});
+ else if (set) task = data.add(name);
+
+ if (task)
+ task.done(function(txnValid) {
render(txnValid);
button.show();
}).fail(function(xhr) {
@@ -71,7 +78,13 @@ define(
button.hide();
- if (meta.type == "collection") {
+ if (meta.type == "list") {
+ getter = function() {
+ return data.data.length + 1;
+ };
+ insert();
+ }
+ else {
var field = $("<input>").attr({type: "text"})
.change(insert);
row = $("<tr>").html($("<td>").html(field));
@@ -79,12 +92,6 @@ define(
self.appendRow(row);
field.focus();
}
- else {
- getter = function() {
- return data.data.length + 1;
- };
- insert();
- }
});
this.el.append($("<p>").html(button));
}