From 5d826469255f6731b27292f9bd051006d4a03d68 Mon Sep 17 00:00:00 2001 From: Anang Yusman Date: Mon, 24 Feb 2025 12:27:02 +0800 Subject: [PATCH 1/2] feat:update data tableu,menu sidebar polda --- .../analysis/content-management/page.tsx | 426 +++++++++++------- .../admin/analysis/emergency-issue/page.tsx | 130 +++--- .../admin/analysis/feedback-center/page.tsx | 131 +++--- .../admin/analysis/schedule/page.tsx | 386 +++++++--------- .../(protected)/dashboard/executive/page.tsx | 201 ++++++++- components/visualization/dashboard-viz.tsx | 4 +- .../visualization/performance-polda.tsx | 42 +- lib/menus.ts | 89 ++-- 8 files changed, 847 insertions(+), 562 deletions(-) diff --git a/app/[locale]/(protected)/admin/analysis/content-management/page.tsx b/app/[locale]/(protected)/admin/analysis/content-management/page.tsx index bd14ea00..a278e85c 100644 --- a/app/[locale]/(protected)/admin/analysis/content-management/page.tsx +++ b/app/[locale]/(protected)/admin/analysis/content-management/page.tsx @@ -6,12 +6,12 @@ import { AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { addDays, format } from "date-fns"; import { Calendar as CalendarIcon } from "lucide-react"; import { DateRange } from "react-day-picker"; - -import { cn } from "@/lib/utils"; +import Cookies from "js-cookie"; +import { cn, getCookiesDecrypt } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Calendar } from "@/components/ui/calendar"; import { @@ -19,6 +19,7 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; +import { generateTicket } from "@/service/tableau/tableau-service"; const users = [ { id: 1, name: "POLRI" }, @@ -28,168 +29,277 @@ const users = [ export default function ContentManagement() { const [startDate, setStartDate] = useState(new Date()); const [endDate, setEndDate] = useState(new Date()); + const [hasMounted, setHasMounted] = useState(false); + // const t = useTranslations("AnalyticsDashboard"); + const levelName = getCookiesDecrypt("ulnae"); + const poldaState = Cookies.get("state"); + const provState = Cookies.get("state-prov"); + + const [ticket1, setTicket1] = useState(""); + const [ticket2, setTicket2] = useState(""); + const [ticket3, setTicket3] = useState(""); + const [ticket4, setTicket4] = useState(""); + const [ticket5, setTicket5] = useState(""); + const [ticket6, setTicket6] = useState(""); + const [isInternational, setIsInternational] = useState([false, false, false]); + + const baseUrl = "https://db-mediahub.polri.go.id/"; + const url = "https://db-mediahub.polri.go.id/trusted/"; + + const view1 = + levelName == "MABES POLRI" + ? isInternational[0] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-polri?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-polri?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-polri?provinsi-polda=${provState}&`; + + const view2 = + levelName == "MABES POLRI" + ? isInternational[1] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jurnalis?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jurnalis?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jurnalis?provinsi-polda=${poldaState}&`; + + const view3 = + levelName == "MABES POLRI" + ? isInternational[2] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-jurnalis-intl?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-jurnalis-intl?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-jurnalis-intl?provinsi-polda=${poldaState}&`; + + const view4 = + levelName == "MABES POLRI" + ? isInternational[3] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-satker?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-satker?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-satker?provinsi-polda=${poldaState}&`; + + const view5 = + levelName == "MABES POLRI" + ? isInternational[4] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jnl?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jnl?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-indo-jnl?provinsi-polda=${poldaState}&`; + + const view6 = + levelName == "MABES POLRI" + ? isInternational[5] + ? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-intl?" + : "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-intl?" + : `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-intl?provinsi-polda=${poldaState}&`; + const param = ":embed=yes&:toolbar=yes&:iframeSizedToWindow=true"; + + useEffect(() => { + async function initState() { + const response1 = await generateTicket(); + setTicket1(response1?.data?.data); + + const response2 = await generateTicket(); + setTicket2(response2?.data?.data); + + const response3 = await generateTicket(); + setTicket3(response3?.data?.data); + + const response4 = await generateTicket(); + setTicket4(response4?.data?.data); + + const response5 = await generateTicket(); + setTicket5(response5?.data?.data); + + const response6 = await generateTicket(); + setTicket6(response6?.data?.data); + } + + initState(); + }, [isInternational]); + + // Hooks + useEffect(() => { + setHasMounted(true); + }, []); + + // Render + if (!hasMounted) return null; + + const handleInternational = (index: number, val: boolean) => { + const updatedIsInternational = [...isInternational]; + + updatedIsInternational[index] = val; + setIsInternational(updatedIsInternational); + }; return (
- {users.map((user) => ( - - - - KONTEN YANG DISIMPAN OLEH PENGGUNA {user.name} INDONESIA - - -
-
-

Tanggal Mulai

- - - - - - - - -
-
-

Tanggal Mulai

- - - - - - - - -
+ + + + KONTEN YANG DISIMPAN OLEH PENGGUNA POLRI INDONESIA + + +
+
+ {ticket1 == "" ? ( +