import { useAppSelector } from "@/app/redux"; import { useGetTasksQuery } 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 Props = { id: string; setIsModalNewTaskOpen: (isOpen: boolean) => void; }; type TaskTypeItems = "task" | "milestone" | "project"; const Timeline = ({ id, setIsModalNewTaskOpen }: Props) => { const isDarkMode = useAppSelector((state) => state.global.isDarkMode); const { data: tasks, error, isLoading, } = useGetTasksQuery({ projectId: Number(id) }); const [displayOptions, setDisplayOptions] = useState({ viewMode: ViewMode.Month, locale: "en-US", }); const ganttTasks = useMemo(() => { return ( tasks?.map((task) => ({ start: new Date(task.startDate as string), end: new Date(task.dueDate as string), name: task.title, id: `Task-${task.id}`, type: "task" as TaskTypeItems, progress: task.points ? (task.points / 10) * 100 : 0, isDisabled: false, })) || [] ); }, [tasks]); const handleViewModeChange = ( event: React.ChangeEvent, ) => { setDisplayOptions((prev) => ({ ...prev, viewMode: event.target.value as ViewMode, })); }; if (isLoading) return
Loading...
; if (error || !tasks) return
An error occurred while fetching tasks
; return (

Project Timeline

); }; export default Timeline;