diff --git a/client/src/components/Graph.vue b/client/src/components/Graph.vue index f16b02a..56c23e6 100644 --- a/client/src/components/Graph.vue +++ b/client/src/components/Graph.vue @@ -21,7 +21,7 @@ import _ from "lodash"; import { AnalyticUnitType } from '@/types/analytic_units'; import { defineComponent, watch } from 'vue'; -import { getHSR } from "@/services/analytics.service"; +import { getHSRAnomaly } from "@/services/analytics.service"; // TODO: move to store async function resolveDataPatterns(range: TimeRange): Promise<{ @@ -86,6 +86,7 @@ async function resolveDataThreshold(range: TimeRange): Promise<{ // TODO: remove code repetition async function resolveDataAnomaly(range: TimeRange): Promise<{ timeserie: LineTimeSerie[], + segments: Segment[] }> { @@ -98,11 +99,25 @@ async function resolveDataAnomaly(range: TimeRange): Promise<{ // TODO: request in parallel let [target, values] = await getMetrics(startTime, endTime, step); let segments = await getSegments(startTime, endTime, false); - let hsr = await getHSR(startTime, endTime); + let hsr = await getHSRAnomaly(startTime, endTime); return { timeserie: [ { target: target, datapoints: values, color: 'green' }, - { target: "HSR", datapoints: hsr, color: 'red', confidence: 100 } + { + target: "HSR", + datapoints: hsr.map(([t, v, [l, u]]) => [t, v]), + color: 'red' + }, + { + target: "HSR_Upper_bound", + datapoints: hsr.map(([t, v, [u, l]]) => [t, u]), + color: 'red' + }, + { + target: "HSR_Lower_bound", + datapoints: hsr.map(([t, v, [u, l]]) => [t, l]), + color: 'red' + } ], segments: segments, } diff --git a/client/src/components/pods/hastic_pod.ts b/client/src/components/pods/hastic_pod.ts index 6e095be..9dbc12b 100644 --- a/client/src/components/pods/hastic_pod.ts +++ b/client/src/components/pods/hastic_pod.ts @@ -16,7 +16,7 @@ export abstract class HasticPod extends LinePod { protected segmentSet: SegmentsSet ) { super(el, undefined, { - renderLegend: false, + renderLegend: true, zoomEvents: { mouse: { zoom: { diff --git a/client/src/services/analytics.service.ts b/client/src/services/analytics.service.ts index 1fcab15..c671140 100644 --- a/client/src/services/analytics.service.ts +++ b/client/src/services/analytics.service.ts @@ -57,7 +57,7 @@ export function getStatusGenerator(): AsyncIterableIterator { return getGenerator(100, getStatus); } -export async function getHSR(from: number, to: number): Promise<[number, number][]> { +export async function getHSRAnomaly(from: number, to: number): Promise<[number, number, [number, number]][]> { if(from >= to) { throw new Error("`from` can`t be less than `to`"); } @@ -65,8 +65,8 @@ export async function getHSR(from: number, to: number): Promise<[number, number] const uri = ANALYTICS_API_URL + `hsr/?from=${from}&to=${to}`; const res = await axios.get(uri); - const values = res["data"]["TimeSerie"]; + const values = res["data"]["ConfidenceTimeSerie"]; console.log(values); - return values as [number, number][]; + return values as [number, number, [number, number]][]; } diff --git a/client/src/views/Home.vue b/client/src/views/Home.vue index fed850d..4035f39 100644 --- a/client/src/views/Home.vue +++ b/client/src/views/Home.vue @@ -35,7 +35,7 @@
Alpha:
- Confidence: + Confidence:

diff --git a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs index c0451c3..cde8421 100644 --- a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs @@ -77,14 +77,14 @@ impl AnalyticUnit for AnomalyAnalyticUnit { } let mut sts = Vec::new(); - sts.push(ts[0]); + sts.push((ts[0].0, ts[0].1, ((ts[0].1 + self.config.confidence, ts[0].1 - self.config.confidence)))); for t in 1..ts.len() { let alpha = self.config.alpha; let stv = alpha * ts[t].1 + (1.0 - alpha) * sts[t - 1].1; - sts.push((ts[t].0, stv)); + sts.push((ts[t].0, stv, (stv + self.config.confidence, stv - self.config.confidence))); } - Ok(HSR::TimeSerie(sts)) + Ok(HSR::ConfidenceTimeSerie(sts)) } } diff --git a/server/src/services/analytic_service/types.rs b/server/src/services/analytic_service/types.rs index 9513484..ea4c58f 100644 --- a/server/src/services/analytic_service/types.rs +++ b/server/src/services/analytic_service/types.rs @@ -66,7 +66,8 @@ pub struct DetectionTask { // varies for different analytic units #[derive(Debug, Serialize)] pub enum HSR { - TimeSerie(Vec<(u64, f64)>) + TimeSerie(Vec<(u64, f64)>), + ConfidenceTimeSerie(Vec<(u64, f64, (f64, f64))>) } #[derive(Debug)]