gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/dialogs/settings/node-backend-setting.tsx · v0.5.1
Source
1 f5c168d Mardin 2y ago import {
2 f5c168d Mardin 2y ago Badge,
3 f5c168d Mardin 2y ago Card,
4 f5c168d Mardin 2y ago CardContent,
5 f5c168d Mardin 2y ago CardHeader,
6 f5c168d Mardin 2y ago CardTitle,
7 f5c168d Mardin 2y ago Tabs,
8 f5c168d Mardin 2y ago TabsContent,
9 f5c168d Mardin 2y ago TabsList,
10 f5c168d Mardin 2y ago TabsTrigger,
11 f5c168d Mardin 2y ago } from "@marzneshin/components";
12 f5c168d Mardin 2y ago import { NodeConfigEditor } from "./node-config-editor";
13 f5c168d Mardin 2y ago import { LogContainer } from "../../log";
14 f5c168d Mardin 2y ago import { useTranslation } from "react-i18next";
15 f5c168d Mardin 2y ago import { type NodeType, useBackendStatsQuery } from "../..";
16 f5c168d Mardin 2y ago import type { FC } from "react";
17 f5c168d Mardin 2y ago
18 f5c168d Mardin 2y ago export const NodeBackendSetting: FC<{ node: NodeType; backend: string }> = ({
19 f5c168d Mardin 2y ago node,
20 f5c168d Mardin 2y ago backend,
21 f5c168d Mardin 2y ago }) => {
22 f5c168d Mardin 2y ago const { t } = useTranslation();
23 f5c168d Mardin 2y ago const nodeBackend = node.backends.find((item) => item.name === backend);
24 f5c168d Mardin 2y ago const { data: backendStats } = useBackendStatsQuery(node, backend);
25 f5c168d Mardin 2y ago return (
26 f5c168d Mardin 2y ago <Card>
27 f5c168d Mardin 2y ago <CardHeader className="flex flex-row items-center gap-2 w-full">
28 f5c168d Mardin 2y ago <CardTitle className="capitalize">{backend}</CardTitle>
29 f5c168d Mardin 2y ago {nodeBackend?.version && (
30 f5c168d Mardin 2y ago <Badge className="size-fit">v{nodeBackend.version}</Badge>
31 f5c168d Mardin 2y ago )}
32 f5c168d Mardin 2y ago {backendStats === null ? (
33 f5c168d Mardin 2y ago <Badge variant="disabled" className="size-fit">
34 f5c168d Mardin 2y ago {t("unkown")}
35 f5c168d Mardin 2y ago </Badge>
36 f5c168d Mardin 2y ago ) : backendStats.running ? (
37 f5c168d Mardin 2y ago <Badge variant="positive" className="size-fit">
38 f5c168d Mardin 2y ago {t("running")}
39 f5c168d Mardin 2y ago </Badge>
40 f5c168d Mardin 2y ago ) : (
41 f5c168d Mardin 2y ago <Badge variant="destructive" className="size-fit">
42 f5c168d Mardin 2y ago {t("down")}
43 f5c168d Mardin 2y ago </Badge>
44 f5c168d Mardin 2y ago )}
45 f5c168d Mardin 2y ago </CardHeader>
46 f5c168d Mardin 2y ago <CardContent className="p-2 w-full h-1/2 flex flex-col gap-2">
47 f5c168d Mardin 2y ago <Tabs className="my-3 w-full h-full" defaultValue="logs">
48 f5c168d Mardin 2y ago <TabsList className="w-full">
49 f5c168d Mardin 2y ago <TabsTrigger className="w-full" value="logs">
50 f5c168d Mardin 2y ago {t("logs")}
51 f5c168d Mardin 2y ago </TabsTrigger>
52 f5c168d Mardin 2y ago <TabsTrigger className="w-full" value="config">
53 f5c168d Mardin 2y ago {t("config")}
54 f5c168d Mardin 2y ago </TabsTrigger>
55 f5c168d Mardin 2y ago </TabsList>
56 f5c168d Mardin 2y ago <TabsContent value="logs" className="h-full w-full">
57 f5c168d Mardin 2y ago <LogContainer node={node} backend={backend} />
58 f5c168d Mardin 2y ago </TabsContent>
59 f5c168d Mardin 2y ago <TabsContent value="config" className="h-full z-51">
60 f5c168d Mardin 2y ago <NodeConfigEditor entity={node} backend={backend} />
61 f5c168d Mardin 2y ago </TabsContent>
62 f5c168d Mardin 2y ago </Tabs>
63 f5c168d Mardin 2y ago </CardContent>
64 f5c168d Mardin 2y ago </Card>
65 f5c168d Mardin 2y ago );
66 f5c168d Mardin 2y ago };