yoqw/web/cms/app/components/sortable-th.js
2020-07-01 15:22:07 +08:00

51 lines
1.5 KiB
JavaScript

import BaseComponent from './basic-component';
import { computed } from '@ember/object';
import { none, equal } from '@ember/object/computed';
export default BaseComponent.extend({
tagName: 'th',
order: computed('route.controller.sorters', function() {
return this.getDir();
}),
sorting: none('order'),
asc: equal('order', 'asc'),
desc: equal('order', 'desc'),
// classNameBindings: ['asc:sorting_asc', 'desc:sorting_desc', 'sorting:sorting'],
attributeBindings: ['style'],
getDir() {
let me = this;
let name = me.get('name');
let sorters = me.getSorters();
if (sorters) {
return sorters[name];
}
},
getSorters() {
let me = this;
let strSorters = me.get('route.controller.sorters');
if (strSorters) {
return JSON.parse(strSorters);
}
},
actions: {
sort() {
const me = this;
let sorters = me.getSorters() || {};
let name = me.get('name');
sorters[name] =
me.get('order') === 'asc' ?
'desc' : 'asc';
me.set('route.controller.sorters', JSON.stringify(sorters));
},
removeSort() {
let me = this;
let sorters = me.getSorters();
if (sorters) {
delete sorters[me.get('name')];
me.set('route.controller.sorters',
JSON.stringify(sorters));
}
}
}
});