phosphat-report-app/EDIT_REPORT_IMPLEMENTATION.md

71 lines
2.0 KiB
Markdown

# Edit Report Implementation Summary
## What Was Done
I've started creating a dedicated edit route at `app/routes/reports_.$id.edit.tsx` that mirrors the structure of `reports_.new.tsx` but with the following key differences:
### Locked Fields (Cannot be edited):
1. **Report Date** - Displayed as read-only
2. **Shift** - Displayed as read-only badge
3. **Area** - Displayed as read-only
4. **Dredger Location** - Displayed as read-only
5. **Reclamation Location** - Displayed as read-only
### Editable Fields (3 Steps):
**Step 1: Pipeline Details**
- Dredger Line Length
- Shore Connection
- Reclamation Height (Base & Extra)
- Pipeline Length (Main, Ext1, Reserve, Ext2)
**Step 2: Equipment & Time Sheet**
- Equipment Statistics (Auto-calculated from timesheet)
- Foreman selection
- Workers selection (with autocomplete)
- Time Sheet entries
**Step 3: Stoppages & Notes**
- Stoppage entries
- Additional notes
## Next Steps Required
Due to file size limitations, the implementation needs to be completed with:
1. **Helper Functions** (same as new report):
- `calculateTimeDifference`
- `calculateStoppageTime`
- Time sheet management functions
- Stoppage management functions
- Worker selection functions
2. **JSX Render** with 3 steps showing:
- Locked fields display at the top
- Step 1: Pipeline details form
- Step 2: Equipment & timesheet
- Step 3: Stoppages & notes
- Navigation buttons
3. **Update reports.tsx** to change Edit button:
```tsx
<Link
to={`/reports/${report.id}/edit`}
className="text-indigo-600 hover:text-indigo-900"
>
Edit
</Link>
```
## File Structure
- Route: `/reports/:id/edit`
- File: `app/routes/reports_.$id.edit.tsx`
- Uses same multi-step wizard as new report
- Preserves all existing data
- Updates workers via ShiftWorker table
## Permissions
- Regular users (level 1): Can only edit their latest report
- Supervisors/Admins (level 2+): Can edit any report
- Cannot change core identifying fields (date, shift, locations)