"use client"; import { useAppSelector } from "@/app/redux"; import Header from "@/app/components/Header"; import { useGetProjectsQuery } from "@/state/api"; import { DisplayOption, Gantt, ViewMode } from "gantt-task-react"; import "gantt-task-react/dist/index.css"; import React, { useMemo, useState } from "react"; type TaskTypeItems = "task" | "milestone" | "project"; const Timeline = () => { const isDarkMode = useAppSelector((state) => state.global.isDarkMode); const { data: projects, isLoading, isError } = useGetProjectsQuery(); const [displayOptions, setDisplayOptions] = useState({ viewMode: ViewMode.Month, locale: "en-US", }); const ganttTasks = useMemo(() => { return ( projects?.map((project) => ({ start: new Date(project.startDate as string), end: new Date(project.endDate as string), name: project.name, id: `Project-${project.projectId}`, type: "project" as TaskTypeItems, progress: 50, isDisabled: false, })) || [] ); }, [projects]); const handleViewModeChange = ( event: React.ChangeEvent, ) => { setDisplayOptions((prev) => ({ ...prev, viewMode: event.target.value as ViewMode, })); }; if (isLoading) return
Loading...
; if (isError || !projects) return
An error occurred while fetching projects
; return (
); }; export default Timeline;