diff --git a/src/components/nodes-table/index.vue b/src/components/nodes-table/index.vue index 689caf31..b7dbb33b 100644 --- a/src/components/nodes-table/index.vue +++ b/src/components/nodes-table/index.vue @@ -5,6 +5,8 @@ :footer-props="{ itemsPerPageOptions: [10, 20, 50, 100, -1] }" + :sort-desc.sync="sorting.desc" + :sort-by.sync="sorting.by" :items-per-page.sync="nodeTableItems" item-key="node_id" class="elevation-1" @@ -15,35 +17,41 @@ > @@ -54,7 +62,7 @@ diff --git a/src/components/nodes-table/nodes-table.js b/src/components/nodes-table/nodes-table.js index f07a4173..59d7cf21 100644 --- a/src/components/nodes-table/nodes-table.js +++ b/src/components/nodes-table/nodes-table.js @@ -13,6 +13,7 @@ export default { nodeTableItems: 10, selectedNode: undefined, filters: {}, + sorting: {}, headers: [ { text: 'ID', value: 'node_id' }, { text: 'Type', value: 'type' }, @@ -37,6 +38,31 @@ export default { lastActives: { type: 'date' } } }, + initSorting () { + return { + by: ['node_id'], + desc: [false] + } + }, + loadObject (key, defaultValue) { + let filtersStr = localStorage.getItem(key) + let filters + try { + filters = JSON.parse(filtersStr) + } catch (e) { + filters = undefined + } + if ( + !filters || + (Object.keys(filters).length === 0 && filters.constructor === Object) + ) { + filters = defaultValue + } + return filters + }, + storeObject (key, val) { + localStorage.setItem(key, JSON.stringify(val)) + }, resetFilter () { this.filters = this.initFilters() }, @@ -53,10 +79,24 @@ export default { this.filters = this.initFilters() const itemsPerPage = parseInt(localStorage.getItem('nodes_itemsPerPage')) this.nodeTableItems = !isNaN(itemsPerPage) ? itemsPerPage : 10 + this.filters = this.loadObject('nodes_filters', this.initFilters()) + this.sorting = this.loadObject('nodes_sorting', this.initSorting()) }, watch: { nodeTableItems (val) { localStorage.setItem('nodes_itemsPerPage', val) + }, + filters: { + handler (val) { + this.storeObject('nodes_filters', val) + }, + deep: true + }, + sorting: { + handler (val) { + this.storeObject('nodes_sorting', val) + }, + deep: true } }, computed: {