2025-04-01 10:38:02 +09:00

41 lines
1.2 KiB
TypeScript

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;
}