import { ScaleTime } from 'd3-scale'; import * as React from 'react'; import { Theme } from '../theme'; import './AdvancedTimeline.css'; import './LineChart.css'; export interface Props { basisCurve?: boolean; endDate?: Date; disableZoom?: boolean; displayNewCodeLegend?: boolean; formatYTick?: (tick: number | string) => string; hideGrid?: boolean; hideXAxis?: boolean; height: number; width: number; leakPeriodDate?: Date; maxYTicksCount: number; metricType: string; padding: number[]; selectedDate?: Date; series: T.Chart.Serie[]; showAreas?: boolean; startDate?: Date; updateSelectedDate?: (selectedDate?: Date) => void; updateTooltip?: (selectedDate?: Date, tooltipXPos?: number, tooltipIdx?: number) => void; updateZoom?: (start?: Date, endDate?: Date) => void; zoomSpeed: number; } declare type XScale = ScaleTime; declare type YScale = any; interface State { leakLegendTextWidth?: number; maxXRange: number[]; mouseOver?: boolean; selectedDate?: Date; selectedDateXPos?: number; selectedDateIdx?: number; yScale: YScale; xScale: XScale; } export default class AdvancedTimeline extends React.PureComponent { static defaultProps: { eventSize: number; maxYTicksCount: number; padding: number[]; zoomSpeed: number; }; constructor(props: Props); componentDidUpdate(prevProps: Props): void; getRatingScale: (availableHeight: number) => import("d3-scale").ScalePoint; getLevelScale: (availableHeight: number) => import("d3-scale").ScalePoint; getYScale: (props: Props, availableHeight: number, flatData: T.Chart.Point[]) => any; getXScale: ({ startDate, endDate }: Props, availableWidth: number, flatData: T.Chart.Point[]) => { xScale: ScaleTime; maxXRange: number[]; }; getScales: (props: Props) => { yScale: any; xScale: ScaleTime; maxXRange: number[]; }; getSelectedDatePos: (xScale: XScale, selectedDate?: Date | undefined) => { selectedDate: Date; selectedDateXPos: number; selectedDateIdx: number; } | { selectedDate: undefined; selectedDateXPos: undefined; selectedDateIdx: undefined; }; getEventMarker: (size: number) => string; handleWheel: (event: React.WheelEvent) => void; handleZoomUpdate: (startDate?: Date | undefined, endDate?: Date | undefined) => void; handleMouseMove: (event: React.MouseEvent) => void; handleMouseEnter: () => void; handleMouseOut: () => void; handleClick: () => void; setLeakLegendTextWidth: (node: SVGTextElement | null) => void; updateTooltipPos: (xPos: number) => void; renderHorizontalGrid: () => JSX.Element; renderXAxisTicks: () => JSX.Element; renderNewCodeLegend: (params: { leakStart: number; leakWidth: number; theme: Theme; }) => JSX.Element; renderLeak: () => JSX.Element | null; renderLines: () => JSX.Element; renderDots: () => JSX.Element; renderAreas: () => JSX.Element; renderSelectedDate: () => JSX.Element | null; renderClipPath: () => JSX.Element; renderMouseEventsOverlay: (zoomEnabled: boolean) => JSX.Element; render(): JSX.Element; } export {};