summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-03-11 14:42:34 +0100
committerChristophe Simonis <chs@odoo.com>2019-03-11 14:42:34 +0100
commit71faa19af06d5002be627adbfd92dc25941c69c6 (patch)
treec6abaadf36cea49d1b2a2779cf487974ca1c650f /addons/web/static/src/js/views
parent0c1eff0d95869b9b4eab8b34e65be770e49fdd2b (diff)
parent2b3296bbf8b5d08fad20a4ca8d83ebb0aa7303b3 (diff)
[MERGE] forward port branch saas-12.1 up to 2b3296bbf8b
Diffstat (limited to 'addons/web/static/src/js/views')
-rw-r--r--addons/web/static/src/js/views/abstract_controller.js7
-rw-r--r--addons/web/static/src/js/views/control_panel/control_panel_controller.js10
-rw-r--r--addons/web/static/src/js/views/control_panel/search/search_bar.js10
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_record.js13
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_renderer.js16
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js4
-rw-r--r--addons/web/static/src/js/views/pivot/pivot_model.js1
7 files changed, 41 insertions, 20 deletions
diff --git a/addons/web/static/src/js/views/abstract_controller.js b/addons/web/static/src/js/views/abstract_controller.js
index b5d7c8fe8b3..53afb4a1fbd 100644
--- a/addons/web/static/src/js/views/abstract_controller.js
+++ b/addons/web/static/src/js/views/abstract_controller.js
@@ -246,7 +246,7 @@ var AbstractController = mvc.Controller.extend(ActionMixin, {
return;
}
self.renderer.setLocalState(localState);
- return self._update(state);
+ return self._update(state, params);
});
});
},
@@ -402,12 +402,15 @@ var AbstractController = mvc.Controller.extend(ActionMixin, {
*
* @private
* @param {Object} state the state given by the model
+ * @param {Object} [params]
+ * @param {Object[]} [params.breadcrumbs]
* @returns {Deferred}
*/
- _update: function () {
+ _update: function (state, params) {
// AAB: update the control panel -> this will be moved elsewhere at some point
var cpContent = _.extend({}, this.controlPanelElements);
this.updateControlPanel({
+ breadcrumbs: params && params.breadcrumbs,
cp_content: cpContent,
title: this.getTitle(),
});
diff --git a/addons/web/static/src/js/views/control_panel/control_panel_controller.js b/addons/web/static/src/js/views/control_panel/control_panel_controller.js
index 40b1c45b9c7..f6967a6fb5a 100644
--- a/addons/web/static/src/js/views/control_panel/control_panel_controller.js
+++ b/addons/web/static/src/js/views/control_panel/control_panel_controller.js
@@ -17,6 +17,7 @@ var ControlPanelController = mvc.Controller.extend({
activate_time_range: '_onActivateTimeRange',
autocompletion_filter: '_onAutoCompletionFilter',
reload: '_onReload',
+ reset: '_onReset',
},
/**
@@ -244,6 +245,15 @@ var ControlPanelController = mvc.Controller.extend({
ev.stopPropagation();
this.trigger_up('search', this.model.getQuery());
},
+ /**
+ * @private
+ * @param {OdooEvent} ev
+ */
+ _onReset: function (ev) {
+ ev.stopPropagation();
+ var state = this.model.get();
+ this.renderer.updateState(state);
+ },
});
return ControlPanelController;
diff --git a/addons/web/static/src/js/views/control_panel/search/search_bar.js b/addons/web/static/src/js/views/control_panel/search/search_bar.js
index 77d6d7fa5e9..45004fd04ef 100644
--- a/addons/web/static/src/js/views/control_panel/search/search_bar.js
+++ b/addons/web/static/src/js/views/control_panel/search/search_bar.js
@@ -184,10 +184,16 @@ var SearchBar = Widget.extend({
*/
_onAutoCompleteSelected: function (e, ui) {
e.preventDefault();
- var filter = ui.item.facet.filter;
+ var facet = ui.item.facet;
+ if (!facet) {
+ // this happens when selecting "(no result)" item
+ this.trigger_up('reset');
+ return;
+ }
+ var filter = facet.filter;
if (filter.type === 'field') {
var values = filter.autoCompleteValues;
- values.push(ui.item.facet.values[0]);
+ values.push(facet.values[0]);
this.trigger_up('autocompletion_filter', {
filterId: filter.id,
autoCompleteValues: values,
diff --git a/addons/web/static/src/js/views/kanban/kanban_record.js b/addons/web/static/src/js/views/kanban/kanban_record.js
index 3dc1d6788bf..48f1aacf4ad 100644
--- a/addons/web/static/src/js/views/kanban/kanban_record.js
+++ b/addons/web/static/src/js/views/kanban/kanban_record.js
@@ -300,6 +300,7 @@ var KanbanRecord = Widget.extend({
// field's widgets point of view
// that dict being shared between records, we don't modify it
// in place
+ var self = this;
var attrs = Object.create(null);
_.each(this.fieldsInfo[field_name], function (value, key) {
if (_.str.startsWith(key, 't-att-')) {
@@ -310,11 +311,12 @@ var KanbanRecord = Widget.extend({
});
var options = _.extend({}, this.options, {attrs: attrs});
var widget = new Widget(this, field_name, this.state, options);
- var def = widget.replace($field);
+ var def = widget.replace($field).then(function () {
+ self._setFieldDisplay(widget.$el, field_name);
+ });
if (def.state() === 'pending') {
this.defs.push(def);
}
- this._setFieldDisplay(widget.$el, field_name);
return widget;
},
_processWidgets: function () {
@@ -324,12 +326,13 @@ var KanbanRecord = Widget.extend({
var Widget = widgetRegistry.get($field.attr('name'));
var widget = new Widget(self, self.state);
- var def = widget._widgetRenderAndInsert(function () {});
+ var def = widget._widgetRenderAndInsert(function () {}).then(function () {
+ widget.$el.addClass('o_widget');
+ $field.replaceWith(widget.$el);
+ });
if (def.state() === 'pending') {
self.defs.push(def);
}
- widget.$el.addClass('o_widget');
- $field.replaceWith(widget.$el);
});
},
/**
diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js
index 252b4587af6..347de352503 100644
--- a/addons/web/static/src/js/views/kanban/kanban_renderer.js
+++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js
@@ -249,7 +249,6 @@ var KanbanRenderer = BasicRenderer.extend({
*/
updateState: function (state) {
this._setState(state);
- this._toggleNoContentHelper();
return this._super.apply(this, arguments);
},
@@ -398,11 +397,8 @@ var KanbanRenderer = BasicRenderer.extend({
var self = this;
var oldWidgets = this.widgets;
this.widgets = [];
- this.$el.empty();
var isGrouped = !!this.state.groupedBy.length;
- this.$el.toggleClass('o_kanban_grouped', isGrouped);
- this.$el.toggleClass('o_kanban_ungrouped', !isGrouped);
var fragment = document.createDocumentFragment();
// render the kanban view
this.defs = [];
@@ -411,15 +407,19 @@ var KanbanRenderer = BasicRenderer.extend({
} else {
this._renderUngrouped(fragment);
}
- this.$el.append(fragment);
- this._toggleNoContentHelper();
var defs = this.defs;
- return this._super.apply(this, arguments).then(function () {
+ delete this.defs;
+ defs.push(this._super.apply(this, arguments));
+ return $.when.apply($, defs).then(function () {
_.invoke(oldWidgets, 'destroy');
+ self.$el.empty();
+ self.$el.toggleClass('o_kanban_grouped', isGrouped);
+ self.$el.toggleClass('o_kanban_ungrouped', !isGrouped);
+ self.$el.append(fragment);
+ self._toggleNoContentHelper();
if (self._isInDom) {
_.invoke(self.widgets, 'on_attach_callback');
}
- return $.when.apply(null, defs);
});
},
/**
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 ab5e5036dfa..185a385a812 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
@@ -278,6 +278,8 @@ ListRenderer.include({
this.currentRow = null;
}
+ // destroy widgets first
+ this._destroyFieldWidgets(recordID);
// remove the row
var $row = this.$('.o_data_row:nth(' + rowIndex + ')');
if (this.state.count >= 4) {
@@ -285,8 +287,6 @@ ListRenderer.include({
} else {
$row.replaceWith(this._renderEmptyRow());
}
-
- this._destroyFieldWidgets(recordID);
},
/**
* Updates the already rendered row associated to the given recordID so that
diff --git a/addons/web/static/src/js/views/pivot/pivot_model.js b/addons/web/static/src/js/views/pivot/pivot_model.js
index 3f195c1ea24..88d0aee83b8 100644
--- a/addons/web/static/src/js/views/pivot/pivot_model.js
+++ b/addons/web/static/src/js/views/pivot/pivot_model.js
@@ -993,7 +993,6 @@ var PivotModel = AbstractModel.extend({
var groupBys;
var m;
-
for (var i = 0; i < rowGroupBys.length + 1; i++) {
for (var j = 0; j < colGroupBys.length + 1; j++) {
for (var k = 0; k < data[index].length; k++) {