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,
});
}
},
);
}