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 @@
>
-
+
{{ header.text }}
-
+
{{ header.text }}
{{ header.text }}
-
+
{{ header.text }}
{{ header.text }}
{{ header.text }}
@@ -54,7 +62,7 @@
{{ header.text }}
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: {