summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2011-10-25 18:20:31 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2011-10-25 18:20:31 +0200
commitdd514b567dbdf30e9367c827965c7c936d51453a (patch)
treedde291be046b083ad5f6f167980eca347a3f6445 /addons/web/static
parent6c1525d84994774f9c31f1531639701fa966ff1f (diff)
[imp] made m2m support readonly
bzr revid: nicolas.vanhoren@openerp.com-20111025162031-wsjaebu713nht3i1
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/view_form.js53
1 files changed, 41 insertions, 12 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index d227b091645..e3584c21c13 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -2196,6 +2196,7 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
this._super(view, node);
this.list_id = _.uniqueId("many2many");
this.is_started = $.Deferred();
+ this.is_setted = $.Deferred();
},
start: function() {
this._super.apply(this, arguments);
@@ -2207,18 +2208,10 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
this.dataset.on_unlink.add_last(function(ids) {
self.on_ui_change();
});
-
- this.list_view = new openerp.web.form.Many2ManyListView(this, this.dataset, false, {
- 'addable': 'Add',
- 'selectable': self.multi_selection
- });
- this.list_view.m2m_field = this;
- this.list_view.on_loaded.add_last(function() {
- self.is_started.resolve();
+
+ this.is_setted.then(function() {
+ self.load_view();
});
- setTimeout(function () {
- self.list_view.appendTo($("#" + self.list_id));
- }, 0);
},
set_value: function(value) {
value = value || [];
@@ -2229,15 +2222,51 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({
this.dataset.set_ids(value);
var self = this;
$.when(this.is_started).then(function() {
+ console.log("lalala");
self.list_view.reload_content();
});
+ this.is_setted.resolve();
},
get_value: function() {
return [commands.replace_with(this.dataset.ids)];
},
validate: function() {
this.invalid = false;
- // TODO niv
+ },
+ load_view: function() {
+ console.info("yop");
+ var self = this;
+ this.list_view = new openerp.web.form.Many2ManyListView(this, this.dataset, false, {
+ 'addable': self.readonly ? null : 'Add',
+ 'deletable': self.readonly ? false : true,
+ 'selectable': self.multi_selection
+ });
+ this.list_view.m2m_field = this;
+ var loaded = $.Deferred();
+ this.list_view.on_loaded.add_last(function() {
+ self.is_started.resolve();
+ loaded.resolve();
+ });
+ setTimeout(function () {
+ self.list_view.appendTo($("#" + self.list_id));
+ }, 0);
+ return loaded;
+ },
+ update_dom: function() {
+ this._super.apply(this, arguments);
+ var self = this;
+ if (this.previous_readonly !== this.readonly) {
+ this.previous_readonly = this.readonly;
+ if (this.list_view) {
+ $.when(this.is_started).then(function() {
+ self.list_view.stop();
+ $.when(self.load_view()).then(function() {
+ console.log("lalala2");
+ self.list_view.reload_content();
+ });
+ });
+ }
+ }
}
});