public render()

in src/visualComponent/kpi/varianceComponentWithCustomLabel.ts [52:129]


    public render(options: IVisualComponentRenderOptions): void {
        const {
            series,
            variance,
            settings: {
                dateLabelKPI,
                dateValueKPI,
                actualValueKPI,
                actualLabelKPI,
                kpiIndicatorValue,
                kpiIndicatorLabel,
                secondKPIIndicatorValue,
                secondKPIIndicatorLabel,
                kpiIndicator,
            },
        } = options.data;

        const varianceSettings: KPIIndicatorValueDescriptor = {
            ...secondKPIIndicatorValue,
        } as KPIIndicatorValueDescriptor; // TODO: potential issue

        const labelSettings: KPIIndicatorValueDescriptor = {
            ...secondKPIIndicatorLabel,
        } as unknown as KPIIndicatorValueDescriptor; // TODO: potential issue

        labelSettings.show = secondKPIIndicatorLabel.isShown();

        if (isNaN(variance[1])) {
            varianceSettings.show = false;
            labelSettings.show = false;
        }

        const isVarianceKPIAvailable: boolean = series
            && series.length > 0
            && series[0]
            && series[0].current
            && !isNaN(series[0].current.kpiIndex);

        let currentAlign: AlignEnum = AlignEnum.alignCenter;

        if (!dateLabelKPI.show
            && !dateValueKPI.show
            && (!actualValueKPI.show || series[0] && series[0].current && isNaN(series[0] && series[0].current.y))
            && !actualLabelKPI.show
        ) {
            currentAlign = AlignEnum.alignLeft;
        } else if ((!kpiIndicatorValue.show || isNaN(variance[0]))
            && (!kpiIndicatorLabel.isShown() || (isNaN(variance[0]) && series[0] && series[0].current && isNaN(series[0].current.kpiIndex)))
            && (!isVarianceKPIAvailable || !kpiIndicator.show)) {
            currentAlign = AlignEnum.alignRight;
        }

        const formatter: valueFormatter.IValueFormatter = this.getValueFormatter(
            varianceSettings.displayUnits,
            varianceSettings.precision,
            secondKPIIndicatorValue.getFormat(),
        );

        const valueCaption: ICaptionKPIComponentOptionsValueSettings = {
            settings: varianceSettings,
            title: secondKPIIndicatorLabel.label || `${variance[1]}`,
            value: formatter.format(variance[1]),
        };

        const labelCaption: ICaptionKPIComponentOptionsValueSettings = {
            settings: labelSettings,
            value: secondKPIIndicatorLabel.label,
        };

        super.render({
            align: currentAlign,
            captions: [
                [valueCaption],
                [labelCaption],
            ],
            data: options.data,
        });
    }