import { useMemo } from 'react'; import { useLocation } from 'react-router'; import { useParams } from 'react-router-dom-v5-compat'; import { SelectableValue, urlUtil } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Alert, EmptyState, Spinner, Tab, TabContent, TabsBar, Text, TextLink } from '@grafana/ui'; import { useGetFrontendSettingsQuery, useListRepositoryQuery } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; import { isNotFoundError } from 'app/features/alerting/unified/api/util'; import { FilesView } from '../File/FilesView'; import { PROVISIONING_URL } from '../constants'; import { RepositoryActions } from './RepositoryActions'; import { RepositoryOverview } from './RepositoryOverview'; import { RepositoryResources } from './RepositoryResources'; enum TabSelection { Overview = 'overview', Resources = 'resources', Files = 'files', } export default function RepositoryStatusPage() { const { name = '' } = useParams(); const query = useListRepositoryQuery({ fieldSelector: `metadata.name=${name}`, watch: true, }); const data = query.data?.items?.[0]; const location = useLocation(); const [queryParams] = useQueryParams(); const settings = useGetFrontendSettingsQuery(); const tab = queryParams['tab'] ?? TabSelection.Overview; const notFound = query.isError && isNotFoundError(query.error); const tabInfo = useMemo>( () => [ { value: TabSelection.Overview, label: t('provisioning.repository-status-page.tab-overview', 'Overview'), title: t('provisioning.repository-status-page.tab-overview-title', 'Repository overview'), }, { value: TabSelection.Resources, label: t('provisioning.repository-status-page.tab-resources', 'Resources'), title: t('provisioning.repository-status-page.tab-resources-title', 'Resources saved in grafana database'), }, { value: TabSelection.Files, label: t('provisioning.repository-status-page.tab-files', 'Files'), title: t('provisioning.repository-status-page.tab-files-title', 'The raw file list from the repository'), }, ], [] ); return ( } > {settings.data?.legacyStorage && ( Instance is not yet running unified storage -- requires migration wizard )} {notFound ? ( Make sure the repository config exists in the configuration file. Back to repositories ) : ( <> {data ? ( <> {tabInfo.map((t: SelectableValue) => ( ))} {data?.metadata?.deletionTimestamp && ( {' '} Cleaning up repository resources )} {tab === TabSelection.Overview && } {tab === TabSelection.Resources && } {tab === TabSelection.Files && } ) : (
not found
)} )}
); }