ai insight rework #2
This commit is contained in:
1 parent
9d76f54d33
commit
e1987d6999
39 files changed
+2311
-830
No files matched your search
@@ -98,8 +98,8 @@ const DashboardCloseCycleControls: React.FC = () => {
|
||||
message={
|
||||
<p>
|
||||
Permintaan tutup akan dikirim ke pusat dengan tanggal usulan{' '}
|
||||
<strong>{formatDateId(proposedCloseDate)}</strong>. GM harus menyetujui sebelum
|
||||
siklus ditutup. Anda masih bisa membatalkan selama status menunggu GM.
|
||||
<strong>{formatDateId(proposedCloseDate)}</strong>. GM harus menyetujui sebelum siklus
|
||||
ditutup. Anda masih bisa membatalkan selama status menunggu GM.
|
||||
</p>
|
||||
}
|
||||
confirmLabel="Ya, ajukan tutup"
|
||||
@@ -126,8 +126,8 @@ const DashboardCloseCycleControls: React.FC = () => {
|
||||
title="Batalkan permintaan tutup?"
|
||||
message={
|
||||
<p>
|
||||
Permintaan tutup ke pusat akan dibatalkan. Siklus tetap aktif dan dapat diajukan
|
||||
tutup lagi nanti.
|
||||
Permintaan tutup ke pusat akan dibatalkan. Siklus tetap aktif dan dapat diajukan tutup
|
||||
lagi nanti.
|
||||
</p>
|
||||
}
|
||||
confirmLabel="Ya, batalkan"
|
||||
|
||||
@@ -34,9 +34,7 @@ const DashboardReportCtas: React.FC<DashboardReportCtasProps> = ({
|
||||
{label(hasEndCycleSnapshot)} Akhir Siklus
|
||||
</button>
|
||||
</div>
|
||||
{!cycleClosed && (
|
||||
<p className="text-xs text-slate-500">Tersedia setelah siklus ditutup</p>
|
||||
)}
|
||||
{!cycleClosed && <p className="text-xs text-slate-500">Tersedia setelah siklus ditutup</p>}
|
||||
</div>
|
||||
);
|
||||
|
||||
|
||||
@@ -121,10 +121,7 @@ const ReportPreviewOverlay: React.FC<Props> = ({ open, reportType, onClose }) =>
|
||||
await exportElementToPdf(printRef.current, filename);
|
||||
}, [payload, isEndCycle]);
|
||||
|
||||
const summary = useMemo(
|
||||
() => (payload ? buildReportSummary(payload) : null),
|
||||
[payload]
|
||||
);
|
||||
const summary = useMemo(() => (payload ? buildReportSummary(payload) : null), [payload]);
|
||||
|
||||
if (!open) return null;
|
||||
|
||||
|
||||
@@ -2,35 +2,31 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import DashboardCloseCycleControls from '../DashboardCloseCycleControls.tsx';
|
||||
|
||||
const {
|
||||
requestCloseMock,
|
||||
cancelCloseRequestMock,
|
||||
reloadMock,
|
||||
farmState,
|
||||
authState,
|
||||
} = vi.hoisted(() => ({
|
||||
requestCloseMock: vi.fn().mockResolvedValue({}),
|
||||
cancelCloseRequestMock: vi.fn().mockResolvedValue({}),
|
||||
reloadMock: vi.fn().mockResolvedValue(undefined),
|
||||
farmState: {
|
||||
selectedCycle: {
|
||||
id: 5,
|
||||
start_date: '2026-09-01',
|
||||
end_date: null,
|
||||
status: 'active',
|
||||
proposed_end_date: null,
|
||||
visible_through_date: '2026-09-10',
|
||||
} as Record<string, unknown> | null,
|
||||
},
|
||||
authState: {
|
||||
user: {
|
||||
id: 1,
|
||||
user_name: 'staff',
|
||||
display_name: 'Staff',
|
||||
status: 'active',
|
||||
const { requestCloseMock, cancelCloseRequestMock, reloadMock, farmState, authState } = vi.hoisted(
|
||||
() => ({
|
||||
requestCloseMock: vi.fn().mockResolvedValue({}),
|
||||
cancelCloseRequestMock: vi.fn().mockResolvedValue({}),
|
||||
reloadMock: vi.fn().mockResolvedValue(undefined),
|
||||
farmState: {
|
||||
selectedCycle: {
|
||||
id: 5,
|
||||
start_date: '2026-09-01',
|
||||
end_date: null,
|
||||
status: 'active',
|
||||
proposed_end_date: null,
|
||||
visible_through_date: '2026-09-10',
|
||||
} as Record<string, unknown> | null,
|
||||
},
|
||||
},
|
||||
}));
|
||||
authState: {
|
||||
user: {
|
||||
id: 1,
|
||||
user_name: 'staff',
|
||||
display_name: 'Staff',
|
||||
status: 'active',
|
||||
},
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
vi.mock('../../../services/apiClient.ts', () => ({
|
||||
api: {
|
||||
|
||||
Reference in new issue
Block a user