public render()

in src/visualComponent/chartComponent.ts [78:144]


    public render(options: IVisualComponentRenderOptions): void {
        const { data: { sortedSeries, viewport, x, settings } } = options;

        const shouldRenderFallbackComponents: boolean = sortedSeries
            && sortedSeries[0]
            && sortedSeries[0].points
            && sortedSeries[0].points.length === this.amountOfDataPointsForFallbackComponents;

        if (this.shouldRenderFallbackComponents !== shouldRenderFallbackComponents) {
            this.forEach(
                this.components,
                (component: IVisualComponent<any>) => {
                    component.destroy();
                },
            );

            this.components = [];

            this.shouldRenderFallbackComponents = shouldRenderFallbackComponents;
        }

        this.initComponents(
            this.components,
            sortedSeries.length,
            () => {
                return this.shouldRenderFallbackComponents
                    ? new DotComponent(this.constructorOptions)
                    : new ComboComponent(this.constructorOptions);
            },
        );

        this.forEach(
            this.components,
            (component: IVisualComponent<IDotComponentRenderOptions | IComboComponentRenderOptions>, componentIndex: number) => {
                const currentSeries: IDataRepresentationSeries = sortedSeries[componentIndex];

                if (this.shouldRenderFallbackComponents) {
                    const point: IDataRepresentationPoint = currentSeries.points[0];

                    component.render({
                        opacity: currentSeries.settings.line.opacity,
                        point,
                        radiusFactor: settings.dots.radiusFactor,
                        series: currentSeries,
                        thickness: currentSeries.settings.line.thickness,
                        viewport,
                        x: x.scale,
                        y: currentSeries.y.scale,
                    });
                } else {
                    component.render({
                        areaOpacity: currentSeries.settings.line.areaOpacity,
                        gradientPoints: currentSeries.gradientPoints,
                        interpolation: currentSeries.settings.line.getInterpolation(),
                        lineStyle: currentSeries.settings.line.lineStyle,
                        lineType: currentSeries.settings.line.lineType,
                        opacity: currentSeries.settings.line.opacity,
                        series: currentSeries,
                        thickness: currentSeries.settings.line.thickness,
                        viewport,
                        x: x.scale,
                        y: currentSeries.y.scale,
                    });
                }
            },
        );
    }