diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-05-24 15:27:29 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-05-24 15:27:29 +0200 |
| commit | 7e7034436c8fa041953ccee5d0efe690c2d6ce16 (patch) | |
| tree | d8e36e418ddf38fb162c1bbd536e1e54323e6420 /addons/base/static/src/js/data.js | |
| parent | 21e2edea6388589955f3080db10eadc88ed47a08 (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.js | 20 |
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 }; |
