summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-05-24 11:11:25 +0200
committerXavier Morel <xmo@openerp.com>2011-05-24 11:11:25 +0200
commit7758f281eda0dec93932e7aaa7414e2dafa9c2dd (patch)
tree226fe09c1917d0da5c4560158340c6cf9def9edf /addons/base/static/src/js
parent8a50dd16096e4ca5ee7432b5b83f7611697cff5c (diff)
[ADD] handling of group_by_no_leaf
bzr revid: xmo@openerp.com-20110524091125-ltohsi2zy6nbmi3p
Diffstat (limited to 'addons/base/static/src/js')
-rw-r--r--addons/base/static/src/js/data.js5
-rw-r--r--addons/base/static/src/js/list.js47
2 files changed, 30 insertions, 22 deletions
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 = $('<tr>').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 = $('<tr>');
+ 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($('<th>')
- .text((group.value instanceof Array ? group.value[1] : group.value))
- .prepend('<span class="ui-icon ui-icon-triangle-1-e">')
- .appendTo($row), group.level);
+ var $group_column = $('<th>')
+ .text((group.value instanceof Array ? group.value[1] : group.value))
+ .appendTo($row);
+ if (group.has_leaves) {
+ $group_column
+ .prepend('<span class="ui-icon ui-icon-triangle-1-e">');
+ }
+ self.indent($group_column, group.level);
} else if (column.id === '_count') {
- $('<td>').text(group.length).appendTo($row);
+ $('<td>').text(group.has_leaves ? group.length : '')
+ .appendTo($row);
} else if (column.id in group.aggregates) {
var value = group.aggregates[column.id];
var format;