summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-09-28 15:01:11 +0200
committerChristophe Simonis <chs@odoo.com>2017-09-28 15:01:11 +0200
commit1512c1b22993ba66a2cfff36bb92b8babca4cc95 (patch)
tree62fe209f48ffc5b7951b307fd7e327d17c8b1165 /addons/web/static/src/js/views/basic
parent63a4370afd3377de4308349283b981fac748e36c (diff)
parent9f9a7fdd0d70c1edda94fc546916c9e3516477ad (diff)
[MERGE] forward port branch saas-18 up to 9f9a7fdd0d7
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js33
1 files changed, 17 insertions, 16 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 276fd4df82b..d85f55ddf36 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -1645,24 +1645,25 @@ var BasicModel = AbstractModel.extend({
var hasOnchange = false;
var specs = {};
var fieldsInfo = record.fieldsInfo[viewType || record.viewType];
-
- _.each(Object.keys(fieldsInfo), function (name) {
- var field = record.fields[name];
- var fieldInfo = fieldsInfo[name];
- specs[name] = (field.onChange) || "";
- if (field.onChange) {
- hasOnchange = true;
- }
- _.each(fieldInfo.views, function (view) {
- _.each(view.fieldsInfo[view.type], function (field, subname) {
- var onChange = view.fields[subname].onChange;
- specs[name + '.' + subname] = onChange || "";
- if (onChange) {
- hasOnchange = true;
- }
+ generateSpecs(fieldsInfo, record.fields);
+
+ // recursively generates the onchange specs for fields in fieldsInfo,
+ // and their subviews
+ function generateSpecs (fieldsInfo, fields, prefix) {
+ prefix = prefix || '';
+ _.each(Object.keys(fieldsInfo), function (name) {
+ var field = fields[name];
+ var fieldInfo = fieldsInfo[name];
+ var key = prefix + name;
+ specs[key] = (field.onChange) || "";
+ if (field.onChange) {
+ hasOnchange = true;
+ }
+ _.each(fieldInfo.views, function (view) {
+ generateSpecs(view.fieldsInfo[view.type], view.fields, key + '.');
});
});
- });
+ }
return hasOnchange ? specs : false;
},
/**