Fix TypeScript error for TopWidgets AppStat properties
This commit is contained in:
1 parent
20e38ffdb3
commit
9219035003
1 file changed
+17
-6
@@ -7,18 +7,29 @@ import {
|
|||||||
} from "recharts";
|
} from "recharts";
|
||||||
import { fmtBytes, formatAppLabel } from "@/lib/utils";
|
import { fmtBytes, formatAppLabel } from "@/lib/utils";
|
||||||
|
|
||||||
|
import { AppStat, ProtocolStat } from "@/lib/api-types";
|
||||||
|
|
||||||
interface TopWidgetsProps {
|
interface TopWidgetsProps {
|
||||||
topApps: {
|
topApps: {
|
||||||
data: { app_label: string; total_bytes: number }[];
|
data: AppStat[];
|
||||||
};
|
};
|
||||||
topProtocols: {
|
topProtocols: {
|
||||||
data: { protocol_label: string; download: number }[];
|
data: ProtocolStat[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const COLORS = ['#3b82f6', '#10b981', '#f59e0b', '#8b5cf6', '#ec4899', '#3b82f6'];
|
const COLORS = ['#3b82f6', '#10b981', '#f59e0b', '#8b5cf6', '#ec4899', '#3b82f6'];
|
||||||
|
|
||||||
export function TopWidgets({ topApps, topProtocols }: TopWidgetsProps) {
|
export function TopWidgets({ topApps, topProtocols }: TopWidgetsProps) {
|
||||||
|
const appsData = (topApps.data || []).map(app => ({
|
||||||
|
...app,
|
||||||
|
total_bytes: (app.download || 0) + (app.upload || 0)
|
||||||
|
}));
|
||||||
|
|
||||||
|
const protocolsData = (topProtocols.data || []).map(p => ({
|
||||||
|
...p,
|
||||||
|
total: (p.download || 0) + (p.upload || 0)
|
||||||
|
}));
|
||||||
return (
|
return (
|
||||||
<div className="col-span-1 lg:col-span-3 space-y-6 w-full min-w-0">
|
<div className="col-span-1 lg:col-span-3 space-y-6 w-full min-w-0">
|
||||||
<Card className="bg-card/80 backdrop-blur-xl border-border/50 flex-1 min-w-0">
|
<Card className="bg-card/80 backdrop-blur-xl border-border/50 flex-1 min-w-0">
|
||||||
@@ -26,14 +37,14 @@ export function TopWidgets({ topApps, topProtocols }: TopWidgetsProps) {
|
|||||||
<CardTitle className="text-lg text-white">Top Apps (Total Bandwidth)</CardTitle>
|
<CardTitle className="text-lg text-white">Top Apps (Total Bandwidth)</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="w-full min-w-0">
|
<CardContent className="w-full min-w-0">
|
||||||
{(!topApps.data || topApps.data.length === 0) ? (
|
{(!appsData || appsData.length === 0) ? (
|
||||||
<div className="h-[150px] flex items-center justify-center text-muted-foreground text-sm">
|
<div className="h-[150px] flex items-center justify-center text-muted-foreground text-sm">
|
||||||
No Data
|
No Data
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="h-[150px] w-full min-w-0 relative">
|
<div className="h-[150px] w-full min-w-0 relative">
|
||||||
<ResponsiveContainer width="100%" height="100%">
|
<ResponsiveContainer width="100%" height="100%">
|
||||||
<BarChart data={topApps.data} margin={{ top: 10, right: 10, left: 0, bottom: 0 }}>
|
<BarChart data={appsData} margin={{ top: 10, right: 10, left: 0, bottom: 0 }}>
|
||||||
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
||||||
<XAxis
|
<XAxis
|
||||||
dataKey="app_label"
|
dataKey="app_label"
|
||||||
@@ -86,14 +97,14 @@ export function TopWidgets({ topApps, topProtocols }: TopWidgetsProps) {
|
|||||||
<CardTitle className="text-lg text-white">Top Protocols</CardTitle>
|
<CardTitle className="text-lg text-white">Top Protocols</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="w-full min-w-0">
|
<CardContent className="w-full min-w-0">
|
||||||
{(!topProtocols.data || topProtocols.data.length === 0) ? (
|
{(!protocolsData || protocolsData.length === 0) ? (
|
||||||
<div className="h-[150px] flex items-center justify-center text-muted-foreground text-sm">
|
<div className="h-[150px] flex items-center justify-center text-muted-foreground text-sm">
|
||||||
No Data
|
No Data
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="h-[150px] w-full min-w-0 relative">
|
<div className="h-[150px] w-full min-w-0 relative">
|
||||||
<ResponsiveContainer width="100%" height="100%">
|
<ResponsiveContainer width="100%" height="100%">
|
||||||
<BarChart data={topProtocols.data} margin={{ top: 10, right: 10, left: 0, bottom: 0 }}>
|
<BarChart data={protocolsData} margin={{ top: 10, right: 10, left: 0, bottom: 0 }}>
|
||||||
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
<CartesianGrid strokeDasharray="3 3" stroke="rgba(255,255,255,0.05)" vertical={false} />
|
||||||
<XAxis
|
<XAxis
|
||||||
dataKey="protocol_label"
|
dataKey="protocol_label"
|
||||||
|
|||||||
Reference in new issue
Block a user