Zufällige Reihenfolge als Standard
Nach Bewertung sortiert sieht man immer dieselben zwanzig Filme. Zufällig kommt auch mal etwas aus der Mitte des Katalogs nach oben. Jeder Film bekommt dafür einen festen Wurf. Mit Math.random() direkt im Vergleich würde die Sortierung bei jedem Filtern neu durcheinanderspringen. Neu gemischt wird beim Neuladen der Seite. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013XVnRop5c3or3B8xE2hpgZ
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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) {
|
||||
<div class="controls">
|
||||
<input v-model="search" type="search" placeholder="Titel suchen…" />
|
||||
<select v-model="sort">
|
||||
<option value="random">Zufällig</option>
|
||||
<option value="rating">Beste Bewertung</option>
|
||||
<option value="newest">Neueste zuerst</option>
|
||||
<option value="oldest">Älteste zuerst</option>
|
||||
|
||||
Reference in New Issue
Block a user