WIP
This commit is contained in:
@@ -28,28 +28,18 @@ export default {
|
|||||||
return this.$store.state.Sidebar.cardsShown;
|
return this.$store.state.Sidebar.cardsShown;
|
||||||
},
|
},
|
||||||
category() {
|
category() {
|
||||||
const category = this.$store.getters['data/findResources'](this.categoryRouteTitle)
|
const category = this.$store.getters['data/sortByTitle'](this.categoryRouteTitle)
|
||||||
const pagePath = this.$router.history.current.path
|
const pagePath = this.$router.history.current.path
|
||||||
const query = this.$route.query.card
|
const query = this.$route.query.card
|
||||||
|
// console.log(category.resources)
|
||||||
for (const resource of category.resources) {
|
for (const resource of category.resources) {
|
||||||
resource.cleanTitle = resource.title.replace(/ /g, '').toLowerCase()
|
|
||||||
resource.path = `${pagePath}?card=${resource.cleanTitle}`
|
|
||||||
resource.active = (resource.cleanTitle === query) ? 'card--active' : ''
|
resource.active = (resource.cleanTitle === query) ? 'card--active' : ''
|
||||||
}
|
}
|
||||||
category.resources.sort(this.compareTitles)
|
// category.resources.sort(this.compareTitles)
|
||||||
return category
|
return category
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
compareTitles(x, y) {
|
|
||||||
if (x.cleanTitle > y.cleanTitle) {
|
|
||||||
return 1
|
|
||||||
} else if (x.cleanTitle < y.cleanTitle) {
|
|
||||||
return -1
|
|
||||||
} else {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onToggle(index) {
|
onToggle(index) {
|
||||||
if (this.activeCard === index) {
|
if (this.activeCard === index) {
|
||||||
this.activeCard = null;
|
this.activeCard = null;
|
||||||
|
|||||||
@@ -30,7 +30,17 @@ if (!Array.prototype.flat) {
|
|||||||
const includesElOf = (list1, list2) => list1.some(element => list2.includes(element))
|
const includesElOf = (list1, list2) => list1.some(element => list2.includes(element))
|
||||||
|
|
||||||
export const state = () => ({
|
export const state = () => ({
|
||||||
resources,
|
resources: resources.map(category => ({
|
||||||
|
...category,
|
||||||
|
resources: category.resources.map(resource => {
|
||||||
|
const cleanTitle = resource.title.replace(/ /g, '').toLowerCase()
|
||||||
|
return {
|
||||||
|
...resource,
|
||||||
|
cleanTitle,
|
||||||
|
path: `${category.slug}?card=${cleanTitle}`,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})),
|
||||||
// List of all tags, duplicates removed
|
// List of all tags, duplicates removed
|
||||||
tags: [...new Set(
|
tags: [...new Set(
|
||||||
resources
|
resources
|
||||||
@@ -43,10 +53,28 @@ export const getters = {
|
|||||||
tags: state => state.tags,
|
tags: state => state.tags,
|
||||||
resources: state => state.resources,
|
resources: state => state.resources,
|
||||||
findResources: state => title => {
|
findResources: state => title => {
|
||||||
return state.resources.find(resource => resource.title.toLowerCase() === title.toLowerCase())
|
return Object.assign(state.resources.find(resource => resource.title.toLowerCase() === title.toLowerCase()))
|
||||||
},
|
},
|
||||||
findByTags: state => tags => {
|
findByTags: state => tags => {
|
||||||
const flat = state.resources.map(category => category.resources).flat()
|
const flat = state.resources.map(category => category.resources).flat()
|
||||||
return flat.filter(resource => resource.tags && includesElOf(resource.tags, tags))
|
return flat.filter(resource => resource.tags && includesElOf(resource.tags, tags))
|
||||||
|
},
|
||||||
|
sortByTitle: (_, getters) => title => {
|
||||||
|
const category = getters.findResources(title)
|
||||||
|
const copy = [...category.resources]
|
||||||
|
return {
|
||||||
|
...category,
|
||||||
|
resources: copy.sort(compareTitles)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const compareTitles = (x, y) => {
|
||||||
|
if (x.cleanTitle > y.cleanTitle) {
|
||||||
|
return 1
|
||||||
|
} else if (x.cleanTitle < y.cleanTitle) {
|
||||||
|
return -1
|
||||||
|
} else {
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user