lemo-crm/web/app/components/sortable-th.js
2018-03-18 22:15:30 +08:00

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))));
}
}
}
});