Antony Lesuisse (OpenERP) has proposed merging 
lp:~openerp-dev/openerp-web/trunk-onchange-al into lp:openerp-web.

Requested reviews:
  OpenERP R&D Web Team (openerp-dev-web)

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-onchange-al/+merge/90811

new onchange see spec on kanban pad
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-onchange-al/+merge/90811
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openerp-web/trunk-onchange-al.
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js	2012-01-26 14:37:34 +0000
+++ addons/web/static/src/js/view_form.js	2012-01-30 23:48:24 +0000
@@ -240,7 +240,14 @@
     parse_on_change: function (on_change, widget) {
         var self = this;
         var onchange = _.str.trim(on_change);
-        var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
+        var onchange_fields = widget.node.attrs.on_change_fields;
+        var call;
+
+        if (onchange_fields) {
+            call = [onchange,onchange_fields];
+        } else {
+            call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/);
+        }
         if (!call) {
             return null;
         }
@@ -261,7 +268,7 @@
             }
         };
         var parent_fields = null, context_index = null;
-        var args = _.map(call[2].split(','), function (a, i) {
+        var evaluate_arg = function (a, i) {
             var field = _.str.trim(a);
 
             // literal constant or context
@@ -299,11 +306,23 @@
                             "' for onchange '" + onchange + "'");
         });
 
-        return {
-            method: method,
-            args: args,
-            context_index: context_index
-        };
+        var args_obj = {};
+        var args_array = [];
+        _.each(call[2].split(','), function (a, i) {
+            value = evaluate_arg(a,i);
+            args_obj[a] = value;
+            args_array[i] = value;
+        }
+
+        var r = { method: method };
+        if (onchange_fields) {
+            r.args = args_obj;
+            r.context_index = 2;
+        } else {
+            r.args = args_array;
+            r.context_index = context_index;
+        }
+        return r;
     },
     do_onchange: function(widget, processed) {
         var self = this;

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to