diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 6dd5851..0a64c3e 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -15,7 +15,7 @@ const status = ref(null) const loading = ref(true) const error = ref('') const search = ref('') -const sort = ref('rating') +const sort = ref('random') const selected = ref(null) // Nach dem Neuladen soll derselbe Reiter offen sein const TAB_SCHLUESSEL = 'filmabend_tab' @@ -289,7 +289,17 @@ function score(movie) { ) } +// Ein fester Wurf je Film. Mit Math.random() im Vergleich springen die +// Karten bei jedem Filtern neu durcheinander. +const wuerfel = new Map() + +function zufall(movie) { + if (!wuerfel.has(movie.id)) wuerfel.set(movie.id, Math.random()) + return wuerfel.get(movie.id) +} + const SORTS = { + random: (a, b) => zufall(a) - zufall(b), rating: (a, b) => score(b) - score(a), newest: (a, b) => (b.year || 0) - (a.year || 0), oldest: (a, b) => (a.year || 9999) - (b.year || 9999), diff --git a/frontend/src/components/FilterSidebar.vue b/frontend/src/components/FilterSidebar.vue index 54d8207..8166f0b 100644 --- a/frontend/src/components/FilterSidebar.vue +++ b/frontend/src/components/FilterSidebar.vue @@ -13,7 +13,7 @@ const props = defineProps({ const emit = defineEmits(['toggle', 'all', 'reset']) const search = defineModel('search', { type: String, default: '' }) -const sort = defineModel('sort', { type: String, default: 'rating' }) +const sort = defineModel('sort', { type: String, default: 'random' }) const ranges = defineModel('ranges', { type: Object, default: () => ({}) }) // Auch ein verschobener Regler zählt als aktiver Filter @@ -47,6 +47,7 @@ function beschriften(regler) {