diff --git a/src/routes/tools/beatleader-headtohead/+page.svelte b/src/routes/tools/beatleader-headtohead/+page.svelte index 941dbce..c2f6c3e 100644 --- a/src/routes/tools/beatleader-headtohead/+page.svelte +++ b/src/routes/tools/beatleader-headtohead/+page.svelte @@ -53,8 +53,17 @@ let sortDir: 'asc' | 'desc' = 'desc'; let page = 1; let pageSize: number | string = 24; + let filterWinMargin: string = 'all'; // 'all', '1', '2' $: pageSizeNum = Number(pageSize) || 24; - $: sorted = [...items].sort((a, b) => (sortDir === 'asc' ? a.timeset - b.timeset : b.timeset - a.timeset)); + $: filtered = (() => { + if (filterWinMargin === 'all') return items; + const margin = Number(filterWinMargin); + return items.filter(i => { + if (i.accA == null || i.accB == null) return false; + return i.accA > i.accB && (i.accA - i.accB) > margin; + }); + })(); + $: sorted = [...filtered].sort((a, b) => (sortDir === 'asc' ? a.timeset - b.timeset : b.timeset - a.timeset)); $: totalPages = Math.max(1, Math.ceil(sorted.length / pageSizeNum)); $: page = Math.min(page, totalPages); $: pageItems = sorted.slice((page - 1) * pageSizeNum, (page - 1) * pageSizeNum + pageSizeNum); @@ -246,6 +255,8 @@ if (dir === 'asc' || dir === 'desc') sortDir = dir; const size = sp.get('size') ?? sp.get('ps'); if (size) pageSize = Number(size) || pageSize; + const filter = sp.get('filter'); + if (filter && ['all', '1', '2'].includes(filter)) filterWinMargin = filter; initialized = true; }); @@ -272,6 +283,7 @@ if (page > 1) sp.set('page', String(page)); else sp.delete('page'); if (sortDir !== 'desc') sp.set('dir', sortDir); else sp.delete('dir'); if (pageSizeNum !== 24) sp.set('size', String(pageSizeNum)); else sp.delete('size'); + if (filterWinMargin !== 'all') sp.set('filter', filterWinMargin); else sp.delete('filter'); const qs = sp.toString(); const url = location.pathname + (qs ? `?${qs}` : ''); if (replace) history.replaceState(null, '', url); else history.pushState(null, '', url); @@ -508,53 +520,62 @@ - -