import React, { Fragment, useMemo, useState } from 'react'; import { ConfirmModal, useStyles2 } from '@grafana/ui'; import { contextSrv } from 'app/core/services/context_srv'; import { AlertManagerCortexConfig } from 'app/plugins/datasource/alertmanager/types'; import { useDispatch } from 'app/types'; import { Authorize } from '../../components/Authorize'; import { deleteTemplateAction } from '../../state/actions'; import { getAlertTableStyles } from '../../styles/table'; import { getNotificationsPermissions } from '../../utils/access-control'; import { makeAMLink } from '../../utils/misc'; import { CollapseToggle } from '../CollapseToggle'; import { DetailsField } from '../DetailsField'; import { ProvisioningBadge } from '../Provisioning'; import { ActionIcon } from '../rules/ActionIcon'; import { ReceiversSection } from './ReceiversSection'; import { TemplateEditor } from './TemplateEditor'; interface Props { config: AlertManagerCortexConfig; alertManagerName: string; } export const TemplatesTable = ({ config, alertManagerName }: Props) => { const dispatch = useDispatch(); const [expandedTemplates, setExpandedTemplates] = useState>({}); const tableStyles = useStyles2(getAlertTableStyles); const permissions = getNotificationsPermissions(alertManagerName); const templateRows = useMemo(() => { const templates = Object.entries(config.template_files); return templates.map(([name, template]) => ({ name, template, provenance: (config.template_file_provenances ?? {})[name], })); }, [config]); const [templateToDelete, setTemplateToDelete] = useState(); const deleteTemplate = () => { if (templateToDelete) { dispatch(deleteTemplateAction(templateToDelete, alertManagerName)); } setTemplateToDelete(undefined); }; return ( {!templateRows.length && ( )} {templateRows.map(({ name, template, provenance }, idx) => { const isExpanded = !!expandedTemplates[name]; return ( {isExpanded && ( )} ); })}
Template Actions
No templates defined.
setExpandedTemplates({ ...expandedTemplates, [name]: !isExpanded })} /> {name} {provenance && } {provenance && ( )} {!provenance && ( )} {contextSrv.hasPermission(permissions.create) && ( )} {!provenance && ( setTemplateToDelete(name)} tooltip="delete template" icon="trash-alt" /> )}
{!!templateToDelete && ( setTemplateToDelete(undefined)} /> )}
); };