diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-11-25 20:30:19 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-11-25 23:28:52 +0200 |
commit | 4ff7513fec2df0f079b844c7c558e9ad6c448b16 (patch) | |
tree | 2226660ea02f0502fd264f243ecd883f1dc4d415 /web | |
parent | 878c1bc580d89d70d330eb896d7affc88f776ce0 (diff) | |
download | aconf-4ff7513fec2df0f079b844c7c558e9ad6c448b16.tar.bz2 aconf-4ff7513fec2df0f079b844c7c558e9ad6c448b16.tar.xz |
resolve reference choices on server side
Diffstat (limited to 'web')
-rw-r--r-- | web/client.js | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/web/client.js b/web/client.js index cf7910f..ce5a031 100644 --- a/web/client.js +++ b/web/client.js @@ -487,14 +487,14 @@ $(function() { Field.init = function( data, name, meta, level, editable, removable ) { - var el = _.bind(Widget.init, this)( - data, name, meta, level, editable, removable - ); - this.data = data; this.name = name; this.editable = editable && meta.editable; + var el = _.bind(Widget.init, this)( + data, name, meta, level, editable, removable + ); + this.onChange(this.validate); if (data.status(name) == "invalid") this.validate(); @@ -653,7 +653,7 @@ $(function() { Inline.requestData = function(value, meta) { var def = $.Deferred(); txnMgr.query(value).done(function(data) { - def.resolve(data, meta); + def.resolve(data, data.meta); }); return def; }; @@ -926,19 +926,6 @@ $(function() { var CheckBoxes = Object.create(HeaderInline); - CheckBoxes.requestData = function(value, meta) { - var def = $.Deferred(); - Inline.requestData(value, meta).done(function(data, meta) { - txnMgr.query(data.meta.members.scope).done(function(sdata) { - meta.primitive = sdata.meta.type == "set"; - meta.choice = meta.primitive ? - _.values(sdata.data) : _.keys(sdata.data); - def.resolve(data, meta); - }); - }); - return def; - }; - CheckBoxes.render = function(data, meta) { _.bind(HeaderInline.render, this)(data, meta); @@ -947,36 +934,32 @@ $(function() { var self = this; - _.each(meta.choice, function(choice) { - var ec = meta.primitive ? escape(choice) : choice; - + _.each(meta.members.choice, function(choice) { var cbox = $("<input>").attr({ type: "checkbox", - checked: _.contains(data.data, ec) + checked: _.contains(data.data, choice.value) }); var row = $("<tr>"); row.append($("<td>").html(cbox)); var item = $("<td>"); - if (meta.primitive) item.text(choice); - else item.html( - Link.staticRender( - join(data.meta.members.scope, choice) - ).text(choice) + if (choice.path) item.html( + Link.staticRender(choice.value).text(choice["ui-value"]) ); + else item.text(choice["ui-value"]); row.append(item); function setStatus() { - self.setElStatus(row, data.status(ec)); + self.setElStatus(row, data.status(choice.value)); } setStatus(); cbox.change(function() { ( cbox.is(":checked") ? - data.add(ec) : - data.delete(ec) + data.add(choice.value) : + data.delete(choice.value) ).done(function(txnValid) { setStatus(); statusBar.validationReady(txnValid); @@ -1009,17 +992,6 @@ $(function() { Reference.createEl = function() { return $("<div>"); }; - Reference.requestData = function(value, meta) { - var def = $.Deferred(); - txnMgr.query(meta.scope).done(function(data) { - meta.choice = _.map(_.values(data.data), function(path) { - return {value: path, "ui-value": split(path).pop()}; - }); - def.resolve(value, meta); - }); - return def; - }; - Reference.render = function(value, meta) { _.bind(ComboBox.render, this)(value, meta); |