summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js/data.js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-05-24 15:27:29 +0200
committerXavier Morel <xmo@openerp.com>2011-05-24 15:27:29 +0200
commit7e7034436c8fa041953ccee5d0efe690c2d6ce16 (patch)
treed8e36e418ddf38fb162c1bbd536e1e54323e6420 /addons/base/static/src/js/data.js
parent21e2edea6388589955f3080db10eadc88ed47a08 (diff)
[FIX] handling of group_by_no_leaf in case where there is no group_by field
bzr revid: xmo@openerp.com-20110524132729-6890kfrusn3w3fo0
Diffstat (limited to 'addons/base/static/src/js/data.js')
-rw-r--r--addons/base/static/src/js/data.js20
1 files changed, 13 insertions, 7 deletions
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 87c68f7304c..1d2fab9b9bc 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -26,7 +26,7 @@ openerp.base.DataGroup = openerp.base.Controller.extend( /** @lends openerp.bas
*/
init: function(session, model, domain, context, group_by, level) {
if (group_by) {
- if (group_by.length) {
+ if (group_by.length || context['group_by_no_leaf']) {
return new openerp.base.ContainerDataGroup(
session, model, domain, context, group_by, level);
} else {
@@ -90,9 +90,15 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
*/
transform_group: function (group) {
var field_name = this.group_by[0];
+ // In cases where group_by_no_leaf and no group_by, the result of
+ // read_group has aggregate fields but no __context or __domain.
+ // Create default (empty) values for those so that things don't break
+ var fixed_group = _.extend(
+ {__context: {group_by: []}, __domain: []},
+ group);
var aggregates = {};
- _(group).each(function (value, key) {
+ _(fixed_group).each(function (value, key) {
if (key.indexOf('__') === 0
|| key === field_name
|| key === field_name + '_count') {
@@ -102,16 +108,16 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
});
return {
- __context: group.__context,
- __domain: group.__domain,
+ __context: fixed_group.__context,
+ __domain: fixed_group.__domain,
grouped_on: field_name,
// if terminal group (or no group) and group_by_no_leaf => use group.__count
- length: group[field_name + '_count'] || group.__count,
- value: group[field_name],
+ length: fixed_group[field_name + '_count'] || fixed_group.__count,
+ value: fixed_group[field_name],
openable: !(this.context['group_by_no_leaf']
- && group.__context.group_by.length === 0),
+ && fixed_group.__context.group_by.length === 0),
aggregates: aggregates
};