Files
frp-panel/www/components/platforminfo.tsx
2024-05-06 11:53:40 +00:00

92 lines
3.6 KiB
TypeScript

import { useQuery } from '@tanstack/react-query'
import { Card, CardContent, CardHeader } from '@/components/ui/card'
import { TbDeviceHeartMonitor, TbEngine, TbEngineOff, TbServer2, TbServerBolt, TbServerOff } from 'react-icons/tb'
import { useEffect } from 'react'
import { $platformInfo } from '@/store/user'
import { getPlatformInfo } from '@/api/platform'
export const PlatformInfo = () => {
const platformInfo = useQuery({
queryKey: ['platformInfo'],
queryFn: getPlatformInfo,
})
useEffect(() => {
$platformInfo.set(platformInfo.data)
}, [platformInfo])
return (
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4">
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbServerBolt className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.configuredServerCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbEngine className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.configuredClientCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbServerOff className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.unconfiguredServerCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbEngineOff className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.unconfiguredClientCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbServer2 className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.totalServerCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<div className="flex justify-between">
<h3 className="tracking-tight text-sm font-medium"></h3>
<TbDeviceHeartMonitor className="mt-1" />
</div>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">{platformInfo.data?.totalClientCount} </div>
<p className="text-xs text-muted-foreground">🫲</p>
</CardContent>
</Card>
</div>
)
}