diff --git a/src/Frontend/src/components/BackendChecksNotifications.vue b/src/Frontend/src/components/BackendChecksNotifications.vue index 36ccab2c8..d04a147fd 100644 --- a/src/Frontend/src/components/BackendChecksNotifications.vue +++ b/src/Frontend/src/components/BackendChecksNotifications.vue @@ -9,6 +9,7 @@ import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndSt import useEnvironmentAndVersionsAutoRefresh from "@/composables/useEnvironmentAndVersionsAutoRefresh"; import { useServiceControlStore } from "@/stores/ServiceControlStore"; import { storeToRefs } from "pinia"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const router = useRouter(); @@ -18,7 +19,9 @@ const monitoringConnectionState = connectionStore.monitoringConnectionState; const { store: environmentStore } = useEnvironmentAndVersionsAutoRefresh(); const environment = environmentStore.environment; const serviceControlStore = useServiceControlStore(); -const { monitoringUrl, serviceControlUrl, isMonitoringDisabled } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { serviceControlUrl } = storeToRefs(serviceControlStore); +const { monitoringUrl, isMonitoringDisabled } = storeToRefs(monitoringStore); const primaryConnectionFailure = computed(() => connectionState.unableToConnect); const monitoringConnectionFailure = computed(() => monitoringConnectionState.unableToConnect); diff --git a/src/Frontend/src/components/PageFooter.vue b/src/Frontend/src/components/PageFooter.vue index 69527a1cc..b6f5a40d6 100644 --- a/src/Frontend/src/components/PageFooter.vue +++ b/src/Frontend/src/components/PageFooter.vue @@ -10,6 +10,7 @@ import { useServiceControlStore } from "@/stores/ServiceControlStore"; import { storeToRefs } from "pinia"; import { useConfigurationStore } from "@/stores/ConfigurationStore"; import { useLicenseStore } from "@/stores/LicenseStore"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const { store: connectionStore } = useConnectionsAndStatsAutoRefresh(); const connectionState = connectionStore.connectionState; @@ -18,7 +19,9 @@ const { store: environmentAndVersionsStore } = useEnvironmentAndVersionsAutoRefr const newVersions = environmentAndVersionsStore.newVersions; const environment = environmentAndVersionsStore.environment; const serviceControlStore = useServiceControlStore(); -const { serviceControlUrl, monitoringUrl } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { serviceControlUrl } = storeToRefs(serviceControlStore); +const { monitoringUrl } = storeToRefs(monitoringStore); const licenseStore = useLicenseStore(); const { licenseStatus, license } = licenseStore; diff --git a/src/Frontend/src/components/PageHeader.vue b/src/Frontend/src/components/PageHeader.vue index 640f2dcdd..0e46ff00a 100644 --- a/src/Frontend/src/components/PageHeader.vue +++ b/src/Frontend/src/components/PageHeader.vue @@ -12,11 +12,11 @@ import DashboardMenuItem from "@/components/dashboard/DashboardMenuItem.vue"; import FeedbackButton from "@/components/FeedbackButton.vue"; import ThroughputMenuItem from "@/views/throughputreport/ThroughputMenuItem.vue"; import AuditMenuItem from "./audit/AuditMenuItem.vue"; -import { useServiceControlStore } from "@/stores/ServiceControlStore"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; import { storeToRefs } from "pinia"; -const serviceControlStore = useServiceControlStore(); -const { isMonitoringEnabled } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { isMonitoringEnabled } = storeToRefs(monitoringStore); // prettier-ignore const menuItems = computed( () => [ diff --git a/src/Frontend/src/components/configuration/EndpointConnection.vue b/src/Frontend/src/components/configuration/EndpointConnection.vue index 86669e16a..dbbb4c9c8 100644 --- a/src/Frontend/src/components/configuration/EndpointConnection.vue +++ b/src/Frontend/src/components/configuration/EndpointConnection.vue @@ -6,6 +6,7 @@ import CodeEditor from "@/components/CodeEditor.vue"; import { useServiceControlStore } from "@/stores/ServiceControlStore"; import { storeToRefs } from "pinia"; import LoadingSpinner from "../LoadingSpinner.vue"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; interface ServiceControlInstanceConnection { settings: { [key: string]: object }; @@ -19,7 +20,9 @@ interface MetricsConnectionDetails { } const serviceControlStore = useServiceControlStore(); -const { serviceControlUrl, monitoringUrl } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { serviceControlUrl } = storeToRefs(serviceControlStore); +const { monitoringUrl } = storeToRefs(monitoringStore); const loading = ref(true); const showCodeOnlyTab = ref(true); @@ -102,7 +105,7 @@ async function getServiceControlConnection() { async function getMonitoringConnection() { try { - const [, data] = await serviceControlStore.fetchTypedFromMonitoring<{ Metrics: MetricsConnectionDetails }>("connection"); + const [, data] = await monitoringStore.fetchTypedFromMonitoring<{ Metrics: MetricsConnectionDetails }>("connection"); return { ...data, errors: [] }; } catch { return { Metrics: null, errors: [`Error SC Monitoring instance at ${monitoringUrl.value}connection`] }; diff --git a/src/Frontend/src/components/configuration/PlatformConnections.vue b/src/Frontend/src/components/configuration/PlatformConnections.vue index b62108794..2a1bc31cc 100644 --- a/src/Frontend/src/components/configuration/PlatformConnections.vue +++ b/src/Frontend/src/components/configuration/PlatformConnections.vue @@ -5,16 +5,19 @@ import FAIcon from "@/components/FAIcon.vue"; import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh"; import { useServiceControlStore } from "@/stores/ServiceControlStore"; import { storeToRefs } from "pinia"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const { store: connectionStore } = useConnectionsAndStatsAutoRefresh(); const connectionState = connectionStore.connectionState; const monitoringConnectionState = connectionStore.monitoringConnectionState; const serviceControlStore = useServiceControlStore(); +const monitoringStore = useMonitoringStore(); serviceControlStore.refresh(); +monitoringStore.refresh(); const localServiceControlUrl = ref(serviceControlStore.serviceControlUrl); -const localMonitoringUrl = ref(serviceControlStore.monitoringUrl); -const { isMonitoringDisabled } = storeToRefs(serviceControlStore); +const localMonitoringUrl = ref(monitoringStore.monitoringUrl); +const { isMonitoringDisabled } = storeToRefs(monitoringStore); const testingServiceControl = ref(false); const serviceControlValid = ref(null); diff --git a/src/Frontend/src/components/monitoring/EndpointDetails.vue b/src/Frontend/src/components/monitoring/EndpointDetails.vue index defa03348..055a1cc06 100644 --- a/src/Frontend/src/components/monitoring/EndpointDetails.vue +++ b/src/Frontend/src/components/monitoring/EndpointDetails.vue @@ -20,7 +20,7 @@ import { useMonitoringHistoryPeriodStore } from "@/stores/MonitoringHistoryPerio import routeLinks from "@/router/routeLinks"; import FAIcon from "@/components/FAIcon.vue"; import { faEnvelope } from "@fortawesome/free-solid-svg-icons"; -import { useServiceControlStore } from "@/stores/ServiceControlStore"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const { store: connectionStore } = useConnectionsAndStatsAutoRefresh(); const monitoringConnectionState = connectionStore.monitoringConnectionState; @@ -30,13 +30,13 @@ const router = useRouter(); const endpointName = route.params.endpointName.toString(); let refreshInterval: number; -const monitoringStore = useMonitoringEndpointDetailsStore(); +const monitoringEndpointDetailsStore = useMonitoringEndpointDetailsStore(); const monitoringHistoryPeriodStore = useMonitoringHistoryPeriodStore(); -const serviceControlStore = useServiceControlStore(); -const { isMonitoringDisabled } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { isMonitoringDisabled } = storeToRefs(monitoringStore); const { historyPeriod } = storeToRefs(monitoringHistoryPeriodStore); -const { negativeCriticalTimeIsPresent, endpointDetails: endpoint } = storeToRefs(monitoringStore); +const { negativeCriticalTimeIsPresent, endpointDetails: endpoint } = storeToRefs(monitoringEndpointDetailsStore); watch(historyPeriod, (newValue) => { changeRefreshInterval(newValue.refreshIntervalVal); @@ -57,7 +57,7 @@ const activeTab = computed({ }); async function getEndpointDetails() { - await monitoringStore.getEndpointDetails(endpointName); + await monitoringEndpointDetailsStore.getEndpointDetails(endpointName); } function changeRefreshInterval(milliseconds: number) { diff --git a/src/Frontend/src/components/monitoring/EndpointInstances.vue b/src/Frontend/src/components/monitoring/EndpointInstances.vue index 597be7526..c29a3a4dc 100644 --- a/src/Frontend/src/components/monitoring/EndpointInstances.vue +++ b/src/Frontend/src/components/monitoring/EndpointInstances.vue @@ -12,19 +12,19 @@ import ColumnHeader from "@/components/ColumnHeader.vue"; import { CriticalTime, InstanceName, ProcessingTime, ScheduledRetries, Throughput } from "@/resources/MonitoringResources"; import FAIcon from "@/components/FAIcon.vue"; import { faEnvelope, faTrash } from "@fortawesome/free-solid-svg-icons"; -import { useServiceControlStore } from "@/stores/ServiceControlStore"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const isRemovingEndpointEnabled = ref(false); const router = useRouter(); -const monitoringStore = useMonitoringEndpointDetailsStore(); -const { endpointDetails: endpoint, endpointName } = storeToRefs(monitoringStore); +const monitoringEndpointDetailsStore = useMonitoringEndpointDetailsStore(); +const { endpointDetails: endpoint, endpointName } = storeToRefs(monitoringEndpointDetailsStore); -const serviceControlStore = useServiceControlStore(); +const monitoringStore = useMonitoringStore(); async function removeEndpoint(endpointName: string, instance: ExtendedEndpointInstance) { try { - await serviceControlStore.deleteFromMonitoring("monitored-instance/" + endpointName + "/" + instance.id); + await monitoringStore.deleteFromMonitoring("monitored-instance/" + endpointName + "/" + instance.id); endpoint.value.instances.splice(endpoint.value.instances.indexOf(instance), 1); if (endpoint.value.instances.length === 0) { router.push(routeLinks.monitoring.root); @@ -37,7 +37,7 @@ async function removeEndpoint(endpointName: string, instance: ExtendedEndpointIn async function getIsRemovingEndpointEnabled() { try { - const response = await serviceControlStore.optionsFromMonitoring(); + const response = await monitoringStore.optionsFromMonitoring(); if (response) { const headers = response.headers; const allow = headers.get("Allow"); diff --git a/src/Frontend/src/components/monitoring/MonitoringNotAvailable.vue b/src/Frontend/src/components/monitoring/MonitoringNotAvailable.vue index d59fcc6f2..ecdd51d55 100644 --- a/src/Frontend/src/components/monitoring/MonitoringNotAvailable.vue +++ b/src/Frontend/src/components/monitoring/MonitoringNotAvailable.vue @@ -1,9 +1,9 @@  diff --git a/src/Frontend/src/stores/ConnectionsAndStatsStore.ts b/src/Frontend/src/stores/ConnectionsAndStatsStore.ts index 42b7cf7c6..48086baf8 100644 --- a/src/Frontend/src/stores/ConnectionsAndStatsStore.ts +++ b/src/Frontend/src/stores/ConnectionsAndStatsStore.ts @@ -4,10 +4,12 @@ import { FailedMessage, FailedMessageStatus } from "@/resources/FailedMessage"; import { ConnectionState } from "@/resources/ConnectionState"; import { useCounter } from "@vueuse/core"; import { useServiceControlStore } from "./ServiceControlStore"; +import { useMonitoringStore } from "./MonitoringStore"; export const useConnectionsAndStatsStore = defineStore("ConnectionsAndStatsStore", () => { const serviceControlStore = useServiceControlStore(); - const { isMonitoringEnabled } = storeToRefs(serviceControlStore); + const monitoringStore = useMonitoringStore(); + const { isMonitoringEnabled } = storeToRefs(monitoringStore); const failedMessageCount = ref(0); const archivedMessageCount = ref(0); @@ -61,7 +63,7 @@ export const useConnectionsAndStatsStore = defineStore("ConnectionsAndStatsStore function getDisconnectedEndpointsCount() { return fetchAndSetConnectionState( - () => serviceControlStore.fetchTypedFromMonitoring("monitored-endpoints/disconnected"), + () => monitoringStore.fetchTypedFromMonitoring("monitored-endpoints/disconnected"), monitoringConnectionState, (_, data) => { return data; diff --git a/src/Frontend/src/stores/EnvironmentAndVersionsStore.ts b/src/Frontend/src/stores/EnvironmentAndVersionsStore.ts index aa7706b76..484917806 100644 --- a/src/Frontend/src/stores/EnvironmentAndVersionsStore.ts +++ b/src/Frontend/src/stores/EnvironmentAndVersionsStore.ts @@ -5,9 +5,11 @@ import { useMemoize } from "@vueuse/core"; import { acceptHMRUpdate, defineStore } from "pinia"; import { computed, reactive } from "vue"; import { useServiceControlStore } from "./ServiceControlStore"; +import { useMonitoringStore } from "./MonitoringStore"; export const useEnvironmentAndVersionsStore = defineStore("EnvironmentAndVersionsStore", () => { const serviceControlStore = useServiceControlStore(); + const monitoringStore = useMonitoringStore(); const environment = reactive({ monitoring_version: "", @@ -95,7 +97,7 @@ export const useEnvironmentAndVersionsStore = defineStore("EnvironmentAndVersion async function setMonitoringVersion() { try { - const [response] = await serviceControlStore.fetchTypedFromMonitoring(""); + const [response] = await monitoringStore.fetchTypedFromMonitoring(""); if (response) { environment.monitoring_version = response.headers.get("X-Particular-Version") ?? ""; } diff --git a/src/Frontend/src/stores/MonitoringEndpointDetailsStore.ts b/src/Frontend/src/stores/MonitoringEndpointDetailsStore.ts index 866fb7924..98816b509 100644 --- a/src/Frontend/src/stores/MonitoringEndpointDetailsStore.ts +++ b/src/Frontend/src/stores/MonitoringEndpointDetailsStore.ts @@ -9,12 +9,12 @@ import type GroupOperation from "@/resources/GroupOperation"; import { emptyEndpointDetails } from "@/components/monitoring/endpoints"; import { useMemoize } from "@vueuse/core"; import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh"; -import { useServiceControlStore } from "./ServiceControlStore"; +import { useMonitoringStore } from "./MonitoringStore"; export const useMonitoringEndpointDetailsStore = defineStore("MonitoringEndpointDetailsStore", () => { const historyPeriodStore = useMonitoringHistoryPeriodStore(); const { store: connectionStore } = useConnectionsAndStatsAutoRefresh(); - const serviceControlStore = useServiceControlStore(); + const monitoringStore = useMonitoringStore(); const messageGroupClient = createMessageGroupClient(); const getMemoisedEndpointDetails = useMemoize((endpointName: string, historyPeriod = 1) => { @@ -22,9 +22,9 @@ export const useMonitoringEndpointDetailsStore = defineStore("MonitoringEndpoint return { data, refresh: async () => { - if (serviceControlStore.isMonitoringEnabled) { + if (monitoringStore.isMonitoringEnabled) { try { - const [, details] = await serviceControlStore.fetchTypedFromMonitoring(`${`monitored-endpoints`}/${endpointName}?history=${historyPeriod}`); + const [, details] = await monitoringStore.fetchTypedFromMonitoring(`${`monitored-endpoints`}/${endpointName}?history=${historyPeriod}`); data.value = details!; } catch (error) { console.error(error); diff --git a/src/Frontend/src/stores/MonitoringStore.ts b/src/Frontend/src/stores/MonitoringStore.ts index 1890b5bdb..64e7d75ad 100644 --- a/src/Frontend/src/stores/MonitoringStore.ts +++ b/src/Frontend/src/stores/MonitoringStore.ts @@ -5,8 +5,9 @@ import { useMonitoringHistoryPeriodStore } from "./MonitoringHistoryPeriodStore" import type { EndpointGroup, Endpoint, GroupedEndpoint } from "@/resources/MonitoringEndpoint"; import type { SortInfo } from "@/components/SortInfo"; import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh"; -import { useServiceControlStore } from "./ServiceControlStore"; import GroupOperation from "@/resources/GroupOperation"; +import { getParameter, getParams } from "./environment"; +import { useServiceControlStore } from "./ServiceControlStore"; export const useMonitoringStore = defineStore("MonitoringStore", () => { const historyPeriodStore = useMonitoringHistoryPeriodStore(); @@ -14,9 +15,11 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => { const route = useRoute(); const router = useRouter(); const { store: connectionStore } = useConnectionsAndStatsAutoRefresh(); + //TODO: if/when a recoverabilityStore is created, replace this const serviceControlStore = useServiceControlStore(); //STORE STATE CONSTANTS + const monitoringUrl = ref(); const grouping = ref({ groupedEndpoints: [] as EndpointGroup[], groupSegments: 0, @@ -36,12 +39,39 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => { const endpointListIsGrouped = computed(() => grouping.value.selectedGrouping !== 0); const getEndpointList = computed(() => (filterString.value ? endpointList.value.filter((endpoint) => endpoint.name.toLowerCase().includes(filterString.value.toLowerCase())) : endpointList.value)); + const isMonitoringDisabled = computed(() => monitoringUrl.value == null || monitoringUrl.value === "" || monitoringUrl.value === "!"); + const isMonitoringEnabled = computed(() => !isMonitoringDisabled.value); + watch(sortBy, async () => await updateEndpointList(), { deep: true }); watch(filterString, async (newValue) => { await updateFilterString(newValue); }); //STORE ACTIONS + function getMonitoringUrl() { + if (!monitoringUrl.value) refresh(); + return monitoringUrl.value; + } + + function refresh() { + const params = getParams(); + const mu = getParameter(params, "mu"); + + if (mu) { + monitoringUrl.value = mu.value; + window.localStorage.setItem("mu", monitoringUrl.value); + console.debug(`Monitoring Url found in QS and stored in local storage: ${monitoringUrl.value}`); + } else if (window.localStorage.getItem("mu")) { + monitoringUrl.value = window.localStorage.getItem("mu"); + console.debug(`Monitoring Url, not in QS, found in local storage: ${monitoringUrl.value}`); + } else if (window.defaultConfig && window.defaultConfig.monitoring_urls && window.defaultConfig.monitoring_urls.length) { + monitoringUrl.value = window.defaultConfig.monitoring_urls[0]; + console.debug(`setting Monitoring Url to its default value: ${window.defaultConfig.monitoring_urls[0]}`); + } else { + console.warn("Monitoring Url is not defined."); + } + } + async function updateFilterString(filter: string | null = null) { filterString.value = filter ?? route.query.filter?.toString() ?? ""; @@ -73,9 +103,9 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => { async function getAllMonitoredEndpoints() { let endpoints: Endpoint[] = []; - if (serviceControlStore.isMonitoringEnabled) { + if (isMonitoringEnabled.value) { try { - const [, data] = await serviceControlStore.fetchTypedFromMonitoring(`monitored-endpoints?history=${historyPeriodStore.historyPeriod.pVal}`); + const [, data] = await fetchTypedFromMonitoring(`monitored-endpoints?history=${historyPeriodStore.historyPeriod.pVal}`); endpoints = data ?? []; const [, exceptionGroups] = await serviceControlStore.fetchTypedFromServiceControl(`recoverability/groups/Endpoint Name`); @@ -200,8 +230,40 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => { } } + async function fetchTypedFromMonitoring(suffix: string): Promise<[Response?, T?]> { + if (!monitoringUrl.value) refresh(); + + if (isMonitoringDisabled.value) { + return []; + } + + const response = await fetch(`${getMonitoringUrl()}${suffix}`); + const data = await response.json(); + + return [response, data]; + } + + async function deleteFromMonitoring(suffix: string) { + const requestOptions = { + method: "DELETE", + }; + return await fetch(`${getMonitoringUrl()}${suffix}`, requestOptions); + } + + async function optionsFromMonitoring() { + if (isMonitoringDisabled.value) { + return Promise.resolve(null); + } + + const requestOptions = { + method: "OPTIONS", + }; + return await fetch(getMonitoringUrl() ?? "", requestOptions); + } + return { //state + monitoringUrl, grouping, endpointList, disconnectedEndpointCount, @@ -209,15 +271,21 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => { sortBy, //getters + isMonitoringDisabled, + isMonitoringEnabled, endpointListCount, endpointListIsEmpty, endpointListIsGrouped, getEndpointList, //actions + refresh, updateSelectedGrouping, updateEndpointList, updateFilterString, + fetchTypedFromMonitoring, + deleteFromMonitoring, + optionsFromMonitoring, }; }); diff --git a/src/Frontend/src/stores/ServiceControlStore.ts b/src/Frontend/src/stores/ServiceControlStore.ts index 40611b1ae..d8eb15275 100644 --- a/src/Frontend/src/stores/ServiceControlStore.ts +++ b/src/Frontend/src/stores/ServiceControlStore.ts @@ -1,12 +1,9 @@ import { acceptHMRUpdate, defineStore } from "pinia"; -import { computed, ref } from "vue"; +import { ref } from "vue"; +import { getParameter, getParams } from "./environment"; export const useServiceControlStore = defineStore("ServiceControlStore", () => { const serviceControlUrl = ref(); - const monitoringUrl = ref(); - - const isMonitoringDisabled = computed(() => monitoringUrl.value == null || monitoringUrl.value === "" || monitoringUrl.value === "!"); - const isMonitoringEnabled = computed(() => !isMonitoringDisabled.value); function getServiceControlUrl() { if (!serviceControlUrl.value) { @@ -18,15 +15,9 @@ export const useServiceControlStore = defineStore("ServiceControlStore", () => { return serviceControlUrl.value; } - function getMonitoringUrl() { - if (!monitoringUrl.value) refresh(); - return monitoringUrl.value; - } - function refresh() { const params = getParams(); const scu = getParameter(params, "scu"); - const mu = getParameter(params, "mu"); if (scu) { serviceControlUrl.value = scu.value; @@ -41,20 +32,6 @@ export const useServiceControlStore = defineStore("ServiceControlStore", () => { } else { console.warn("ServiceControl Url is not defined."); } - - if (mu) { - monitoringUrl.value = mu.value; - window.localStorage.setItem("mu", monitoringUrl.value); - console.debug(`Monitoring Url found in QS and stored in local storage: ${monitoringUrl.value}`); - } else if (window.localStorage.getItem("mu")) { - monitoringUrl.value = window.localStorage.getItem("mu"); - console.debug(`Monitoring Url, not in QS, found in local storage: ${monitoringUrl.value}`); - } else if (window.defaultConfig && window.defaultConfig.monitoring_urls && window.defaultConfig.monitoring_urls.length) { - monitoringUrl.value = window.defaultConfig.monitoring_urls[0]; - console.debug(`setting Monitoring Url to its default value: ${window.defaultConfig.monitoring_urls[0]}`); - } else { - console.warn("Monitoring Url is not defined."); - } } async function fetchFromServiceControl(suffix: string, options?: { cache?: RequestCache }) { @@ -76,17 +53,6 @@ export const useServiceControlStore = defineStore("ServiceControlStore", () => { return [response, data]; } - async function fetchTypedFromMonitoring(suffix: string): Promise<[Response?, T?]> { - if (isMonitoringDisabled.value) { - return []; - } - - const response = await fetch(`${getMonitoringUrl()}${suffix}`); - const data = await response.json(); - - return [response, data]; - } - async function postToServiceControl(suffix: string, payload: object | null = null) { const requestOptions: RequestInit = { method: "POST", @@ -116,24 +82,6 @@ export const useServiceControlStore = defineStore("ServiceControlStore", () => { return await fetch(`${getServiceControlUrl()}${suffix}`, requestOptions); } - async function deleteFromMonitoring(suffix: string) { - const requestOptions = { - method: "DELETE", - }; - return await fetch(`${getMonitoringUrl()}${suffix}`, requestOptions); - } - - async function optionsFromMonitoring() { - if (isMonitoringDisabled.value) { - return Promise.resolve(null); - } - - const requestOptions = { - method: "OPTIONS", - }; - return await fetch(getMonitoringUrl() ?? "", requestOptions); - } - async function patchToServiceControl(suffix: string, payload: object | null) { const requestOptions: RequestInit = { method: "PATCH", @@ -148,47 +96,15 @@ export const useServiceControlStore = defineStore("ServiceControlStore", () => { return { refresh, serviceControlUrl, - monitoringUrl, - isMonitoringDisabled, - isMonitoringEnabled, fetchFromServiceControl, fetchTypedFromServiceControl, - fetchTypedFromMonitoring, putToServiceControl, postToServiceControl, patchToServiceControl, deleteFromServiceControl, - deleteFromMonitoring, - optionsFromMonitoring, }; }); -interface Param { - name: string; - value: string; -} - -function getParams() { - const params: Param[] = []; - - if (!window.location.search) return params; - - const searchParams = window.location.search.split("&"); - - searchParams.forEach((p) => { - p = p.startsWith("?") ? p.substring(1, p.length) : p; - const singleParam = p.split("="); - params.push({ name: singleParam[0], value: singleParam[1] }); - }); - return params; -} - -function getParameter(params: Param[], key: string) { - return params.find((param) => { - return param.name === key; - }); -} - if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(useServiceControlStore, import.meta.hot)); } diff --git a/src/Frontend/src/stores/ThroughputStore.ts b/src/Frontend/src/stores/ThroughputStore.ts index 08b133db5..19eff3fe6 100644 --- a/src/Frontend/src/stores/ThroughputStore.ts +++ b/src/Frontend/src/stores/ThroughputStore.ts @@ -4,11 +4,11 @@ import ConnectionTestResults from "@/resources/ConnectionTestResults"; import createThroughputClient from "@/views/throughputreport/throughputClient"; import { Transport } from "@/views/throughputreport/transport"; import useIsThroughputSupported from "@/views/throughputreport/isThroughputSupported"; -import { useServiceControlStore } from "./ServiceControlStore"; +import { useMonitoringStore } from "./MonitoringStore"; export const useThroughputStore = defineStore("ThroughputStore", () => { - const serviceControlStore = useServiceControlStore(); - const { isMonitoringEnabled } = storeToRefs(serviceControlStore); + const monitoringStore = useMonitoringStore(); + const { isMonitoringEnabled } = storeToRefs(monitoringStore); const testResults = ref(null); const isThroughputSupported = useIsThroughputSupported(); diff --git a/src/Frontend/src/stores/environment.ts b/src/Frontend/src/stores/environment.ts new file mode 100644 index 000000000..23a791ef6 --- /dev/null +++ b/src/Frontend/src/stores/environment.ts @@ -0,0 +1,26 @@ +interface Param { + name: string; + value: string; +} + +//TODO we probbly should use https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams#parsing_window.location +export function getParams() { + const params: Param[] = []; + + if (!window.location.search) return params; + + const searchParams = window.location.search.split("&"); + + searchParams.forEach((p) => { + p = p.startsWith("?") ? p.substring(1, p.length) : p; + const singleParam = p.split("="); + params.push({ name: singleParam[0], value: singleParam[1] }); + }); + return params; +} + +export function getParameter(params: Param[], key: string) { + return params.find((param) => { + return param.name === key; + }); +} diff --git a/src/Frontend/src/views/throughputreport/SetupView.vue b/src/Frontend/src/views/throughputreport/SetupView.vue index 62c71ef16..ec5f7375c 100644 --- a/src/Frontend/src/views/throughputreport/SetupView.vue +++ b/src/Frontend/src/views/throughputreport/SetupView.vue @@ -6,13 +6,13 @@ import ThroughputSupported from "@/views/throughputreport/ThroughputSupported.vu import FAIcon from "@/components/FAIcon.vue"; import { faCheck, faTimes } from "@fortawesome/free-solid-svg-icons"; import useThroughputStoreAutoRefresh from "@/composables/useThroughputStoreAutoRefresh"; -import { useServiceControlStore } from "@/stores/ServiceControlStore"; +import { useMonitoringStore } from "@/stores/MonitoringStore"; const { store } = useThroughputStoreAutoRefresh(); const { testResults, isBrokerTransport } = storeToRefs(store); -const serviceControlStore = useServiceControlStore(); -const { isMonitoringEnabled } = storeToRefs(serviceControlStore); +const monitoringStore = useMonitoringStore(); +const { isMonitoringEnabled } = storeToRefs(monitoringStore);