diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-05-04 16:47:53 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-05-04 16:47:53 +0200 |
| commit | 075902f5c2b0febd70adf5209b4eef2cfb0813b8 (patch) | |
| tree | 8e12ccc68af565fc755957bd49f8f72a70a3a78b | |
| parent | ff691a34b5b25ff2365ac8c0ba451757c50cfbf8 (diff) | |
[IMP] make sortable columns look sortable (and sorted) a bit
bzr revid: xmo@openerp.com-20110504144753-zemygt44re3o8z0m
| -rw-r--r-- | addons/base/controllers/main.py | 10 | ||||
| -rw-r--r-- | addons/base/static/src/css/base.css | 5 | ||||
| -rw-r--r-- | addons/base/static/src/js/data.js | 2 | ||||
| -rw-r--r-- | addons/base/static/src/js/list.js | 3 | ||||
| -rw-r--r-- | addons/base/static/src/xml/base.xml | 4 |
5 files changed, 22 insertions, 2 deletions
diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 424313bc6d2..085e48d89e0 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -591,6 +591,16 @@ class ListView(View): domain=domain, sort=sort) eval_context = request.session.evaluation_context( request.context) + + if sort: + sort_criteria = sort.split(',')[0].split(' ') + print sort, sort_criteria + view['sorted'] = { + 'field': sort_criteria[0], + 'reversed': sort_criteria[1] == 'DESC' + } + else: + view['sorted'] = {} return { 'view': view, 'records': [ diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index 1bd004b53f6..43021e32bc6 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -485,6 +485,11 @@ body.openerp { .openerp .oe-listview td, .openerp .oe-listview th { vertical-align: middle; + text-align: left; +} +.openerp .oe-listview th.oe-sortable, +.openerp .oe-listview th.oe-sortable .ui-icon { + cursor: pointer; } .openerp .oe-listview .oe-field-cell { diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index c7c129e7fec..da0f18001a8 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -197,7 +197,7 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ if (criteria[0] === '-') { return criteria.slice(1) + ' DESC'; } - return criteria; + return criteria + ' ASC'; }).join(', '); } diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 308b73f8925..e9061fa7121 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -123,6 +123,8 @@ openerp.base.ListView = openerp.base.Controller.extend( this.visible_columns = _.filter(this.columns, function (column) { return column.invisible !== '1'; }); + + if (!this.fields_view.sorted) { this.fields_view.sorted = {}; } this.$element.html(QWeb.render("ListView", this)); // Head hook @@ -135,6 +137,7 @@ openerp.base.ListView = openerp.base.Controller.extend( self.dataset.sort($(this).data('id')); + // TODO: should only reload content (and set the right column to a sorted display state) self.do_reload(); }); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index b2b2bd7d2c4..bcd8db9444f 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -181,9 +181,11 @@ <tr t-if="options.header"> <th t-if="options.selectable"/> <t t-foreach="columns" t-as="column"> - <th t-if="column.invisible !== '1'" t-att-data-id="column.id"> + <th t-if="column.invisible !== '1'" t-att-data-id="column.id" + t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)"> <t t-if="column.tag !== 'button'"> <t t-esc="column.string"/> + <span t-att-class="(fields_view.sorted.field === column.id) ? ('ui-icon' + (fields_view.sorted.reversed ? ' ui-icon-triangle-1-n' : ' ui-icon-triangle-1-s')) : ''"/> </t> </th> </t> |
