Add lodash pkg, bugfix config loader (update:configData), stat filters implemented with lodash

This commit is contained in:
Bart van der Braak 2020-02-05 19:21:37 +01:00
parent 7d8ddf7e6b
commit 8f60409cb7
5 changed files with 19 additions and 30 deletions

View file

@ -11,6 +11,7 @@
"bootstrap": "^4.4.1", "bootstrap": "^4.4.1",
"bootstrap-vue": "^2.3.0", "bootstrap-vue": "^2.3.0",
"core-js": "^3.4.4", "core-js": "^3.4.4",
"lodash": "^4.17.15",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-router": "^3.1.5" "vue-router": "^3.1.5"
}, },
@ -50,6 +51,7 @@
"last 2 versions" "last 2 versions"
], ],
"peerDependencies": { "peerDependencies": {
"jquery": "^3.4.1" "jquery": "^3.4.1",
"webpack": "^5.0.04"
} }
} }

View file

@ -170,7 +170,7 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let fr = new FileReader(); let fr = new FileReader();
fr.onload = () => { fr.onload = () => {
this.$emit('update', JSON.parse(fr.result)); this.$emit('update:configData', JSON.parse(fr.result));
}; };
fr.readAsText(file); fr.readAsText(file);
}); });

View file

@ -11,9 +11,9 @@ export default {
return { return {
mainConfig: { mainConfig: {
statUnlocks: [ statUnlocks: [
{id: 0, name: 'Slayer level', value: {min: 1, current: 99, max: 99}, image: 'slayer_icon.png', unlock: false}, {id: 0, name: 'Slayer level', filter: 'slayer_req', value: {min: 1, current: 99, max: 99}, image: 'slayer_icon.png', unlock: false},
{id: 1, name: 'Combat level', value: {min: 3, current: 126, max: 126}, image: 'combat_icon.png', unlock: false}, {id: 1, name: 'Combat level', filter: 'combat_req', value: {min: 3, current: 126, max: 126}, image: 'combat_icon.png', unlock: false},
{id: 2, name: 'Defence level', value: {min: 1, current: 99, max: 99}, image: 'defence_icon.png', unlock: false}, {id: 2, name: 'Defence level', filter: 'defence_req', value: {min: 1, current: 99, max: 99}, image: 'defence_icon.png', unlock: false},
], ],
pointUnlocks: [ pointUnlocks: [
{id: 0, name: 'Seeing red', monster_ids: [83, 3], unlock: false, masters: [5,6,7]}, {id: 0, name: 'Seeing red', monster_ids: [83, 3], unlock: false, masters: [5,6,7]},
@ -77,6 +77,9 @@ export default {
if (localStorage.getItem("configData") && localStorage.getItem('remember') === 'true') { if (localStorage.getItem("configData") && localStorage.getItem('remember') === 'true') {
this.mainConfig = JSON.parse(localStorage.getItem("configData")); this.mainConfig = JSON.parse(localStorage.getItem("configData"));
} }
else if (localStorage.getItem("configData") && localStorage.getItem('remember') === 'false') {
localStorage.removeItem("configData");
}
}, },
} }
</script> </script>

View file

@ -61,13 +61,13 @@ export default {
key: 'combat_req', key: 'combat_req',
label: 'Combat Requirement', label: 'Combat Requirement',
sortable: true, sortable: true,
class: 'd-none', // class: 'd-none',
}, },
{ {
key: 'slayer_req', key: 'slayer_req',
label: 'Slayer Requirement', label: 'Slayer Requirement',
sortable: true, sortable: true,
class: 'd-none', class: '',
}, },
{ {
key: 'defence_req', key: 'defence_req',
@ -87,16 +87,6 @@ export default {
sortable: true, sortable: true,
}, },
], ],
config: {
combat_level: 60,
slayer_level: 50,
defence_level: 1,
},
accountFilters: {
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: [], filtered_items: [],
} }
}, },
@ -111,18 +101,12 @@ export default {
this.generateTaskWeights(); this.generateTaskWeights();
}, },
filterData() { filterData() {
//filter based on Account Settings this.filtered_items = this.monstersData;
this.filtered_items = this.filterArray(this.monstersData, this.accountFilters); //filter based on Account Stats
},
filterArray(array, filters) { this.configData.statUnlocks.forEach(stat=>{
const filterKeys = Object.keys(filters); // For each stat requirement, remove those from list where the current stat value is greater or equal to the monsters requirement value.
return array.filter(item => { this.filtered_items = _.filter(this.filtered_items, function(o){ return parseInt(stat.value.current) >= parseInt(o[stat.filter]) } );
// validates all filter criteria
return filterKeys.every(key => {
// ignores non-function predicates
if (typeof filters[key] !== 'function') return true;
return filters[key](item[key]);
});
}); });
}, },
generateTaskWeights() { generateTaskWeights() {
@ -145,7 +129,6 @@ export default {
this.reload(); this.reload();
} }
} }
} }
</script> </script>

View file

@ -1,5 +1,6 @@
import '@babel/polyfill' import '@babel/polyfill'
import 'mutationobserver-shim' import 'mutationobserver-shim'
import 'lodash'
import Vue from 'vue' import Vue from 'vue'
import './plugins/bootstrap-vue' import './plugins/bootstrap-vue'
import VueRouter from 'vue-router' import VueRouter from 'vue-router'