diff --git a/app/dashboard/kelola-data/CetakInstanModal.tsx b/app/dashboard/kelola-data/CetakInstanModal.tsx index 13253cf..cbe6bd3 100644 --- a/app/dashboard/kelola-data/CetakInstanModal.tsx +++ b/app/dashboard/kelola-data/CetakInstanModal.tsx @@ -30,6 +30,8 @@ interface PenggunaData { nama_anak: string jenis_kelamin: string | null tanggal_lahir: string | null + username?: string + password?: string } const MONTHS = [ @@ -203,7 +205,7 @@ export function CetakInstanModal() { logging: false, }) - const imgData = canvas.toDataURL('image/jpeg', 0.95) + const imgData = canvas.toDataURL('image/png') // Safety check: ensure imgData is a valid Data URI if (!imgData || !imgData.startsWith('data:image/')) { @@ -217,7 +219,7 @@ export function CetakInstanModal() { const imgH = (canvas.height * pageW) / canvas.width if (imgH <= pageH) { - pdf.addImage(imgData, 'JPEG', 0, 0, pageW, imgH) + pdf.addImage(imgData, 'PNG', 0, 0, pageW, imgH) } else { let yPos = 0 const sliceH = canvas.width * (pageH / pageW) @@ -228,7 +230,7 @@ export function CetakInstanModal() { const ctx = sliceCanvas.getContext('2d')! ctx.drawImage(canvas, 0, -yPos) if (yPos > 0) pdf.addPage() - pdf.addImage(sliceCanvas.toDataURL('image/jpeg', 0.95), 'JPEG', 0, 0, pageW, pageH) + pdf.addImage(sliceCanvas.toDataURL('image/png'), 'PNG', 0, 0, pageW, pageH) yPos += sliceH } } @@ -281,6 +283,8 @@ export function CetakInstanModal() { const isStunting = activePrintData?.row.status_stunting === true const tanggalCetak = new Date().toLocaleDateString('id-ID', { day: 'numeric', month: 'long', year: 'numeric' }) + const tanggalUpload = activePrintData ? formatTgl(activePrintData.row.tanggal_upload) : '-' + const tanggalLahir = activePrintData ? formatTgl(activePrintData.pengguna.tanggal_lahir) : '-' return ( <> @@ -431,128 +435,182 @@ export function CetakInstanModal() { backgroundColor: '#ffffff', fontFamily: 'Arial, Helvetica, sans-serif', color: '#111111', - padding: '48px 56px', + padding: '32px 48px', boxSizing: 'border-box', }} > {/* Header */} -
| {h} | + {['Tinggi', 'Berat', 'Z-Score', 'Status Stunting', 'Posyandu', 'Tgl Pemeriksaan'].map(h => ( +{h} | ))}||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {activePrintData.row.tinggi_badan} cm | -{activePrintData.row.berat_badan} kg | -{activePrintData.row.z_score} SD | -- - {isStunting ? 'Stunting' : 'Normal'} + | {activePrintData.row.tinggi_badan ?? '-'} cm | +{activePrintData.row.berat_badan ?? '-'} kg | +{activePrintData.row.z_score ?? '-'} SD | ++ + {isStunting ? '⚠ Stunting' : '✓ Normal'} | -{activePrintData.row.nama_posyandu} | -{formatTgl(activePrintData.row.tanggal_upload)} | +{activePrintData.row.nama_posyandu ?? '-'} | +{tanggalUpload} |