summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-06-24 15:07:13 +0200
committerXavier Morel <xmo@openerp.com>2011-06-24 15:07:13 +0200
commitb309810e144defe8fc8e0e4f2425644e919207aa (patch)
tree6204ad4933b890ce1106a5cd119f24643894ff4e /addons/base/static/src
parentd567ba23adf298898161a2b7e2bbed5a91030202 (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.js45
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">&lt;</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">&gt;</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">&lt;</button>')
+ .append($prev)
.append('<span class="oe-pager-state"></span>')
- .append('<button type="button" data-pager-action="next">&gt;</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(