summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/widgets/debug_manager.js
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2017-08-22 14:22:03 +0200
committerMartin Geubelle <mge@odoo.com>2017-08-23 13:53:18 +0200
commit65ecd109a5910b9bf919b42fc8198f3762f5f240 (patch)
tree6b799fdbac83a6eb3217e944a4bd365acc562875 /addons/web/static/src/js/widgets/debug_manager.js
parent59f8b849fba3b53eee3682af64a757a32acc12da (diff)
[FIX] web: reimplement conditions in the "Set Default" dialog
The rev. https://github.com/odoo/odoo/commit/49f0413290821cb123e75b4546873cf98edf1d25 reintroduced the "Set Default" dialog but forgot the conditions part. This rev. reintroduces the missing part.
Diffstat (limited to 'addons/web/static/src/js/widgets/debug_manager.js')
-rw-r--r--addons/web/static/src/js/widgets/debug_manager.js57
1 files changed, 40 insertions, 17 deletions
diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js
index e38813478b0..5fc51d1deb1 100644
--- a/addons/web/static/src/js/widgets/debug_manager.js
+++ b/addons/web/static/src/js/widgets/debug_manager.js
@@ -349,6 +349,20 @@ DebugManager.include({
},
set_defaults: function() {
var self = this;
+
+ var display = function (fieldInfo, value) {
+ var displayed = value;
+ if (value && fieldInfo.type === 'many2one') {
+ displayed = value.data.display_name;
+ value = value.data.id;
+ } else if (value && fieldInfo.type === 'selection') {
+ displayed = _.find(fieldInfo.selection, function (option) {
+ return option[0] === value;
+ })[1];
+ }
+ return [value, displayed];
+ };
+
var renderer = this._active_view.controller.renderer;
var fields = self._active_view.fields_view.fields;
var fieldsInfo = self._active_view.fields_view.fieldsInfo.form;
@@ -369,17 +383,10 @@ DebugManager.include({
invisibleOrReadOnly = evaluatedModifiers.invisible || evaluatedModifiers.readonly;
}
var fieldInfo = fields[fieldName];
- var value = fieldsValues[fieldName];
- var displayed = value;
- if (value && fieldInfo.type === 'many2one') {
- displayed = value.data.display_name;
- value = value.data.id;
- } else if (value && fieldInfo.type === 'selection') {
- displayed = _.find(fieldInfo.selection, function (option) {
- return option[0] === value;
- })[1];
- }
- // ignore fields which are empty, invisible, readonly, o2m
+ var valueDisplayed = display(fieldInfo, fieldsValues[fieldName]);
+ var value = valueDisplayed[0];
+ var displayed = valueDisplayed[1];
+ // ignore fields which are empty, invisible, readonly, o2m
// or m2m
if (!value || invisibleOrReadOnly || fieldInfo.type === 'one2many' ||
fieldInfo.type === 'many2many' || fieldInfo.type === 'binary' ||
@@ -396,6 +403,25 @@ DebugManager.include({
.compact()
.sortBy(function (field) { return field.string; })
.value();
+
+ var conditions = _.chain(fieldNamesInView)
+ .filter(function (fieldName) {
+ var fieldInfo = fields[fieldName];
+ return fieldInfo.change_default;
+ })
+ .map(function (fieldName) {
+ var fieldInfo = fields[fieldName];
+ var valueDisplayed = display(fieldInfo, fieldsValues[fieldName]);
+ var value = valueDisplayed[0];
+ var displayed = valueDisplayed[1];
+ return {
+ name: fieldName,
+ string: fieldInfo.string,
+ value: value,
+ displayed: displayed,
+ };
+ })
+ .value();
var d = new Dialog(this, {
title: _t("Set Default"),
buttons: [
@@ -408,6 +434,7 @@ DebugManager.include({
return;
}
var allUsers = d.$el.find('#formview_default_all').is(':checked');
+ var condition = d.$el.find('#formview_default_conditions').val();
var value = _.find(self.fields, function (field) {
return field.name === fieldToSet;
}).value;
@@ -420,7 +447,7 @@ DebugManager.include({
value,
allUsers,
true,
- false
+ condition || false,
],
}).done(function () { d.close(); });
}}
@@ -428,11 +455,7 @@ DebugManager.include({
});
d.args = {
fields: this.fields,
- // @FIXME
- // The conditions part has been dropped from now on because the flag 'change_default'
- // disappeared during the web client refactoring. Should be implemented again in the
- // right place.
- conditions: [],
+ conditions: conditions,
};
d.template = 'FormView.set_default';
d.open();