D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
alerting
/
unified
/
utils
/
Filename :
annotations.tsx
back
Copy
import { useMemo } from 'react'; import { Annotations } from 'app/types/unified-alerting-dto'; import { Annotation } from './constants'; import { makeDashboardLink, makePanelLink } from './misc'; export function usePanelAndDashboardIds(annotations: Array<[string, string]>): { dashboardUID?: string; panelId?: string; } { return { dashboardUID: annotations.find(([key]) => key === Annotation.dashboardUID)?.[1], panelId: annotations.find(([key]) => key === Annotation.panelID)?.[1], }; } /** * Removes annotations with empty or whitespace values */ export function useCleanAnnotations(annotations: Annotations): Array<[string, string]> { return useMemo(() => { return Object.entries(annotations || {}).filter(([_, value]) => !!value.trim()); }, [annotations]); } export function useAnnotationLinks(annotations: Array<[string, string]>): Map<string, string> { const links = new Map<string, string>(); const { panelId, dashboardUID } = usePanelAndDashboardIds(annotations); if (dashboardUID) { links.set(Annotation.dashboardUID, makeDashboardLink(dashboardUID)); } if (dashboardUID && panelId) { links.set(Annotation.panelID, makePanelLink(dashboardUID, panelId)); } return links; }