// Prometheus 数据源管理 — 列表编排器 // Logan.Li import { useState, useEffect } from 'react'; import { Database, Plus, Edit, Trash2, Star, Key, Plug, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { toast } from 'sonner'; import { useConfirm } from '@/components/ui/confirm-dialog'; import { usePromDatasources, usePromDatasourceMutations } from '@/hooks/api'; import type { PromDS } from './prometheus-ds/types'; import { handleTestQuick } from './prometheus-ds/helpers'; import PromDsFormDialog from './prometheus-ds/PromDsFormDialog'; import { PageLoading } from '@/components/layout/PageLoading'; import { PageEmpty } from '@/components/layout/PageEmpty'; import { ContentPanel } from '@/components/layout/ContentPanel'; import i18n from '@/i18n'; export default function PrometheusDatasourceManager() { const _confirm = useConfirm(); const { data: sources = [], isLoading, isError } = usePromDatasources(); const { deleteMutation, setDefaultMutation } = usePromDatasourceMutations(); const [dialogOpen, setDialogOpen] = useState(false); const [editingDs, setEditingDs] = useState(null); useEffect(() => { if (isError) toast.error(i18n.t('monitor.promDs2.listFailed')); }, [isError]); const openCreate = () => { setEditingDs(null); setDialogOpen(true); }; const openEdit = (ds: PromDS) => { setEditingDs(ds); setDialogOpen(true); }; const handleDelete = async (ds: PromDS) => { const ok = await _confirm({ title: i18n.t('monitor.deleteDatasource'), description: `确定删除数据源「${ds.name}」吗?此操作不可撤销。`, variant: 'destructive', }); if (!ok) return; try { await deleteMutation.mutateAsync(ds.id); toast.success(i18n.t('monitor.silenceRules.deleted')); } catch { toast.error(i18n.t('kubernetes.msg.deleteFailed2')); } }; const handleSetDefault = async (ds: PromDS) => { try { await setDefaultMutation.mutateAsync(ds.id); toast.success(i18n.t('monitor.setDefaultDsSuccess', { name: ds.name })); } catch { toast.error(i18n.t('monitor.promDs2.deleteFailed')); } }; if (isLoading) { return ; } const toolbar = (
Prometheus 数据源 {sources.length}
); return (
{sources.length === 0 ? ( } title={i18n.t('monitor.promDs2.noData')} description={i18n.t('monitor.promDs2.addHint')} action={( )} /> ) : (
{sources.map(ds => ( ))}
{i18n.t('kubernetes.secret.secretName')} URL {i18n.t('k8s.storage.default')} {i18n.t('system.terminalStatus')} {i18n.t('system.auditAction')}
Prometheus { (e.target as HTMLImageElement).style.display = 'none'; }} />
{ds.name} {ds.basic_auth && }
{ds.url} {ds.is_default ? ( {i18n.t('k8s.storage.default')} ) : ( -- )} {ds.status === 1 ? ( {i18n.t('system.userActive')} ) : ( {i18n.t('system.userInactive')} )}
{!ds.is_default && ( )}
)}
); }