import { Accordion, Tabs } from "@mantine/core" import { client } from "app/client" import { Loader } from "components/Loader" import { Meter } from "components/metrics/Meter" import { MetricAccordionItem } from "components/metrics/MetricAccordionItem" import { Timer } from "components/metrics/Timer" import { useAsync } from "react-async-hook" import { TbChartAreaLine, TbClock } from "react-icons/tb" const shownMeters: { [key: string]: string } = { "com.commafeed.backend.feed.FeedRefreshEngine.refill": "Feed queue refill rate", "com.commafeed.backend.feed.FeedRefreshWorker.feedFetched": "Feed fetching rate", "com.commafeed.backend.feed.FeedRefreshUpdater.feedUpdated": "Feed update rate", "com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheHit": "Entry cache hit rate", "com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss rate", } export function MetricsPage() { const query = useAsync(() => client.admin.getMetrics(), []) if (!query.result) return const { meters, timers } = query.result.data return ( }> Stats }> Timers {Object.keys(shownMeters).map(m => ( ))} {Object.keys(timers).map(key => ( ))} ) }