import { MinusSquareOutlined, PlusSquareOutlined } from '@ant-design/icons'; import { IIntervalUnit } from 'container/TraceDetail/utils'; import React, { useEffect, useState } from 'react'; import { ITraceTree } from 'types/api/trace/getTraceItem'; import { CardContainer, CardWrapper, CollapseButton, Wrapper } from './styles'; import Trace from './Trace'; import { getSpanPath } from './utils'; function GanttChart(props: GanttChartProps): JSX.Element { const { data, traceMetaData, activeHoverId, setActiveHoverId, activeSelectedId, setActiveSelectedId, spanId, intervalUnit, } = props; const { globalStart, spread: globalSpread } = traceMetaData; const [isExpandAll, setIsExpandAll] = useState(false); const [activeSpanPath, setActiveSpanPath] = useState([]); useEffect(() => { setActiveSpanPath(getSpanPath(data, spanId)); }, [spanId]); useEffect(() => { setActiveSpanPath(getSpanPath(data, activeSelectedId)); }, [activeSelectedId]); const handleCollapse = () => { setIsExpandAll((prev) => !prev); }; return ( {isExpandAll ? : } ); } export interface ITraceMetaData { globalEnd: number; globalStart: number; levels: number; spread: number; totalSpans: number; } export interface GanttChartProps { data: ITraceTree; traceMetaData: ITraceMetaData; activeSelectedId: string; activeHoverId: string; setActiveHoverId: React.Dispatch>; setActiveSelectedId: React.Dispatch>; spanId: string; intervalUnit: IIntervalUnit; } export default GanttChart;