diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-06-24 15:07:13 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-06-24 15:07:13 +0200 |
| commit | b309810e144defe8fc8e0e4f2425644e919207aa (patch) | |
| tree | 6204ad4933b890ce1106a5cd119f24643894ff4e /addons/base/static/src | |
| parent | d567ba23adf298898161a2b7e2bbed5a91030202 (diff) | |
[IMP] make paginator work correctly on groups
bzr revid: xmo@openerp.com-20110624130713-65wt8r7cmzo4wdor
Diffstat (limited to 'addons/base/static/src')
| -rw-r--r-- | addons/base/static/src/js/list.js | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 0d3096a7dcd..77c4238d507 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -789,6 +789,8 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr this.$row = null; this.children = {}; + + this.page = 0; }, make_fragment: function () { return document.createDocumentFragment(); @@ -820,12 +822,32 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr } return red_letter_tboday; }, - open: function (point_insertion) { - this.render().insertAfter(point_insertion); + make_paginator: function () { + var self = this; + var $prev = $('<button type="button" data-pager-action="previous"><</button>') + .click(function (e) { + e.stopPropagation(); + self.page -= 1; + + self.$row.closest('tbody').next() + .replaceWith(self.render()); + }); + var $next = $('<button type="button" data-pager-action="next">></button>') + .click(function (e) { + e.stopPropagation(); + self.page += 1; + + self.$row.closest('tbody').next() + .replaceWith(self.render()); + }); this.$row.children().last() - .append('<button type="button" data-pager-action="previous"><</button>') + .append($prev) .append('<span class="oe-pager-state"></span>') - .append('<button type="button" data-pager-action="next">></button>'); + .append($next); + }, + open: function (point_insertion) { + this.render().insertAfter(point_insertion); + this.make_paginator(); }, close: function () { this.$row.children().last().empty(); @@ -955,25 +977,26 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr var view = this.view, limit = view.limit(), - d = new $.Deferred(); + d = new $.Deferred(), + page = this.datagroup.openable ? this.page : view.page; + dataset.read_slice( _.filter(_.pluck(this.columns, 'name'), _.identity), - view.page * limit, limit, + page * limit, limit, function (records) { if (!self.datagroup.openable) { view.configure_pager(dataset); } else { - var page = 1, - pages = Math.ceil(dataset.ids.length / limit); + var pages = Math.ceil(dataset.ids.length / limit); self.$row .find('.oe-pager-state') - .text(_.sprintf('%d/%d', page, pages)) + .text(_.sprintf('%d/%d', page + 1, pages)) .end() .find('button[data-pager-action=previous]') - .attr('disabled', page === 1) + .attr('disabled', page === 0) .end() .find('button[data-pager-action=next]') - .attr('disabled', page === pages); + .attr('disabled', page === pages - 1); } var form_records = _(records).map( |
