Admin: add reverse chronological sorting and fix cache

This commit is contained in:
Michael Winter 2026-02-27 22:30:30 +01:00
parent a62ea09760
commit 95b3f4ab59

View file

@ -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() {