summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_model.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-03-15 15:40:21 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commit378d6813ff03a428537b98bb7232c09ef4d957d5 (patch)
tree10a0ce7aae19978b08d86efba8608b134f8499f8 /addons/web/static/src/js/views/basic/basic_model.js
parente21c73305f76b2abae7656d0660d5f55eba9373a (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.js11
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 () {