From 77ab8a015a882de281492924687bd462ac01616b Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Wed, 18 Sep 2013 22:00:22 +0300 Subject: web client: use ComboBox as prototype for Reference --- web/client.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'web') diff --git a/web/client.js b/web/client.js index b864997..403089f 100644 --- a/web/client.js +++ b/web/client.js @@ -394,7 +394,11 @@ $(function() { 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; }, @@ -412,7 +416,7 @@ $(function() { this.setElStatus(this.el, status); }, - get: function() { return this.el.val() || null; } + get: function() { return this.field.val() || null; } } var ComboBox = Object.create(Field); @@ -479,31 +483,36 @@ $(function() { }; Inline.setStatus = function(status) {}; - var Reference = Object.create(Link); + var Reference = Object.create(ComboBox); Reference.staticRender = function(value, level) { return Link.staticRender(value, level).text(value); }; Reference.setElStatus = function(el, status) { ComboBox.setElStatus(el.find("select"), status); }; + Reference.init = function( + value, meta, update, remove, label, level + ) { + this.field = ComboBox.render(value, meta, level); + return _.bind(ComboBox.init, this)( + value, meta, update, remove, label, level + ); + } Reference.render = function(value, meta, level) { + var el = $("
").html(this.field); + el.append(" "); + var link = $("
"); var update = _.bind(function() { link.html(Link.staticRender(this.get(), level)); - }, this); - - this.cbox = Object.create(ComboBox); - - var el = $("
"); - el.append(this.cbox.init(value, meta, update)); - el.append(" "); + }, this); el.append(link); + this.field.change(update); update(); return el; }; - Reference.get = function() { return this.cbox.get(); }; var widgets = { -- cgit v1.2.3