Browse Source

change analytic status type && handle GET /status errors

pull/91/head
rozetko 2 years ago
parent
commit
70c49fe91b
  1. 6
      client/src/components/AnlyticsStatus.vue
  2. 31
      client/src/services/analytics.service.ts
  3. 17
      client/src/store/index.ts

6
client/src/components/AnlyticsStatus.vue

@ -1,10 +1,12 @@
<template> <template>
<div class="analytic-status"> <div class="analytic-status">
analytic status: <strong> {{ status }} </strong> analytic status: <strong> {{ status.message }} </strong>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { AnalyticStatus } from "@/store";
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
@ -13,7 +15,7 @@ export default defineComponent({
components: { components: {
}, },
computed: { computed: {
status() { status(): AnalyticStatus {
return this.$store.state.analyticStatus; return this.$store.state.analyticStatus;
} }
} }

31
client/src/services/analytics.service.ts

@ -5,20 +5,33 @@ import axios from 'axios';
import { getGenerator } from '@/utils'; import { getGenerator } from '@/utils';
import _ from 'lodash'; import {
import {
AnalyticUnitType, AnlyticUnitConfig, AnalyticUnitType, AnlyticUnitConfig,
PatternConfig, ThresholdConfig, AnomalyConfig PatternConfig, ThresholdConfig, AnomalyConfig
} from "@/types/analytic_units"; } from "@/types/analytic_units";
import { AnomalyHSR } from "@/types"; import { AnomalyHSR } from "@/types";
import { AnalyticStatus } from "@/store";
import _ from 'lodash';
const ANALYTICS_API_URL = API_URL + "analytics/"; const ANALYTICS_API_URL = API_URL + "analytics/";
export async function getStatus(): Promise<string> { export async function getStatus(): Promise<AnalyticStatus> {
const uri = ANALYTICS_API_URL + `status`; const uri = ANALYTICS_API_URL + `status`;
const res = await axios.get(uri); try {
const data = res['data'] as any; const res = await axios.get<{ status: string }>(uri);
return data.status; const data = res.data;
return {
available: true,
message: data.status
};
} catch (e) {
return {
available: false,
message: e.message
};
}
} }
export async function getConfig(): Promise<[AnalyticUnitType, AnlyticUnitConfig]> { export async function getConfig(): Promise<[AnalyticUnitType, AnlyticUnitConfig]> {
@ -54,8 +67,8 @@ export async function patchConfig(patchObj: any) {
await axios.patch(uri, patchObj); await axios.patch(uri, patchObj);
} }
export function getStatusGenerator(): AsyncIterableIterator<string> { export function getStatusGenerator(): AsyncIterableIterator<AnalyticStatus> {
return getGenerator<string>(100, getStatus); return getGenerator<AnalyticStatus>(100, getStatus);
} }
@ -68,6 +81,6 @@ export async function getHSRAnomaly(from: number, to: number): Promise<AnomalyHS
const res = await axios.get(uri); const res = await axios.get(uri);
const values = res["data"]["AnomalyHSR"]; const values = res["data"]["AnomalyHSR"];
return values as AnomalyHSR; return values as AnomalyHSR;
} }

17
client/src/store/index.ts

@ -12,23 +12,30 @@ const _SET_STATUS_GENERATOR = '_SET_STATUS_GENERATOR';
// TODO: consts for actions // TODO: consts for actions
export type AnalyticStatus = {
available: boolean,
message: string,
}
type State = { type State = {
analyticStatus: string, analyticStatus: AnalyticStatus,
analyticUnitType?: AnalyticUnitType, analyticUnitType?: AnalyticUnitType,
analyticUnitConfig?: AnlyticUnitConfig, analyticUnitConfig?: AnlyticUnitConfig,
_statusGenerator: AsyncIterableIterator<string> _statusGenerator: AsyncIterableIterator<AnalyticStatus>
} }
const store = createStore<State>({ const store = createStore<State>({
state: { state: {
analyticStatus: 'loading...', analyticStatus: {
available: false,
message: 'loading...',
},
analyticUnitType: null, analyticUnitType: null,
analyticUnitConfig: null, analyticUnitConfig: null,
_statusGenerator: null _statusGenerator: null
}, },
mutations: { mutations: {
[SET_ANALYTICS_STATUS](state, status: string) { [SET_ANALYTICS_STATUS](state, status: AnalyticStatus) {
state.analyticStatus = status; state.analyticStatus = status;
}, },
[SET_DETECTOR_CONFIG](state, { analyticUnitType, analyticUnitConfig }) { [SET_DETECTOR_CONFIG](state, { analyticUnitType, analyticUnitConfig }) {
@ -38,7 +45,7 @@ const store = createStore<State>({
// [PATCH_CONFIG](state, patchObj) { // [PATCH_CONFIG](state, patchObj) {
// patchConfig(patchConfig) // patchConfig(patchConfig)
// } // }
[_SET_STATUS_GENERATOR](state, generator: AsyncIterableIterator<string>) { [_SET_STATUS_GENERATOR](state, generator: AsyncIterableIterator<AnalyticStatus>) {
state._statusGenerator = generator; state._statusGenerator = generator;
} }
}, },

Loading…
Cancel
Save