[imp] made o2m reload when readonly property is changed

bzr revid: nicolas.vanhoren@openerp.com-20111026125524-c77rmzd6gq9u9oke
This commit is contained in:
niv-openerp 2011-10-26 14:55:24 +02:00
parent f0714ccd72
commit 9a48657a45
1 changed files with 25 additions and 3 deletions

View File

@ -1939,6 +1939,13 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
self.on_ui_change();
});
this.is_setted.then(function() {
self.load_views();
});
},
load_views: function() {
var self = this;
var modes = this.node.attrs.mode;
modes = !!modes ? modes.split(",") : ["tree"];
var views = [];
@ -1959,7 +1966,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
views.push(view);
});
this.views = views;
this.viewmanager = new openerp.web.ViewManager(this, this.dataset, views);
this.viewmanager.registry = openerp.web.views.clone({
list: 'openerp.web.form.One2ManyListView',
@ -1968,6 +1975,9 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
var once = $.Deferred().then(function() {
self.init_form_last_update.resolve();
});
var def = $.Deferred().then(function() {
self.is_started.resolve();
});
this.viewmanager.on_controller_inited.add_last(function(view_type, controller) {
if (view_type == "list") {
controller.o2m = self;
@ -1982,7 +1992,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
} else if (view_type == "graph") {
self.reload_current_view()
}
self.is_started.resolve();
def.resolve();
});
this.viewmanager.on_mode_switch.add_first(function() {
self.save_form_view();
@ -1992,6 +2002,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
self.viewmanager.appendTo(self.$element);
}, 0);
});
return def;
},
reload_current_view: function() {
var self = this;
@ -2131,7 +2142,18 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({
},
update_dom: function() {
this._super.apply(this, arguments);
this.$element.toggleClass('disabled', this.readonly);
var self = this;
if (this.previous_readonly !== this.readonly) {
this.previous_readonly = this.readonly;
if (this.viewmanager) {
$.when(this.is_started).then(function() {
self.viewmanager.stop();
$.when(self.load_views()).then(function() {
self.reload_current_view();
});
});
}
}
}
});