add pdf numbering finaal

This commit is contained in:
panggilsajarey 2026-06-01 18:27:45 +07:00
parent b7d51908d6
commit 6dec5a0470
6 changed files with 22 additions and 98 deletions

View File

@ -194,11 +194,16 @@ export function CetakInstanModal() {
setProgress({ current: i + 1, total: targets.length, name: b.nama_anak, mama: b.nama_orang_tua })
// --- Save to cetak_balita ---
await supabase.from('cetak_balita').insert({
const { error: dbError } = await supabase.from('cetak_balita').insert({
id_berkas: currentIdBerkas,
nama_balita: b.nama_anak,
tanggal_cetak: new Date().toISOString(),
})
if (dbError) {
throw new Error(dbError.message)
}
// --- Update template and wait for render ---
setActivePrintData({ pengguna: b, row: rowForMonth, allHasil: balitaHasil, idBerkas: currentIdBerkas })
// Give React and Recharts some time to finish rendering the hidden template

View File

@ -95,11 +95,16 @@ export function CetakPDFButton({ row, allData, pengguna }: Props) {
const currentIdBerkas = Date.now()
setIdBerkas(currentIdBerkas)
await supabase.from('cetak_balita').insert({
const { error: dbError } = await supabase.from('cetak_balita').insert({
id_berkas: currentIdBerkas,
nama_balita: pengguna.nama_anak,
tanggal_cetak: new Date().toISOString(),
})
if (dbError) {
throw new Error(dbError.message)
}
// Tunggu render React selesai (untuk menampilkan ID Berkas)
await new Promise(r => setTimeout(r, 500))

View File

@ -94,11 +94,16 @@ export function ExportPDFButton({ row, allData, pengguna }: Props) {
setIdBerkas(currentIdBerkas)
const { supabase } = await import('@/lib/supabase')
await supabase.from('cetak_balita').insert({
const { error: dbError } = await supabase.from('cetak_balita').insert({
id_berkas: currentIdBerkas,
nama_balita: pengguna.nama_anak,
tanggal_cetak: new Date().toISOString(),
})
if (dbError) {
throw new Error(dbError.message)
}
// Tunggu render React selesai (untuk menampilkan ID Berkas)
await new Promise(r => setTimeout(r, 500))

View File

@ -0,0 +1,4 @@
-- Menurunkan/menonaktifkan kebijakan Row-Level Security (RLS) pada tabel cetak_balita
-- Agar sama seperti tabel lainnya di proyek ini (Unrestricted) dan memperbolehkan input data dari aplikasi.
ALTER TABLE public.cetak_balita DISABLE ROW LEVEL SECURITY;

View File

@ -1,45 +0,0 @@
import { createClient } from '@supabase/supabase-js'
import * as fs from 'fs'
import * as path from 'path'
const envPath = path.join(process.cwd(), '.env.local')
const envContent = fs.readFileSync(envPath, 'utf-8')
const envVars: Record<string, string> = {}
envContent.split('\n').forEach(line => {
const parts = line.split('=')
if (parts.length >= 2) {
envVars[parts[0].trim()] = parts.slice(1).join('=').trim()
}
})
const supabaseUrl = envVars.NEXT_PUBLIC_SUPABASE_URL
const supabaseAnonKey = envVars.NEXT_PUBLIC_SUPABASE_ANON_KEY
const supabase = createClient(supabaseUrl, supabaseAnonKey)
async function listTables() {
console.log('Listing tables from Supabase...')
// We can query schema tables via rpc or a query, or select from some common tables
// To list tables via PostgREST, we can try to query a non-existent table and see the hint or query pg_class
// Actually, let's query the supabase API or look at common tables
const tables = [
'akun_balita',
'hasil_stunting_balita',
'cetak_balita',
'detail_posyandu',
'petugas_posyandu',
'petugas_posyandu_lokal',
'jadwal_posyandu',
'posyandu_reviews',
'ulasan_posyandu'
]
for (const table of tables) {
const { error } = await supabase.from(table).select('*').limit(1)
if (error) {
console.log(`Table "${table}": ERROR (${error.message})`)
} else {
console.log(`Table "${table}": EXISTS`)
}
}
}
listTables()

View File

@ -1,50 +0,0 @@
import { createClient } from '@supabase/supabase-js'
import * as fs from 'fs'
import * as path from 'path'
const envPath = path.join(process.cwd(), '.env.local')
const envContent = fs.readFileSync(envPath, 'utf-8')
const envVars: Record<string, string> = {}
envContent.split('\n').forEach(line => {
const parts = line.split('=')
if (parts.length >= 2) {
envVars[parts[0].trim()] = parts.slice(1).join('=').trim()
}
})
const supabaseUrl = envVars.NEXT_PUBLIC_SUPABASE_URL
const supabaseAnonKey = envVars.NEXT_PUBLIC_SUPABASE_ANON_KEY
const supabase = createClient(supabaseUrl, supabaseAnonKey)
async function testInsert() {
console.log('Inserting into cetak_balita...')
const idBerkas = Date.now()
const { data: insertData, error: insertError } = await supabase
.from('cetak_balita')
.insert({
id_berkas: idBerkas,
nama_balita: 'Test Balita'
})
.select()
if (insertError) {
console.error('Insert Error:', insertError)
} else {
console.log('Insert Success, inserted data:', insertData)
// Let's delete it so we keep database clean
const { error: deleteError } = await supabase
.from('cetak_balita')
.delete()
.eq('id_berkas', idBerkas)
if (deleteError) {
console.error('Delete Error:', deleteError)
} else {
console.log('Successfully cleaned up test record')
}
}
}
testInsert()