mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
* Scenes: Support new top nav * Page: Make Page component support new and old dashboard page layouts * Pass scrollbar props * Fixing flex layout for dashboard * Progress on dashboard settings working with topnav * Updated * Annotations working * Starting to work fully * Fix merge issue * Fixed tests * Added buttons to annotations editor * Updating tests * Move Page component to each page * fixed general settings page * Fixed versions * Fixed annotation item page * Variables section working * Fixed tests * Minor fixes to versions * Update * Fixing unit tests * Adding add variable button * Restore annotations edit form so it's the same as before * Fixed semicolon in dashboard permissions * Fixing unit tests * Fixing tests * Minor test update * Fixing unit test * Fixing e2e tests * fix for e2e test * fix a11y issues * Changing places Settings -> General * Trying to fix a11y * I hope this fixes the e2e test * Fixing merge issue * tweak
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import React from 'react';
|
|
|
|
import { AnnotationQuery, getDataSourceRef, NavModelItem } from '@grafana/data';
|
|
import { getDataSourceSrv, locationService } from '@grafana/runtime';
|
|
import { Page } from 'app/core/components/PageNew/Page';
|
|
|
|
import { DashboardModel } from '../../state';
|
|
import { AnnotationSettingsEdit, AnnotationSettingsList, newAnnotationName } from '../AnnotationSettings';
|
|
|
|
import { SettingsPageProps } from './types';
|
|
|
|
export function AnnotationsSettings({ dashboard, editIndex, sectionNav }: SettingsPageProps) {
|
|
const onNew = () => {
|
|
const newAnnotation: AnnotationQuery = {
|
|
name: newAnnotationName,
|
|
enable: true,
|
|
datasource: getDataSourceRef(getDataSourceSrv().getInstanceSettings(null)!),
|
|
iconColor: 'red',
|
|
};
|
|
|
|
dashboard.annotations.list = [...dashboard.annotations.list, { ...newAnnotation }];
|
|
locationService.partial({ editIndex: dashboard.annotations.list.length - 1 });
|
|
};
|
|
|
|
const onEdit = (idx: number) => {
|
|
locationService.partial({ editIndex: idx });
|
|
};
|
|
|
|
const isEditing = editIndex != null && editIndex < dashboard.annotations.list.length;
|
|
|
|
return (
|
|
<Page navModel={sectionNav} pageNav={getSubPageNav(dashboard, editIndex)}>
|
|
{!isEditing && <AnnotationSettingsList dashboard={dashboard} onNew={onNew} onEdit={onEdit} />}
|
|
{isEditing && <AnnotationSettingsEdit dashboard={dashboard} editIdx={editIndex!} />}
|
|
</Page>
|
|
);
|
|
}
|
|
|
|
function getSubPageNav(dashboard: DashboardModel, editIndex: number | undefined): NavModelItem | undefined {
|
|
if (editIndex == null) {
|
|
return undefined;
|
|
}
|
|
|
|
const editItem = dashboard.annotations.list[editIndex];
|
|
if (editItem) {
|
|
return {
|
|
text: editItem.name,
|
|
};
|
|
}
|
|
|
|
return undefined;
|
|
}
|