diff --git a/src/components/organisms/GanttChart.tsx b/src/components/organisms/GanttChart.tsx index abf929e0..1deb39b4 100644 --- a/src/components/organisms/GanttChart.tsx +++ b/src/components/organisms/GanttChart.tsx @@ -8,7 +8,7 @@ import { format, } from 'date-fns' import { times } from 'ramda' -import React, { useMemo, MouseEventHandler } from 'react' +import React, { useMemo, MouseEventHandler, useEffect } from 'react' export interface GanttChartItem { id: string @@ -23,6 +23,7 @@ interface GanttChartProps { endDate: string today: Date | null items: GanttChartItem[] + scrollTo?: (to: number) => void } const widthOfDay = 20 @@ -35,6 +36,7 @@ const GanttChart = ({ endDate: endDateString, today, items, + scrollTo, }: GanttChartProps) => { const startDate = new Date(startDateString) const endDate = new Date(endDateString) @@ -57,6 +59,19 @@ const GanttChart = ({ }, 1) }, [items]) + useEffect(() => { + if (today == null || scrollTo == null) { + return + } + + const target = + differenceInCalendarDays(today, firstDateToRender) * widthOfDay - + widthOfWeek - + widthOfDay / 2 + + scrollTo(target > 0 ? target : 0) + }, [firstDateToRender, scrollTo, today]) + return ( { const { t } = useTranslation() const [today, setToday] = useState(null) + const supplyGanttChartScrollContainerRef = useRef(null) useEffect(() => { setToday(new Date(getDateString(new Date()))) }, []) + const scrollSupplyGanttChart = useCallback((to: number) => { + if (supplyGanttChartScrollContainerRef.current == null) { + return null + } + supplyGanttChartScrollContainerRef.current.scrollTo(to, 0) + }, []) + return ( - + { const imgSrc = getIconSrcFromItem(