Flot threshold value now supports array of values.

This commit is contained in:
devaskim 2022-10-28 12:34:42 +05:00
parent 4cc7e7b373
commit a311a6984f

View File

@ -909,41 +909,42 @@ export class TbFlot {
isLatest = false): TbFlotThresholdMarking[] { isLatest = false): TbFlotThresholdMarking[] {
const thresholds: TbFlotThresholdMarking[] = []; const thresholds: TbFlotThresholdMarking[] = [];
data.forEach((keyData) => { data.forEach((keyData) => {
let skip = false; const skip = isLatest && !keyData.dataKey.settings.useAsThreshold;
let latestSettings: TbFlotLatestKeySettings;
if (isLatest) {
latestSettings = keyData.dataKey.settings;
if (!latestSettings.useAsThreshold) {
skip = true;
}
}
if (!skip && keyData && keyData.data && keyData.data[0]) { if (!skip && keyData && keyData.data && keyData.data[0]) {
const attrValue = keyData.data[0][1]; const value = keyData.data[0][1];
if (isNumeric(attrValue) && isFinite(attrValue)) { const values = Array.isArray(value) ? value : [value];
let yaxis: number; values.forEach(v => {
let lineWidth: number; const threshold = this.processSingleDataValue(v, keyData, keyData.dataKey.settings, existingThresholds, isLatest);
let color: string;
if (isLatest) {
yaxis = 1;
lineWidth = latestSettings.thresholdLineWidth;
color = latestSettings.thresholdColor || keyData.dataKey.color;
} else {
const settings: TbFlotThresholdKeySettings = keyData.dataKey.settings;
yaxis = settings.yaxis;
lineWidth = settings.lineWidth;
color = settings.color || keyData.dataKey.color;
}
const colorIndex = this.subscription.data.length + existingThresholds.length;
const threshold = this.generateThreshold(existingThresholds, yaxis, lineWidth, color, colorIndex, attrValue);
if (threshold != null) { if (threshold != null) {
thresholds.push(threshold); thresholds.push(threshold);
} }
} });
} }
}); });
return thresholds; return thresholds;
} }
private processSingleDataValue(attrValue: number, keyData: DatasourceData, latestSettings: TbFlotLatestKeySettings, existingThresholds: TbFlotThresholdMarking[], isLatest = false) {
if (isNumeric(attrValue) && isFinite(attrValue)) {
let yaxis: number;
let lineWidth: number;
let color: string;
if (isLatest) {
yaxis = 1;
lineWidth = latestSettings.thresholdLineWidth;
color = latestSettings.thresholdColor || keyData.dataKey.color;
} else {
const settings: TbFlotThresholdKeySettings = keyData.dataKey.settings;
yaxis = settings.yaxis;
lineWidth = settings.lineWidth;
color = settings.color || keyData.dataKey.color;
}
const colorIndex = this.subscription.data.length + existingThresholds.length;
return this.generateThreshold(existingThresholds, yaxis, lineWidth, color, colorIndex, attrValue);
}
}
private generateThreshold(existingThresholds: TbFlotThresholdMarking[], yaxis: number, lineWidth: number, private generateThreshold(existingThresholds: TbFlotThresholdMarking[], yaxis: number, lineWidth: number,
color: string, defaultColorIndex: number, thresholdValue: number): TbFlotThresholdMarking { color: string, defaultColorIndex: number, thresholdValue: number): TbFlotThresholdMarking {
const marking: TbFlotThresholdMarking = {}; const marking: TbFlotThresholdMarking = {};