import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import type { RoomManagementResponse, RoomHealthStatus } from "@/types/dashboard"; import { ResponsiveContainer, BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip } from "recharts"; function statusBadge(status?: string) { if (!status) return Unknown; if (status === "InSession") return Đang sử dụng; if (status === "NotInUse") return Không sử dụng; return Có thể có lớp học; } export function RoomManagementCard({ data, isLoading = false, }: { data?: RoomManagementResponse | null; isLoading?: boolean; }) { const chartData = (data?.rooms ?? []).map((r) => ({ room: r.roomName, health: r.healthPercentage ?? 0 })); return ( Quản lý phòng Thông tin tổng quan và các phòng đang không sử dụng
Tổng phòng
{data?.totalRooms ?? 0}
Tỉ lệ thiết bị online
Phòng không dùng
{data?.roomsNeedAttention && data.roomsNeedAttention.length > 0 ? ( data.roomsNeedAttention.map((r: RoomHealthStatus) => (
{r.roomName}
{r.totalDevices} thiết bị
{r.healthPercentage?.toFixed(1) ?? "-"}%
{statusBadge(r.healthStatus)}
)) ) : (
Không có phòng cần chú ý
)}
); }