"use client" import { LayoutNavbarNew, TEMA } from '@/module/_global'; import { useHookstate } from '@hookstate/core'; import { Badge, Box, Skeleton, Stack, Table } from '@mantine/core'; import { DateInput } from '@mantine/dates'; import _ from 'lodash'; import moment from 'moment'; import "moment/locale/id"; import { useParams, useRouter } from 'next/navigation'; import { useState } from 'react'; import toast from 'react-hot-toast'; import { funGetReportDivision } from '../lib/api_division'; import EchartBarReport from './echart_bar_report'; import EchartPaiReport from './echart_pai_report'; import EventReport from './event_report'; import EchartBarReportCalender from './echart_bar_calender'; export default function ReportDivisionId() { const [value, setValue] = useState(null); const [valueAkhir, setValueAkhir] = useState(null); const param = useParams<{ id: string }>() const [loading, setLoading] = useState(false); const [loadingTable, setLoadingTable] = useState(false); const [tampil, setTampil] = useState(false); const tema = useHookstate(TEMA) const router = useRouter() const [report, setReport] = useState({ progress: [], dokumen: [], event: [], }) const [reportTable, setReportTable] = useState([]) const [touched, setTouched] = useState({ start_date: false, end_date: false }) async function onReport(awal: any, akhir: any) { try { setReport({ progress: [], dokumen: [], event: [], }) setTampil(true) setLoading(true) const res = await funGetReportDivision(`?division=${param.id}&date=${moment(awal).format("YYYY-MM-DD")}&date-end=${moment(akhir).format("YYYY-MM-DD")}`) if (res.success) { setReport(res.data) } else { toast.error(res.message) } } catch (error) { console.error(error) toast.error("Gagal mendapatkan data, coba lagi nanti"); } finally { setLoading(false) } } async function onReportTable(awal: any, akhir: any) { try { setLoadingTable(true) const res = await funGetReportDivision(`?cat=table-progress&division=${param.id}&date=${moment(awal).format("YYYY-MM-DD")}&date-end=${moment(akhir).format("YYYY-MM-DD")}`) if (res.success) { setReportTable(res.data) } else { toast.error(res.message) } } catch (error) { console.error(error) } finally { setLoadingTable(false) } } function onChangeDate(val: any, kat: string) { if (kat == "start-date") { setValue(val) if (valueAkhir != null && valueAkhir != undefined) { if (val >= valueAkhir) { setTouched({ ...touched, end_date: true }) setTampil(false) } else { setTouched({ ...touched, end_date: false }) onReport(val, valueAkhir) onReportTable(val, valueAkhir) } } } else if (kat == "end-date") { setValueAkhir(val) if (value != null && value != undefined) { if (value >= val) { setTouched({ ...touched, end_date: true }) setTampil(false) } else { setTouched({ ...touched, end_date: false }) onReport(value, val) onReportTable(value, val) } } } } return ( { onChangeDate(val, 'start-date') }} radius={10} size="md" required label="Tanggal Awal" placeholder="Tanggal Awal" /> { onChangeDate(val, 'end-date') }} radius={10} size="md" required label="Tanggal Akhir" placeholder="Tanggal Akhir" error={touched.end_date && "Tanggal akhir harus lebih besar dari tanggal awal"} /> { tampil && <> { loading ? <> { Array(2) .fill(null) .map((_, i) => ( )) } : <> { !loadingTable ? Tugas Progres Status { reportTable.length == 0 ? Data kosong : reportTable.map((item: any, i: number) => { return ( { router.push(`/division/${param.id}/task/${item.id}`) }}> {item.title} {_.isNull(item.progress) ? 0 : item.progress}% { item.status === 0 ? 'Segera' : item.status === 1 ? 'Dikerjakan' : item.status === 2 ? 'Selesai' : item.status === 3 ? 'Dibatalkan' : "Segera" } ) }) }
: <> }
{/* */} } }
); }