{"version":3,"file":"NewNotificationChannelLegacy.1d57814bc534bb1a3681.js","mappings":"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","sources":["webpack://grafana/./public/app/features/alerting/NewNotificationChannelPage.tsx","webpack://grafana/./public/app/features/alerting/components/OptionElement.tsx","webpack://grafana/./public/app/features/alerting/components/NotificationChannelOptions.tsx","webpack://grafana/./public/app/features/alerting/components/BasicSettings.tsx","webpack://grafana/./public/app/features/alerting/components/ChannelSettings.tsx","webpack://grafana/./public/app/features/alerting/components/NotificationSettings.tsx","webpack://grafana/./public/app/features/alerting/components/NotificationChannelForm.tsx","webpack://grafana/./public/app/features/alerting/state/actions.ts","webpack://grafana/./public/app/features/alerting/utils/notificationChannels.ts"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\n\nimport { config } from '@grafana/runtime';\nimport { Form } from '@grafana/ui';\nimport { Page } from 'app/core/components/Page/Page';\nimport { getNavModel } from 'app/core/selectors/navModel';\n\nimport { NotificationChannelDTO, StoreState } from '../../types';\n\nimport { NotificationChannelForm } from './components/NotificationChannelForm';\nimport { createNotificationChannel, loadNotificationTypes, testNotificationChannel } from './state/actions';\nimport { resetSecureField } from './state/reducers';\nimport {\n defaultValues,\n mapChannelsToSelectableValue,\n transformSubmitData,\n transformTestData,\n} from './utils/notificationChannels';\n\nclass NewNotificationChannelPage extends PureComponent {\n componentDidMount() {\n this.props.loadNotificationTypes();\n }\n\n onSubmit = (data: NotificationChannelDTO) => {\n this.props.createNotificationChannel(transformSubmitData({ ...defaultValues, ...data }));\n };\n\n onTestChannel = (data: NotificationChannelDTO) => {\n this.props.testNotificationChannel(transformTestData({ ...defaultValues, ...data }));\n };\n\n render() {\n const { navModel, notificationChannelTypes } = this.props;\n\n return (\n \n \n

New notification channel

\n
\n {({ register, errors, control, getValues, watch }) => {\n const selectedChannel = notificationChannelTypes.find((c) => c.value === getValues().type.value);\n\n return (\n \n );\n }}\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: StoreState) => ({\n navModel: getNavModel(state.navIndex, 'channels'),\n notificationChannelTypes: state.notificationChannel.notificationChannelTypes,\n});\n\nconst mapDispatchToProps = {\n createNotificationChannel,\n loadNotificationTypes,\n testNotificationChannel,\n resetSecureField,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype Props = ConnectedProps;\nexport default connector(NewNotificationChannelPage);\n","import React from 'react';\nimport { Controller, UseFormReturn } from 'react-hook-form';\n\nimport { Input, Select, TextArea } from '@grafana/ui';\n\nimport { NotificationChannelOption } from '../../../types';\n\ninterface Props extends Pick, 'register' | 'control'> {\n option: NotificationChannelOption;\n invalid?: boolean;\n}\n\nexport const OptionElement = ({ control, option, register, invalid }: Props) => {\n const modelValue = option.secure ? `secureSettings.${option.propertyName}` : `settings.${option.propertyName}`;\n switch (option.element) {\n case 'input':\n return (\n (option.validationRule !== '' ? validateOption(v, option.validationRule) : true),\n })}\n invalid={invalid}\n type={option.inputType}\n placeholder={option.placeholder}\n />\n );\n\n case 'select':\n return (\n (\n \n \n \n \n \n \n )}\n \n );\n};\n","import { css } from '@emotion/css';\nimport React, { useEffect } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { Button, FormAPI, HorizontalGroup, Spinner, useStyles2 } from '@grafana/ui';\nimport config from 'app/core/config';\n\nimport { NotificationChannelType, NotificationChannelDTO, NotificationChannelSecureFields } from '../../../types';\n\nimport { BasicSettings } from './BasicSettings';\nimport { ChannelSettings } from './ChannelSettings';\nimport { NotificationSettings } from './NotificationSettings';\n\ninterface Props\n extends Pick, 'control' | 'errors' | 'register' | 'watch' | 'getValues'> {\n selectableChannels: Array>;\n selectedChannel?: NotificationChannelType;\n imageRendererAvailable: boolean;\n secureFields: NotificationChannelSecureFields;\n resetSecureField: (key: string) => void;\n onTestChannel: (data: NotificationChannelDTO) => void;\n}\n\nexport interface NotificationSettingsProps\n extends Pick, 'control' | 'errors' | 'register'> {\n currentFormValues: NotificationChannelDTO;\n}\n\nexport const NotificationChannelForm = ({\n control,\n errors,\n selectedChannel,\n selectableChannels,\n register,\n watch,\n getValues,\n imageRendererAvailable,\n onTestChannel,\n resetSecureField,\n secureFields,\n}: Props) => {\n const styles = useStyles2(getStyles);\n\n useEffect(() => {\n /*\n Find fields that have dependencies on other fields and removes duplicates.\n Needs to be prefixed with settings.\n */\n const fieldsToWatch =\n new Set(\n selectedChannel?.options\n .filter((o) => o.showWhen.field)\n .map((option) => {\n return `settings.${option.showWhen.field}`;\n })\n ) || [];\n watch(['type', 'sendReminder', 'uploadImage', ...fieldsToWatch]);\n }, [selectedChannel?.options, watch]);\n\n const currentFormValues = getValues();\n\n if (!selectedChannel) {\n return ;\n }\n\n return (\n
\n
\n \n
\n {/* If there are no non-required fields, don't render this section*/}\n {selectedChannel.options.filter((o) => !o.required).length > 0 && (\n
\n \n
\n )}\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n formContainer: css``,\n formItem: css`\n flex-grow: 1;\n padding-top: ${theme.spacing(2)};\n `,\n formButtons: css`\n padding-top: ${theme.spacing(4)};\n `,\n };\n};\n","import { getBackendSrv, isFetchError, locationService } from '@grafana/runtime';\nimport { notifyApp } from 'app/core/actions';\nimport { createErrorNotification, createSuccessNotification } from 'app/core/copy/appNotification';\nimport { AlertRuleDTO, NotifierDTO, ThunkResult } from 'app/types';\n\nimport { loadAlertRules, loadedAlertRules, notificationChannelLoaded, setNotificationChannels } from './reducers';\n\nexport function getAlertRulesAsync(options: { state: string }): ThunkResult {\n return async (dispatch) => {\n dispatch(loadAlertRules());\n const rules: AlertRuleDTO[] = await getBackendSrv().get('/api/alerts', options);\n dispatch(loadedAlertRules(rules));\n };\n}\n\nexport function togglePauseAlertRule(id: number, options: { paused: boolean }): ThunkResult {\n return async (dispatch) => {\n await getBackendSrv().post(`/api/alerts/${id}/pause`, options);\n const stateFilter = locationService.getSearchObject().state || 'all';\n dispatch(getAlertRulesAsync({ state: stateFilter.toString() }));\n };\n}\n\nexport function createNotificationChannel(data: any): ThunkResult> {\n return async (dispatch) => {\n try {\n await getBackendSrv().post(`/api/alert-notifications`, data);\n dispatch(notifyApp(createSuccessNotification('Notification created')));\n locationService.push('/alerting-legacy/notifications');\n } catch (error) {\n if (isFetchError(error)) {\n dispatch(notifyApp(createErrorNotification(error.data.error)));\n }\n }\n };\n}\n\nexport function updateNotificationChannel(data: any): ThunkResult {\n return async (dispatch) => {\n try {\n await getBackendSrv().put(`/api/alert-notifications/${data.id}`, data);\n dispatch(notifyApp(createSuccessNotification('Notification updated')));\n } catch (error) {\n if (isFetchError(error)) {\n dispatch(notifyApp(createErrorNotification(error.data.error)));\n }\n }\n };\n}\n\nexport function testNotificationChannel(data: any): ThunkResult {\n return async (dispatch, getState) => {\n const channel = getState().notificationChannel.notificationChannel;\n await getBackendSrv().post('/api/alert-notifications/test', { id: channel.id, ...data });\n };\n}\n\nexport function loadNotificationTypes(): ThunkResult {\n return async (dispatch) => {\n const alertNotifiers: NotifierDTO[] = await getBackendSrv().get(`/api/alert-notifiers-legacy`);\n\n const notificationTypes = alertNotifiers.sort((o1, o2) => {\n if (o1.name > o2.name) {\n return 1;\n }\n return -1;\n });\n\n dispatch(setNotificationChannels(notificationTypes));\n };\n}\n\nexport function loadNotificationChannel(id: number): ThunkResult {\n return async (dispatch) => {\n await dispatch(loadNotificationTypes());\n const notificationChannel = await getBackendSrv().get(`/api/alert-notifications/${id}`);\n dispatch(notificationChannelLoaded(notificationChannel));\n };\n}\n","import memoizeOne from 'memoize-one';\n\nimport { SelectableValue } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { NotificationChannelDTO, NotificationChannelType } from 'app/types';\n\nexport const defaultValues: NotificationChannelDTO = {\n id: -1,\n name: '',\n type: { value: 'email', label: 'Email' },\n sendReminder: false,\n disableResolveMessage: false,\n frequency: '15m',\n settings: {\n uploadImage: config.rendererAvailable,\n autoResolve: true,\n httpMethod: 'POST',\n severity: 'critical',\n },\n secureSettings: {},\n secureFields: {},\n isDefault: false,\n};\n\nexport const mapChannelsToSelectableValue = memoizeOne(\n (notificationChannels: NotificationChannelType[], includeDescription: boolean): Array> => {\n return notificationChannels.map((channel) => {\n if (includeDescription) {\n return {\n value: channel.value,\n label: channel.label,\n description: channel.description,\n };\n }\n return {\n value: channel.value,\n label: channel.label,\n };\n });\n }\n);\n\nexport const transformSubmitData = (formData: NotificationChannelDTO) => {\n /*\n Some settings can be options in a select, in order to not save a SelectableValue\n we need to use check if it is a SelectableValue and use its value.\n */\n const settings = Object.fromEntries(\n Object.entries(formData.settings).map(([key, value]) => {\n return [key, value && value.hasOwnProperty('value') ? value.value : value];\n })\n );\n\n return {\n ...defaultValues,\n ...formData,\n frequency: formData.frequency === '' ? defaultValues.frequency : formData.frequency,\n type: formData.type.value,\n settings: { ...defaultValues.settings, ...settings },\n secureSettings: { ...formData.secureSettings },\n };\n};\n\nexport const transformTestData = (formData: NotificationChannelDTO) => {\n return {\n name: formData.name,\n type: formData.type.value,\n frequency: formData.frequency ?? defaultValues.frequency,\n settings: { ...Object.assign(defaultValues.settings, formData.settings) },\n secureSettings: { ...formData.secureSettings },\n };\n};\n"],"names":["NewNotificationChannelPage","data","navModel","notificationChannelTypes","register","errors","control","getValues","watch","selectedChannel","c","mapStateToProps","state","mapDispatchToProps","OptionElement","option","invalid","modelValue","Input","v","validateOption","ref","field","Select","TextArea","value","validationRule","NotificationChannelOptions","currentFormValues","selectedChannelOptions","onResetSecureField","secureFields","index","key","selectedOptionValue","Field","Checkbox","Button","BasicSettings","channels","resetSecureField","o","ChannelSettings","CollapsableSection","Alert","NotificationSettings","imageRendererAvailable","InfoBox","NotificationChannelForm","selectableChannels","onTestChannel","styles","getStyles","fieldsToWatch","config","Spinner","theme","getAlertRulesAsync","options","dispatch","rules","togglePauseAlertRule","id","stateFilter","createNotificationChannel","error","updateNotificationChannel","testNotificationChannel","getState","channel","loadNotificationTypes","notificationTypes","o1","o2","loadNotificationChannel","notificationChannel","defaultValues","mapChannelsToSelectableValue","notificationChannels","includeDescription","transformSubmitData","formData","settings","transformTestData"],"sourceRoot":""}