From 61223f79ea6aaaae435c22b111b957312dc6e091 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Sun, 6 Apr 2014 14:07:32 +0300 Subject: web client: hide 'Insert' button until new value it entered --- web/widget/abstract/fields.js | 6 +++++- web/widget/inline.js | 36 ++++++++++++++++++++++++------------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/web/widget/abstract/fields.js b/web/widget/abstract/fields.js index 689f88a..4afa0e7 100644 --- a/web/widget/abstract/fields.js +++ b/web/widget/abstract/fields.js @@ -48,11 +48,14 @@ define( _.each(this.widgets, function(f1, name) { self.setupWidget(f1, labels[name]); + f1.on("validated", function(event) { + event.stopPropagation(); + }); + _.each(self.widgets, function(f2) { if (f1 != f2) f1.on("validated", function(event) { f2.trigger("updated", [name]); - event.stopPropagation(); }); }); }); @@ -112,6 +115,7 @@ define( ); this.setupWidget(widget, meta["ui-member"] + " " + name); widget.trigger("start"); + return widget; }, widget: function(meta) { diff --git a/web/widget/inline.js b/web/widget/inline.js index 86e9128..d016088 100644 --- a/web/widget/inline.js +++ b/web/widget/inline.js @@ -42,22 +42,34 @@ define( return; } - data.set( - name, type.isTreeNode(meta.members) ? {} : null - ).done(function(txnValid) { - self.renderCollectionMember(name, meta); - if (row) row.remove(); - button.prop("class", null); + function render(txnValid) { statusBar.validationReady(txnValid); - }).fail(function(xhr) { - statusBar.setError( - self.formatValidationError(xhr) - ); - data.delete(name); + if (row) row.remove(); + return self.renderCollectionMember(name, meta); + } + + if (type.isTreeNode(meta.members)) + data.set(name, {}).done(function(txnValid) { + render(txnValid); + button.show(); + }).fail(function(xhr) { + statusBar.setError( + self.formatValidationError(xhr) + ); + data.delete(name); + }); + + else data.set(name, null).always(function() { + var widget = render(false); + function handler(event) { + button.show(); + widget.off("validated", handler); + } + widget.on("validated", handler); }); } - button.prop("class", "hidden"); + button.hide(); if (meta.type == "collection") { var field = $("").attr({type: "text"}) -- cgit v1.2.3