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