summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
commit6faad524cf5e4db02855cb213277c40aee14c42a (patch)
tree383c984dc1461a03481baa9fbdce8c156ca97e2e /addons/web/static/src
parent3657dc77c2ddb4275f07d1271b93e7f25e09913a (diff)
parentbc744a1da46efda6f1eb5c341f2fa5df30c9c7ad (diff)
[MERGE] forward port branch 12.0 up to bc744a1da46
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/chrome/abstract_action.js7
-rw-r--r--addons/web/static/src/js/chrome/action_manager_act_window.js6
-rw-r--r--addons/web/static/src/js/core/dom.js16
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js4
-rw-r--r--addons/web/static/src/js/views/form/form_controller.js11
-rw-r--r--addons/web/static/src/js/views/graph/graph_controller.js1
-rw-r--r--addons/web/static/src/js/views/graph/graph_model.js3
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_model.js2
-rw-r--r--addons/web/static/src/js/views/view_dialogs.js5
9 files changed, 41 insertions, 14 deletions
diff --git a/addons/web/static/src/js/chrome/abstract_action.js b/addons/web/static/src/js/chrome/abstract_action.js
index 5b0f7e3aeca..c4755338bf0 100644
--- a/addons/web/static/src/js/chrome/abstract_action.js
+++ b/addons/web/static/src/js/chrome/abstract_action.js
@@ -32,6 +32,13 @@ var AbstractAction = Widget.extend({
* Called each time the action is detached from the DOM.
*/
on_detach_callback: function () {},
+ /**
+ * Called by the action manager when action is restored (typically, when the
+ * user clicks on the action in the breadcrumb)
+ *
+ * @returns {Deferred|undefined}
+ */
+ willRestore: function () {},
//--------------------------------------------------------------------------
// Public
diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js
index 7b87cb45dd3..e66ae801bc1 100644
--- a/addons/web/static/src/js/chrome/action_manager_act_window.js
+++ b/addons/web/static/src/js/chrome/action_manager_act_window.js
@@ -646,8 +646,10 @@ ActionManager.include({
});
} else {
viewOptions = _.extend(viewOptions || {}, action.env);
- return controller.widget.reload(viewOptions).then(function () {
- return controller;
+ return $.when(controller.widget.willRestore()).then(function () {
+ return controller.widget.reload(viewOptions).then(function () {
+ return controller;
+ });
});
}
});
diff --git a/addons/web/static/src/js/core/dom.js b/addons/web/static/src/js/core/dom.js
index 725658a351b..2a961596862 100644
--- a/addons/web/static/src/js/core/dom.js
+++ b/addons/web/static/src/js/core/dom.js
@@ -397,9 +397,10 @@ return {
if (options.maxWidth) {
maxWidth = options.maxWidth();
} else {
- var rect = $el[0].getBoundingClientRect();
+ var mLeft = $el.is('.ml-auto, .mx-auto, .m-auto');
+ var mRight = $el.is('.mr-auto, .mx-auto, .m-auto');
+ maxWidth = computeFloatOuterWidthWithMargins($el[0], mLeft, mRight);
var style = window.getComputedStyle($el[0]);
- maxWidth = (rect.right - rect.left);
maxWidth -= (parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth));
maxWidth -= _.reduce($unfoldableItems, function (sum, el) {
return sum + computeFloatOuterWidthWithMargins(el);
@@ -434,10 +435,17 @@ return {
$extraItemsToggle.find('.nav-link').toggleClass('active', $extraItems.children().hasClass('active'));
}
- function computeFloatOuterWidthWithMargins(el) {
+ function computeFloatOuterWidthWithMargins(el, mLeft, mRight) {
var rect = el.getBoundingClientRect();
var style = window.getComputedStyle(el);
- return rect.right - rect.left + parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+ var outerWidth = rect.right - rect.left;
+ if (mLeft !== false) {
+ outerWidth += parseFloat(style.marginLeft);
+ }
+ if (mRight !== false) {
+ outerWidth += parseFloat(style.marginRight);
+ }
+ return outerWidth;
}
},
/**
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js
index 0aff337dcbf..183885b9fb8 100644
--- a/addons/web/static/src/js/views/basic/basic_controller.js
+++ b/addons/web/static/src/js/views/basic/basic_controller.js
@@ -264,7 +264,9 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
resIDs: record.res_ids,
},
on_success: def.resolve.bind(def),
- on_fail: def.reject.bind(def),
+ on_fail: function () {
+ self.update({}, {reload: false}).always(def.reject.bind(def));
+ },
on_closed: reload,
});
return this.alive(def);
diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js
index 7587e52fcd0..9c354be6765 100644
--- a/addons/web/static/src/js/views/form/form_controller.js
+++ b/addons/web/static/src/js/views/form/form_controller.js
@@ -49,6 +49,15 @@ var FormController = BasicController.extend({
this._super.apply(this, arguments);
this.autofocus();
},
+ /**
+ * Force mode back to readonly. Whenever we leave a form view, it is saved,
+ * and should no longer be in edit mode.
+ *
+ * @override
+ */
+ willRestore: function () {
+ this.mode = 'readonly';
+ },
//--------------------------------------------------------------------------
// Public
@@ -241,7 +250,7 @@ var FormController = BasicController.extend({
* @override
*/
update: function (params, options) {
- params = _.extend({viewType: 'form'}, params);
+ params = _.extend({viewType: 'form', mode: this.mode}, params);
return this._super(params, options);
},
diff --git a/addons/web/static/src/js/views/graph/graph_controller.js b/addons/web/static/src/js/views/graph/graph_controller.js
index 09992695506..27bd59e476d 100644
--- a/addons/web/static/src/js/views/graph/graph_controller.js
+++ b/addons/web/static/src/js/views/graph/graph_controller.js
@@ -179,7 +179,6 @@ var GraphController = AbstractController.extend(GroupByMenuInterfaceMixin,{
*/
_onButtonClick: function (ev) {
var $target = $(ev.target);
- var parent;
var field;
if ($target.hasClass('o_graph_button')) {
this._setMode($target.data('mode'));
diff --git a/addons/web/static/src/js/views/graph/graph_model.js b/addons/web/static/src/js/views/graph/graph_model.js
index adefe1e8953..26c1aec6545 100644
--- a/addons/web/static/src/js/views/graph/graph_model.js
+++ b/addons/web/static/src/js/views/graph/graph_model.js
@@ -6,11 +6,8 @@ odoo.define('web.GraphModel', function (require) {
* server. It basically just do a read_group and format/normalize data.
*/
-var core = require('web.core');
var AbstractModel = require('web.AbstractModel');
-var _t = core._t;
-
return AbstractModel.extend({
/**
* @override
diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js
index fd21ed4df86..bfb6f5e0cc9 100644
--- a/addons/web/static/src/js/views/kanban/kanban_model.js
+++ b/addons/web/static/src/js/views/kanban/kanban_model.js
@@ -305,7 +305,7 @@ var KanbanModel = BasicModel.extend({
* @override
*/
_load: function (dataPoint, options) {
- if (dataPoint.progressBar) {
+ if (dataPoint.groupedBy.length && dataPoint.progressBar) {
return this._readProgressBarGroup(dataPoint, options);
}
return this._super.apply(this, arguments);
diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js
index d6ea10d1243..ee11afbc3bd 100644
--- a/addons/web/static/src/js/views/view_dialogs.js
+++ b/addons/web/static/src/js/views/view_dialogs.js
@@ -186,9 +186,12 @@ var FormViewDialog = ViewDialog.extend({
}
fields_view_def.then(function (viewInfo) {
+ var refinedContext = _.pick(self.context, function (value, key) {
+ return key.indexOf('_view_ref') === -1;
+ });
var formview = new FormView(viewInfo, {
modelName: self.res_model,
- context: self.context,
+ context: refinedContext,
ids: self.res_id ? [self.res_id] : [],
currentId: self.res_id || undefined,
index: 0,