Problem:
- Saat user klik X button untuk hapus preview image/file
- Form state masih menyimpan imageId/fileId lama
- Saat submit, data lama tetap terkirim
- User tidak bisa benar-benar menghapus image/file
Solution:
- Clear apbdesState.edit.form.imageId saat hapus preview gambar
- Clear apbdesState.edit.form.fileId saat hapus preview dokumen
- Now user can truly make image/file empty
Files changed:
- src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Changes:
Backend (updt.ts, index.ts):
- Update FormUpdateBody: imageId?: string | null
- Update Elysia schema: t.Optional(t.String())
- Handle null/undefined values when updating
UI (edit/page.tsx):
- Remove mandatory validation for imageId and fileId
- Update labels to show '(Opsional)'
- Simplify handleSubmit logic (no validation check)
- Keep existing file IDs if no new upload
User Flow:
Before: Edit required imageId and fileId to be present
After: Can update APBDes without files, preserve existing or set to null
Files changed:
- src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts
- src/app/api/[[...slugs]]/_lib/landing_page/apbdes/index.ts
- src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Fix backend updt.ts to preserve realisasiItems from old items
- Load existing items with realisasiItems before delete
- Re-create realisasiItems for new items based on kode match
- Recalculate totalRealisasi, selisih, persentase after restore
- Update frontend state to handle realisasi fields
- Add realisasi, selisih, persentase to ApbdesItemSchema
- Fix edit.load() to map totalRealisasi → realisasi
- Fix edit.update() to omit calculated fields when sending to backend
- Update edit page.tsx to display realisasi data
- Fix load data to use item.totalRealisasi (not item.realisasi)
- Add Realisasi, Selisih, % columns to items table
- Update handleAddItem and handleReset to preserve realisasi fields
Root cause: Backend was resetting totalRealisasi=0 for all items on update,
and frontend was accessing wrong field name (realisasi vs totalRealisasi)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Update API schema to support name, deskripsi, and jumlah fields
- Enhance state management with additional form fields
- Add input fields for name, description, and total amount in create/edit pages
- Display description and total amount in detail page
- Fix APBDes component order in landing page
- Update TypeScript types and Prisma schema integration
API Changes:
- POST /api/landingpage/apbdes/create: Added optional fields (name, deskripsi, jumlah)
- PUT /api/landingpage/apbdes/🆔 Added optional fields (name, deskripsi, jumlah)
Admin UI Changes:
- create/page.tsx: Add TextInput for name, deskripsi, and jumlah
- edit/page.tsx: Add TextInput for name, deskripsi, and jumlah; improve reset functionality
- [id]/page.tsx: Display deskripsi and jumlah if available
- page.tsx: Minor formatting fix
- _state/apbdes.ts: Update Zod schema and default form with new fields
Landing Page:
- Move Apbdes component to top of stack for better visibility
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>