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