[IMP] use _.map to extract values from onchange parameter names, instead of doing it indirectly via _.each

bzr revid: xmo@openerp.com-20111121124532-ndo2me1ehos7mu0m
This commit is contained in:
Xavier Morel 2011-11-21 13:45:32 +01:00
parent 8f67c5c367
commit b40b60e278
1 changed files with 8 additions and 12 deletions

View File

@ -250,9 +250,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
return null;
}
var method = call[1], args = [], context_index = null;
var method = call[1];
if (!_.str.trim(call[2])) {
return {method: method, args: args, context_index: context_index}
return {method: method, args: [], context_index: null}
}
var argument_replacement = {
@ -265,20 +265,18 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
return ctx;
}
};
var parent_fields = null;
_.each(call[2].split(','), function (a, i) {
var parent_fields = null, context_index = null;
var args = _.map(call[2].split(','), function (a, i) {
var field = _.str.trim(a);
// literal constant or context
if (field in argument_replacement) {
args.push(argument_replacement[field](i));
return;
return argument_replacement[field](i);
}
// form field
if (self.fields[field]) {
var value = self.fields[field].get_on_change_value();
args.push(value == null ? false : value);
return;
return value == null ? false : value;
}
// parent field
var splitted = field.split('.');
@ -288,16 +286,14 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
}
var p_val = parent_fields[_.str.trim(splitted[1])];
if (p_val !== undefined) {
args.push(p_val == null ? false : p_val);
return;
return p_val == null ? false : p_val;
}
}
// string literal
var first_char = field[0], last_char = field[field.length-1];
if ((first_char === '"' && last_char === '"')
|| (first_char === "'" && last_char === "'")) {
args.push(field.slice(1, -1));
return;
return field.slice(1, -1);
}
throw new Error("Could not get field with name '" + field +