import { ScaleContinuousNumeric } from "d3-scale"; import * as React from "react"; import { AreaOnlySeries } from "./AreaOnlySeries"; import { LineSeries } from "./LineSeries"; export interface BollingerSeriesProps { readonly areaClassName?: string; readonly className?: string; readonly fillStyle?: string; readonly strokeStyle?: { top: string; middle: string; bottom: string; }; readonly yAccessor?: (data: any) => { bottom: number; middle: number; top: number }; } export class BollingerSeries extends React.Component { public static defaultProps = { areaClassName: "react-financial-charts-bollinger-band-series-area", fillStyle: "rgba(38, 166, 153, 0.05)", strokeStyle: { top: "#26a69a", middle: "#812828", bottom: "#26a69a", }, yAccessor: (data: any) => data.bb, }; public render() { const { className, strokeStyle = BollingerSeries.defaultProps.strokeStyle, fillStyle } = this.props; return ( ); } private readonly yAccessorForScaledBottom = (scale: ScaleContinuousNumeric, d: any) => { const { yAccessor = BollingerSeries.defaultProps.yAccessor } = this.props; const bb = yAccessor(d); if (bb === undefined) { return undefined; } return scale(bb.bottom); }; private readonly yAccessorForBottom = (d: any) => { const { yAccessor = BollingerSeries.defaultProps.yAccessor } = this.props; const bb = yAccessor(d); if (bb === undefined) { return undefined; } return bb.bottom; }; private readonly yAccessorForMiddle = (d: any) => { const { yAccessor = BollingerSeries.defaultProps.yAccessor } = this.props; const bb = yAccessor(d); if (bb === undefined) { return undefined; } return bb.middle; }; private readonly yAccessorForTop = (d: any) => { const { yAccessor = BollingerSeries.defaultProps.yAccessor } = this.props; const bb = yAccessor(d); if (bb === undefined) { return undefined; } return bb.top; }; }