[FIX] list view pager
bzr revid: xmo@openerp.com-20120410112656-nced0rr1j4zf9lvy
This commit is contained in:
parent
77944d57e7
commit
95db288939
|
@ -77,7 +77,6 @@ openerp.web.FormView = openerp.web.View.extend({
|
|||
this.rendering_engine.render_to($dest);
|
||||
|
||||
this.$sidebar = this.options.$sidebar || this.$element.find('.oe_form_sidebar');
|
||||
this.$pager = this.options.$pager || this.$element.find('.oe_form_pager');
|
||||
|
||||
var buttons_html = QWeb.render("FormView.buttons", {'widget':self});
|
||||
this.$buttons = $(_.str.isBlank(buttons_html) ? '<div>' : buttons_html);
|
||||
|
@ -94,8 +93,14 @@ openerp.web.FormView = openerp.web.View.extend({
|
|||
.on('click','button.oe_form_button_duplicate',this.on_button_duplicate)
|
||||
.on('click','button.oe_form_button_delete',this.on_button_delete);
|
||||
|
||||
this.$pager.html(QWeb.render("FormView.pager", {'widget':self}));
|
||||
this.$pager.on('click','.oe_form_pager a[data-pager-action]',function(event) {
|
||||
var pager_html = QWeb.render("FormView.pager", {'widget':self});
|
||||
this.$pager = $(_.str.isBlank(pager_html) ? '<div>' : pager_html);
|
||||
if (this.options.$pager) {
|
||||
this.$buttons.appendTo(this.options.$pager);
|
||||
} else {
|
||||
this.$element.find('.oe_form_pager').replaceWith(this.$buttons);
|
||||
}
|
||||
this.$pager.on('click','a[data-pager-action]',function() {
|
||||
var action = $(this).data('pager-action');
|
||||
self.on_pager_action(action);
|
||||
});
|
||||
|
@ -139,7 +144,7 @@ openerp.web.FormView = openerp.web.View.extend({
|
|||
this.$buttons.find('.oe_form_button_save').removeClass('oe_form_button_save_dirty');
|
||||
}
|
||||
if (this.$pager) {
|
||||
this.$pager.find('.oe_form_pager').show();
|
||||
this.$pager.show();
|
||||
}
|
||||
this.$element.show().css('visibility', 'hidden');
|
||||
this.$element.removeClass('oe_form_dirty');
|
||||
|
@ -167,7 +172,7 @@ openerp.web.FormView = openerp.web.View.extend({
|
|||
this.$buttons.hide();
|
||||
}
|
||||
if (this.$pager) {
|
||||
this.$pager.find('.oe_form_pager').hide();
|
||||
this.$pager.hide();
|
||||
}
|
||||
this._super();
|
||||
},
|
||||
|
@ -248,11 +253,10 @@ openerp.web.FormView = openerp.web.View.extend({
|
|||
}
|
||||
},
|
||||
do_update_pager: function(hide_index) {
|
||||
var $pager = this.$pager.find('div.oe_form_pager');
|
||||
var index = hide_index ? '-' : this.dataset.index + 1;
|
||||
$pager.find('button').prop('disabled', this.dataset.ids.length < 2);
|
||||
$pager.find('span.oe_pager_index').html(index);
|
||||
$pager.find('span.oe_pager_count').html(this.dataset.ids.length);
|
||||
this.$pager.find('button').prop('disabled', this.dataset.ids.length < 2).end()
|
||||
.find('span.oe_pager_index').html(index).end()
|
||||
.find('span.oe_pager_count').html(this.dataset.ids.length);
|
||||
},
|
||||
parse_on_change: function (on_change, widget) {
|
||||
var self = this;
|
||||
|
|
|
@ -236,8 +236,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
|||
if (this.options.$buttons) {
|
||||
this.$buttons.appendTo(this.options.$buttons);
|
||||
} else {
|
||||
this.$element.find('.oe_list_buttons').replaceWith(
|
||||
this.options.$buttons);
|
||||
this.$element.find('.oe_list_buttons').replaceWith(this.$buttons);
|
||||
}
|
||||
this.$buttons.find('.oe_list_add')
|
||||
.click(this.proxy('do_add_record'))
|
||||
|
@ -249,45 +248,57 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
|||
}
|
||||
|
||||
// Pager
|
||||
this.$pager = this.options.$pager || this.$element.find('.oe_list_pager');
|
||||
this.$pager.html(QWeb.render("FormView.pager", {'widget':self}));
|
||||
this.$pager.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.size() / 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();
|
||||
var $this = $(this);
|
||||
if (!this.$pager) {
|
||||
this.$pager = $(QWeb.render("ListView.pager", {'widget':self}));
|
||||
if (this.options.$buttons) {
|
||||
this.$pager.appendTo(this.options.$pager);
|
||||
} else {
|
||||
this.$element.find('.oe_list_pager').replaceWith(this.$pager);
|
||||
}
|
||||
|
||||
var $select = $('<select>')
|
||||
.appendTo($this.empty())
|
||||
.click(function (e) {e.stopPropagation();})
|
||||
.append('<option value="80">80</option>' +
|
||||
'<option value="100">100</option>' +
|
||||
'<option value="200">200</option>' +
|
||||
'<option value="500">500</option>' +
|
||||
'<option value="NaN">' + _t("Unlimited") + '</option>')
|
||||
.change(function () {
|
||||
var val = parseInt($select.val(), 10);
|
||||
self._limit = (isNaN(val) ? null : val);
|
||||
self.page = 0;
|
||||
self.reload_content();
|
||||
})
|
||||
.val(self._limit || 'NaN');
|
||||
});
|
||||
this.$pager
|
||||
.on('click', 'a[data-pager-action]', function () {
|
||||
var $this = $(this);
|
||||
var max_page = Math.floor(self.dataset.size() / self.limit());
|
||||
switch ($this.data('pager-action')) {
|
||||
case 'first':
|
||||
self.page = 0; break;
|
||||
case 'last':
|
||||
self.page = max_page - 1;
|
||||
break;
|
||||
case 'next':
|
||||
self.page += 1; break;
|
||||
case 'previous':
|
||||
self.page -= 1; break;
|
||||
}
|
||||
if (self.page < 0) {
|
||||
self.page = max_page;
|
||||
} else if (self.page > max_page) {
|
||||
self.page = 0;
|
||||
}
|
||||
self.reload_content();
|
||||
}).find('.oe-pager-state')
|
||||
.click(function (e) {
|
||||
e.stopPropagation();
|
||||
var $this = $(this);
|
||||
|
||||
var $select = $('<select>')
|
||||
.appendTo($this.empty())
|
||||
.click(function (e) {e.stopPropagation();})
|
||||
.append('<option value="80">80</option>' +
|
||||
'<option value="100">100</option>' +
|
||||
'<option value="200">200</option>' +
|
||||
'<option value="500">500</option>' +
|
||||
'<option value="NaN">' + _t("Unlimited") + '</option>')
|
||||
.change(function () {
|
||||
var val = parseInt($select.val(), 10);
|
||||
self._limit = (isNaN(val) ? null : val);
|
||||
self.page = 0;
|
||||
self.reload_content();
|
||||
})
|
||||
.val(self._limit || 'NaN');
|
||||
});
|
||||
}
|
||||
|
||||
// Sidebar
|
||||
if (!this.sidebar && this.options.sidebar && this.options.$sidebar) {
|
||||
|
@ -311,12 +322,10 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
|||
}
|
||||
|
||||
var page = this.page + 1,
|
||||
total = Math.floor(dataset.size() / this.limit());
|
||||
if (total === 0) { total = 1; }
|
||||
total = Math.floor(dataset.size() / this.limit()) + 1;
|
||||
|
||||
this.$pager
|
||||
.find('.oe_pager_index').text(page).end()
|
||||
.find('.oe_pager_count').text(total).end();
|
||||
this.$pager.find('.oe-pager-state').text(isNaN(total)
|
||||
? '-' : _.str.sprintf('%d / %d', page, total));
|
||||
},
|
||||
/**
|
||||
* Sets up the listview's columns: merges view and fields data, move
|
||||
|
@ -421,7 +430,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
|||
this.$buttons.show();
|
||||
}
|
||||
if (this.$pager) {
|
||||
this.$pager.find('.oe_list_pager').show();
|
||||
this.$pager.show();
|
||||
}
|
||||
},
|
||||
do_hide: function () {
|
||||
|
@ -432,7 +441,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
|
|||
this.$buttons.hide();
|
||||
}
|
||||
if (this.$pager) {
|
||||
this.$pager.find('.oe_list_pager').hide();
|
||||
this.$pager.hide();
|
||||
}
|
||||
this._super();
|
||||
},
|
||||
|
|
|
@ -610,7 +610,7 @@
|
|||
</button>
|
||||
</div>
|
||||
</t>
|
||||
<t t-name="Listview.pager">
|
||||
<t t-name="ListView.pager">
|
||||
<div t-if="!widget.no_leaf and widget.options.pager !== false" class="oe_list_pager" t-att-colspan="widget.columns_count">
|
||||
<t t-call="ViewPager">
|
||||
<span class="oe-pager-state">
|
||||
|
|
Loading…
Reference in New Issue