in public/pages/AnomalyCharts/utils/anomalyChartUtils.tsx [59:166]
severity: get(alert, 'severity'),
state: get(alert, 'state'),
error: get(alert, 'error_message'),
startTime: get(alert, 'start_time'),
endTime: get(alert, 'end_time'),
acknowledgedTime: get(alert, 'acknowledged_time'),
};
});
};
const getAlertMessage = (alert: MonitorAlert): string => {
const message = alert.endTime
? `There is a severity ${alert.severity} alert with state ${
alert.state
} between ${dateFormatter(alert.startTime)} and ${dateFormatter(
alert.endTime
)}.`
: `There is a severity ${alert.severity} alert with state ${
alert.state
} from ${dateFormatter(alert.startTime)}.`;
return alert.error ? `${message} Error message: ${alert.error}` : message;
};
export const generateAlertAnnotations = (alerts: MonitorAlert[]): any[] => {
return alerts.map((alert: MonitorAlert) => ({
header: dateFormatter(alert.startTime),
dataValue: alert.startTime,
details: getAlertMessage(alert),
}));
};
const findLatestAnomaly = (anomalies: any[]) => {
const latestAnomaly = anomalies.reduce((prevAnomaly, curAnomaly) =>
prevAnomaly.startTime > curAnomaly.startTime ? prevAnomaly : curAnomaly
);
return latestAnomaly;
};
const getAverageAnomalyGrade = (anomalyGrades: any[]) => {
return anomalyGrades.length > 0
? toFixedNumberForAnomaly(
anomalyGrades.reduce((prevGrade, curGrade) => prevGrade + curGrade, 0) /
anomalyGrades.length
)
: 0;
};
export const getAnomalySummary = (totalAnomalies: any[]): AnomalySummary => {
if (totalAnomalies == undefined || totalAnomalies.length === 0) {
return DEFAULT_ANOMALY_SUMMARY;
}
const anomalies = totalAnomalies.filter(
(anomaly) => anomaly.anomalyGrade > 0
);
const anomalyGrades = anomalies.map((anomaly) => anomaly.anomalyGrade);
const anomalyConfidences = anomalies.map((anomaly) => anomaly.confidence);
const maxConfidence = Math.max(...anomalyConfidences, 0.0);
const minConfidence = Math.min(...anomalyConfidences, 1.0);
const maxAnomalyGrade = Math.max(...anomalyGrades, 0.0);
const minAnomalyGrade = Math.min(...anomalyGrades, 1.0);
const avgAnomalyGrade = getAverageAnomalyGrade(anomalyGrades);
const lastAnomalyOccurrence =
anomalies.length > 0
? minuteDateFormatter(findLatestAnomaly(anomalies).endTime)
: '-';
return {
anomalyOccurrence: anomalies.length,
minAnomalyGrade: minAnomalyGrade > maxAnomalyGrade ? 0 : minAnomalyGrade,
maxAnomalyGrade: maxAnomalyGrade,
avgAnomalyGrade: avgAnomalyGrade,
minConfidence: minConfidence > maxConfidence ? 0 : minConfidence,
maxConfidence: maxConfidence,
lastAnomalyOccurrence: lastAnomalyOccurrence,
};
};
export const disabledHistoryAnnotations = (
dateRange: DateRange,
detector?: Detector
): RectAnnotationDatum[] => {
if (
!detector ||
!detector.disabledTime ||
detector.disabledTime > dateRange.endDate.valueOf() ||
!detector.enabledTime ||
detector.enabledTime < dateRange.startDate.valueOf()
) {
return [];
}
const startTime = detector.disabledTime;
const endTime = detector.enabled
? detector.enabledTime
: dateRange.endDate.valueOf();
const details =
detector.enabled && detector.enabledTime
? `Detector was stopped from ${dateFormatter(
startTime
)} to ${dateFormatter(detector.enabledTime)}`
: `Detector was stopped from ${dateFormatter(startTime)} until now`;
const coordinateX0 =
startTime >= dateRange.startDate.valueOf()
? startTime
: dateRange.startDate.valueOf();
return [
{
coordinates: {