summaryrefslogtreecommitdiff
path: root/addons/base/static/src
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-04-05 10:57:50 +0200
committerFabien Meghazi <fme@openerp.com>2011-04-05 10:57:50 +0200
commit5af48556d4fa2031d56d32c1c00a30a108ed4544 (patch)
treecb0a366f5146f8970cc2ebd8d89a9aeeb0e155ef /addons/base/static/src
parente178b5777895253a0201489ff1973e92d11b233f (diff)
[IMP] Improved form pager
bzr revid: fme@openerp.com-20110405085750-vhlzm4wesg8l03w3
Diffstat (limited to 'addons/base/static/src')
-rw-r--r--addons/base/static/src/css/base.css3
-rw-r--r--addons/base/static/src/js/form.js39
-rw-r--r--addons/base/static/src/xml/base.xml14
3 files changed, 37 insertions, 19 deletions
diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css
index a734dd92e71..eba3935d90a 100644
--- a/addons/base/static/src/css/base.css
+++ b/addons/base/static/src/css/base.css
@@ -405,6 +405,9 @@ body.openerp {
.openerp .required.error {
border: 1px solid #900;
}
+.openerp .oe_form_pager {
+ text-align: right;
+}
/* Inputs */
.openerp input[type="text"], .openerp input[type="password"], .openerp select, .openerp textarea {
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 4d4f2d78063..a68538c0981 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -41,17 +41,10 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base
_.each(this.widgets, function(w) {
w.start();
});
- this.$element.find('button.pager_previous').click(this.on_previous);
- this.$element.find('button.pager_next').click(this.on_next);
- this.$element.find('button.form_save').click(this.do_save);
- },
- on_previous: function() {
- this.dataset.previous();
- this.dataset.fetch_index(this.fields_view.fields, this.on_record_loaded);
- },
- on_next: function() {
- this.dataset.next();
- this.dataset.fetch_index(this.fields_view.fields, this.on_record_loaded);
+ this.$element.find('div.oe_form_pager button[data-pager-action]').click(function() {
+ var action = $(this).data('pager-action');
+ self.on_pager_action(action);
+ });
},
on_record_loaded: function(record) {
if (record.length) {
@@ -108,8 +101,28 @@ openerp.base.FormView = openerp.base.Controller.extend( /** @lends openerp.base
this.$element.hide();
},
do_update_pager: function() {
- this.$element.find('span.dataset_index').html(this.dataset.index + 1);
- this.$element.find('span.dataset_count').html(this.dataset.count);
+ var $pager = this.$element.find('div.oe_form_pager');
+ $pager.find("button[data-pager-action='first'], button[data-pager-action='previous']").attr('disabled', this.dataset.index == 0);
+ $pager.find("button[data-pager-action='next'], button[data-pager-action='last']").attr('disabled', this.dataset.index == this.dataset.ids.length - 1);
+ this.$element.find('span.oe_pager_index').html(this.dataset.index + 1);
+ this.$element.find('span.oe_pager_count').html(this.dataset.count);
+ },
+ on_pager_action: function(action) {
+ switch (action) {
+ case 'first':
+ this.dataset.index = 0;
+ break;
+ case 'previous':
+ this.dataset.previous();
+ break;
+ case 'next':
+ this.dataset.next();
+ break;
+ case 'last':
+ this.dataset.index = this.dataset.ids.length - 1;
+ break;
+ }
+ this.dataset.fetch_index(this.fields_view.fields, this.on_record_loaded);
},
on_invalid: function() {
},
diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml
index 7411c7fd75e..dadb3218780 100644
--- a/addons/base/static/src/xml/base.xml
+++ b/addons/base/static/src/xml/base.xml
@@ -146,12 +146,14 @@
</t>
<t t-name="FormView">
<h2 class="oe_view_title"><t t-esc="view.fields_view.arch.attrs.string"/></h2>
- <div style="text-align:right;">
- <input type="button" value="First"/>
- <button type="button" class="pager_previous">&lt;&lt;</button>
- <span class="dataset_index">0</span> / <span class="dataset_count">0</span>
- <button type="button" class="pager_next">&gt;&gt;</button>
- <input type="button" value="Last"/>
+ <div class="oe_form_pager">
+ <button type="button" data-pager-action="first">First</button>
+ <button type="button" data-pager-action="previous">&lt;&lt;</button>
+
+ <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span>
+
+ <button type="button" data-pager-action="next">&gt;&gt;</button>
+ <button type="button" data-pager-action="last">Last</button>
</div>
<t t-raw="frame.render()"/>
<div style="text-align:right;">