From bd8f8c9be3ad34808bd0dee4269187530acc05e2 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 16 Feb 2012 16:04:34 +0100 Subject: [PATCH] [FIX] handling of fields back to the diagram's main model while creating and editing nodes lp bug: https://launchpad.net/bugs/932773 fixed lp bug: https://launchpad.net/bugs/932805 fixed bzr revid: xmo@openerp.com-20120216150434-bnrku6qj8r10sltj --- addons/web_diagram/controllers/main.py | 5 ++- addons/web_diagram/static/src/js/diagram.js | 47 +++++++++++++++------------ 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/addons/web_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py index 95cd9af..3a8bd0c 100644 --- a/addons/web_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -116,4 +116,7 @@ class DiagramView(View): n['options'][node_fields_string[i]] = act[fld] id_model = req.session.model(model).read([id],['name'], req.session.context)[0]['name'] - return dict(nodes=nodes, conn=connectors, id_model=id_model) + return dict(nodes=nodes, + conn=connectors, + id_model=id_model, + parent_field=graphs['node_parent_field']) diff --git a/addons/web_diagram/static/src/js/diagram.js b/addons/web_diagram/static/src/js/diagram.js index ddc88d9..90f8000 100644 --- a/addons/web_diagram/static/src/js/diagram.js +++ b/addons/web_diagram/static/src/js/diagram.js @@ -136,6 +136,7 @@ openerp.web.DiagramView = openerp.web.View.extend({ var res_nodes = result['nodes']; var res_connectors = result['conn']; + this.parent_field = result.parent_field; //Custom logic var self = this; @@ -240,30 +241,34 @@ openerp.web.DiagramView = openerp.web.View.extend({ var form_fields; - if(model == self.node) { - form_fields = ['wkf_id']; - } else { - form_fields = ['act_from', 'act_to']; - } - - if(model == self.node || id) { - $.each(form_fields, function(index, fld) { - form_controller.on_record_loaded.add_first(function() { - form_controller.fields[fld].modifiers.readonly = true; - form_controller.fields[fld].$input.attr('disabled', true); - form_controller.fields[fld].$drop_down.unbind(); - form_controller.fields[fld].$menu_btn.unbind(); - }); - }); - } - if(!id && (model == self.node)) { - $.each(form_fields, function(index, fld) { + if (model === self.node) { + form_fields = [this.parent_field]; + if (!id) { form_controller.on_record_loaded.add_last(function() { - form_controller.fields[fld].set_value([self.id,self.active_model]); - form_controller.fields[fld].dirty = true; + _.each(form_fields, function(fld) { + if (!(fld in form_controller.fields)) { return; } + var field = form_controller.fields[fld]; + field.set_value([self.id,self.active_model]); + field.dirty = true; + }); }); - }); + } else { + form_controller.on_record_loaded.add_first(function() { + _.each(form_fields, function(fld) { + if (!(fld in form_controller.fields)) { return; } + var field = form_controller.fields[fld]; + field.$input.prop('disabled', true); + field.$drop_down.unbind(); + field.$menu_btn.unbind(); + }); + }); + } + } else { + form_fields = [ + this.connectors.attrs.source, + this.connectors.attrs.destination]; } + if (!_.isEmpty(defaults)) { form_controller.on_record_loaded.add_last(function () { _(form_fields).each(function (field) { -- 1.7.10.4