import { DashboardModel, PanelModel } from 'app/features/dashboard/state'; import React, { FC } from 'react'; import { Alert, LinkButton, Button } from '@grafana/ui'; import { panelToRuleFormValues } from '../../utils/rule-form'; import { useLocation } from 'react-router-dom'; import { urlUtil } from '@grafana/data'; import { useAsync } from 'react-use'; interface Props { panel: PanelModel; dashboard: DashboardModel; className?: string; } export const NewRuleFromPanelButton: FC = ({ dashboard, panel, className }) => { const { loading, value: formValues } = useAsync(() => panelToRuleFormValues(panel, dashboard), [panel, dashboard]); const location = useLocation(); if (loading) { return ; } if (!formValues) { return ( Cannot create alerts from this panel because no query to an alerting capable datasource is found. ); } const ruleFormUrl = urlUtil.renderUrl('alerting/new', { defaults: JSON.stringify(formValues), returnTo: location.pathname + location.search, }); return ( Create alert rule from this panel ); };