Klik op een filter en alles reageert
Traditionele fotobeheerders tonen je elke filterwaarde, ongeacht wat je al hebt gekozen. Je kiest een land, dan een camera - en krijgt nul resultaten, omdat die camera daar nooit is gebruikt. Vallen en opstaan.
De filterpanelen van Gallery praten met elkaar. Kies Duitsland en het personenpaneel beperkt zich meteen tot personen die in Duitse foto's voorkomen. Het camerapaneel toont alleen camera's die in Duitsland zijn gebruikt. Tags, beoordelingen, mediatype - alles werkt mee.
Dit is faceted search - hetzelfde principe dat Amazon en eBay gebruiken. Elke zichtbare optie levert gegarandeerd resultaten op. Geen doodlopende paden, geen giswerk.
Zo werkt het
Eén API-aanvraag levert alle filtersuggesties in één keer op. Onder de motorkap draait de server zes parallelle query's - één per categorie (landen, camera's, personen, tags, beoordelingen, mediatype). Elke query past al je actieve filters toe behalve die van de eigen categorie, zodat je altijd ziet wat er nog mogelijk is bij je andere keuzes.
Wanneer je Duitsland kiest, laat de landen-query het landfilter weg (en toont alle landen die bij je andere filters passen), terwijl de camera-query het wél meeneemt (en alleen camera's toont die in Duitsland zijn gebruikt). Daarom voelt het meteen aan - één aanvraag, zes parallelle antwoorden.
Verweesde keuzes blijven zichtbaar
Als je Frankrijk kiest en daarna een cameramerk dat nooit in Frankrijk is gebruikt, verdwijnt Frankrijk niet - het wordt alleen gedimd. Zo zie je meteen waarom je resultaat leeg is en kun je de keuze met één klik ongedaan maken. Geen raadsel, geen frustratie.
Beoordelingen en mediatype passen zich ook aan
Het zijn niet alleen dropdowns die meebewegen. Als je gefilterde foto's allemaal 4 en 5 sterren hebben, verdwijnen de knoppen voor 1-2-3 sterren. Als er alleen foto's zijn en geen video's, verdwijnt de knop Video's. Elke knop weerspiegelt de werkelijkheid.
Slim debouncen
Veel snelle klikken worden gebundeld - de server wordt niet bestookt met aanvragen als je meerdere personen kiest of snel tags aan- en uitzet. Tijdgebonden wijzigingen (een jaar of maand kiezen) krijgen iets meer debounce-tijd, omdat de datumkiezer meer verkennend wordt gebruikt. Alle filters wissen gaat direct.