Přeskočit na hlavní obsah

S3 — Filtrování (drawer/overlay)

Screen IDS3
Typ Sekundární
FázeMVP
Odhad4 h
Účel obrazovky

Bottom sheet nebo full-screen overlay s filtry pro seznam akcí. Uživatel vybere datum, žánr, místo, cenu a další kritéria. Real-time počet výsledků, možnost resetu.


Content Priority

  1. Header — „Filtrovat" s tlačítkem zavření (×), swipe-to-dismiss hint App Bar / Top NavigationIcon Button
  2. Datum range picker — od–do (calendar nebo date picker), min = dnes Date Range Picker
  3. Žánr / kategorie — multi-select chips (Rock, Pop, Klasika, Divadlo…) Chip / Filter Button
  4. Město / lokalita — multi-select chips Chip / Filter Button
  5. Místo konání — searchable select (vyhledávací pole + dropdown) Select / DropdownSearch Input
  6. Pořadatel — searchable select Select / DropdownSearch Input
  7. Cena — range slider (od X do Y Kč) Range Slider
  8. Dostupnost toggle — „Jen akce s volnými místy" (zapnuto/vypnuto) Toggle / Switch
  9. CTA „Zobrazit (N) výsledků" — primary button, dynamický počet N Primary Button
  10. „Resetovat filtry" — secondary text link Ghost/Text Button

Interakce

TriggerAkceCíl
Změna libovolného filtruReal-time API dotaz (debounced)Aktualizace N v CTA
Tap „Zobrazit (N) výsledků"Zavření overlay, aplikace filtrůP2 — Seznam akcí s filtrovanými výsledky
Tap „Resetovat filtry"Vymazání všech výběrůN = celkový počet, CTA „Zobrazit všechny"
Swipe dolůDismiss overlay bez aplikaceNávrat na P2, původní stav
Tap × / BackZavření bez aplikaceNávrat na P2
Scroll v overlayScrollovatelný obsah (dlouhé seznamy)Plynulý scroll

Stavy

StavPopisVizuální chování
Default (bez filtrů)Žádný filtr aktivníVšechny hodnoty prázdné, N = celkový počet
Active filtersNěkteré filtry vybrányChips / hodnoty zvýrazněny, N = filtrovaný počet
No results previewN = 0CTA disabled nebo „Žádné výsledky — upravte filtry", warning text
Loading countPo změně filtru, čeká na APISpinner u CTA nebo skeleton N

Edge Cases a Error States

ScénářŘešení
Všechny filtry aktivní → 0 výsledků„Žádné akce nevyhovují filtrům" + CTA „Resetovat filtry" prominentně
Datum od v minulostiDisabled v date pickeru, min = dnešek
Město bez míst konáníPrázdný dropdown nebo „V tomto městě zatím nemáme místa"
API timeout při countFallback „Zobrazit výsledky" bez N, count se načte po otevření P2
Velmi dlouhý seznam žánrůSearchable nebo grouped chips, max viditelných s „Více"
Uživatel mění filtry rychle za sebouDebounce 300–500 ms před API call pro count

Mobilní patterny a odlišení od webu

Co přebíráme

  • Sada filtrů (datum, žánr, místo, cena)
  • Reset filtrů
  • Dynamický počet výsledků

Co děláme jinak

  • Bottom sheet místo sidebar drawer — na webu jsou filtry v bočním panelu, na mobilu bottom sheet (snadnější reachability)
  • Range slider s haptic snaps — při posunu na mezní hodnoty lehký haptic feedback
  • Multi-select chips místo checkboxů — lépe ovladatelné na dotykové obrazovce, méně vizuálního clutteru
  • Searchable select pro místo/pořadatel — fullscreen search overlay místo dropdown (více místa pro výsledky)

Aplikované patterny

  • iOS: UISheetPresentationController pro bottom sheet, UISlider s custom track, UICollectionView pro chips
  • Android: ModalBottomSheet, Slider (Material 3) s hapticFeedbackEnabled, FilterChip s ChoiceFilter pro multi-select

Reference — Aktuální web

SCR-WEB-09: Filter drawer — chips, expandable filtry, Show Events CTA
Web ColosseumSCR-WEB-09Filter drawer — chips, expandable filtry, Show Events CTA

Reference — CineStar benchmark

CineStar využívá obdobné filtry (datum, lokalita, formát) v programu. Pro srovnání viz P2 — Seznam akcí reference.