summaryrefslogtreecommitdiffstats
path: root/web/widget/inline.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/widget/inline.js')
-rw-r--r--web/widget/inline.js20
1 files changed, 11 insertions, 9 deletions
diff --git a/web/widget/inline.js b/web/widget/inline.js
index 4326ba0..8a81854 100644
--- a/web/widget/inline.js
+++ b/web/widget/inline.js
@@ -42,18 +42,18 @@ define(
var self = this;
var keys = _.clone(_.keys(data.data));
-
+
var button = $("<input>").attr(
{type: "submit", value: "Insert"}
).click(function() {
- var getter;
+ var getter, row;
function insert() {
var name = getter();
if (_.contains(keys, name)) {
- button.prop("class", null);
+ statusBar.setError("Already exists: " + name);
return;
}
keys.push(name);
@@ -66,8 +66,14 @@ define(
meta.removable.push(name);
self.renderCollectionMember(name, meta);
+ if (row) row.remove();
button.prop("class", null);
statusBar.validationReady(txnValid);
+ }).fail(function(xhr) {
+ statusBar.setError(
+ self.formatValidationError(xhr)
+ );
+ data.delete(name);
});
}
@@ -75,12 +81,8 @@ define(
if (meta.type == "collection") {
var field = $("<input>").attr({type: "text"});
- var row = $("<tr>").html($("<td>").html(field));
- getter = function() {
- var res = field.val();
- row.remove();
- return res;
- }
+ row = $("<tr>").html($("<td>").html(field));
+ getter = function() { return field.val(); }
field.change(insert);
self.appendRow(row);
}