"use client"; import dayjs from "dayjs"; import { useEffect, useRef, useState } from "react"; import utc from "dayjs/plugin/utc"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { close, loading } from "@/config/swal"; import { useSearchParams } from "next/navigation"; import { Swiper, SwiperSlide } from "swiper/react"; import "swiper/css"; import "swiper/css/free-mode"; import "swiper/css/navigation"; import "swiper/css/thumbs"; import Image from "next/image"; import { FreeMode, Navigation, Thumbs } from "swiper/modules"; import { Swiper as SwiperType } from "swiper/types"; import { getMonthlyPlanList, getPlanningDailyByTypeId, getWeeklyPlanList, getWeeklyPlanListByParentId, } from "@/service/agenda-setting/agenda-setting"; import TaskPlanMediahubTable from "@/app/[locale]/(protected)/curator/task-plan/mediahub/components/table"; const TODAY = dayjs().format("YYYY-MM-DD"); // Pastikan Anda mendefinisikan TODAY dengan format yang konsisten export default function SingleViewTable() { const params = useSearchParams(); const [selectedMonthItem, setSelectedMonthItem] = useState< string | undefined >(undefined); const [selectedWeekly, setSelectedWeekly] = useState( undefined ); const [selectedDate, setSelectedDate] = useState( new Date(TODAY).getDate() ); const [nowDate, setNowDate] = useState(TODAY); const INITIAL_YEAR = dayjs().format("YYYY"); const INITIAL_MONTH = dayjs().format("M"); const size = 20; const page: string | undefined | null = params?.get("page"); const id: string | undefined | null = params?.get("id"); const pages = page ? Number(page) - 1 : 0; const no = (size || 10) * pages; const [selectedMonth, setSelectedMonth] = useState( dayjs(new Date(parseInt(INITIAL_YEAR), parseInt(INITIAL_MONTH) - 1, 1)) ); const [selectedMonthTitle, setSelectedMonthTitle] = useState(""); const [days, setDays] = useState([]); const weekday = require("dayjs/plugin/weekday"); const weekOfYear = require("dayjs/plugin/weekOfYear"); dayjs.extend(utc); dayjs.extend(weekday); dayjs.extend(weekOfYear); const [monthlyList, setMonthlyList] = useState([]); const [weeklyList, setWeeklyList] = useState([]); const [getData, setGetData] = useState([]); const [getTotalPage, setGetTotalPage] = useState(1); const [getTOtalData, setGetTotalData] = useState(0); useEffect(() => { createCalendar("START"); }, []); function createDaysForCurrentMonth( year: string, month: string, daysInMonth: number ) { const days: any = []; for (let day = 1; day <= daysInMonth; day++) { const date = dayjs( new Date(parseInt(year), parseInt(month) - 1, day) ).format("YYYY-MM-DD"); days.push({ date, isCurrentMonth: true, isToday: date === TODAY, }); } return days; } async function getMonthlyPlanning(dates: number) { const res = await getMonthlyPlanList(dates, 1); console.log("monthsss", res); setMonthlyList(res.data?.data); } async function getWeeklyPlanning( id: string | undefined, date: number | undefined ) { if (id) { const res = await getWeeklyPlanListByParentId(id, 1); setWeeklyList(res.data?.data); } else { const res = await getWeeklyPlanList(date, 1, true); setWeeklyList(res.data?.data); } } function createCalendar( year: string = INITIAL_YEAR, month: string = INITIAL_MONTH ) { const state = year; year = year === "START" ? INITIAL_YEAR : year; setSelectedMonthTitle( dayjs(new Date(parseInt(year), parseInt(month) - 1)) .utc() .local() .format("MMMM YYYY") ); const currentMonthDays = createDaysForCurrentMonth( year, month, dayjs(`${year}-${month}-01`).daysInMonth() ); console.log("Month:", currentMonthDays); getMonthlyPlanning(state === "START" ? TODAY : currentMonthDays[0]?.date); getWeeklyPlanning( undefined, state === "START" ? TODAY : currentMonthDays[0]?.date ); setDays(currentMonthDays); console.log("currentMonthDays", currentMonthDays); } async function fetchData( parentId: string | number | undefined, date?: string ) { loading(); const response = await getPlanningDailyByTypeId( pages, size, parentId || selectedWeekly, date || nowDate || TODAY, 1 ); close(); setupData(response.data?.data); } function setupData(rawData: any) { if (rawData != undefined) { const dataContent = rawData?.content; const data = []; for (const [i, element] of dataContent.entries()) { element.no = no + i + 1; data.push(element); } setGetData(data); setGetTotalPage(rawData?.totalPages); setGetTotalData(rawData?.totalElements); } } function getPrevMonth() { const selectedMonthNew = dayjs(selectedMonth).subtract(1, "month"); createCalendar( selectedMonthNew.format("YYYY"), selectedMonthNew.format("M") ); fetchData(undefined, selectedMonthNew?.format("YYYY-MM-DD")); setSelectedMonth(selectedMonthNew); setSelectedDate(1); } function getPresentMonth() { const selectedMonthNew = dayjs( new Date(parseInt(INITIAL_YEAR), parseInt(INITIAL_MONTH) - 1, 1) ); createCalendar( selectedMonthNew.format("YYYY"), selectedMonthNew.format("M") ); fetchData(undefined, TODAY); setSelectedDate(Number(dayjs().format("D"))); setSelectedMonth(selectedMonthNew); } function getNextMonth() { const selectedMonthNew = dayjs(selectedMonth).add(1, "month"); createCalendar( selectedMonthNew.format("YYYY"), selectedMonthNew.format("M") ); fetchData(undefined, selectedMonthNew?.format("YYYY-MM-DD")); setSelectedMonth(selectedMonthNew); setSelectedDate(1); } const onSelectedMonthItem = (id: string | undefined) => { // fetchData(date) setSelectedMonthItem(id); getWeeklyPlanning(id, undefined); }; const onSelectedWeekly = (id: string | undefined) => { setSelectedWeekly(id); fetchData(id); }; const onSelectedDay = (day: number, date: string) => { fetchData(undefined, date); setSelectedDate(day); setNowDate(date); }; const removeSelection = () => { setSelectedMonthItem(undefined); setSelectedWeekly(undefined); }; return (

{selectedMonthTitle}

Rencana Bulanan

{monthlyList?.length > 0 ? (
{monthlyList?.map((item: any) => (
onSelectedMonthItem(item.id)} >

{item.title}

))}
) : (
Rencana Bulanan Belum Tersedia
)}

Rencana Mingguan

{weeklyList?.length > 0 ? (
{weeklyList?.map((item: any) => ( onSelectedWeekly(item.id)} >

{item.title}

))}
) : (
Rencana Mingguan Belum Tersedia
)}

Rencana Harian

); }