move frontend to /web
This commit is contained in:
parent
9747c08bab
commit
dd75c2b0d6
36 changed files with 0 additions and 0 deletions
39
web/src/mixins/data-container.js
Normal file
39
web/src/mixins/data-container.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
import * as R from 'ramda';
|
||||
|
||||
export default {
|
||||
props: ['columns', 'items', 'actions', 'keyName'],
|
||||
data: (self) => ({
|
||||
sortBy: self.keyName,
|
||||
ascend: true,
|
||||
filters: R.fromPairs(self.columns.map(column => [column, '']))
|
||||
}),
|
||||
computed: {
|
||||
internalItems() {
|
||||
const filtered = this.items.filter(item => this.columns
|
||||
.map(column => {
|
||||
const field = item[column] + '';
|
||||
const filter = this.filters[column];
|
||||
return field.toLowerCase().includes(filter.toLowerCase());
|
||||
}).reduce((acc, nxt) => acc && nxt, true)
|
||||
);
|
||||
const sortByOrd = R.sortBy(R.prop(this.sortBy));
|
||||
const sorted = sortByOrd(filtered, [this.sortBy]);
|
||||
return this.ascend ? sorted : R.reverse(sorted);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSortIcon(column) {
|
||||
if (column !== this.sortBy) return 'sort';
|
||||
if (this.ascend) return 'sort-up';
|
||||
return 'sort-down';
|
||||
},
|
||||
toggleSort(column) {
|
||||
if (column === this.sortBy)
|
||||
this.ascend = !this.ascend;
|
||||
this.sortBy = column;
|
||||
},
|
||||
setFilter(column, filter) {
|
||||
this.filters[column] = filter;
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue