mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
sort categories as mixin
This commit is contained in:
parent
269f5bd741
commit
bd9a7d1e1b
@ -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)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
24
webapp/mixins/sortCategoriesMixin.js
Normal file
24
webapp/mixins/sortCategoriesMixin.js
Normal 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
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user