locales:add alert monitor create
This commit is contained in:
parent
0ee5b1918b
commit
6851e29986
|
@ -64,7 +64,9 @@ export default {
|
||||||
'form.publicUsers.option.C': 'Colleague C',
|
'form.publicUsers.option.C': 'Colleague C',
|
||||||
'form.button.search': 'Search',
|
'form.button.search': 'Search',
|
||||||
'form.button.new': 'New',
|
'form.button.new': 'New',
|
||||||
|
'form.button.Create': 'Create',
|
||||||
'form.button.edit': 'Edit',
|
'form.button.edit': 'Edit',
|
||||||
|
'form.button.update': 'Update',
|
||||||
'form.button.delete': 'Delete',
|
'form.button.delete': 'Delete',
|
||||||
'form.button.cancel': 'Cancel',
|
'form.button.cancel': 'Cancel',
|
||||||
'form.button.collapse': 'Collapse',
|
'form.button.collapse': 'Collapse',
|
||||||
|
|
|
@ -30,6 +30,7 @@ export default {
|
||||||
'alert.dashboard.table.columns.acknowledged_time': 'Time acknowledged',
|
'alert.dashboard.table.columns.acknowledged_time': 'Time acknowledged',
|
||||||
|
|
||||||
'alert.monitor': 'Monitors',
|
'alert.monitor': 'Monitors',
|
||||||
|
'alert.monitor.self': 'monitor',
|
||||||
'alert.monitor.monitors': 'Monitors',
|
'alert.monitor.monitors': 'Monitors',
|
||||||
'alert.monitor.actions': 'Actions',
|
'alert.monitor.actions': 'Actions',
|
||||||
'alert.monitor.actions.acknowledge': 'Acknowledge',
|
'alert.monitor.actions.acknowledge': 'Acknowledge',
|
||||||
|
@ -53,7 +54,32 @@ export default {
|
||||||
'alert.monitor.table.columns.errors': 'Errors',
|
'alert.monitor.table.columns.errors': 'Errors',
|
||||||
'alert.monitor.table.columns.ignored': 'Ignored',
|
'alert.monitor.table.columns.ignored': 'Ignored',
|
||||||
|
|
||||||
|
'alert.monitor.create.configure-monitor': 'Configure monitor',
|
||||||
|
'alert.monitor.create.state.title': 'Monitor state',
|
||||||
|
'alert.monitor.create.state.description': 'Disabled monitors do not run.',
|
||||||
|
'alert.monitor.create.state.disable': 'Disable monitor',
|
||||||
|
'alert.monitor.create.define-monitor': 'Define monitor',
|
||||||
|
'alert.monitor.create.define.method': 'Method of definition',
|
||||||
|
'alert.monitor.create.define.method.query': 'Define using extraction query',
|
||||||
|
'alert.monitor.create.define.method.graph': 'Define using visual graph',
|
||||||
|
'alert.monitor.create.define.index': 'Index',
|
||||||
|
'alert.monitor.create.define.index.help-text': 'You can use a * as a wildcard in your index pattern',
|
||||||
|
'alert.monitor.create.define.index.select.placeholder': 'Select indices',
|
||||||
|
'alert.monitor.create.define.index.empty-message': 'You must specify an index.',
|
||||||
|
'alert.monitor.create.define.time_field': 'Time field',
|
||||||
|
'alert.monitor.create.define.time_field.help-text': 'Choose the time field you want to use for your x-axis',
|
||||||
|
'alert.monitor.create.define.time_field.empty-message': 'You must specify a time field.',
|
||||||
|
'alert.monitor.create.define.query-performance': 'Query performance',
|
||||||
|
'alert.monitor.create.define.query-performance.tips': 'Check the performance of your query and make sure to follow best practices.',
|
||||||
|
'alert.monitor.create.define.query-performance.query-duration': 'Query duration',
|
||||||
|
'alert.monitor.create.define.query-performance.request-duration': 'Request duration',
|
||||||
|
'alert.monitor.create.define.query-performance.hits': 'Hits',
|
||||||
|
'alert.monitor.create.schedule-monitor': 'Monitor schedule',
|
||||||
|
'alert.monitor.create.schedule.when-text': 'When do you want this monitor to run?',
|
||||||
|
'alert.monitor.create.schedule.advise-text': 'Define how often the monitor collects data and determines how often you may receive alerts. We recommend two times of detector interval to avoid missing anomaly results due to any potential delay of processing time.',
|
||||||
|
|
||||||
'alert.destination': 'Destinations',
|
'alert.destination': 'Destinations',
|
||||||
|
'alert.destination.self': 'destination',
|
||||||
'alert.destination.destinations': 'Destinations',
|
'alert.destination.destinations': 'Destinations',
|
||||||
'alert.destination.actions': 'Actions',
|
'alert.destination.actions': 'Actions',
|
||||||
'alert.destination.actions.manager-email-senders': 'Manage email senders',
|
'alert.destination.actions.manager-email-senders': 'Manage email senders',
|
||||||
|
@ -71,4 +97,5 @@ export default {
|
||||||
'alert.destination.table.columns.type': 'Destination type',
|
'alert.destination.table.columns.type': 'Destination type',
|
||||||
|
|
||||||
'alert.trigger': 'Triggers',
|
'alert.trigger': 'Triggers',
|
||||||
|
'alert.trigger.self': 'trigger',
|
||||||
};
|
};
|
||||||
|
|
|
@ -70,7 +70,9 @@ export default {
|
||||||
'form.logstash.kafkaconf.placeholder':"请输入Kafka配置",
|
'form.logstash.kafkaconf.placeholder':"请输入Kafka配置",
|
||||||
'form.button.search': '搜索',
|
'form.button.search': '搜索',
|
||||||
'form.button.new': '新建',
|
'form.button.new': '新建',
|
||||||
|
'form.button.create': '创建',
|
||||||
'form.button.edit': '编辑',
|
'form.button.edit': '编辑',
|
||||||
|
'form.button.update': '更新',
|
||||||
'form.button.delete': '删除',
|
'form.button.delete': '删除',
|
||||||
'form.button.cancel': '取消',
|
'form.button.cancel': '取消',
|
||||||
'form.button.collapse': '收起',
|
'form.button.collapse': '收起',
|
||||||
|
|
|
@ -30,6 +30,7 @@ export default {
|
||||||
'alert.dashboard.table.columns.acknowledged_time': '确认时间',
|
'alert.dashboard.table.columns.acknowledged_time': '确认时间',
|
||||||
|
|
||||||
'alert.monitor': '监控管理',
|
'alert.monitor': '监控管理',
|
||||||
|
'alert.monitor.self': '监控项',
|
||||||
'alert.monitor.monitors': '监控管理',
|
'alert.monitor.monitors': '监控管理',
|
||||||
'alert.monitor.actions': '操作',
|
'alert.monitor.actions': '操作',
|
||||||
'alert.monitor.actions.acknowledge': '确认',
|
'alert.monitor.actions.acknowledge': '确认',
|
||||||
|
@ -53,8 +54,33 @@ export default {
|
||||||
'alert.monitor.table.columns.errors': '错误',
|
'alert.monitor.table.columns.errors': '错误',
|
||||||
'alert.monitor.table.columns.ignored': '已忽略',
|
'alert.monitor.table.columns.ignored': '已忽略',
|
||||||
|
|
||||||
'alert.destination': '通知渠道',
|
'alert.monitor.create.configure-monitor': '配置监控项',
|
||||||
|
'alert.monitor.create.state.title': '监控项状态',
|
||||||
|
'alert.monitor.create.state.description': '禁用监控项。',
|
||||||
|
'alert.monitor.create.state.disable': '禁用',
|
||||||
|
'alert.monitor.create.define-monitor': '定义监控项',
|
||||||
|
'alert.monitor.create.define.method': '定义方式',
|
||||||
|
'alert.monitor.create.define.method.query': '使用提取查询定义',
|
||||||
|
'alert.monitor.create.define.method.graph': '使用可视化图定义',
|
||||||
|
'alert.monitor.create.define.index': '索引',
|
||||||
|
'alert.monitor.create.define.index.help-text': '您可以在索引模式中使用 * 作为通配符',
|
||||||
|
'alert.monitor.create.define.index.select.placeholder': '选择索引',
|
||||||
|
'alert.monitor.create.define.index.empty-message': '您必须指定一个索引。',
|
||||||
|
'alert.monitor.create.define.time_field': '时间字段',
|
||||||
|
'alert.monitor.create.define.time_field.help-text': '选择要用于 x 轴的时间字段',
|
||||||
|
'alert.monitor.create.define.time_field.empty-message': '您必须指定一个时间字段。',
|
||||||
|
'alert.monitor.create.define.query-performance': '查询性能',
|
||||||
|
'alert.monitor.create.define.query-performance.tips': '检查查询的性能并确保遵循最佳实践。',
|
||||||
|
'alert.monitor.create.define.query-performance.query-duration': '查询时长',
|
||||||
|
'alert.monitor.create.define.query-performance.request-duration': '请求时长',
|
||||||
|
'alert.monitor.create.define.query-performance.hits': '命中数',
|
||||||
|
'alert.monitor.create.schedule-monitor': '监控计划',
|
||||||
|
'alert.monitor.create.schedule.when-text': '您希望此监视器何时运行?',
|
||||||
|
'alert.monitor.create.schedule.advise-text': '定义监视器收集数据的频率并确定您接收警报的频率。 我们建议两倍检测器间隔,以避免由于处理时间的任何潜在延迟而遗漏异常结果。',
|
||||||
|
|
||||||
|
|
||||||
|
'alert.destination': '通知渠道',
|
||||||
|
'alert.destination.self': '通知渠道',
|
||||||
'alert.destination.destinations': '通知渠道管理',
|
'alert.destination.destinations': '通知渠道管理',
|
||||||
'alert.destination.actions': '操作',
|
'alert.destination.actions': '操作',
|
||||||
'alert.destination.actions.manager-email-senders': '管理邮件发送者',
|
'alert.destination.actions.manager-email-senders': '管理邮件发送者',
|
||||||
|
|
|
@ -16,10 +16,11 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import FormikSelect from '../../../../components/FormControls/FormikSelect/FormikSelect';
|
import FormikSelect from '../../../../components/FormControls/FormikSelect/FormikSelect';
|
||||||
import { ES_AD_PLUGIN } from '../../../../utils/constants';
|
import { ES_AD_PLUGIN } from '../../../../utils/constants';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const defaultSelectDefinitions = [
|
const defaultSelectDefinitions = [
|
||||||
{ value: 'graph', text: 'Define using visual graph' },
|
{ value: 'query', text: formatMessage({ id: 'alert.monitor.create.define.method.query'}) },
|
||||||
{ value: 'query', text: 'Define using extraction query' },
|
{ value: 'graph', text: formatMessage({ id: 'alert.monitor.create.define.method.graph'}) },
|
||||||
];
|
];
|
||||||
|
|
||||||
const onChangeDefinition = (e, form, resetResponse) => {
|
const onChangeDefinition = (e, form, resetResponse) => {
|
||||||
|
@ -39,7 +40,7 @@ const MonitorDefinition = ({ resetResponse, plugins }) => (
|
||||||
name="searchType"
|
name="searchType"
|
||||||
formRow
|
formRow
|
||||||
rowProps={{
|
rowProps={{
|
||||||
label: 'Method of definition',
|
label: formatMessage({ id: 'alert.monitor.create.define.method'}),
|
||||||
style: { paddingLeft: '10px' },
|
style: { paddingLeft: '10px' },
|
||||||
}}
|
}}
|
||||||
inputProps={{
|
inputProps={{
|
||||||
|
|
|
@ -18,19 +18,20 @@ import { EuiSpacer } from '@elastic/eui';
|
||||||
|
|
||||||
import SubHeader from '../../../../components/SubHeader';
|
import SubHeader from '../../../../components/SubHeader';
|
||||||
import { FormikCheckbox } from '../../../../components/FormControls';
|
import { FormikCheckbox } from '../../../../components/FormControls';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const MonitorState = () => (
|
const MonitorState = () => (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<SubHeader
|
<SubHeader
|
||||||
title={<h4>Monitor state</h4>}
|
title={<h4>{formatMessage({ id: 'alert.monitor.create.state.title'})}</h4>}
|
||||||
description={<span>Disabled monitors do not run.</span>}
|
description={<span>{formatMessage({ id: 'alert.monitor.create.state.description'})}</span>}
|
||||||
/>
|
/>
|
||||||
<EuiSpacer size="s" />
|
<EuiSpacer size="s" />
|
||||||
<FormikCheckbox
|
<FormikCheckbox
|
||||||
name="disabled"
|
name="disabled"
|
||||||
formRow
|
formRow
|
||||||
rowProps={{ style: { paddingLeft: '10px' } }}
|
rowProps={{ style: { paddingLeft: '10px' } }}
|
||||||
inputProps={{ label: 'Disable monitor' }}
|
inputProps={{ label: formatMessage({ id: 'alert.monitor.create.state.disable'}) }}
|
||||||
/>
|
/>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
|
|
|
@ -18,6 +18,7 @@ import PropTypes from 'prop-types';
|
||||||
import FormikSelect from '../../../../components/FormControls/FormikSelect/FormikSelect';
|
import FormikSelect from '../../../../components/FormControls/FormikSelect/FormikSelect';
|
||||||
import { hasError, isInvalid } from '../../../../utils/validate';
|
import { hasError, isInvalid } from '../../../../utils/validate';
|
||||||
import { validateTimeField } from './utils/validation';
|
import { validateTimeField } from './utils/validation';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const MonitorTimeField = ({ dataTypes }) => {
|
const MonitorTimeField = ({ dataTypes }) => {
|
||||||
// Default empty option + options from index mappings mapped to ui select form
|
// Default empty option + options from index mappings mapped to ui select form
|
||||||
|
@ -29,9 +30,9 @@ const MonitorTimeField = ({ dataTypes }) => {
|
||||||
formRow
|
formRow
|
||||||
fieldProps={{ validate: validateTimeField(dateFields) }}
|
fieldProps={{ validate: validateTimeField(dateFields) }}
|
||||||
rowProps={{
|
rowProps={{
|
||||||
label: 'Time field',
|
label: formatMessage({ id: 'alert.monitor.create.define.time_field'}),
|
||||||
style: { paddingLeft: '10px' },
|
style: { paddingLeft: '10px' },
|
||||||
helpText: 'Choose the time field you want to use for your x-axis',
|
helpText: formatMessage({ id: 'alert.monitor.create.define.time_field.help-text'}),
|
||||||
isInvalid,
|
isInvalid,
|
||||||
error: hasError,
|
error: hasError,
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -20,15 +20,16 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui';
|
||||||
import SubHeader from '../../../../components/SubHeader';
|
import SubHeader from '../../../../components/SubHeader';
|
||||||
import { DEFAULT_EMPTY_DATA } from '../../../../utils/constants';
|
import { DEFAULT_EMPTY_DATA } from '../../../../utils/constants';
|
||||||
import { URL } from '../../../../utils/constants';
|
import { URL } from '../../../../utils/constants';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const QueryPerformance = ({ response }) => (
|
const QueryPerformance = ({ response }) => (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<SubHeader
|
<SubHeader
|
||||||
title={<h4>Query performance</h4>}
|
title={<h4>{formatMessage({ id: 'alert.monitor.create.define.query-performance'})}</h4>}
|
||||||
description={
|
description={
|
||||||
<span>
|
<span>
|
||||||
Check the performance of your query and make sure to follow best practices.{' '}
|
{formatMessage({ id: 'alert.monitor.create.define.query-performance.tips'})}{' '}
|
||||||
<a href={URL.DOCUMENTATION}>Learn more</a>
|
{/*<a href={URL.DOCUMENTATION}>Learn more</a>*/}
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -41,7 +42,7 @@ const QueryPerformance = ({ response }) => (
|
||||||
>
|
>
|
||||||
<EuiFlexItem>
|
<EuiFlexItem>
|
||||||
<EuiText size="xs">
|
<EuiText size="xs">
|
||||||
<strong>Query duration</strong>
|
<strong>{formatMessage({ id: 'alert.monitor.create.define.query-performance.query-duration'})}</strong>
|
||||||
<span style={{ display: 'block' }}>
|
<span style={{ display: 'block' }}>
|
||||||
{`${_.get(response, 'took', DEFAULT_EMPTY_DATA)} ms`}
|
{`${_.get(response, 'took', DEFAULT_EMPTY_DATA)} ms`}
|
||||||
</span>
|
</span>
|
||||||
|
@ -49,7 +50,7 @@ const QueryPerformance = ({ response }) => (
|
||||||
</EuiFlexItem>
|
</EuiFlexItem>
|
||||||
<EuiFlexItem>
|
<EuiFlexItem>
|
||||||
<EuiText size="xs">
|
<EuiText size="xs">
|
||||||
<strong>Request duration</strong>
|
<strong>{formatMessage({ id: 'alert.monitor.create.define.query-performance.request-duration'})}</strong>
|
||||||
<span style={{ display: 'block' }}>
|
<span style={{ display: 'block' }}>
|
||||||
{_.get(response, 'invalid.path', DEFAULT_EMPTY_DATA)}
|
{_.get(response, 'invalid.path', DEFAULT_EMPTY_DATA)}
|
||||||
</span>
|
</span>
|
||||||
|
@ -57,7 +58,7 @@ const QueryPerformance = ({ response }) => (
|
||||||
</EuiFlexItem>
|
</EuiFlexItem>
|
||||||
<EuiFlexItem>
|
<EuiFlexItem>
|
||||||
<EuiText size="xs">
|
<EuiText size="xs">
|
||||||
<strong>Hits</strong>
|
<strong>{formatMessage({ id: 'alert.monitor.create.define.query-performance.hits'})}</strong>
|
||||||
<span style={{ display: 'block' }}>
|
<span style={{ display: 'block' }}>
|
||||||
{_.get(response, 'hits.total.value', DEFAULT_EMPTY_DATA)}
|
{_.get(response, 'hits.total.value', DEFAULT_EMPTY_DATA)}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -18,18 +18,17 @@ import { EuiSpacer, EuiText } from '@elastic/eui';
|
||||||
|
|
||||||
import { Frequency, FrequencyPicker } from './Frequencies';
|
import { Frequency, FrequencyPicker } from './Frequencies';
|
||||||
import Interval from './Frequencies/Interval';
|
import Interval from './Frequencies/Interval';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const Schedule = ({ isAd }) => (
|
const Schedule = ({ isAd }) => (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<EuiText size="xs" style={{ paddingLeft: '10px', maxWidth: '400px' }}>
|
<EuiText size="xs" style={{ paddingLeft: '10px', maxWidth: '400px' }}>
|
||||||
{isAd ? (
|
{isAd ? (
|
||||||
<p>
|
<p>
|
||||||
Define how often the monitor collects data and determines how often you may receive
|
{formatMessage({ id: 'alert.monitor.create.schedule.advise-text'})}
|
||||||
alerts. We recommend two times of detector interval to avoid missing anomaly results due
|
|
||||||
to any potential delay of processing time.
|
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
'When do you want this monitor to run?'
|
formatMessage({ id: 'alert.monitor.create.schedule.when-text'})
|
||||||
)}
|
)}
|
||||||
</EuiText>
|
</EuiText>
|
||||||
<EuiSpacer size="s" />
|
<EuiSpacer size="s" />
|
||||||
|
|
|
@ -20,15 +20,16 @@ import ContentPanel from '../../../../components/ContentPanel';
|
||||||
import MonitorState from '../../components/MonitorState';
|
import MonitorState from '../../components/MonitorState';
|
||||||
import { hasError, isInvalid, required, validateMonitorName } from '../../../../utils/validate';
|
import { hasError, isInvalid, required, validateMonitorName } from '../../../../utils/validate';
|
||||||
import FormikFieldText from '../../../../components/FormControls/FormikFieldText';
|
import FormikFieldText from '../../../../components/FormControls/FormikFieldText';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const ConfigureMonitor = ({ httpClient, monitorToEdit }) => (
|
const ConfigureMonitor = ({ httpClient, monitorToEdit }) => (
|
||||||
<ContentPanel title="Configure monitor" titleSize="s" bodyStyles={{ padding: 'initial' }}>
|
<ContentPanel title={formatMessage({ id: 'alert.monitor.create.configure-monitor'})} titleSize="s" bodyStyles={{ padding: 'initial' }}>
|
||||||
<FormikFieldText
|
<FormikFieldText
|
||||||
name="name"
|
name="name"
|
||||||
formRow
|
formRow
|
||||||
fieldProps={{ validate: validateMonitorName(httpClient, monitorToEdit) }}
|
fieldProps={{ validate: validateMonitorName(httpClient, monitorToEdit) }}
|
||||||
rowProps={{
|
rowProps={{
|
||||||
label: 'Monitor name',
|
label: formatMessage({ id: 'alert.monitor.table.columns.name'}),
|
||||||
style: { paddingLeft: '10px' },
|
style: { paddingLeft: '10px' },
|
||||||
isInvalid,
|
isInvalid,
|
||||||
error: hasError,
|
error: hasError,
|
||||||
|
|
|
@ -36,6 +36,7 @@ import { TRIGGER_ACTIONS, SEARCH_TYPE } from '../../../../utils/constants';
|
||||||
import { initializeFromQueryParams } from './utils/monitorQueryParams';
|
import { initializeFromQueryParams } from './utils/monitorQueryParams';
|
||||||
import { SubmitErrorHandler } from '../../../../utils/SubmitErrorHandler';
|
import { SubmitErrorHandler } from '../../../../utils/SubmitErrorHandler';
|
||||||
import { backendErrorNotification } from '../../../../utils/helpers';
|
import { backendErrorNotification } from '../../../../utils/helpers';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
export default class CreateMonitor extends Component {
|
export default class CreateMonitor extends Component {
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
|
@ -137,7 +138,7 @@ export default class CreateMonitor extends Component {
|
||||||
{({ values, errors, handleSubmit, isSubmitting, isValid }) => (
|
{({ values, errors, handleSubmit, isSubmitting, isValid }) => (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<EuiTitle size="l">
|
<EuiTitle size="l">
|
||||||
<h1>{edit ? 'Edit' : 'Create'} monitor</h1>
|
<h1>{edit ? formatMessage({ id: 'form.button.edit'}) : formatMessage({ id: 'form.button.create'})} {formatMessage({ id: 'alert.monitor.self'})}</h1>
|
||||||
</EuiTitle>
|
</EuiTitle>
|
||||||
<EuiSpacer />
|
<EuiSpacer />
|
||||||
<ConfigureMonitor httpClient={httpClient} monitorToEdit={monitorToEdit} />
|
<ConfigureMonitor httpClient={httpClient} monitorToEdit={monitorToEdit} />
|
||||||
|
@ -158,11 +159,11 @@ export default class CreateMonitor extends Component {
|
||||||
<EuiSpacer />
|
<EuiSpacer />
|
||||||
<EuiFlexGroup alignItems="center" justifyContent="flexEnd">
|
<EuiFlexGroup alignItems="center" justifyContent="flexEnd">
|
||||||
<EuiFlexItem grow={false}>
|
<EuiFlexItem grow={false}>
|
||||||
<EuiButtonEmpty onClick={this.onCancel}>Cancel</EuiButtonEmpty>
|
<EuiButtonEmpty onClick={this.onCancel}>{formatMessage({ id: 'form.button.cancel'})}</EuiButtonEmpty>
|
||||||
</EuiFlexItem>
|
</EuiFlexItem>
|
||||||
<EuiFlexItem grow={false}>
|
<EuiFlexItem grow={false}>
|
||||||
<EuiButton fill onClick={handleSubmit} isLoading={isSubmitting}>
|
<EuiButton fill onClick={handleSubmit} isLoading={isSubmitting}>
|
||||||
{edit ? 'Update' : 'Create'}
|
{edit ? formatMessage({ id: 'form.button.update'}) : formatMessage({ id: 'form.button.create'})}
|
||||||
</EuiButton>
|
</EuiButton>
|
||||||
</EuiFlexItem>
|
</EuiFlexItem>
|
||||||
</EuiFlexGroup>
|
</EuiFlexGroup>
|
||||||
|
|
|
@ -31,6 +31,7 @@ import { buildSearchRequest } from './utils/searchRequests';
|
||||||
import { SEARCH_TYPE, ES_AD_PLUGIN } from '../../../../utils/constants';
|
import { SEARCH_TYPE, ES_AD_PLUGIN } from '../../../../utils/constants';
|
||||||
import AnomalyDetectors from '../AnomalyDetectors/AnomalyDetectors';
|
import AnomalyDetectors from '../AnomalyDetectors/AnomalyDetectors';
|
||||||
import { backendErrorNotification } from '../../../../utils/helpers';
|
import { backendErrorNotification } from '../../../../utils/helpers';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
function renderEmptyMessage(message) {
|
function renderEmptyMessage(message) {
|
||||||
return (
|
return (
|
||||||
|
@ -250,9 +251,9 @@ class DefineMonitor extends Component {
|
||||||
if (index.length) {
|
if (index.length) {
|
||||||
content = timeField
|
content = timeField
|
||||||
? this.renderGraph()
|
? this.renderGraph()
|
||||||
: renderEmptyMessage('You must specify a time field.');
|
: renderEmptyMessage(formatMessage({ id: 'alert.monitor.create.define.time_field.empty-message'}));
|
||||||
} else {
|
} else {
|
||||||
content = renderEmptyMessage('You must specify an index.');
|
content = renderEmptyMessage(formatMessage({ id: 'alert.monitor.create.define.index.empty-message'}));
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
actions: [],
|
actions: [],
|
||||||
|
@ -277,7 +278,7 @@ class DefineMonitor extends Component {
|
||||||
invalidJSON = true;
|
invalidJSON = true;
|
||||||
}
|
}
|
||||||
const runIsDisabled = invalidJSON || !values.index.length;
|
const runIsDisabled = invalidJSON || !values.index.length;
|
||||||
let content = renderEmptyMessage('You must specify an index.');
|
let content = renderEmptyMessage(formatMessage({ id: 'alert.monitor.create.define.index.empty-message'}));
|
||||||
if (values.index.length) {
|
if (values.index.length) {
|
||||||
content = (
|
content = (
|
||||||
<ExtractionQuery
|
<ExtractionQuery
|
||||||
|
@ -342,7 +343,7 @@ class DefineMonitor extends Component {
|
||||||
const monitorContent = this.getMonitorContent();
|
const monitorContent = this.getMonitorContent();
|
||||||
return (
|
return (
|
||||||
<ContentPanel
|
<ContentPanel
|
||||||
title="Define monitor"
|
title={formatMessage({ id: 'alert.monitor.create.define-monitor'})}
|
||||||
titleSize="s"
|
titleSize="s"
|
||||||
bodyStyles={{ padding: 'initial' }}
|
bodyStyles={{ padding: 'initial' }}
|
||||||
actions={monitorContent.actions}
|
actions={monitorContent.actions}
|
||||||
|
|
|
@ -16,9 +16,10 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ContentPanel from '../../../../components/ContentPanel';
|
import ContentPanel from '../../../../components/ContentPanel';
|
||||||
import Schedule from '../../components/Schedule';
|
import Schedule from '../../components/Schedule';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const MonitorSchedule = ({ httpClient, monitorToEdit, isAd }) => (
|
const MonitorSchedule = ({ httpClient, monitorToEdit, isAd }) => (
|
||||||
<ContentPanel title="Monitor schedule" titleSize="s" bodyStyles={{ padding: 'initial' }}>
|
<ContentPanel title={formatMessage({ id: 'alert.monitor.create.schedule-monitor'})} titleSize="s" bodyStyles={{ padding: 'initial' }}>
|
||||||
<Schedule isAd={isAd} />
|
<Schedule isAd={isAd} />
|
||||||
</ContentPanel>
|
</ContentPanel>
|
||||||
);
|
);
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { EuiHealth, EuiHighlight } from '@elastic/eui';
|
||||||
import { FormikComboBox } from '../../../../components/FormControls';
|
import { FormikComboBox } from '../../../../components/FormControls';
|
||||||
import { validateIndex, hasError, isInvalid } from '../../../../utils/validate';
|
import { validateIndex, hasError, isInvalid } from '../../../../utils/validate';
|
||||||
import { canAppendWildcard, createReasonableWait, getMatchedOptions } from './utils/helpers';
|
import { canAppendWildcard, createReasonableWait, getMatchedOptions } from './utils/helpers';
|
||||||
|
import { formatMessage } from 'umi/locale';
|
||||||
|
|
||||||
const CustomOption = ({ option, searchValue, contentClassName }) => {
|
const CustomOption = ({ option, searchValue, contentClassName }) => {
|
||||||
const { health, label, index } = option;
|
const { health, label, index } = option;
|
||||||
|
@ -231,14 +232,14 @@ class MonitorIndex extends React.Component {
|
||||||
formRow
|
formRow
|
||||||
fieldProps={{ validate: validateIndex }}
|
fieldProps={{ validate: validateIndex }}
|
||||||
rowProps={{
|
rowProps={{
|
||||||
label: 'Index',
|
label: formatMessage({ id: 'alert.monitor.create.define.index'}),
|
||||||
helpText: 'You can use a * as a wildcard in your index pattern',
|
helpText: formatMessage({ id: 'alert.monitor.create.define.index.help-text'}),
|
||||||
isInvalid,
|
isInvalid,
|
||||||
error: hasError,
|
error: hasError,
|
||||||
style: { paddingLeft: '10px' },
|
style: { paddingLeft: '10px' },
|
||||||
}}
|
}}
|
||||||
inputProps={{
|
inputProps={{
|
||||||
placeholder: 'Select indices',
|
placeholder: formatMessage({ id: 'alert.monitor.create.define.index.select.placeholder'}),
|
||||||
async: true,
|
async: true,
|
||||||
isLoading,
|
isLoading,
|
||||||
options: visibleOptions,
|
options: visibleOptions,
|
||||||
|
|
Loading…
Reference in New Issue