import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { MainLayout } from "@/components/layouts/main-layout"; import { DnsUpdateChart } from "@/components/charts/dns-update-chart"; import { ProviderDistributionChart } from "@/components/charts/provider-distribution-chart"; import { RecordTypeChart } from "@/components/charts/record-type-chart"; import { Domain, DnsRecord } from "@shared/schema"; import { useOrganization } from "@/context/organization-context"; import { Card, CardContent, CardHeader, CardTitle, CardDescription, } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger, } from "@/components/ui/tabs"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { BarChart, LineChart, PieChart, Home, BarChart2, Activity, Clock } from "lucide-react"; export default function MetricsPage() { const { currentOrganization } = useOrganization(); const [selectedTimeframe, setSelectedTimeframe] = useState("day"); const [selectedDomain, setSelectedDomain] = useState("all"); // Fetch domains for filter const { data: domains = [] } = useQuery({ queryKey: ["/api/domains", currentOrganization?.id], enabled: !!currentOrganization?.id, }); // Fetch DNS records stats (would be from actual API) const { data: recordsStats } = useQuery({ queryKey: ["/api/metrics/records", selectedTimeframe, selectedDomain], enabled: false, // Would be enabled in a real implementation }); return ( {/* Filter controls */}
{/* Update Activity Chart */}
DNS Update Activity Frequency of DNS record updates over time
setSelectedTimeframe("day")} > Day setSelectedTimeframe("week")} > Week setSelectedTimeframe("month")} > Month
{/* Distribution Charts */}
DNS Provider Distribution Breakdown of domains by DNS provider
Record Type Distribution Breakdown of DNS records by type
{/* Performance Metrics */} DNS Performance Metrics Key metrics for your DNS configuration

Avg. Response Time

38 ms

5% faster than last week

Uptime

99.98%

Last 30 days

Update Frequency

4.2/day

Avg. updates per day

Propagation Time

43 sec

Avg. global propagation

{/* DNS Records Health */} DNS Records Health Health status of your DNS records

example.com

A, CNAME, MX records

Healthy

api.example.org

A, CNAME records

Outdated

cdn.testsite.com

A, AAAA records

Error

prod-db.example.net

A record

Healthy
); }