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