From f1ea48381a0b2a7dc5e1f5f464a7fc026931a9db Mon Sep 17 00:00:00 2001 From: bartvdbraak Date: Sat, 1 Feb 2020 02:28:57 +0100 Subject: [PATCH] new mass filtering function, edit column button init --- src/components/TableSection.vue | 55 ++++++++++++++++++++++++++++----- src/components/TopNav.vue | 2 -- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/components/TableSection.vue b/src/components/TableSection.vue index bcf1391..b640d3e 100644 --- a/src/components/TableSection.vue +++ b/src/components/TableSection.vue @@ -8,13 +8,12 @@
- +
@@ -32,15 +31,46 @@ export default { monstersData: monster_json, total_weight: 0, fields: [ + { + key: 'id', + label: 'Monster name', + sortable: true, + isActive: false, + }, { key: 'monster', label: 'Monster name', sortable: true, + isActive: true, + }, + { + key: 'combat_req', + label: 'Combat Requirement', + sortable: true, + isActive: false, + }, + { + key: 'slayer_req', + label: 'Slayer Requirement', + sortable: true, + isActive: false, + }, + { + key: 'defence_req', + label: 'Defence Requirement', + sortable: true, + isActive: false, }, ], - filters: { - combat_level: 49, + config: { + combat_level: 100, slayer_level: 75, + defence_level: 60, + }, + filters: { + combat_req: combat_req => combat_req < this.config.combat_level, + slayer_req: slayer_req => slayer_req < this.config.slayer_level, + defence_req: defence_req => defence_req < this.config.defence_level, }, filtered_items: [], } @@ -51,10 +81,21 @@ export default { this.filterData(); }, filterData() { - // this.filtered_items = this.items.filter(item => item.last_name.includes('Carney')); - this.filtered_items = this.monstersData.filter(item => item.combat_req < this.filters.combat_level); + //filter based on account + this.filtered_items = this.filterArray(this.monstersData, this.filters) }, + filterArray(array, filters) { + const filterKeys = Object.keys(filters); + return array.filter(item => { + // validates all filter criteria + return filterKeys.every(key => { + // ignores non-function predicates + if (typeof filters[key] !== 'function') return true; + return filters[key](item[key]); + }); + }); + } }, mounted() { this.reload(); diff --git a/src/components/TopNav.vue b/src/components/TopNav.vue index 3f6f193..11abbf6 100644 --- a/src/components/TopNav.vue +++ b/src/components/TopNav.vue @@ -12,7 +12,6 @@ @@ -24,7 +23,6 @@ export default { name: "Navbar", methods: { emitMenu() { - console.log('test') this.$emit('clicked'); } }