summaryrefslogtreecommitdiff
path: root/addons/base/static/src
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
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')
-rw-r--r--addons/base/static/src/js/data.js20
-rw-r--r--addons/base/static/src/js/list.js21
2 files changed, 27 insertions, 14 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
};
diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js
index ccb64affe55..9b480aae283 100644
--- a/addons/base/static/src/js/list.js
+++ b/addons/base/static/src/js/list.js
@@ -168,7 +168,6 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
* @param {Array} groupby_columns columns the ListView is grouped by
*/
setup_columns: function (fields, groupby_columns) {
- var self = this;
var domain_computer = openerp.base.form.compute_domain;
var noop = function () { return {}; };
@@ -196,7 +195,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
this.columns.push.apply(
this.columns,
_(this.fields_view.arch.children).map(field_to_column));
- if (groupby_columns && groupby_columns.length) {
+ if (groupby_columns) {
this.columns.unshift({
id: '_group', tag: '', string: "Group", meta: true,
attrs_for: function () { return {}; }
@@ -291,6 +290,10 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
self.session, self.dataset.model,
results.domain, results.context,
results.group_by);
+
+ if (_.isEmpty(results.group_by) && !results.context['group_by_no_leaf']) {
+ results.group_by = null;
+ }
self.do_reload(results.group_by).then(function () {
self.$element.find('table').append(self.groups.render());
});
@@ -569,12 +572,16 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr
placeholder.appendChild($row[0]);
- var $group_column = $('<th>')
- .text((group.value instanceof Array ? group.value[1] : group.value))
- .appendTo($row);
- if (group.openable) {
+ var $group_column = $('<th>').appendTo($row);
+ if (group.grouped_on) {
+ // Don't fill this if group_by_no_leaf but no group_by
$group_column
- .prepend('<span class="ui-icon ui-icon-triangle-1-e">');
+ .text((group.value instanceof Array ? group.value[1] : group.value));
+ if (group.openable) {
+ // Make openable if not terminal group & group_by_no_leaf
+ $group_column
+ .prepend('<span class="ui-icon ui-icon-triangle-1-e">');
+ }
}
self.indent($group_column, group.level);
// count column