summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-05-04 16:47:53 +0200
committerXavier Morel <xmo@openerp.com>2011-05-04 16:47:53 +0200
commit075902f5c2b0febd70adf5209b4eef2cfb0813b8 (patch)
tree8e12ccc68af565fc755957bd49f8f72a70a3a78b
parentff691a34b5b25ff2365ac8c0ba451757c50cfbf8 (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.py10
-rw-r--r--addons/base/static/src/css/base.css5
-rw-r--r--addons/base/static/src/js/data.js2
-rw-r--r--addons/base/static/src/js/list.js3
-rw-r--r--addons/base/static/src/xml/base.xml4
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>