diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-08-21 16:58:17 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-08-21 16:58:17 +0200 |
| commit | 70d0148d0da1ccf3727310d8e7c53e2c518a8d6a (patch) | |
| tree | 00c4884eca26b424989619b778d6ce9216e9493b /addons/web/static/src | |
| parent | c8762eaa03cc9dda4c7318251726af1b83a2c10f (diff) | |
| parent | fbfb91799eecc5297ab6c86b657bf213343f6cd8 (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.js | 24 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list/list_renderer.js | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list/list_view.js | 3 |
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'; |
