From 4d01ad7d1d4f13ed112eaea948ac45bf31f11e0e Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Thu, 23 Apr 2026 16:22:05 +0700 Subject: [PATCH] fix: hide phase selection, abk assignment, and activity checklist form when kandang is empty --- .../daily-checklist/DailyChecklistContent.tsx | 563 +++++++++--------- 1 file changed, 294 insertions(+), 269 deletions(-) diff --git a/src/figma-make/components/pages/daily-checklist/DailyChecklistContent.tsx b/src/figma-make/components/pages/daily-checklist/DailyChecklistContent.tsx index e0a95cd0..4024b581 100644 --- a/src/figma-make/components/pages/daily-checklist/DailyChecklistContent.tsx +++ b/src/figma-make/components/pages/daily-checklist/DailyChecklistContent.tsx @@ -98,6 +98,8 @@ export function DailyChecklistContent() { const [emptyKandang, setEmptyKandang] = useState(false); const [emptyKandangEndDate, setEmptyKandangEndDate] = useState(''); + const isKandangEmpty = selectedCategory === 'empty_kandang'; + const { options: kandangOptions, isLoadingMore: isLoadingMoreKandang, @@ -298,7 +300,7 @@ export function DailyChecklistContent() { if (isResponseError(checklist)) { console.error('Error upserting checklist:', checklist.message); - toast.error('Gagal memuat checklist'); + toast.error('Gagal memuat checklist: ' + checklist.message); return; } @@ -311,6 +313,12 @@ export function DailyChecklistContent() { if (isResponseError(existingPhases)) { console.error('Error loading phases:', existingPhases.message); + } else if ( + existingPhases && + existingPhases.data && + existingPhases.data.phases.length === 0 + ) { + toast.success('Berhasil membuat daily checklist!'); } else if ( existingPhases && existingPhases.data && @@ -1118,7 +1126,7 @@ export function DailyChecklistContent() { {/* Phase Selection Section */} - {dailyChecklistId && ( + {!isKandangEmpty && dailyChecklistId && (
{isChecklistStatusDraft && (
@@ -1159,298 +1167,314 @@ export function DailyChecklistContent() { )} {/* ABK Assignment Section */} - {dailyChecklistId && selectedPhaseIds.length > 0 && ( -
- {isChecklistStatusDraft && ( -
- - -
- )} - - {selectedEmployees.length > 0 ? ( -
- {selectedEmployees.map((emp) => ( - 0 && ( +
+ {isChecklistStatusDraft && ( +
+ + - )} - - ))} -
- ) : ( -

Belum ada ABK dipilih

- )} -
- )} + + Tambah ABK + +
+ )} + + {selectedEmployees.length > 0 ? ( +
+ {selectedEmployees.map((emp) => ( + + {emp.name} + {isChecklistStatusDraft && ( + + )} + + ))} +
+ ) : ( +

+ Belum ada ABK dipilih +

+ )} +
+ )} {/* Activity Checklist Table */} - {dailyChecklistId && - selectedPhaseIds.length > 0 && - selectedEmployees.length > 0 ? ( -
-

- Checklist Aktivitas -

- {Object.keys(activitiesByPhase).length > 0 ? ( -
- - - - - {sortedSelectedEmployees.map((emp) => ( - - ))} - - - - - {Object.keys(groupActivitiesByPhase()).flatMap( - (phaseId) => { - const phaseData = groupActivitiesByPhase()[phaseId]; - const { phase, timeGroups } = phaseData; - - const timeTypes = Object.keys(timeGroups).sort( - (a, b) => - TIME_TYPE_ORDER.indexOf(a) - - TIME_TYPE_ORDER.indexOf(b) - ); - - // Count total activities in this phase - const totalActivities = timeTypes.reduce( - (sum, timeType) => - sum + timeGroups[timeType].length, - 0 - ); - - // Build all rows for this phase - const rows = []; - - // PHASE Header (Main parent) - BLUE - rows.push( - - + + {sortedSelectedEmployees.map((emp) => ( + + ))} + + + ); + }); + }); + + return rows; + } + )} + +
- Aktivitas - - {emp.name} - - Catatan -
+ {dailyChecklistId && + selectedPhaseIds.length > 0 && + selectedEmployees.length > 0 ? ( +
+

+ Checklist Aktivitas +

+ {Object.keys(activitiesByPhase).length > 0 ? ( +
+ + + + + {sortedSelectedEmployees.map((emp) => ( + - ); + {emp.name} + + ))} + + + + + {Object.keys(groupActivitiesByPhase()).flatMap( + (phaseId) => { + const phaseData = + groupActivitiesByPhase()[phaseId]; + const { phase, timeGroups } = phaseData; - // TIME_TYPE sub-headers and activities - timeTypes.forEach((timeType) => { - const activities = timeGroups[timeType]; - const hasMultipleTimeTypes = timeTypes.length > 1; + const timeTypes = Object.keys(timeGroups).sort( + (a, b) => + TIME_TYPE_ORDER.indexOf(a) - + TIME_TYPE_ORDER.indexOf(b) + ); - // TIME Header (optional, only if phase has multiple time types) - GRAY SOFT - if (hasMultipleTimeTypes) { + // Count total activities in this phase + const totalActivities = timeTypes.reduce( + (sum, timeType) => + sum + timeGroups[timeType].length, + 0 + ); + + // Build all rows for this phase + const rows = []; + + // PHASE Header (Main parent) - BLUE rows.push( ); - } - // ACTIVITY rows (Child rows with checkboxes) - activities.sort((a, b) => - a.name.localeCompare(b.name, undefined, { - sensitivity: 'base', - }) - ); + // TIME_TYPE sub-headers and activities + timeTypes.forEach((timeType) => { + const activities = timeGroups[timeType]; + const hasMultipleTimeTypes = + timeTypes.length > 1; - activities.forEach((activity, index) => { - const taskId = - taskIdsByPhaseActivityId[activity.id]; - const indentClass = hasMultipleTimeTypes - ? 'pl-12' - : 'pl-8'; - - rows.push( - - - {sortedSelectedEmployees.map((emp) => ( - - ))} - - - ); - }); - }); + + + ); + } - return rows; - } - )} - -
+ Aktivitas + -
- - {phase.name} - - - {totalActivities} aktivitas - -
- -
+ Catatan +
- - {TIME_TYPE_LABELS[timeType]} ( - {activities.length} aktivitas) - +
+ + {phase.name} + + + {totalActivities} aktivitas + +
-

- {activity.name} -

- {activity.description && ( -

- {activity.description} -

- )} -
- - handleCheckboxChange( - String(activity.id), - String(emp.id), - e.target.checked - ) - } - disabled={!isChecklistStatusDraft} - className='checkbox-clean' - /> - - 0 - ? assignments[taskId]?.[ - selectedEmployees[0].id - ]?.note || '' - : '' - } - onChange={(e) => { - if (selectedEmployees.length > 0) { - handleNoteChange( - String(activity.id), - String(selectedEmployees[0].id), - e.target.value - ); - } - }} - disabled={!isChecklistStatusDraft} - /> -
+ + {TIME_TYPE_LABELS[timeType]} ( + {activities.length} aktivitas) + +
+ // ACTIVITY rows (Child rows with checkboxes) + activities.sort((a, b) => + a.name.localeCompare(b.name, undefined, { + sensitivity: 'base', + }) + ); + + activities.forEach((activity, index) => { + const taskId = + taskIdsByPhaseActivityId[activity.id]; + const indentClass = hasMultipleTimeTypes + ? 'pl-12' + : 'pl-8'; + + rows.push( +
+

+ {activity.name} +

+ {activity.description && ( +

+ {activity.description} +

+ )} +
+ + handleCheckboxChange( + String(activity.id), + String(emp.id), + e.target.checked + ) + } + disabled={!isChecklistStatusDraft} + className='checkbox-clean' + /> + + 0 + ? assignments[taskId]?.[ + selectedEmployees[0].id + ]?.note || '' + : '' + } + onChange={(e) => { + if ( + selectedEmployees.length > 0 + ) { + handleNoteChange( + String(activity.id), + String( + selectedEmployees[0].id + ), + e.target.value + ); + } + }} + disabled={!isChecklistStatusDraft} + /> +
+
+ ) : ( +
+ +

+ Tidak Ada Aktivitas +

+

+ Tidak ada aktivitas untuk fase yang dipilih. Silakan + tambahkan aktivitas di Master Aktivitas. +

+
+ )}
) : (
- -

- Tidak Ada Aktivitas -

-

- Tidak ada aktivitas untuk fase yang dipilih. Silakan - tambahkan aktivitas di Master Aktivitas. -

+ {!dailyChecklistId ? ( +
+ +

+ Mulai Checklist Baru +

+

+ Pilih tanggal, kandang, dan kategori untuk memulai + checklist harian Anda. +

+
+ ) : selectedPhaseIds.length === 0 ? ( +
+ +

+ Pilih Fase / Tahap +

+

+ Klik tombol {'"'}Pilih Fase{'"'} untuk memilih tahap + aktivitas yang akan dikerjakan. +

+
+ ) : ( +
+ +

+ Pilih ABK +

+

+ Klik tombol {'"'}Tambah ABK{'"'} untuk memilih pekerja + yang akan ditugaskan. +

+
+ )}
)} -
- ) : ( -
- {!dailyChecklistId ? ( -
- -

- Mulai Checklist Baru -

-

- Pilih tanggal, kandang, dan kategori untuk memulai - checklist harian Anda. -

-
- ) : selectedPhaseIds.length === 0 ? ( -
- -

- Pilih Fase / Tahap -

-

- Klik tombol {'"'}Pilih Fase{'"'} untuk memilih tahap - aktivitas yang akan dikerjakan. -

-
- ) : ( -
- -

- Pilih ABK -

-

- Klik tombol {'"'}Tambah ABK{'"'} untuk memilih pekerja - yang akan ditugaskan. -

-
- )} -
+ )} - {dailyChecklistId && + {!isKandangEmpty && + dailyChecklistId && selectedPhaseIds.length > 0 && selectedEmployees.length > 0 && ( <> @@ -1548,7 +1572,8 @@ export function DailyChecklistContent() { )} {/* Action Buttons */} - {dailyChecklistId && + {!isKandangEmpty && + dailyChecklistId && selectedPhaseIds.length > 0 && selectedEmployees.length > 0 && isChecklistStatusDraft && (