import { Accordion, Box, Tabs } from "@mantine/core" import { client } from "app/client" import { Loader } from "components/Loader" import { Gauge } from "components/metrics/Gauge" 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.FeedQueues.refill": "Refresh queue refill rate", "com.commafeed.backend.feed.FeedRefreshTaskGiver.feedRefreshed": "Feed refreshed", "com.commafeed.backend.feed.FeedRefreshUpdater.feedUpdated": "Feed updated", "com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheHit": "Entry cache hit", "com.commafeed.backend.feed.FeedRefreshUpdater.entryCacheMiss": "Entry cache miss", } const shownGauges: { [key: string]: string } = { "com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-updater.active": "Feed Updater active", "com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-updater.pending": "Feed Updater queued", "com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-worker.active": "Feed Worker active", "com.commafeed.backend.feed.FeedRefreshExecutor.feed-refresh-worker.pending": "Feed Worker queued", "com.commafeed.backend.feed.FeedQueues.queue": "Feed Refresh queue size", } export function MetricsPage() { const query = useAsync(() => client.admin.getMetrics(), []) if (!query.result) return const { meters, gauges, timers } = query.result.data return ( }> Stats }> Timers {Object.keys(shownMeters).map(m => ( ))} {Object.keys(shownGauges).map(g => ( {shownGauges[g]}  ))} {Object.keys(timers).map(key => ( ))} ) }