diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-02-23 14:41:08 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-02-26 16:52:56 +0200 |
commit | 095de0678bca136947b4c49ab2867de7b93b8798 (patch) | |
tree | 8d7bfbe4a5beb4734707b2e113770992387beb95 | |
parent | eb59350aaa9769f7d31606226b8912d6b1362b9c (diff) | |
download | aconf-095de0678bca136947b4c49ab2867de7b93b8798.tar.bz2 aconf-095de0678bca136947b4c49ab2867de7b93b8798.tar.xz |
web client: split renderField function into two in abstract/fields widget
-rw-r--r-- | web/widget/abstract/fields.js | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/web/widget/abstract/fields.js b/web/widget/abstract/fields.js index b62e4d2..de018e8 100644 --- a/web/widget/abstract/fields.js +++ b/web/widget/abstract/fields.js @@ -35,18 +35,19 @@ define( }); this.widgets = {}; + var labels = {}; _.each(meta.fields, function(field) { - if (field.visible) - self.widgets[field.name] = self.renderField( - field.name, - field, - field["ui-name"], - true, - false + if (field.visible) { + self.widgets[field.name] = self.createWidget( + field.name, field, true, false ); + labels[field.name] = field["ui-name"]; + } }); _.each(this.widgets, function(f1, name) { + self.setupWidget(f1, labels[name]); + _.each(self.widgets, function(f2) { if (f1 != f2) f1.on("validated", function(event) { @@ -68,35 +69,38 @@ define( }); }, - renderField: function( - name, meta, label, editable, removable - ) { - var widget = this.widget(meta).new( - this.reqData, - name, - meta, - this.level, - editable, - removable - ); + createWidget: function(name, meta, editable, removable) { + var widget = this.widget(meta); + if (widget) + return widget.new( + this.reqData, + name, + meta, + this.level, + editable, + removable + ); + }, + + setupWidget: function(widget, label) { var container = this.appendWidget(widget, label); widget.on("setVisible", function(event, visible) { if (visible) container.show(); else container.hide(); event.stopPropagation(); }); - return widget; }, renderCollectionMember: function(name, meta) { var set = meta.type == "set"; - this.renderField( + var widget = this.createWidget( name, meta.members, - meta["ui-member"] + " " + name, !set, !set && _.contains(meta.removable, name) - ).trigger("start"); + ); + this.setupWidget(widget, meta["ui-member"] + " " + name); + widget.trigger("start"); }, widget: function(meta) { |