diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-03-15 15:40:21 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-04-11 19:44:38 +0200 |
| commit | 378d6813ff03a428537b98bb7232c09ef4d957d5 (patch) | |
| tree | 10a0ce7aae19978b08d86efba8608b134f8499f8 /addons/web/static/src/js/views/basic/basic_model.js | |
| parent | e21c73305f76b2abae7656d0660d5f55eba9373a (diff) | |
[IMP] web: list view: nested groups
Before this commit, only one level of groups was supported in list
views. This commit enables the nested groups support.
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_model.js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 6c59d242cb0..5180cc41656 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -933,7 +933,7 @@ var BasicModel = AbstractModel.extend({ group.isOpen = true; var def; if (group.count > 0) { - def = this._fetchUngroupedList(group); + def = this._load(group); } return $.when(def).then(function () { return groupId; @@ -2048,6 +2048,7 @@ var BasicModel = AbstractModel.extend({ var fields = _.uniq(list.fieldNames.concat(list.groupedBy)); return this._rpc(list.model, 'read_group') .withFields(fields) + .withDomain(list.domain) .withContext(list.context) .groupBy(list.groupedBy) .lazy(true) @@ -2071,7 +2072,7 @@ var BasicModel = AbstractModel.extend({ var newGroup = self._makeDataPoint({ modelName: list.model, count: group[rawGroupBy + '_count'], - domain: group.__domain, + domain: list.domain.concat(group.__domain), context: list.context, fields: list.fields, fieldNames: list.fieldNames, @@ -2082,7 +2083,7 @@ var BasicModel = AbstractModel.extend({ orderedBy: list.orderedBy, limit: list.limit, openGroupByDefault: list.openGroupByDefault, - type: 'list', // nested groupedBys not handled yet + type: 'list', }); list.data.push(newGroup.id); var old_group = _.find(previousGroups, function (g) { @@ -2090,13 +2091,15 @@ var BasicModel = AbstractModel.extend({ }); if (old_group) { newGroup.isOpen = old_group.isOpen; + // copy the oldGroup data to keep 'isOpen' state of sub-groups + newGroup.data = newGroup.isOpen ? old_group.data : []; } else if (!newGroup.openGroupByDefault) { newGroup.isOpen = false; } else { newGroup.isOpen = '__fold' in group ? !group.__fold : true; } if (newGroup.isOpen && newGroup.count > 0) { - defs.push(self._fetchUngroupedList(newGroup)); + defs.push(self._load(newGroup)); } }); return $.when.apply($, defs).then(function () { |
