You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.0 KiB
106 lines
2.0 KiB
import { AnalyticUnit } from './analytic_unit_model'; |
|
import { AnalyticUnitId, AnalyticUnitStatus, DetectorType } from './types'; |
|
|
|
import { Metric } from '@corpglory/tsdb-kit'; |
|
|
|
|
|
export enum Condition { |
|
ABOVE = '>', |
|
ABOVE_OR_EQUAL = '>=', |
|
EQUAL = '=', |
|
LESS_OR_EQUAL = '<=', |
|
LESS = '<', |
|
NO_DATA = 'NO_DATA' |
|
}; |
|
|
|
export class ThresholdAnalyticUnit extends AnalyticUnit { |
|
|
|
public learningAfterUpdateRequired = true; |
|
|
|
constructor( |
|
name: string, |
|
grafanaUrl: string, |
|
panelId: string, |
|
type: string, |
|
public value: number, |
|
public condition: Condition, |
|
metric?: Metric, |
|
alert?: boolean, |
|
id?: AnalyticUnitId, |
|
lastDetectionTime?: number, |
|
status?: AnalyticUnitStatus, |
|
error?: string, |
|
labeledColor?: string, |
|
deletedColor?: string, |
|
visible?: boolean, |
|
collapsed?: boolean |
|
) { |
|
super( |
|
name, |
|
grafanaUrl, |
|
panelId, |
|
type, |
|
metric, |
|
alert, |
|
id, |
|
lastDetectionTime, |
|
status, |
|
error, |
|
labeledColor, |
|
deletedColor, |
|
DetectorType.THRESHOLD, |
|
visible, |
|
collapsed |
|
); |
|
} |
|
|
|
toObject() { |
|
const baseObject = super.toObject(); |
|
return { |
|
...baseObject, |
|
...this.analyticProps |
|
}; |
|
} |
|
|
|
toPanelObject() { |
|
const baseObject = super.toPanelObject(); |
|
return { |
|
...baseObject, |
|
...this.analyticProps |
|
}; |
|
} |
|
|
|
static fromObject(obj: any) { |
|
// TODO: remove duplication |
|
let metric: Metric | undefined = undefined; |
|
if (obj.metric !== undefined) { |
|
metric = Metric.fromObject(obj.metric); |
|
} |
|
|
|
return new ThresholdAnalyticUnit( |
|
obj.name, |
|
obj.grafanaUrl, |
|
obj.panelId, |
|
obj.type, |
|
obj.value, |
|
obj.condition, |
|
metric, |
|
obj.alert, |
|
obj._id, |
|
obj.lastDetectionTime, |
|
obj.status, |
|
obj.error, |
|
obj.labeledColor, |
|
obj.deletedColor, |
|
obj.visible, |
|
obj.collapsed |
|
); |
|
} |
|
|
|
get analyticProps() { |
|
return { |
|
value: this.value, |
|
condition: this.condition |
|
} |
|
} |
|
}
|
|
|