You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Allow to filter on the Dashboard page (#1706)
* feat: implement dashboard filters component and integrate with dashboard page
* factor out filterpopover into a shared component, reuse on Dashboard and LLM Logs page
* feat: add data-testid attributes to FilterPopover for E2E tests
Add data-testid="filters-trigger-button" on the popover trigger button,
data-testid="filters-search-input" on the search input, and
data-testid="filter-item-{category}-{value}" on each filter item.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add triggerTestId to DateTimePickerWithRange on dashboard
Add triggerTestId="filter-date-range" to match the logs page convention,
enabling E2E tests to target the date range picker on the dashboard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: handle boolean filter values in dashboard handleFilterChange
The handler only processed array values, silently dropping boolean
filter changes like missing_cost_only. Add missing_cost_only to the
URL key map and branch on typeof values to convert booleans to strings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: extract parseCsvParam helper to deduplicate URL state parsing
Replace 8 near-identical useMemo hooks that parse comma-separated URL
params with a shared parseCsvParam helper function.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: move dateToRfc3339Local to shared utility module
Move dateToRfc3339Local from logs/views/filters.tsx to lib/utils/date.ts
so other features can discover and reuse it. Keep a re-export from the
original location for backwards compatibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: only apply lowercase to Status filter labels in FilterPopover
The lowercase CSS class was applied unconditionally to all filter labels,
which incorrectly lowercased model names and provider names. Restrict it
to the Status category only.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: replace loading placeholder strings with empty arrays and spinner
FILTER_OPTIONS previously injected placeholder strings like "Loading
providers..." as selectable option values. Replace with empty arrays
while loading and render a per-group loading spinner instead, ensuring
isSelected and onSelect never receive placeholder strings as values.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: compute selectedCount once in FilterPopover
getSelectedCount() was called twice in the JSX (condition check and
display). Compute the value once before the return to avoid redundant
iteration over the filters object.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: extract resolveValueForCategory helper in FilterPopover
Deduplicate the name-to-ID resolution logic that was repeated in both
handleFilterSelect and isSelected into a single resolveValueForCategory
helper function.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
0 commit comments