import { Card, Center, Flex, Stack, Text } from '@mantine/core'; import { IconChartBar } from '@tabler/icons'; import { useTranslation } from 'next-i18next'; import { defineWidget } from '../helper'; import { WidgetLoading } from '../loading'; import { IWidget } from '../widgets'; import { useMediaRequestQuery } from './media-request-query'; import { MediaRequestStatus } from './media-request-types'; const definition = defineWidget({ id: 'media-requests-stats', icon: IconChartBar, options: {}, component: MediaRequestStatsTile, gridstack: { minWidth: 1, minHeight: 2, maxWidth: 12, maxHeight: 12, }, }); export type MediaRequestStatsWidget = IWidget<(typeof definition)['id'], typeof definition>; interface MediaRequestStatsWidgetProps { widget: MediaRequestStatsWidget; } function MediaRequestStatsTile({ widget }: MediaRequestStatsWidgetProps) { const { t } = useTranslation('modules/media-requests-stats'); const { data, isFetching } = useMediaRequestQuery(); if (!data || isFetching) { return ; } return (
{data.filter((x) => x.status === MediaRequestStatus.PendingApproval).length} {t('stats.pending')}
{data.filter((x) => x.type === 'tv').length} {t('stats.tvRequests')}
{data.filter((x) => x.type === 'movie').length} {t('stats.movieRequests')}
); } export default definition;