59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
import Ember from 'ember';
|
|
import BaseComponentMixin from '../mixins/components/base-component';
|
|
|
|
export default Ember.Component.extend(BaseComponentMixin, {
|
|
tagName: 'th',
|
|
order: Ember.computed('route.controller.orders', function() {
|
|
return this.getDir();
|
|
}),
|
|
sorting: Ember.computed.none('order'),
|
|
asc: Ember.computed.equal('order', 'asc'),
|
|
desc: Ember.computed.equal('order', 'desc'),
|
|
// classNameBindings: ['asc:sorting_asc', 'desc:sorting_desc', 'sorting:sorting'],
|
|
attributeBindings: ['style'],
|
|
getDir() {
|
|
let me = this;
|
|
let name = me.get('name');
|
|
let orders = me.getOrders();
|
|
if (orders && orders.length) {
|
|
let order = orders.find(order => order.hasOwnProperty(name));
|
|
if (order) {
|
|
return order[name];
|
|
}
|
|
}
|
|
},
|
|
getOrders() {
|
|
let me = this;
|
|
let strOrders = me.get('route.controller.orders');
|
|
if (strOrders) {
|
|
return JSON.parse(strOrders);
|
|
}
|
|
},
|
|
actions: {
|
|
sort() {
|
|
let me = this;
|
|
let orders = me.getOrders() || [];
|
|
let name = me.get('name');
|
|
if (orders.length) {
|
|
orders = orders.filter(order => !order.hasOwnProperty(name));
|
|
}
|
|
let order = {};
|
|
order[name] =
|
|
me.get('order') === 'asc' ?
|
|
'desc' : 'asc';
|
|
// prepend sort
|
|
orders.unshift(order);
|
|
me.set('route.controller.orders', JSON.stringify(orders));
|
|
},
|
|
removeSort() {
|
|
let me = this;
|
|
let orders = me.getOrders();
|
|
if (orders) {
|
|
let name = me.get('name');
|
|
me.set('route.controller.orders',
|
|
JSON.stringify(orders.filter(order => !order.hasOwnProperty(name))));
|
|
}
|
|
}
|
|
}
|
|
});
|