1
0
mirror of https://github.com/kihashi/stardew_community_checklist.git synced 2025-10-19 08:03:17 +00:00

Add filtering.

This commit is contained in:
John Cleaver 2018-05-16 23:20:24 -04:00
parent 6e94bf35b8
commit 784050fdde

View File

@ -24,9 +24,15 @@ export default {
data () {
return {
search: {
search_term: '',
search_seasons: this.$store.state.seasons,
search_skills: this.$store.state.skills
name_filter: '',
season_filter: {
selected_seasons: ['spring', 'summer', 'fall', 'winter'],
season_exclusive: false
},
skill_filter: {
selected_skills: ['farming', 'foraging', 'mining', 'fishing', 'combat'],
skill_exclusive: false
}
}
}
},
@ -34,7 +40,57 @@ export default {
filtered_items () {
var self = this
return self.$store.state.items
.filter(item => item.name.toLowerCase().indexOf(self.search.search_term.toLowerCase()) !== -1)
.filter(item => item.name.toLowerCase().indexOf(self.search.name_filter.toLowerCase()) !== -1)
.filter(item => this.FilterSeasons(item.seasons.map(ssn => ssn.id), this.search.season_filter))
.filter(item => this.FilterSkills(item.skills.map(skl => skl.id), this.search.skill_filter))
}
},
methods: {
FilterSeasons (itemSeasons, seasonFilter) {
if (seasonFilter.season_exclusive) {
if (itemSeasons.length !== seasonFilter.selected_seasons.length) {
return false
} else {
var a = itemSeasons
var b = seasonFilter.selected_seasons
a.sort()
b.sort()
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) { return false }
}
return true
}
} else {
for (var season of seasonFilter.selected_seasons) {
if (itemSeasons.indexOf(season) !== -1) {
return true
}
}
return false
}
},
FilterSkills (itemSkills, skillFilter) {
if (skillFilter.skill_exclusive) {
if (itemSkills.length !== skillFilter.selected_skills.length) {
return false
} else {
var a = itemSkills
var b = skillFilter.selected_skills
a.sort()
b.sort()
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) { return false }
}
return true
}
} else {
for (var season of skillFilter.selected_skills) {
if (itemSkills.indexOf(season) !== -1) {
return true
}
}
return false
}
}
}