/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-explicit-any */ 'use client' import jumlahPengangguranState from '@/app/admin/(dashboard)/_state/ekonomi/jumlah-pengangguran'; import colors from '@/con/colors'; import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { useProxy } from 'valtio/utils'; function CreateJumlahPengangguran() { const stateDetail = useProxy(jumlahPengangguranState.jumlahPengangguran) const [chartData, setChartData] = useState([]); const router = useRouter(); const resetForm = () => { stateDetail.create.form = { month: "", year: 0, totalUnemployment: 0, educatedUnemployment: 0, uneducatedUnemployment: 0, percentageChange: 0, } } const calculateTotalAndChange = async () => { const total = stateDetail.create.form.educatedUnemployment + stateDetail.create.form.uneducatedUnemployment; stateDetail.create.form.totalUnemployment = total; // Ambil data bulan sebelumnya const monthOrder = [ 'Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des' ]; const currentIndex = monthOrder.findIndex( (m) => m.toLowerCase() === stateDetail.create.form.month.toLowerCase() ); if (currentIndex > 0) { const prevMonth = monthOrder[currentIndex - 1]; const prev = await stateDetail.findByMonthYear.load({ month: prevMonth, year: stateDetail.create.form.year, }); if (prev?.totalUnemployment) { const change = ((total - prev.totalUnemployment) / prev.totalUnemployment) * 100; stateDetail.create.form.percentageChange = Number(change.toFixed(1)); } else { stateDetail.create.form.percentageChange = 0; } } else { stateDetail.create.form.percentageChange = 0; } }; const handleSubmit = async () => { await calculateTotalAndChange(); const id = await stateDetail.create.create(); if (id) { await stateDetail.findUnique.load(String(id)); if (stateDetail.findUnique.data) { setChartData([stateDetail.findUnique.data]); } resetForm(); router.push('/admin/ekonomi/jumlah-pengangguran/detail-data-pengangguran'); } }; return ( Tambah Detail Data Pengangguran (stateDetail.create.form.month = e.currentTarget.value)} /> (stateDetail.create.form.year = Number(e.currentTarget.value)) } /> { stateDetail.create.form.educatedUnemployment = Number( e.currentTarget.value, ); }} /> { stateDetail.create.form.uneducatedUnemployment = Number( e.currentTarget.value, ); }} /> Total Otomatis: {stateDetail.create.form.totalUnemployment} Perubahan Otomatis:{" "} {stateDetail.create.form.percentageChange !== null ? `${stateDetail.create.form.percentageChange}%` : '-'} ); } export default CreateJumlahPengangguran;