diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-05-24 11:11:25 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-05-24 11:11:25 +0200 |
| commit | 7758f281eda0dec93932e7aaa7414e2dafa9c2dd (patch) | |
| tree | 226fe09c1917d0da5c4560158340c6cf9def9edf /addons/base/static/src/js | |
| parent | 8a50dd16096e4ca5ee7432b5b83f7611697cff5c (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.js | 5 | ||||
| -rw-r--r-- | addons/base/static/src/js/list.js | 47 |
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; |
