summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-09-18 22:40:19 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-09-18 23:21:16 +0300
commit7cc381a85885571f7bc1d7c2ccd532b70cdb47ce (patch)
treee6b18d948d4b858ed79e0fb181d1425bec182faa /web
parent2c34e2d512973ad3882aa32bb201fe4efa634ef8 (diff)
downloadaconf-7cc381a85885571f7bc1d7c2ccd532b70cdb47ce.tar.bz2
aconf-7cc381a85885571f7bc1d7c2ccd532b70cdb47ce.tar.xz
web client: combine format, init methods of widgets
Diffstat (limited to 'web')
-rw-r--r--web/client.js57
1 files changed, 26 insertions, 31 deletions
diff --git a/web/client.js b/web/client.js
index bca5595..dd30575 100644
--- a/web/client.js
+++ b/web/client.js
@@ -358,11 +358,21 @@ $(function() {
}
var Field = {
- format: function(value, status, label, level) {
- var el = this.staticRender(value, level);
- this.setElStatus(el, status);
- if (label) return this.wrap(el, label).row;
- return el;
+ init: function(value, meta, label, level, update, remove) {
+ if (!update) {
+ var el = this.staticRender(value, level);
+ this.setElStatus(el, status);
+ if (label) return this.wrap(el, label).row;
+ return el;
+ }
+
+ this.el = this.render(value, meta, level);
+ this.el.change(update);
+
+ if (!this.field) this.field = this.el;
+
+ this.els = this.wrap(this.el, label, remove);
+ return this.els.row;
},
staticRender: function(value, level) {
@@ -391,18 +401,6 @@ $(function() {
return {row: row, msg: msg};
},
- init: function(value, meta, update, remove, label, level) {
- this.el = this.render(value, meta, level);
- this.el.change(update);
-
- if (!this.field) this.field = this.el;
-
- if (!label) return this.el;
-
- this.els = this.wrap(this.el, label, remove);
- return this.els.row;
- },
-
render: function(value, meta, level) {
return $("<input>").attr({type: "text", value: value});
},
@@ -491,11 +489,11 @@ $(function() {
ComboBox.setElStatus(el.find("select"), status);
};
Reference.init = function(
- value, meta, update, remove, label, level
+ value, meta, label, level, update, remove
) {
this.field = ComboBox.render(value, meta, level);
return _.bind(ComboBox.init, this)(
- value, meta, update, remove, label, level
+ value, meta, label, level, update, remove
);
}
Reference.render = function(value, meta, level) {
@@ -562,11 +560,7 @@ $(function() {
if (!(meta.widget in widgets))
return $("<tr>").html($("<td>").text(value));
- var widget = widgets[meta.widget];
- if (!editable)
- return widget.format(value, status, label, level);
-
- widget = Object.create(widget);
+ var widget = Object.create(widgets[meta.widget]);
function change() {
if (isTreeNode(meta)) return;
@@ -606,20 +600,21 @@ $(function() {
var el = widget.init(
value,
meta,
- change,
+ label,
+ level,
+ editable ? change : null,
removable ? function() {
data.delete(name).done(function(txnValid) {
statusBar.validationReady(txnValid)
fetchAndRender(path);
});
- } : null,
- label,
- level
+ } : null
);
- if (status == "invalid") change();
-
- widget.setStatus(status);
+ if (editable) {
+ if (status == "invalid") change();
+ widget.setStatus(status);
+ }
if (el.is("tr")) appendRow(el);
else {