import React from 'react' import { Button, Dropdown, Form, Input, SegmentSelection, Checkbox, Message, Link, Icon } from 'UI'; import { alertMetrics as metrics } from 'App/constants'; import { alertConditions as conditions } from 'App/constants'; import { client, CLIENT_TABS } from 'App/routes'; import { connect } from 'react-redux'; import stl from './alertForm.css'; import DropdownChips from './DropdownChips'; import { validateEmail } from 'App/validate'; import cn from 'classnames'; const thresholdOptions = [ { text: '15 minutes', value: 15 }, { text: '30 minutes', value: 30 }, { text: '1 hour', value: 60 }, { text: '2 hours', value: 120 }, { text: '4 hours', value: 240 }, { text: '1 day', value: 1440 }, ]; const changeOptions = [ { text: 'change', value: 'change' }, { text: '% change', value: 'percent' }, ]; const Circle = ({ text }) => (
{text}
) const Section = ({ index, title, description, content }) => (
{title} { description &&
{description}
}
{content}
) const integrationsRoute = client(CLIENT_TABS.INTEGRATIONS); const AlertForm = props => { const { instance, slackChannels, webhooks, loading, onDelete, deleting } = props; const write = ({ target: { value, name } }) => props.edit({ [ name ]: value }) const writeOption = (e, { name, value }) => props.edit({ [ name ]: value }); const onChangeOption = (e, { checked, name }) => props.edit({ [ name ]: checked }) const writeQueryOption = (e, { name, value }) => { const { query } = instance; props.edit({ query: { ...query, [name] : value } }); } const writeQuery = ({ target: { value, name } }) => { const { query } = instance; props.edit({ query: { ...query, [name] : value } }); } const metric = (instance && instance.query.left) ? metrics.find(i => i.value === instance.query.left) : null; const unit = metric ? metric.unit : ''; const isThreshold = instance.detectionMethod === 'threshold'; return (
props.onSubmit(instance)} id="alert-form">
{isThreshold && 'Eg. Alert me if memory.avg is greater than 500mb over the past 4 hours.'} {!isThreshold && 'Eg. Alert me if % change of memory.avg is greater than 10% over the past 4 hours compared to the previous 4 hours.'}
} />
{!isThreshold && (
)}
{ unit && ( )} { !unit && ( )}
{!isThreshold && (
)}
} />
{ instance.slack && (
props.edit({ 'slackInput': selected })} />
)} {instance.email && (
props.edit({ 'emailInput': selected })} />
)} {instance.webhook && (
props.edit({ 'webhookInput': selected })} />
)}
} />
{instance.exists() && ( )}
) } export default connect(state => ({ instance: state.getIn(['alerts', 'instance']), loading: state.getIn(['alerts', 'saveRequest', 'loading']), deleting: state.getIn(['alerts', 'removeRequest', 'loading']) }))(AlertForm)