"use client"; import { Button } from "@/components/ui/button"; import { Calendar } from "@/components/ui/calendar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { CalendarIcon } from "lucide-react"; import React, { useEffect, useState } from "react"; import { format } from "date-fns" import { cn } from "@/lib/utils" const Jadwal = () => { const city = [ { key: 1, id: "metro-jaya", name: "Polda Metro Jaya", }, { key: 2, id: "jawa-barat", name: "Polda Jawa Barat", }, { key: 3, id: "banten", name: "Polda Banten", }, { key: 4, id: "jawa-tengah", name: "Polda Jawa Tengah", }, { key: 5, id: "daerah-istimewa-yogyakarta", name: "Polda D.I Yogyakarta", }, { key: 6, id: "jawa-timur", name: "Polda Jawa Timur", }, { key: 7, id: "aceh", name: "Polda Aceh", }, { key: 8, id: "sumatera-utara", name: "Polda Sumatera Utara", }, { key: 9, id: "sumatera-barat", name: "Polda Sumatera Barat", }, ]; const days = ["S", "S", "R", "K", "J", "S", "M"]; const months = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; const [startDate, setStartDate] = useState(new Date()); const [dateAWeek, setDateAWeek] = useState([]); const curr = new Date(); const startDays = (curr.getDay() + 7 - 1) % 7; curr.setDate(curr.getDate() - startDays); const dateListInit = []; curr.setDate(curr.getDate() - curr.getDay() + 1); for (let i = 0; i < 7; i++) { dateListInit.push(new Date(curr).toISOString().slice(0, 10)); curr.setDate(curr.getDate() + 1); } const [dateList, setDateList] = useState(dateListInit); useEffect(() => { async function initState() { setDateAWeek(dateList); } initState(); }, []); const handleChangeDate = (date: Date|undefined) => { setStartDate(date); const dateListTemp = []; const curr = date; if(curr){ const startDays = (curr.getDay() + 7 - 1) % 7; curr.setDate(curr.getDate() - startDays); curr.setDate(curr.getDate() - curr.getDay() + 1); for (let i = 0; i < 7; i++) { dateListTemp.push(new Date(curr).toISOString().slice(0, 10)); curr.setDate(curr.getDate() + 1); } console.log("Change Date :", dateListTemp); setDateList(dateListTemp); setDateAWeek(dateListTemp); } }; function getLastWeek(today: Date|undefined) { if(today){ return new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7); } } function getNextWeek(today: Date|undefined) { if(today){ return new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7); } } const changeNextWeek = () => { console.log("Today :", startDate); const dayInNextWeek = getNextWeek(startDate); console.log("Next week :", dayInNextWeek); const dateListTemp = []; const curr = dayInNextWeek; if(curr){ const startDays = (curr.getDay() + 7 - 1) % 7; curr.setDate(curr.getDate() - startDays); curr.setDate(curr.getDate() - curr.getDay() + 1); for (let i = 0; i < 7; i++) { const newDate = new Date(curr); if (i == 0) { setStartDate(newDate); } const dateFormatter = Intl.DateTimeFormat("sv-SE"); dateListTemp.push(dateFormatter.format(newDate)); curr.setDate(curr.getDate() + 1); } console.log(dateListTemp); setDateList(dateListTemp); setDateAWeek(dateListTemp); } }; const changePrevWeek = () => { console.log(startDate); const dayInPrevWeek = getLastWeek(startDate); console.log("Prev week :", dayInPrevWeek); console.log(startDate); const dateListTemp = []; const curr = dayInPrevWeek; if(curr){ const startDays = (curr.getDay() + 7 - 1) % 7; curr.setDate(curr.getDate() - startDays); curr.setDate(curr.getDate() - curr.getDay() + 1); for (let i = 0; i < 7; i++) { const newDate = new Date(curr); if (i == 0) { setStartDate(newDate); } const dateFormatter = Intl.DateTimeFormat("sv-SE"); dateListTemp.push(dateFormatter.format(newDate)); curr.setDate(curr.getDate() + 1); } console.log(dateListTemp); setDateList(dateListTemp); setDateAWeek(dateListTemp); } }; return ( <> {/* Awal Komponen Kiri */}
{ handleChangeDate(e)}} initialFocus />
Filter
{" "} Filter
Region Filter
Time Table changePrevWeek()}>prev {dateAWeek[0]?.split("-")[2]}Monday {dateAWeek[1]?.split("-")[2]}Tuesday {dateAWeek[2]?.split("-")[2]}Wednesday {dateAWeek[3]?.split("-")[2]}Thursday {dateAWeek[4]?.split("-")[2]}Friday {dateAWeek[5]?.split("-")[2]}Saturday {dateAWeek[6]?.split("-")[2]}Sunday changeNextWeek()}>next
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
24:00
01:00
02:00
03:00
04:00
05:00
{/* Akhir Komponen Kiri */} {/* Awal Komponent Kanan */}
{/* Akhir Komponen Kiri */} ); }; export default Jadwal;