32 lines
803 B
JavaScript
32 lines
803 B
JavaScript
|
import Ember from 'ember';
|
||
|
|
||
|
const { Mixin, computed } = Ember;
|
||
|
|
||
|
/**
|
||
|
Sortable mixin
|
||
|
|
||
|
Simple sorting behavior for a list of objects.
|
||
|
|
||
|
Properties to override:
|
||
|
- sortProperty: the property to sort by
|
||
|
- sortDescending: when true, the list is reversed
|
||
|
- listToSort: the list of objects to sort
|
||
|
|
||
|
Properties provided:
|
||
|
- listSorted: a copy of listToSort that has been sorted
|
||
|
*/
|
||
|
export default Mixin.create({
|
||
|
// Override in mixin consumer
|
||
|
sortProperty: null,
|
||
|
sortDescending: true,
|
||
|
listToSort: computed(() => []),
|
||
|
|
||
|
listSorted: computed('listToSort.[]', 'sortProperty', 'sortDescending', function() {
|
||
|
const sorted = this.get('listToSort').sortBy(this.get('sortProperty'));
|
||
|
if (this.get('sortDescending')) {
|
||
|
return sorted.reverse();
|
||
|
}
|
||
|
return sorted;
|
||
|
}),
|
||
|
});
|