epam / epam/statgpt-admin-frontend
[Grade C]: Support uploading multiple files at once for Grade C (discovery) datasets
- Dominant language
- TypeScript
- Stars
- 18
- Forks
- 0
- Avg merge
- 15h 5m
- Merged PRs (30d)
- 19
Description
### StatGPT Admin Frontend version
0.1.0
### What is the problem this feature will solve?
The Grade C upload modal (src/components/DiscoveryDatasetsView/UploadModal/UploadModal.tsx) lets a user pick a FileList via LoadFileAreaField, but only ever reads and sends files[0] — formData.append('file', files[0], files[0].name). The backend endpoint it calls currently takes exactly one file too, so this is a one-file-at-a-time flow end to end.
Today Admin need to upload each file separately, in might be time consuming with plenty of files
### What is the feature you are proposing to solve the problem?
Update the modal to build one request that carries every selected file, matching the batch contract epam/statgpt-backend#658 adds server-side
Acceptance criteria
- [ ] A user can select 2+ files via the Grade C upload modal (click-to-browse and drag-and-drop) and see all of them listed, with the ability to remove one before uploading.
- [ ] Uploading multiple valid files sends one request and displays the combined summary, including the per-file rows-read/rows-skipped breakdown.
- [ ] A duplicate (agency, dataset id) key across two selected files surfaces in the error table with both files/rows identified.
- [ ] replace mode's checkbox copy correctly describes deleting records absent from the whole batch, not per file.
- [ ] Selecting and uploading a single file behaves exactly as it does today (no regression).
### What alternatives have you considered?
_No response_
Contributor guide
Research direction
Start with src/components/DiscoveryDatasetsView/UploadModal/UploadModal.tsx and trace how LoadFileAreaField selections become the current upload request. Review the batch contract in epam/statgpt-backend#658, then verify click-to-browse, drag-and-drop, removal, combined summaries, duplicate reporting, replace-mode wording, and unchanged single-file behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100