diff --git a/beszel/site/src/components/alerts/alerts-system.tsx b/beszel/site/src/components/alerts/alerts-system.tsx index 32848db..f30eefb 100644 --- a/beszel/site/src/components/alerts/alerts-system.tsx +++ b/beszel/site/src/components/alerts/alerts-system.tsx @@ -1,7 +1,7 @@ import { pb } from "@/lib/stores" import { alertInfo, cn } from "@/lib/utils" import { Switch } from "@/components/ui/switch" -import { AlertRecord, SystemRecord } from "@/types" +import { AlertInfo, AlertRecord, SystemRecord } from "@/types" import { lazy, Suspense, useRef, useState } from "react" import { toast } from "../ui/use-toast" import { RecordOptions } from "pocketbase" @@ -14,7 +14,7 @@ interface AlertData { min?: number updateAlert?: (checked: boolean, value: number, min: number) => void key: keyof typeof alertInfo - alert: (typeof alertInfo)[keyof typeof alertInfo] + alert: AlertInfo system: SystemRecord } @@ -216,7 +216,7 @@ function AlertContent({ data }: { data: AlertData }) { onValueCommit={(val) => (newValue.current = val[0]) && updateAlert()} onValueChange={(val) => setValue(val[0])} min={1} - max={99} + max={alertInfo[key].max ?? 99} /> diff --git a/beszel/site/src/lib/utils.ts b/beszel/site/src/lib/utils.ts index 390d7bf..6872c0b 100644 --- a/beszel/site/src/lib/utils.ts +++ b/beszel/site/src/lib/utils.ts @@ -2,7 +2,7 @@ import { toast } from "@/components/ui/use-toast" import { type ClassValue, clsx } from "clsx" import { twMerge } from "tailwind-merge" import { $alerts, $copyContent, $systems, $userSettings, pb } from "./stores" -import { AlertRecord, ChartTimeData, ChartTimes, SystemRecord } from "@/types" +import { AlertInfo, AlertRecord, ChartTimeData, ChartTimes, SystemRecord } from "@/types" import { RecordModel, RecordSubscription } from "pocketbase" import { WritableAtom } from "nanostores" import { timeDay, timeHour } from "d3-time" @@ -229,7 +229,7 @@ function getStorageValue(key: string, defaultValue: any) { } /** Hook to sync value in local storage */ -export const useLocalStorage = (key: string, defaultValue: any) => { +export function useLocalStorage(key: string, defaultValue: T) { key = `besz-${key}` const [value, setValue] = useState(() => { return getStorageValue(key, defaultValue) @@ -277,7 +277,7 @@ export const getSizeAndUnit = (n: number, isGigabytes = true) => { export const chartMargin = { top: 12 } -export const alertInfo = { +export const alertInfo: Record = { Status: { name: () => t`Status`, unit: "", @@ -308,6 +308,7 @@ export const alertInfo = { unit: " MB/s", icon: EthernetIcon, desc: () => t`Triggers when combined up/down exceeds a threshold`, + max: 125, }, Temperature: { name: () => t`Temperature`, diff --git a/beszel/site/src/types.d.ts b/beszel/site/src/types.d.ts index 44ec206..1c063b8 100644 --- a/beszel/site/src/types.d.ts +++ b/beszel/site/src/types.d.ts @@ -166,3 +166,12 @@ export interface ChartData { domain: number[] chartTime: ChartTimes } + +interface AlertInfo { + name: () => string + unit: string + icon: any + desc: () => string + single?: boolean + max?: number +}