[ADD] list-level pagination on list views
bzr revid: xmo@openerp.com-20110623124641-kzvkmx7fxe0xwn6w
This commit is contained in:
parent
d530b966c9
commit
52a6119cb4
|
@ -167,8 +167,54 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
self.reload_view();
|
||||
});
|
||||
|
||||
this.$element.find('.oe-list-pager')
|
||||
.delegate('button', 'click', function () {
|
||||
var $this = $(this);
|
||||
switch ($this.data('pager-action')) {
|
||||
case 'first':
|
||||
self.page = 0; break;
|
||||
case 'last':
|
||||
self.page = Math.floor(
|
||||
self.dataset.ids.length / self.limit());
|
||||
break;
|
||||
case 'next':
|
||||
self.page += 1; break;
|
||||
case 'previous':
|
||||
self.page -= 1; break;
|
||||
}
|
||||
self.reload_content();
|
||||
}).find('.oe-pager-state')
|
||||
.click(function (e) {
|
||||
e.stopPropagation();
|
||||
// TODO: pagination setup thingie
|
||||
});
|
||||
|
||||
this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
|
||||
},
|
||||
/**
|
||||
* Configures the ListView pager based on the provided dataset's information
|
||||
*
|
||||
* Horrifying side-effect: sets the dataset's data on this.dataset?
|
||||
*
|
||||
* @param {openerp.base.DataSet} dataset
|
||||
*/
|
||||
configure_pager: function (dataset) {
|
||||
this.dataset.ids = dataset.ids;
|
||||
|
||||
var limit = this.limit(),
|
||||
total = dataset.ids.length,
|
||||
first = (this.page * limit),
|
||||
last = ((total - first) < limit) ? total : first + limit;
|
||||
this.$element.find('span.oe-pager-state').text(_.sprintf(
|
||||
"[%d to %d] of %d", first + 1, last, total));
|
||||
|
||||
this.$element
|
||||
.find('button[data-pager-action=first], button[data-pager-action=previous]')
|
||||
.attr('disabled', this.page === 0)
|
||||
.end()
|
||||
.find('button[data-pager-action=last], button[data-pager-action=next]')
|
||||
.attr('disabled', last === total);
|
||||
},
|
||||
/**
|
||||
* Sets up the listview's columns: merges view and fields data, move
|
||||
* grouped-by columns to the front of the columns list and make them all
|
||||
|
@ -282,10 +328,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
*/
|
||||
reload_view: function (grouped) {
|
||||
var self = this;
|
||||
this.dataset.offset = 0;
|
||||
this.dataset.limit = false;
|
||||
var callback = function (field_view_get) {
|
||||
self.on_loaded(field_view_get, grouped);
|
||||
self.on_loaded(field_view_get, grouped);
|
||||
};
|
||||
if (this.embedded_view) {
|
||||
return $.Deferred().then(callback).resolve({fields_view: this.embedded_view});
|
||||
|
@ -882,12 +926,15 @@ openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Gr
|
|||
});
|
||||
this.bind_child_events(list);
|
||||
|
||||
var limit = this.view.limit(),
|
||||
d = new $.Deferred();
|
||||
var view = this.view,
|
||||
limit = view.limit(),
|
||||
d = new $.Deferred();
|
||||
dataset.read_slice(
|
||||
_.filter(_.pluck(this.columns, 'name'), _.identity),
|
||||
this.view.page * limit, limit,
|
||||
view.page * limit, limit,
|
||||
function (records) {
|
||||
view.configure_pager(dataset);
|
||||
|
||||
var form_records = _(records).map(
|
||||
$.proxy(list, 'transform_record'));
|
||||
|
||||
|
|
|
@ -268,16 +268,19 @@
|
|||
<th t-att-colspan="columns_count - actions_span"
|
||||
class="oe-list-pager">
|
||||
<t t-if="flags.pager !== false">
|
||||
<button type="button" data-pager-action="first">First</button>
|
||||
<button type="button" data-pager-action="previous"
|
||||
<button type="button" disabled="disabled"
|
||||
data-pager-action="first">First</button>
|
||||
<button type="button" disabled="disabled"
|
||||
data-pager-action="previous"
|
||||
><<</button>
|
||||
|
||||
<span class="oe-pager-first">1</span>
|
||||
to <span class="oe-pager-last">1</span>
|
||||
of <span class="oe-pager-total">1</span>
|
||||
<span class="oe-pager-state">
|
||||
</span>
|
||||
|
||||
<button type="button" data-pager-action="next">>></button>
|
||||
<button type="button" data-pager-action="last">Last</button>
|
||||
<button type="button" disabled="disabled"
|
||||
data-pager-action="next">>></button>
|
||||
<button type="button" disabled="disabled"
|
||||
data-pager-action="last">Last</button>
|
||||
</t>
|
||||
</th>
|
||||
</tr>
|
||||
|
|
Loading…
Reference in New Issue