From 05a176b1b556dc78ca3bf819a4bd0d073bc23cad Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 12 Feb 2026 16:54:09 -0400 Subject: search, client: handle singles --- src/static/js/client/sidebar-search.js | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'src/static/js/client') diff --git a/src/static/js/client/sidebar-search.js b/src/static/js/client/sidebar-search.js index d63b9708..18ee6dfa 100644 --- a/src/static/js/client/sidebar-search.js +++ b/src/static/js/client/sidebar-search.js @@ -74,6 +74,7 @@ export const info = { albumResultKindString: null, artistResultKindString: null, groupResultKindString: null, + singleResultKindString: null, tagResultKindString: null, groupResultDisambiguatorString: null, @@ -207,6 +208,9 @@ export function getPageReferences() { info.groupResultKindString = findString('group-result-kind'); + info.singleResultKindString = + findString('single-result-kind'); + info.tagResultKindString = findString('tag-result-kind'); @@ -879,10 +883,26 @@ function fillResultElements(results, { } = {}) { const tidiedResults = tidyResults(results); - const filteredResults = - (filterType - ? tidiedResults.filter(result => result.referenceType === filterType) - : tidiedResults); + let filteredResults = tidiedResults; + + if (filterType) { + filteredResults = filteredResults + .filter(result => result.referenceType === filterType); + } + + if (!filterType) { + filteredResults = filteredResults + .filter(result => { + if (result.referenceType !== 'track') return true; + if (result.data.classification !== 'single') return true; + return !filteredResults.find(otherResult => { + if (otherResult.referenceType !== 'album') return false; + return otherResult.name === result.parentName; + }); + }); + } + + filteredResults = filteredResults while (info.results.firstChild) { info.results.firstChild.remove(); @@ -992,7 +1012,9 @@ function generateSidebarSearchResult(result, results) { openAlbum(result.directory); preparedSlots.kindString = - info.albumResultKindString; + (result.data.classification === 'single' + ? info.singleResultKindString + : info.albumResultKindString); break; } -- cgit 1.3.0-6-gf8a5