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;
},
+ make_paginator: function () {
+ var self = this;
+ var $prev = $('')
+ .click(function (e) {
+ e.stopPropagation();
+ self.page -= 1;
+
+ self.$row.closest('tbody').next()
+ .replaceWith(self.render());
+ });
+ var $next = $('')
+ .click(function (e) {
+ e.stopPropagation();
+ self.page += 1;
+
+ self.$row.closest('tbody').next()
+ .replaceWith(self.render());
+ });
+ this.$row.children().last()
+ .append($prev)
+ .append('')
+ .append($next);
+ },
open: function (point_insertion) {
this.render().insertAfter(point_insertion);
- this.$row.children().last()
- .append('')
- .append('')
- .append('');
+ 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(