diff options
Diffstat (limited to 'web/widget/inline.js')
-rw-r--r-- | web/widget/inline.js | 20 |
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); } |