diff --git a/public/app/features/datasources/components/BasicSettings.test.tsx b/public/app/features/datasources/components/BasicSettings.test.tsx
index b8ffbb5196e..9184babbe68 100644
--- a/public/app/features/datasources/components/BasicSettings.test.tsx
+++ b/public/app/features/datasources/components/BasicSettings.test.tsx
@@ -11,6 +11,7 @@ const setup = () => {
isDefault: false,
onDefaultChange: jest.fn(),
onNameChange: jest.fn(),
+ alertingSupported: false,
};
return render();
diff --git a/public/app/features/datasources/components/BasicSettings.tsx b/public/app/features/datasources/components/BasicSettings.tsx
index bd99284cb29..14a81bcb281 100644
--- a/public/app/features/datasources/components/BasicSettings.tsx
+++ b/public/app/features/datasources/components/BasicSettings.tsx
@@ -1,50 +1,75 @@
+import { css } from '@emotion/css';
import React from 'react';
+import { GrafanaTheme2 } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
-import { InlineField, InlineSwitch, Input } from '@grafana/ui';
+import { InlineField, InlineSwitch, Input, Badge, useStyles2 } from '@grafana/ui';
export interface Props {
dataSourceName: string;
isDefault: boolean;
onNameChange: (name: string) => void;
onDefaultChange: (value: boolean) => void;
+ alertingSupported: boolean;
}
-export function BasicSettings({ dataSourceName, isDefault, onDefaultChange, onNameChange }: Props) {
+export function BasicSettings({ dataSourceName, isDefault, onDefaultChange, onNameChange, alertingSupported }: Props) {
return (
-
-
- {/* Name */}
-
-
+
-
- {/* Is Default */}
-
- ) => {
- onDefaultChange(event.currentTarget.checked);
- }}
- />
-
+ >
+ );
+}
+
+export function AlertingEnabled({ enabled }: { enabled: boolean }) {
+ const styles = useStyles2(getStyles);
+ return (
+
+ {enabled ? (
+
+ ) : (
+
+ )}
);
}
+
+const getStyles = (theme: GrafanaTheme2) => ({
+ badge: css`
+ margin-bottom: ${theme.spacing(2)};
+ `,
+});
diff --git a/public/app/features/datasources/components/EditDataSource.tsx b/public/app/features/datasources/components/EditDataSource.tsx
index bd5da825deb..103454b932c 100644
--- a/public/app/features/datasources/components/EditDataSource.tsx
+++ b/public/app/features/datasources/components/EditDataSource.tsx
@@ -3,6 +3,7 @@ import React from 'react';
import { useDispatch } from 'react-redux';
import { DataSourcePluginMeta, DataSourceSettings as DataSourceSettingsType } from '@grafana/data';
+import { getDataSourceSrv } from '@grafana/runtime';
import PageLoader from 'app/core/components/PageLoader/PageLoader';
import { DataSourceSettingsState, ThunkResult } from 'app/types';
@@ -107,9 +108,14 @@ export function EditDataSourceView({
const { readOnly, hasWriteRights, hasDeleteRights } = dataSourceRights;
const hasDataSource = dataSource.id > 0;
+ const ds = getDataSourceSrv()?.getInstanceSettings(dataSource.uid);
+
+ const hasAlertingEnabled = Boolean(ds?.meta?.alerting ?? false);
+ const isAlertManagerDatasource = ds?.type === 'alertmanager';
+ const alertingSupported = hasAlertingEnabled || isAlertManagerDatasource;
+
const onSubmit = async (e: React.FormEvent
) => {
e.preventDefault();
-
await onUpdate({ ...dataSource });
onTest();
@@ -145,6 +151,7 @@ export function EditDataSourceView({
isDefault={dataSource.isDefault}
onDefaultChange={onDefaultChange}
onNameChange={onNameChange}
+ alertingSupported={alertingSupported}
/>
{plugin && (