diff options
| author | Fabien Meghazi <fme@openerp.com> | 2011-04-05 10:57:50 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2011-04-05 10:57:50 +0200 |
| commit | 5af48556d4fa2031d56d32c1c00a30a108ed4544 (patch) | |
| tree | cb0a366f5146f8970cc2ebd8d89a9aeeb0e155ef /addons/base/static/src | |
| parent | e178b5777895253a0201489ff1973e92d11b233f (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.css | 3 | ||||
| -rw-r--r-- | addons/base/static/src/js/form.js | 39 | ||||
| -rw-r--r-- | addons/base/static/src/xml/base.xml | 14 |
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"><<</button> - <span class="dataset_index">0</span> / <span class="dataset_count">0</span> - <button type="button" class="pager_next">>></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"><<</button> + + <span class="oe_pager_index">0</span> / <span class="oe_pager_count">0</span> + + <button type="button" data-pager-action="next">>></button> + <button type="button" data-pager-action="last">Last</button> </div> <t t-raw="frame.render()"/> <div style="text-align:right;"> |
