diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 57ab2379e5c..0dbd3c14cec 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -106,9 +106,12 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
__domain: group.__domain,
grouped_on: field_name,
- length: group[field_name + '_count'],
+ // if terminal group and group_by_no_leaf => use group.__count
+ length: group[field_name + '_count'] || group.__count,
value: group[field_name],
+ has_leaves: _.isUndefined(group.__count),
+
aggregates: aggregates
};
},
diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js
index ff20cde7b7e..2dd7daec45b 100644
--- a/addons/base/static/src/js/list.js
+++ b/addons/base/static/src/js/list.js
@@ -253,10 +253,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
* sequence
*/
do_reload: function (primary_columns) {
- // TODO: need to do 5 billion tons of pre-processing, bypass
- // DataSet for now
- //self.dataset.read_slice(self.dataset.fields, 0, self.limit,
- // self.do_fill_table);
+ // TODO: should just fields_view_get I think
var self = this;
this.dataset.offset = 0;
this.dataset.limit = false;
@@ -554,18 +551,21 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr
var self = this;
var placeholder = this.make_fragment();
_(datagroups).each(function (group) {
- var $row = $('
').click(function (e) {
- if (!$row.data('open')) {
- $row.data('open', true);
- self.open_group(e, group);
- } else {
- $row.removeData('open')
- .find('span.ui-icon')
- .removeClass('ui-icon-triangle-1-s')
- .addClass('ui-icon-triangle-1-e');
- _(self.children).each(function (child) {child.apoptosis();});
- }
- });
+ var $row = $('
');
+ if (group.has_leaves) {
+ $row.click(function (e) {
+ if (!$row.data('open')) {
+ $row.data('open', true);
+ self.open_group(e, group);
+ } else {
+ $row.removeData('open')
+ .find('span.ui-icon')
+ .removeClass('ui-icon-triangle-1-s')
+ .addClass('ui-icon-triangle-1-e');
+ _(self.children).each(function (child) {child.apoptosis();});
+ }
+ });
+ }
placeholder.appendChild($row[0]);
self.pad($row);
@@ -573,12 +573,17 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr
.filter(function (column) {return !column.invisible;})
.each(function (column) {
if (column.id === '_group') {
- self.indent($('')
- .text((group.value instanceof Array ? group.value[1] : group.value))
- .prepend('')
- .appendTo($row), group.level);
+ var $group_column = $(' | ')
+ .text((group.value instanceof Array ? group.value[1] : group.value))
+ .appendTo($row);
+ if (group.has_leaves) {
+ $group_column
+ .prepend('');
+ }
+ self.indent($group_column, group.level);
} else if (column.id === '_count') {
- $(' | ').text(group.length).appendTo($row);
+ $(' | ').text(group.has_leaves ? group.length : '')
+ .appendTo($row);
} else if (column.id in group.aggregates) {
var value = group.aggregates[column.id];
var format;
|