mirror of
https://github.com/csehviktor/status-monitor.git
synced 2026-04-29 00:27:35 +02:00
finish ui
This commit is contained in:
+17
-15
@@ -1,26 +1,28 @@
|
||||
import type { StatusMessage } from "@/services/types";
|
||||
import { atom } from "nanostores";
|
||||
|
||||
const store = atom<StatusMessage | null>(null);
|
||||
export type TimePeriod = "all" | "hour" | "day" | "week" | "month";
|
||||
|
||||
export function getLastMessage(): StatusMessage | null {
|
||||
return store.get();
|
||||
}
|
||||
|
||||
export function setLastMessage(message: StatusMessage) {
|
||||
store.set(message);
|
||||
}
|
||||
|
||||
const realtimeData: StatusMessage[] = [];
|
||||
let data: StatusMessage[] = [];
|
||||
const maxRealtimePoints = 50;
|
||||
|
||||
export function addDataPoint(value: StatusMessage) {
|
||||
realtimeData.push(value);
|
||||
data.push(value);
|
||||
|
||||
if (realtimeData.length > maxRealtimePoints) {
|
||||
realtimeData.shift();
|
||||
if (data.length > maxRealtimePoints) {
|
||||
data.shift();
|
||||
}
|
||||
}
|
||||
|
||||
export function getRealtimeData(): StatusMessage[] {
|
||||
return realtimeData ?? [];
|
||||
return data ?? [];
|
||||
}
|
||||
|
||||
export function setHistoricalData(value: StatusMessage[]) {
|
||||
data = value;
|
||||
}
|
||||
|
||||
export async function getHistoricalData(url: string): Promise<StatusMessage[]> {
|
||||
return await fetch(url)
|
||||
.then((res) => res.json())
|
||||
.then((data) => data as StatusMessage[]);
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ type Callbacks = {
|
||||
onClose?: () => void;
|
||||
};
|
||||
|
||||
export function initializeConnection(agent: string, callbacks: Callbacks) {
|
||||
const ws = new WebSocket(`ws://localhost:3000/ws/${agent}`);
|
||||
export function initializeConnection(url: string, callbacks: Callbacks) {
|
||||
const ws = new WebSocket(url);
|
||||
|
||||
ws.onopen = () => callbacks.onOpen?.();
|
||||
ws.onmessage = (event) => callbacks.onMessage(event.data);
|
||||
|
||||
Reference in New Issue
Block a user