MCPcopy Create free account
hub / github.com/winfunc/opcode / UsageDashboard

Function UsageDashboard

src/components/UsageDashboard.original.tsx:28–494  ·  view source on GitHub ↗
({ })

Source from the content-addressed store, hash-verified

26 * <UsageDashboard onBack={() => setView('welcome')} />
27 */
28export const UsageDashboard: React.FC<UsageDashboardProps> = ({ }) => {
29 const [loading, setLoading] = useState(true);
30 const [error, setError] = useState<string | null>(null);
31 const [stats, setStats] = useState<UsageStats | null>(null);
32 const [sessionStats, setSessionStats] = useState<ProjectUsage[] | null>(null);
33 const [selectedDateRange, setSelectedDateRange] = useState<"all" | "7d" | "30d">("7d");
34 const [activeTab, setActiveTab] = useState("overview");
35
36 useEffect(() => {
37 loadUsageStats();
38 }, [selectedDateRange]);
39
40 const loadUsageStats = async () => {
41 try {
42 setLoading(true);
43 setError(null);
44
45 let statsData: UsageStats;
46 let sessionData: ProjectUsage[];
47
48 if (selectedDateRange === "all") {
49 statsData = await api.getUsageStats();
50 sessionData = await api.getSessionStats();
51 } else {
52 const endDate = new Date();
53 const startDate = new Date();
54 const days = selectedDateRange === "7d" ? 7 : 30;
55 startDate.setDate(startDate.getDate() - days);
56
57 const formatDateForApi = (date: Date) => {
58 const year = date.getFullYear();
59 const month = String(date.getMonth() + 1).padStart(2, '0');
60 const day = String(date.getDate()).padStart(2, '0');
61 return `${year}${month}${day}`;
62 }
63
64 statsData = await api.getUsageByDateRange(
65 startDate.toISOString(),
66 endDate.toISOString()
67 );
68 sessionData = await api.getSessionStats(
69 formatDateForApi(startDate),
70 formatDateForApi(endDate),
71 'desc'
72 );
73 }
74
75 setStats(statsData);
76 setSessionStats(sessionData);
77 } catch (err) {
78 console.error("Failed to load usage stats:", err);
79 setError("Failed to load usage statistics. Please try again.");
80 } finally {
81 setLoading(false);
82 }
83 };
84
85 const formatCurrency = (amount: number): string => {

Callers

nothing calls this directly

Calls 5

loadUsageStatsFunction · 0.85
formatCurrencyFunction · 0.85
formatNumberFunction · 0.85
getModelDisplayNameFunction · 0.85
formatTokensFunction · 0.70

Tested by

no test coverage detected