private renderStaleData()

in src/visualComponent/subtitleWarningComponent.ts [92:165]


    private renderStaleData(
        staleDataSettings: StaleDataDescriptor,
        series: IDataRepresentationSeries[],
        staleDataDifference: number): void {
        const {
            background,
            color,
            shouldBeShown,
            staleDataText,
            staleDataThreshold,
        } = staleDataSettings;

        const isDataStale: boolean = this.isDataStale(
            staleDataDifference,
            series,
        );

        let tooltipItems: VisualTooltipDataItem[] = [];

        const filterItemsFunc = (x: IDataRepresentationSeries) => {
            if (!x.settings.staleData.isShown) {
                return false;
            }
            if (x.staleDateDifference) {
                return (x.staleDateDifference - x.settings.staleData.staleDataThreshold > 0);
            }
            return false;
        };

        let isTheSameStaledays: boolean = true;
        let currentStaleDays: number | undefined;

        for (const sr of series) {
            if (currentStaleDays && sr.staleDateDifference && currentStaleDays !== sr.staleDateDifference) {
                isTheSameStaledays = false;
            } else {
                currentStaleDays = sr.staleDateDifference;
            }
        }

        if (!isTheSameStaledays) {
            tooltipItems = series.filter(filterItemsFunc).map((s) => {
                const title: string = this.getTitle(
                    s.settings.staleData.staleDataText,
                    s.staleDateDifference,
                    s.settings.staleData.deductThresholdDays ? s.settings.staleData.staleDataThreshold : 0,
                );

                return {
                    displayName: s.name,
                    value: title,
                };
            });
        } else {
            tooltipItems = [
                {
                    displayName: null,
                    value: this.getTitle(
                        staleDataText,
                        staleDataDifference,
                        staleDataSettings.deductThresholdDays ? staleDataThreshold : 0,
                    ),
                },
            ];
        }

        this.renderIcon({
            backgroundColor: background,
            color,
            isShown: shouldBeShown && isDataStale,
            selector: this.dataAgeSelector,
            tooltipItems,
        });
    }