report-fetch-request-ui #7

Merged
aetos merged 20 commits from report-fetch-request-ui into main 2026-05-24 17:23:03 +00:00
Owner

MR: Fetch Request Pipeline, Report Snapshots, and Admin Filtering

Summary

Adds fetch request pipeline UI, report snapshot manager, snapshot selector on dashboard, and client-side in-memory filtering for the admin panel. Also overhauls the Home page with feature cards and adds navigation links.

Changes

New Pages

  • /fetch-requests — Upload bank statements (two-step: upload file, then configure source) or configure email ingestion. Table shows fingerprint (with copy), source type, account, status (color-coded chip), and created date.
  • /reports — Generate cached report snapshots with filters (ignore self, date range, amount range). Table shows snapshot ID (with copy), creation time, and query summary chips.

Dashboard

  • Snapshot selector autocomplete dropdown (formatted "Snapshot from {date}"), passes snapshot_id to useReport
  • Styled to match other filter controls (caption above, auto-height)

Admin — In-Memory Filtering

  • FilterBar component: collapsible, Dashboard-style column layout with caption + autocomplete/range/date inputs per filterable field
  • FilterAutocomplete component: multi-select, free solo, checkmark ticks, selected-first sort frozen while dropdown open (prevents scroll reset)
  • applyClientFilters in ResourceView: handles number range, datetime range, array (object/string elements), non-relation objects, boolean, primitive exact match
  • Config-driven via filterOptions: { mode: "client", fields: [...] } in openapi-config.ts
  • Mobile view: each filter takes full width (flex: "0 0 100%"), no horizontal squeeze
  • rowCount omitted in client pagination mode (suppresses MUI X warning)

Navigation & Home

  • Header nav links: Dashboard, Fetch, Reports
  • Home page redesign: gradient hero, "Import Data" CTA, 4 feature cards (Dashboard, Fetch Requests, Report Snapshots, Admin) with accent-colored hover effects

React-OpenAPI Library

  • filterOptions (mode + fields) on ResourceOverride and ResourceConfig types
  • EnhancedTable mobile pagination (10 per page with Prev/Next, prevents browser hang with 10000 records)
  • useResource accepts filterOptions from loader

Misc

  • public/favicon.png added, proper image/png type in index.html
  • 24 files changed, ~1541 insertions, ~100 deletions

Files Changed (24)

File Change
src/FetchRequests.tsx +336 — new page
src/ReportSnapshots.tsx +273 — new page
src/features/fetch-requests/ +96 — models, hooks, index
src/features/report-snapshots/ +40 — models, hooks, index
src/Dashboard.tsx +58 — snapshot selector
src/Home.tsx +224 — redesign with feature cards
src/Header.tsx +26 — nav links
src/main.jsx +4 — routes
react-openapi/components/FilterBar.tsx +313 — new component
react-openapi/components/ResourceView.tsx +151 — client filtering
react-openapi/components/EnhancedTable.tsx +62 — mobile pagination
react-openapi/types/config.ts +7 — filterOptions type
react-openapi/types/overrides.ts +5 — filterOptions type
react-openapi/utils/openapi_loader.ts +8 — load filterOptions
react-openapi/hooks/useResource.ts +6 — filterOptions passthrough
react-openapi/index.ts +3 — exports
src/openapi-config.ts +15 — expenses config
src/features/report/useReport.ts +13 — snapshot_id support
index.html +1 — favicon link
public/favicon.png +2910 bytes
## MR: Fetch Request Pipeline, Report Snapshots, and Admin Filtering ### Summary Adds fetch request pipeline UI, report snapshot manager, snapshot selector on dashboard, and client-side in-memory filtering for the admin panel. Also overhauls the Home page with feature cards and adds navigation links. ### Changes **New Pages** - `/fetch-requests` — Upload bank statements (two-step: upload file, then configure source) or configure email ingestion. Table shows fingerprint (with copy), source type, account, status (color-coded chip), and created date. - `/reports` — Generate cached report snapshots with filters (ignore self, date range, amount range). Table shows snapshot ID (with copy), creation time, and query summary chips. **Dashboard** - Snapshot selector autocomplete dropdown (formatted "Snapshot from {date}"), passes `snapshot_id` to `useReport` - Styled to match other filter controls (caption above, auto-height) **Admin — In-Memory Filtering** - `FilterBar` component: collapsible, Dashboard-style column layout with caption + autocomplete/range/date inputs per filterable field - `FilterAutocomplete` component: multi-select, free solo, checkmark ticks, selected-first sort frozen while dropdown open (prevents scroll reset) - `applyClientFilters` in `ResourceView`: handles number range, datetime range, array (object/string elements), non-relation objects, boolean, primitive exact match - Config-driven via `filterOptions: { mode: "client", fields: [...] }` in `openapi-config.ts` - Mobile view: each filter takes full width (`flex: "0 0 100%"`), no horizontal squeeze - `rowCount` omitted in client pagination mode (suppresses MUI X warning) **Navigation & Home** - Header nav links: Dashboard, Fetch, Reports - Home page redesign: gradient hero, "Import Data" CTA, 4 feature cards (Dashboard, Fetch Requests, Report Snapshots, Admin) with accent-colored hover effects **React-OpenAPI Library** - `filterOptions` (mode + fields) on `ResourceOverride` and `ResourceConfig` types - `EnhancedTable` mobile pagination (10 per page with Prev/Next, prevents browser hang with 10000 records) - `useResource` accepts `filterOptions` from loader **Misc** - `public/favicon.png` added, proper `image/png` type in index.html - 24 files changed, ~1541 insertions, ~100 deletions ### Files Changed (24) | File | Change | |------|--------| | `src/FetchRequests.tsx` | +336 — new page | | `src/ReportSnapshots.tsx` | +273 — new page | | `src/features/fetch-requests/` | +96 — models, hooks, index | | `src/features/report-snapshots/` | +40 — models, hooks, index | | `src/Dashboard.tsx` | +58 — snapshot selector | | `src/Home.tsx` | +224 — redesign with feature cards | | `src/Header.tsx` | +26 — nav links | | `src/main.jsx` | +4 — routes | | `react-openapi/components/FilterBar.tsx` | +313 — new component | | `react-openapi/components/ResourceView.tsx` | +151 — client filtering | | `react-openapi/components/EnhancedTable.tsx` | +62 — mobile pagination | | `react-openapi/types/config.ts` | +7 — filterOptions type | | `react-openapi/types/overrides.ts` | +5 — filterOptions type | | `react-openapi/utils/openapi_loader.ts` | +8 — load filterOptions | | `react-openapi/hooks/useResource.ts` | +6 — filterOptions passthrough | | `react-openapi/index.ts` | +3 — exports | | `src/openapi-config.ts` | +15 — expenses config | | `src/features/report/useReport.ts` | +13 — snapshot_id support | | `index.html` | +1 — favicon link | | `public/favicon.png` | +2910 bytes |
aetos added 20 commits 2026-05-24 17:22:50 +00:00
aetos merged commit d4a79c785d into main 2026-05-24 17:23:03 +00:00
aetos deleted branch report-fetch-request-ui 2026-05-24 17:23:04 +00:00
aetos referenced this issue from a commit 2026-05-24 17:23:04 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: apps/khata-ui#7
No description provided.