import React, { useState } from 'react';
import { arrayUtils } from '@grafana/data';
import { getDataSourceSrv } from '@grafana/runtime';
import { DeleteButton, Icon, IconButton, VerticalGroup } from '@grafana/ui';
import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';
import { DashboardModel } from '../../state/DashboardModel';
import { ListNewButton } from '../DashboardSettings/ListNewButton';
type Props = {
dashboard: DashboardModel;
onNew: () => void;
onEdit: (idx: number) => void;
};
export const AnnotationSettingsList = ({ dashboard, onNew, onEdit }: Props) => {
const [annotations, updateAnnotations] = useState(dashboard.annotations.list);
const onMove = (idx: number, direction: number) => {
dashboard.annotations.list = arrayUtils.moveItemImmutably(annotations, idx, idx + direction);
updateAnnotations(dashboard.annotations.list);
};
const onDelete = (idx: number) => {
dashboard.annotations.list = [...annotations.slice(0, idx), ...annotations.slice(idx + 1)];
updateAnnotations(dashboard.annotations.list);
};
const showEmptyListCTA = annotations.length === 0 || (annotations.length === 1 && annotations[0].builtIn);
const dataSourceSrv = getDataSourceSrv();
return (
)}
{showEmptyListCTA && (
{dashboard.annotations.list.map((annotation, idx) => (
Query name
Data source
{annotation.builtIn ? (
))}
onEdit(idx)}>
) : (
onEdit(idx)}>
)}
onEdit(idx)}>
{dataSourceSrv.getInstanceSettings(annotation.datasource)?.name || annotation.datasource?.uid}
{idx !== 0 &&
{dashboard.annotations.list.length > 1 && idx !== dashboard.annotations.list.length - 1 ? (