grafana_bak/public/app/features/alerting/unified/integration/AlertRulesToolbarButton.tsx
2025-04-01 10:38:02 +09:00

43 lines
1.1 KiB
TypeScript

import { useContext } from 'react';
import { ModalsContext, ToolbarButton } from '@grafana/ui';
import { t } from '../../../../core/internationalization';
import { alertRuleApi } from '../api/alertRuleApi';
import { GRAFANA_RULES_SOURCE_NAME } from '../utils/datasource';
import { AlertRulesDrawer } from './AlertRulesDrawer';
interface AlertRulesToolbarButtonProps {
dashboardUid: string;
}
export default function AlertRulesToolbarButton({ dashboardUid }: AlertRulesToolbarButtonProps) {
const { showModal, hideModal } = useContext(ModalsContext);
const { data: namespaces = [] } = alertRuleApi.endpoints.prometheusRuleNamespaces.useQuery({
ruleSourceName: GRAFANA_RULES_SOURCE_NAME,
dashboardUid: dashboardUid,
});
if (namespaces.length === 0) {
return null;
}
const onShowDrawer = () => {
showModal(AlertRulesDrawer, {
dashboardUid: dashboardUid,
onDismiss: hideModal,
});
};
return (
<ToolbarButton
tooltip={t('dashboard.toolbar.alert-rules', 'Alert rules')}
icon="bell"
onClick={onShowDrawer}
key="button-alerting"
/>
);
}