-
Notifications
You must be signed in to change notification settings - Fork 0
features file selection and loading
Active contributors: Douwe de Vries
File loading lets users choose two local CSV files, parse them safely, detect available columns, and prepare a session for mapping. It works through browser multipart uploads and desktop raw IPC byte uploads.
frontend/src/components/FileSelector.tsx
frontend/src/components/app/FileSelectionStep.tsx
frontend/src/hooks/useWorkflowComparisonActions.ts
frontend/src/services/tauri.ts
src/backend/workflow.rs
src/data/csv_loader.rs
| Name | File | Description |
|---|---|---|
FileSelectionStep |
frontend/src/components/app/FileSelectionStep.tsx |
Step 1 UI for File A, File B, and loading snapshots. |
loadFile |
frontend/src/services/tauri.ts |
Browser/Tauri file upload abstraction. |
CsvLoadSource |
src/backend/workflow.rs |
Backend input enum for file paths or bytes. |
LoadedCsv |
src/backend/workflow.rs |
Parsed CSV plus column metadata and response payload. |
load_csv_from_bytes |
src/data/csv_loader.rs |
CSV parsing entry point for uploaded bytes. |
graph TD
Select[User chooses CSV] --> Service[loadFile]
Service -->|browser| Multipart[HTTP multipart]
Service -->|desktop| RawIPC[Tauri raw IPC bytes]
Multipart --> Workflow[load_csv_workflow]
RawIPC --> Workflow
Workflow --> Parser[src/data/csv_loader.rs]
Workflow --> Virtual[src/data/json_fields.rs]
Workflow --> Session[apply_loaded_csv_for_session]
Loading either file advances data_revision, stores CSV data and column metadata, clears stale comparison results, and refreshes suggested mappings when both files are present.
The frontend stores headers, virtualHeaders, columns, and rowCount in AppState through frontend/src/hooks/useComparisonWorkflow.reducer.ts. The backend response is created by src/presentation/responses.rs.
Change file constraints in src/backend/workflow.rs and frontend/src/services/contracts.ts. Change parsing behavior in src/data/csv_loader.rs. Change the selection UI in frontend/src/components/FileSelector.tsx or frontend/src/components/app/FileSelectionStep.tsx.
| File | Purpose |
|---|---|
frontend/src/components/FileSelector.tsx |
CSV picker UI. |
frontend/src/hooks/useWorkflowComparisonActions.ts |
File load action and stale-response guard. |
frontend/src/services/tauri.ts |
Upload transport abstraction. |
src/backend/workflow.rs |
File workflow and session application. |
src/data/csv_loader.rs |
CSV decode and parse logic. |