From 38b2062ddb3af973fa6ee228e5d078e6eaf5de8f Mon Sep 17 00:00:00 2001 From: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com> Date: Thu, 29 Sep 2022 12:34:42 +0200 Subject: [PATCH] Alerting: fix alert supported warning when editing data source name (#55886) (#55999) (cherry picked from commit ef641ea9c9a420ef18183f3db35dbad52b6ca150) --- .../components/BasicSettings.test.tsx | 1 + .../datasources/components/BasicSettings.tsx | 85 ++++++++++++------- .../datasources/components/EditDataSource.tsx | 9 +- 3 files changed, 64 insertions(+), 31 deletions(-) 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 */} -
- +
+ {/* Name */} +
+ - onNameChange(event.currentTarget.value)} - required - aria-label={selectors.pages.DataSource.name} + grow + > + onNameChange(event.currentTarget.value)} + required + aria-label={selectors.pages.DataSource.name} + /> + +
+ + {/* Is Default */} + + ) => { + onDefaultChange(event.currentTarget.checked); + }} />
- - {/* 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 && (