mediahub-fe/app/[locale]/(protected)/admin/analysis/schedule/page.tsx

247 lines
8.2 KiB
TypeScript
Raw Normal View History

2025-01-01 04:56:58 +00:00
"use client";
import SiteBreadcrumb from "@/components/site-breadcrumb";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
import { useEffect, useState } from "react";
2025-01-01 04:56:58 +00:00
import { addDays, format } from "date-fns";
import { Calendar as CalendarIcon } from "lucide-react";
import { DateRange } from "react-day-picker";
import Cookies from "js-cookie";
import { cn, getCookiesDecrypt } from "@/lib/utils";
2025-01-01 04:56:58 +00:00
import { Button } from "@/components/ui/button";
import { Calendar } from "@/components/ui/calendar";
import {
Popover,
PopoverContent,
PopoverTrigger,
} from "@/components/ui/popover";
import { generateTicket } from "@/service/tableau/tableau-service";
2025-01-01 04:56:58 +00:00
export default function ContentManagement() {
const [startDate, setStartDate] = useState<any>(new Date());
const [endDate, setEndDate] = useState<any>(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]);
2025-07-19 20:46:48 +00:00
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-rank?"
: "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-rank?"
: `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-rank?provinsi-polda=${provState}&`;
const view2 =
levelName == "MABES POLRI"
? isInternational[1]
? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-rank-kat?"
: "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-rank-kat?"
: `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-rank-kat?provinsi-polda=${poldaState}&`;
const view3 =
levelName == "MABES POLRI"
? isInternational[2]
? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act?"
: "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act?"
: `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act?provinsi-polda=${poldaState}&`;
const view4 =
levelName == "MABES POLRI"
? isInternational[3]
? "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act-jnl?"
: "views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act-jnl?"
: `views/2023_08_MediaHUB-KtnMgt_Rev100/db-ktn-act-jnl?provinsi-polda=${poldaState}&`;
2025-07-20 15:00:55 +00:00
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);
}
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);
};
2025-01-01 04:56:58 +00:00
return (
<div>
<SiteBreadcrumb />
<div className="flex flex-col gap-3">
<Accordion
id="schedule-press-conference"
type="single"
collapsible
className="w-full"
>
2025-09-04 14:58:03 +00:00
<AccordionItem value="item-1" className="bg-white dark:bg-black w-full">
<AccordionTrigger className="bg-white dark:bg-black">
2025-01-01 04:56:58 +00:00
PUBLISH JADWAL PRESS CONFERENCE TERBANYAK
</AccordionTrigger>
<AccordionContent>
<div className="flex flex-col">
<div className="my-5">
{ticket1 == "" ? (
<iframe
src={`${baseUrl + view1 + param}`}
width="100%"
height="750"
frameBorder="0"
/>
) : (
<iframe
src={`${`${url + ticket1}/${view1}${param}`}`}
width="100%"
height="750"
frameBorder="0"
/>
)}
2025-01-01 04:56:58 +00:00
</div>
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
<Accordion
id="content-press-conference"
type="single"
collapsible
className="w-full"
>
2025-09-04 14:58:03 +00:00
<AccordionItem value="item-1" className="bg-white dark:bg-black w-full">
<AccordionTrigger className="bg-white dark:bg-black">
2025-01-01 04:56:58 +00:00
JUMLAH PRODUKSI KONTEN UNTUK KATEGORI PRESS CONFERENCE
</AccordionTrigger>
<AccordionContent>
<div className="flex flex-col">
<div className="my-5">
{ticket2 == "" ? (
<iframe
src={`${baseUrl + view2 + param}`}
width="100%"
height="750"
frameBorder="0"
/>
) : (
<iframe
src={`${`${url + ticket2}/${view2}${param}`}`}
width="100%"
height="750"
frameBorder="0"
/>
)}
2025-01-01 04:56:58 +00:00
</div>
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
<Accordion
id="interaction-press-conference"
type="single"
collapsible
className="w-full"
>
2025-09-04 14:58:03 +00:00
<AccordionItem value="item-1" className="bg-white dark:bg-black w-full">
<AccordionTrigger className="bg-white dark:bg-black">
2025-01-01 04:56:58 +00:00
TINGKAT INTERAKSI KONTEN UNTUK KATEGORI PRESS CONFERENCE
</AccordionTrigger>
<AccordionContent>
<div className="flex flex-col">
<div className="my-5">
{ticket3 == "" ? (
<iframe
src={`${baseUrl + view3 + param}`}
width="100%"
height="750"
frameBorder="0"
/>
) : (
<iframe
src={`${`${url + ticket3}/${view3}${param}`}`}
width="100%"
height="750"
frameBorder="0"
/>
)}
2025-01-01 04:56:58 +00:00
</div>
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
<Accordion
id="press-release"
type="single"
collapsible
className="w-full"
>
2025-09-04 14:58:03 +00:00
<AccordionItem value="item-1" className="bg-white dark:bg-black w-full">
<AccordionTrigger className="bg-white dark:bg-black">
2025-01-01 04:56:58 +00:00
AKTIFITAS MEDIA BERKAITAN DENGAN PERS RILIS
</AccordionTrigger>
<AccordionContent>
<div className="flex flex-col">
<div className="my-5">
{ticket4 == "" ? (
<iframe
src={`${baseUrl + view4 + param}`}
width="100%"
height="750"
frameBorder="0"
/>
) : (
<iframe
src={`${`${url + ticket4}/${view4}${param}`}`}
width="100%"
height="750"
frameBorder="0"
/>
)}
2025-01-01 04:56:58 +00:00
</div>
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
</div>
</div>
);
}