From 2e09a18545215a42491b3b6f1d5c8ea7aae64c63 Mon Sep 17 00:00:00 2001 From: amel Date: Wed, 28 Aug 2024 17:35:02 +0800 Subject: [PATCH] upd: chart home Deskripsi: - belm selesai nih No Issues --- src/app/api/home/route.ts | 67 +++++++++++++++++++++ src/module/home/ui/chart_document.tsx | 27 +++++++++ src/module/home/ui/chart_progress_tugas.tsx | 27 +++++++++ 3 files changed, 121 insertions(+) diff --git a/src/app/api/home/route.ts b/src/app/api/home/route.ts index 6d197f7..2119229 100644 --- a/src/app/api/home/route.ts +++ b/src/app/api/home/route.ts @@ -115,8 +115,75 @@ export async function GET(request: Request) { allData = _.orderBy(format, 'jumlah', 'desc').slice(0, 5) } else if (kategori == "progress") { + let kondisi + + // klo perbekel == semua grup + if (roleUser == "supadmin") { + kondisi = { + isActive: true, + Division: { + idVillage: idVillage, + Group: { + isActive: true, + } + } + } + } else { + kondisi = { + isActive: true, + Division: { + idGroup: idGroup + } + } + } + + const data = await prisma.divisionProject.groupBy({ + where: kondisi, + by: ["status"], + _count: true + }) + + console.log(data) + allData = data + } else if (kategori == "dokumen") { + let kondisi + + // klo perbekel == semua grup + if (roleUser == "supadmin") { + kondisi = { + isActive: true, + category: 'FILE', + Division: { + idVillage: idVillage, + Group: { + isActive: true, + } + } + } + } else { + kondisi = { + isActive: true, + category: 'FILE', + Division: { + idGroup: idGroup + } + } + } + + const data = await prisma.divisionDocumentFolderFile.findMany({ + where: kondisi, + }) + + allData = _.map(_.groupBy(data, "extension"), (v: any) => ({ + file: v[0].extension, + jumlah: v.length, + })) + + console.log(allData) + + } else if (kategori == "event") { let kondisi diff --git a/src/module/home/ui/chart_document.tsx b/src/module/home/ui/chart_document.tsx index c511b71..ab5c9ed 100644 --- a/src/module/home/ui/chart_document.tsx +++ b/src/module/home/ui/chart_document.tsx @@ -5,14 +5,41 @@ import { useShallowEffect } from "@mantine/hooks"; import { EChartsOption } from "echarts"; import EChartsReact from "echarts-for-react"; import { useState } from "react"; +import toast from "react-hot-toast"; +import { funGetHome } from "../lib/api_home"; export default function ChartDocumentHome() { const [options, setOptions] = useState({}); + const [isData, setData] = useState([]) + const [loading, setLoading] = useState(true); useShallowEffect(() => { loadData() + fetchData() }, []) + + + const fetchData = async () => { + try { + setData([]); + setLoading(true); + const response = await funGetHome('?cat=dokumen') + + if (response.success) { + setData(response.data) + } else { + toast.error(response.message); + } + setLoading(false); + } catch (error) { + toast.error("Gagal mendapatkan data, coba lagi nanti"); + console.error(error); + } finally { + setLoading(false); + } + }; + const loadData = () => { const option: EChartsOption = { title: { diff --git a/src/module/home/ui/chart_progress_tugas.tsx b/src/module/home/ui/chart_progress_tugas.tsx index aa45169..bf4105c 100644 --- a/src/module/home/ui/chart_progress_tugas.tsx +++ b/src/module/home/ui/chart_progress_tugas.tsx @@ -5,14 +5,41 @@ import { useShallowEffect } from "@mantine/hooks"; import { EChartsOption } from "echarts"; import EChartsReact from "echarts-for-react"; import { useState } from "react"; +import { funGetHome } from "../lib/api_home"; +import toast from "react-hot-toast"; export default function ChartProgressHome() { const [options, setOptions] = useState({}); + const [isData, setData] = useState([]) + const [loading, setLoading] = useState(true); useShallowEffect(() => { loadData() + fetchData() }, []) + + + const fetchData = async () => { + try { + setData([]); + setLoading(true); + const response = await funGetHome('?cat=progress') + + if (response.success) { + setData(response.data) + } else { + toast.error(response.message); + } + setLoading(false); + } catch (error) { + toast.error("Gagal mendapatkan data, coba lagi nanti"); + console.error(error); + } finally { + setLoading(false); + } + }; + const loadData = () => { const option: EChartsOption = { title: {