Skip to content

feat(#96): GUI filtering and export for run archive - #100

Open
Allan-Nava wants to merge 2 commits into
mainfrom
feat/gui-filters-export
Open

Allan-Nava wants to merge 2 commits into
mainfrom
feat/gui-filters-export

Conversation

@Allan-Nava

Copy link
Copy Markdown
Member

Description

Add advanced filtering and export capabilities to the GUI archive view. Users can now explore run history with targeted filters and export results in standard formats (JSON/CSV).

Changes

  • HistoryPanel.jsx: Enhanced with filter UI and export buttons

    • Status filter (clean/knee/invalid)
    • Peak rate range filter (min/max)
    • Export to JSON (structured with metadata)
    • Export to CSV (RFC 4180 compliant)
  • gui/ui/src/lib/export.js (new): Export and filter logic

    • filterRuns(runs, filters) — filter by status and rate range
    • exportAsJSON(runs) — structured JSON with timestamp and count
    • exportAsCSV(runs) — tabular CSV with proper escaping
  • tests/ui/export.test.js (new): 5 unit tests

    • Filter logic by status and rate range
    • JSON export metadata and structure
    • CSV escaping (comma, quote handling)

Features

✅ Status filtering: clean (no abort) / knee (brake tripped) / invalid (generator issue)
✅ Rate filtering: set min/max peak req/s to show subset of runs
✅ JSON export: download filtered runs with timestamps and metadata
✅ CSV export: compatible with Excel, Google Sheets, data analysis tools
✅ Proper escaping: RFC 4180 CSV format (handles commas, quotes)

Testing

  • Unit tests: 5/5 passing
  • Filter logic verified with multi-status dataset
  • Export formats verified for valid structure and escaping

Related

Closes #96 (partial — further UX polish deferred to v1.20.1)

🤖 Generated with Claude Code

allan added 2 commits September 21, 2026 14:45
- HistoryPanel: filter controls for status (clean/knee/invalid) and peak rate range
- gui/ui/src/lib/export.js: filterRuns(), exportAsJSON(), exportAsCSV()
- Export button downloads filtered runs as JSON or CSV with proper escaping
- tests/ui/export.test.js: 5 tests for filter logic and export formats

Filter controls:
- Status dropdown: all / clean / knee / invalid
- Peak rate range: min/max inputs in req/s

Export formats:
- JSON: structured object with timestamp, count, and run array
- CSV: tabular format with proper quote/comma escaping (RFC 4180)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GUI: advanced filtering and data export

1 participant