Admin: add reverse chronological sorting and fix cache
This commit is contained in:
parent
a62ea09760
commit
95b3f4ab59
|
|
@ -172,12 +172,42 @@ const searchFields = {
|
|||
talks: ['title', 'location', 'date']
|
||||
}
|
||||
|
||||
const dateSortFields = {
|
||||
works: 'date',
|
||||
events: 'start_date',
|
||||
releases: 'year',
|
||||
talks: 'date'
|
||||
}
|
||||
|
||||
const filteredItems = computed(() => {
|
||||
if (!searchQuery.value.trim()) return items.value
|
||||
let result = items.value
|
||||
|
||||
if (selectedCollection.value !== 'publications') {
|
||||
const dateField = dateSortFields[selectedCollection.value]
|
||||
if (dateField) {
|
||||
result = [...result].sort((a, b) => {
|
||||
const dateA = new Date(a[dateField] || 0)
|
||||
const dateB = new Date(b[dateField] || 0)
|
||||
return dateB - dateA
|
||||
})
|
||||
}
|
||||
} else {
|
||||
const getYear = (key) => parseInt(key.replace(/\D/g, '')) || 0
|
||||
const getSuffix = (key) => key.replace(/^Winter\d+/, '') || ''
|
||||
|
||||
result = [...result].sort((a, b) => {
|
||||
const yearA = getYear(a.citationKey)
|
||||
const yearB = getYear(b.citationKey)
|
||||
if (yearA !== yearB) return yearB - yearA
|
||||
return getSuffix(b.citationKey).localeCompare(getSuffix(a.citationKey))
|
||||
})
|
||||
}
|
||||
|
||||
if (!searchQuery.value.trim()) return result
|
||||
const query = searchQuery.value.toLowerCase()
|
||||
const fields = searchFields[selectedCollection.value] || []
|
||||
|
||||
return items.value.filter(item => {
|
||||
return result.filter(item => {
|
||||
for (const field of fields) {
|
||||
const value = field.split('.').reduce((obj, key) => obj?.[key], item)
|
||||
if (value && String(value).toLowerCase().includes(query)) {
|
||||
|
|
@ -242,13 +272,13 @@ function getTitle(item) {
|
|||
}
|
||||
|
||||
async function loadItems() {
|
||||
const { data } = await useFetch(`/api/admin/${selectedCollection.value}`)
|
||||
items.value = data.value || []
|
||||
const data = await $fetch(`/api/admin/${selectedCollection.value}`)
|
||||
items.value = data || []
|
||||
}
|
||||
|
||||
async function loadFiles() {
|
||||
const { data } = await useFetch(`/api/admin/files?folder=${selectedFolder.value}`)
|
||||
files.value = data.value || []
|
||||
const data = await $fetch(`/api/admin/files?folder=${selectedFolder.value}`)
|
||||
files.value = data || []
|
||||
}
|
||||
|
||||
function createNew() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue