summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-08-21 16:58:17 +0200
committerChristophe Simonis <chs@odoo.com>2018-08-21 16:58:17 +0200
commit70d0148d0da1ccf3727310d8e7c53e2c518a8d6a (patch)
tree00c4884eca26b424989619b778d6ce9216e9493b /addons/web/static/src
parentc8762eaa03cc9dda4c7318251726af1b83a2c10f (diff)
parentfbfb91799eecc5297ab6c86b657bf213343f6cd8 (diff)
[MERGE] forward port branch 11.0 up to fbfb91799ee
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js24
-rw-r--r--addons/web/static/src/js/views/list/list_renderer.js6
-rw-r--r--addons/web/static/src/js/views/list/list_view.js3
3 files changed, 28 insertions, 5 deletions
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 3262196fa51..4629e57eb7f 100644
--- a/addons/web/static/src/js/views/list/list_controller.js
+++ b/addons/web/static/src/js/views/list/list_controller.js
@@ -42,7 +42,7 @@ var ListController = BasicController.extend({
this.toolbarActions = params.toolbarActions || {};
this.editable = params.editable;
this.noLeaf = params.noLeaf;
- this.selectedRecords = []; // there is no selected record by default
+ this.selectedRecords = params.selectedRecords || [];
},
//--------------------------------------------------------------------------
@@ -171,6 +171,25 @@ var ListController = BasicController.extend({
this._toggleSidebar();
}
},
+ /**
+ * Overrides to update the list of selected records
+ *
+ * @override
+ */
+ update: function (params, options) {
+ var self = this;
+ if (options && options.keepSelection) {
+ // filter out removed records from selection
+ var res_ids = this.model.get(this.handle).res_ids;
+ this.selectedRecords = _.filter(this.selectedRecords, function (id) {
+ return _.contains(res_ids, self.model.get(id).res_id);
+ });
+ } else {
+ this.selectedRecords = [];
+ }
+ params.selectedRecords = this.selectedRecords;
+ return this._super.apply(this, arguments);
+ },
//--------------------------------------------------------------------------
// Private
@@ -333,7 +352,6 @@ var ListController = BasicController.extend({
* @returns {Deferred}
*/
_update: function () {
- this.selectedRecords = [];
this._toggleSidebar();
return this._super.apply(this, arguments);
},
@@ -538,7 +556,7 @@ var ListController = BasicController.extend({
_onToggleGroup: function (event) {
this.model
.toggleGroup(event.data.group.id)
- .then(this.update.bind(this, {}, {reload: false}));
+ .then(this.update.bind(this, {}, {keepSelection: true, reload: false}));
},
});
diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js
index 31919962d56..a72cd7008eb 100644
--- a/addons/web/static/src/js/views/list/list_renderer.js
+++ b/addons/web/static/src/js/views/list/list_renderer.js
@@ -60,7 +60,7 @@ var ListRenderer = BasicRenderer.extend({
return py.parse(py.tokenize(value));
}).value();
this.hasSelectors = params.hasSelectors;
- this.selection = [];
+ this.selection = params.selectedRecords || [];
this.pagers = []; // instantiated pagers (only for grouped lists)
this.editable = params.editable;
},
@@ -81,7 +81,9 @@ var ListRenderer = BasicRenderer.extend({
*/
updateState: function (state, params) {
this._processColumns(params.columnInvisibleFields || {});
- this.selection = [];
+ if (params.selectedRecords) {
+ this.selection = params.selectedRecords;
+ }
return this._super.apply(this, arguments);
},
diff --git a/addons/web/static/src/js/views/list/list_view.js b/addons/web/static/src/js/views/list/list_view.js
index 3082312e770..bc80017743b 100644
--- a/addons/web/static/src/js/views/list/list_view.js
+++ b/addons/web/static/src/js/views/list/list_view.js
@@ -35,6 +35,7 @@ var ListView = BasicView.extend({
*/
init: function (viewInfo, params) {
this._super.apply(this, arguments);
+ var selectedRecords = []; // there is no selected records by default
var mode = this.arch.attrs.editable && !params.readonly ? "edit" : "readonly";
@@ -43,11 +44,13 @@ var ListView = BasicView.extend({
this.controllerParams.toolbarActions = viewInfo.toolbar;
this.controllerParams.noLeaf = !!this.loadParams.context.group_by_no_leaf;
this.controllerParams.mode = mode;
+ this.controllerParams.selectedRecords = selectedRecords;
this.rendererParams.arch = this.arch;
this.rendererParams.hasSelectors =
'hasSelectors' in params ? params.hasSelectors : true;
this.rendererParams.editable = params.readonly ? false : this.arch.attrs.editable;
+ this.rendererParams.selectedRecords = selectedRecords;
this.loadParams.limit = this.loadParams.limit || 80;
this.loadParams.type = 'list';