sort categories as mixin

This commit is contained in:
Moriz Wahl 2022-11-28 13:44:07 +01:00
parent 269f5bd741
commit bd9a7d1e1b
2 changed files with 27 additions and 21 deletions

View File

@ -23,6 +23,7 @@
import CategoryQuery from '~/graphql/CategoryQuery' import CategoryQuery from '~/graphql/CategoryQuery'
import { CATEGORIES_MAX } from '~/constants/categories.js' import { CATEGORIES_MAX } from '~/constants/categories.js'
import xor from 'lodash/xor' import xor from 'lodash/xor'
import SortCategories from '~/mixins/sortCategoriesMixin.js'
export default { export default {
inject: { inject: {
@ -30,6 +31,7 @@ export default {
default: null, default: null,
}, },
}, },
mixins: [SortCategories],
props: { props: {
existingCategoryIds: { type: Array, default: () => [] }, existingCategoryIds: { type: Array, default: () => [] },
model: { type: String, required: true }, model: { type: String, required: true },
@ -65,26 +67,6 @@ export default {
categoryButtonsId(categoryId) { categoryButtonsId(categoryId) {
return `category-buttons-${categoryId}` return `category-buttons-${categoryId}`
}, },
sortCategories(categories) {
const misc = categories.find((cat) => cat.slug === 'miscellaneous')
const sortedCategories = categories
.filter((cat) => cat.slug !== misc.slug)
.sort((a, b) => {
if (
this.$t(`contribution.category.name.${a.slug}`) <
this.$t(`contribution.category.name.${b.slug}`)
)
return -1
if (
this.$t(`contribution.category.name.${a.slug}`) >
this.$t(`contribution.category.name.${b.slug}`)
)
return 1
return 0
})
if (misc) sortedCategories.push(misc)
return sortedCategories
},
}, },
apollo: { apollo: {
Category: { Category: {
@ -92,7 +74,7 @@ export default {
return CategoryQuery() return CategoryQuery()
}, },
result({ data: { Category } }) { result({ data: { Category } }) {
this.categories = this.sortCategories(Category) this.categories = this.sortCategories(Category, this.$t)
}, },
}, },
}, },

View File

@ -0,0 +1,24 @@
export default {
methods: {
sortCategories(categories, locales) {
const misc = categories.find((cat) => cat.slug === 'miscellaneous')
const sortedCategories = categories
.filter((cat) => cat.slug !== misc.slug)
.sort((a, b) => {
if (
locales(`contribution.category.name.${a.slug}`) <
locales(`contribution.category.name.${b.slug}`)
)
return -1
if (
locales(`contribution.category.name.${a.slug}`) >
locales(`contribution.category.name.${b.slug}`)
)
return 1
return 0
})
if (misc) sortedCategories.push(misc)
return sortedCategories
},
},
}