summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-05-29 14:06:12 +0200
committerChristophe Simonis <chs@odoo.com>2019-05-29 14:06:12 +0200
commit8d7ee3921384ce070d3333cbc4073ffc4f8febc4 (patch)
tree197e81ea4c35bc56a898d63add666d53ea79f15b /addons/web/static/src/js
parent7ca0fe3c9f1050eac2d117ea35fd7414d1b0742f (diff)
parent8a0e819d0bb0e4184ed64559b7be91605d044e19 (diff)
[MERGE] forward port branch saas-11.3 up to 8a0e819d0bb
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome/action_manager_act_window.js20
-rw-r--r--addons/web/static/src/js/core/ajax.js12
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_controller.js2
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js5
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js70
5 files changed, 64 insertions, 45 deletions
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 4bf2d4f22fb..cbf6d977ce1 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
@@ -47,7 +47,10 @@ ActionManager.include({
* @param {string} [state.view_type]
*/
loadState: function (state) {
+ var callersArguments = arguments;
+ var self = this;
var action;
+ var def;
var options = {
clear_breadcrumbs: true,
pushState: false,
@@ -102,11 +105,20 @@ ActionManager.include({
action = lastAction;
options.viewType = state.view_type;
}
+ } else if (state.sa) {
+ def = this._rpc({
+ route: '/web/session/get_session_action',
+ params: {key: state.sa},
+ }).then(function (sessionAction) {
+ action = sessionAction;
+ });
}
- if (action) {
- return this.doAction(action, options);
- }
- return this._super.apply(this, arguments);
+ return $.when(def).then(function () {
+ if (action) {
+ return self.doAction(action, options);
+ }
+ return self._super.apply(self, callersArguments);
+ });
},
//--------------------------------------------------------------------------
diff --git a/addons/web/static/src/js/core/ajax.js b/addons/web/static/src/js/core/ajax.js
index f844cbdaed4..1379a9c1fc6 100644
--- a/addons/web/static/src/js/core/ajax.js
+++ b/addons/web/static/src/js/core/ajax.js
@@ -29,11 +29,17 @@ function genericJsonRpc (fct_name, params, settings, fct) {
core.bus.trigger('rpc:result', data, result);
if (result.error !== undefined) {
if (result.error.data.arguments[0] !== "bus.Bus not available in test mode") {
+ var func = console.error;
if (result.error.data.exception_type === "user_error") {
- console.log("Server application error", JSON.stringify(result.error));
- } else {
- console.error("Server application error", JSON.stringify(result.error));
+ func = console.log;
}
+ func(
+ "Server application error\n",
+ "Error code:", result.error.code, "\n",
+ "Error message:", result.error.message, "\n",
+ "Error data message:\n", result.error.data.message, "\n",
+ "Error data debug:\n", result.error.data.debug
+ );
}
return $.Deferred().reject("server", result.error);
} else {
diff --git a/addons/web/static/src/js/views/calendar/calendar_controller.js b/addons/web/static/src/js/views/calendar/calendar_controller.js
index f90f27a46da..e5bdc9f059d 100644
--- a/addons/web/static/src/js/views/calendar/calendar_controller.js
+++ b/addons/web/static/src/js/views/calendar/calendar_controller.js
@@ -160,7 +160,7 @@ var CalendarController = AbstractController.extend({
* @returns {Deferred}
*/
_updateRecord: function (record) {
- return this.model.updateRecord(record).then(this.reload.bind(this));
+ return this.model.updateRecord(record).always(this.reload.bind(this));
},
//--------------------------------------------------------------------------
diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js
index 955ef2ade39..524bd2034db 100644
--- a/addons/web/static/src/js/views/list/list_controller.js
+++ b/addons/web/static/src/js/views/list/list_controller.js
@@ -373,8 +373,9 @@ var ListController = BasicController.extend({
* @returns {Deferred}
*/
_update: function () {
- this._toggleSidebar();
- return this._super.apply(this, arguments);
+ return this._super.apply(this, arguments)
+ .then(this._toggleSidebar.bind(this))
+ .then(this._updateButtons.bind(this, 'readonly'));
},
/**
* This helper simply makes sure that the control panel buttons matches the
diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js
index 04da1bc4983..d083a1c2165 100644
--- a/addons/web/static/src/js/views/list/list_editable_renderer.js
+++ b/addons/web/static/src/js/views/list/list_editable_renderer.js
@@ -638,48 +638,48 @@ ListRenderer.include({
_resequence: function (event, ui) {
var self = this;
var movedRecordID = ui.item.data('id');
- var rows = this.state.data;
- var row = _.findWhere(rows, {id: movedRecordID});
- var index0 = rows.indexOf(row);
- var index1 = ui.item.index();
- var lower = Math.min(index0, index1);
- var upper = Math.max(index0, index1) + 1;
+ self.unselectRow().then(function () {
+ var rows = self.state.data;
+ var row = _.findWhere(rows, {id: movedRecordID});
+ var index0 = rows.indexOf(row);
+ var index1 = ui.item.index();
+ var lower = Math.min(index0, index1);
+ var upper = Math.max(index0, index1) + 1;
- var order = _.findWhere(self.state.orderedBy, {name: self.handleField});
- var asc = !order || order.asc;
- var reorderAll = false;
- var sequence = (asc ? -1 : 1) * Infinity;
+ var order = _.findWhere(self.state.orderedBy, {name: self.handleField});
+ var asc = !order || order.asc;
+ var reorderAll = false;
+ var sequence = (asc ? -1 : 1) * Infinity;
- // determine if we need to reorder all lines
- _.each(rows, function (row, index) {
- if ((index < lower || index >= upper) &&
- ((asc && sequence >= row.data[self.handleField]) ||
- (!asc && sequence <= row.data[self.handleField]))) {
- reorderAll = true;
- }
- sequence = row.data[self.handleField];
- });
+ // determine if we need to reorder all lines
+ _.each(rows, function (row, index) {
+ if ((index < lower || index >= upper) &&
+ ((asc && sequence >= row.data[self.handleField]) ||
+ (!asc && sequence <= row.data[self.handleField]))) {
+ reorderAll = true;
+ }
+ sequence = row.data[self.handleField];
+ });
- if (reorderAll) {
- rows = _.without(rows, row);
- rows.splice(index1, 0, row);
- } else {
- rows = rows.slice(lower, upper);
- rows = _.without(rows, row);
- if (index0 > index1) {
- rows.unshift(row);
+ if (reorderAll) {
+ rows = _.without(rows, row);
+ rows.splice(index1, 0, row);
} else {
- rows.push(row);
+ rows = rows.slice(lower, upper);
+ rows = _.without(rows, row);
+ if (index0 > index1) {
+ rows.unshift(row);
+ } else {
+ rows.push(row);
+ }
}
- }
- var sequences = _.pluck(_.pluck(rows, 'data'), self.handleField);
- var rowIDs = _.pluck(rows, 'id');
+ var sequences = _.pluck(_.pluck(rows, 'data'), self.handleField);
+ var rowIDs = _.pluck(rows, 'id');
- if (!asc) {
- rowIDs.reverse();
- }
- this.unselectRow().then(function () {
+ if (!asc) {
+ rowIDs.reverse();
+ }
self.trigger_up('resequence', {
rowIDs: rowIDs,
offset: _.min(sequences),