[ML] Adding translatable strings to new job wizards (#43344)
* [ML] Adding translatable strings to new job wizards * missed string
This commit is contained in:
parent
488cc176fd
commit
24b5648a0d
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -12,16 +14,21 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children }) => {
|
||||
const title = 'Calendars';
|
||||
const title = i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.additionalSection.calendarsSelection.title',
|
||||
{
|
||||
defaultMessage: 'Calendars',
|
||||
}
|
||||
);
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.additionalSection.calendarsSelection.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -4,13 +4,19 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { FC, Fragment } from 'react';
|
||||
import React, { FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiAccordion, EuiSpacer } from '@elastic/eui';
|
||||
import { ModelPlotSwitch } from './components/model_plot';
|
||||
import { DedicatedIndexSwitch } from './components/dedicated_index';
|
||||
import { ModelMemoryLimitInput } from './components/model_memory_limit';
|
||||
|
||||
const ButtonContent = <Fragment>Advanced</Fragment>;
|
||||
const ButtonContent = i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.advancedSectionButton',
|
||||
{
|
||||
defaultMessage: 'Advanced',
|
||||
}
|
||||
);
|
||||
|
||||
interface Props {
|
||||
advancedExpanded: boolean;
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -12,16 +14,21 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children }) => {
|
||||
const title = 'Use dedicated index';
|
||||
const title = i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.useDedicatedIndex.title',
|
||||
{
|
||||
defaultMessage: 'Use dedicated index',
|
||||
}
|
||||
);
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.useDedicatedIndex.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
import { Validation } from '../../../../../../../common/job_validator';
|
||||
|
||||
|
@ -14,16 +16,21 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children, validation }) => {
|
||||
const title = 'Model memory limit';
|
||||
const title = i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.modelMemoryLimit.title',
|
||||
{
|
||||
defaultMessage: 'Model memory limit',
|
||||
}
|
||||
);
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.modelMemoryLimit.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -12,16 +14,21 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children }) => {
|
||||
const title = 'Enable model plot';
|
||||
const title = i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.enableModelPlot.title',
|
||||
{
|
||||
defaultMessage: 'Enable model plot',
|
||||
}
|
||||
);
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.advancedSection.enableModelPlot.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
import { Validation } from '../../../../../common/job_validator';
|
||||
|
||||
|
@ -14,16 +16,18 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children, validation }) => {
|
||||
const title = 'Groups';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.jobDetailsStep.jobGroupSelect.title', {
|
||||
defaultMessage: 'Groups',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.jobGroupSelect.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow
|
||||
|
|
|
@ -68,9 +68,12 @@ export const GroupsInput: FC = () => {
|
|||
return (
|
||||
<Description validation={validation}>
|
||||
<EuiComboBox
|
||||
placeholder={i18n.translate('xpack.ml.newJob.wizard.jobGroupSelectPlaceholder', {
|
||||
defaultMessage: 'Select or create groups',
|
||||
})}
|
||||
placeholder={i18n.translate(
|
||||
'xpack.ml.newJob.wizard.jobDetailsStep.jobGroupSelect.placeholder',
|
||||
{
|
||||
defaultMessage: 'Select or create groups',
|
||||
}
|
||||
)}
|
||||
options={options}
|
||||
selectedOptions={selectedOptions}
|
||||
onChange={onChange}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -12,16 +14,18 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children }) => {
|
||||
const title = 'Job description';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.jobDetailsStep.jobDescription.title', {
|
||||
defaultMessage: 'Job description',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.jobDescription.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -21,7 +21,6 @@ export const JobDescriptionInput: FC = () => {
|
|||
return (
|
||||
<Description>
|
||||
<EuiTextArea
|
||||
placeholder="Job description"
|
||||
value={jobDescription}
|
||||
onChange={e => setJobDescription(e.target.value)}
|
||||
data-test-subj="mlJobWizardInputJobDescription"
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
import { Validation } from '../../../../../common/job_validator';
|
||||
|
||||
|
@ -14,16 +16,18 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children, validation }) => {
|
||||
const title = 'Job ID';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.jobDetailsStep.jobId.title', {
|
||||
defaultMessage: 'Job ID',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.jobDetailsStep.jobId.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow
|
||||
|
|
|
@ -32,7 +32,6 @@ export const JobIdInput: FC = () => {
|
|||
return (
|
||||
<Description validation={validation}>
|
||||
<EuiFieldText
|
||||
placeholder="Job Id"
|
||||
value={jobId}
|
||||
onChange={e => setJobId(e.target.value)}
|
||||
isInvalid={validation.valid === false}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { EuiFieldText } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -18,7 +19,9 @@ export const BucketSpanInput: FC<Props> = ({ bucketSpan, setBucketSpan, isInvali
|
|||
return (
|
||||
<EuiFieldText
|
||||
disabled={disabled}
|
||||
placeholder="Bucket span"
|
||||
placeholder={i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.bucketSpan.placeholder', {
|
||||
defaultMessage: 'Bucket span',
|
||||
})}
|
||||
value={bucketSpan}
|
||||
onChange={e => setBucketSpan(e.target.value)}
|
||||
isInvalid={isInvalid}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
import { Validation } from '../../../../../common/job_validator';
|
||||
|
||||
|
@ -14,16 +16,18 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children, validation }) => {
|
||||
const title = 'Bucket span';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.bucketSpan.title', {
|
||||
defaultMessage: 'Bucket span',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.bucketSpan.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { FC, useEffect } from 'react';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiButton } from '@elastic/eui';
|
||||
|
||||
import { useEstimateBucketSpan, ESTIMATE_STATUS } from './estimate_bucket_span';
|
||||
|
@ -22,7 +23,10 @@ export const BucketSpanEstimator: FC<Props> = ({ setEstimating }) => {
|
|||
|
||||
return (
|
||||
<EuiButton disabled={status === ESTIMATE_STATUS.RUNNING} onClick={estimateBucketSpan}>
|
||||
Estimate bucket span
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.bucketSpanEstimatorButton"
|
||||
defaultMessage="Estimate bucket span"
|
||||
/>
|
||||
</EuiButton>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -56,7 +56,7 @@ export function useEstimateBucketSpan() {
|
|||
}
|
||||
}
|
||||
toastNotifications.addDanger({
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.estimateBucketSpanError', {
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.bucketSpanEstimatorError', {
|
||||
defaultMessage: `Bucket span estimation error`,
|
||||
}),
|
||||
text,
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
interface Props {
|
||||
|
@ -12,16 +14,18 @@ interface Props {
|
|||
}
|
||||
|
||||
export const Description: FC<Props> = memo(({ children }) => {
|
||||
const title = 'Influencers';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.influencers.title', {
|
||||
defaultMessage: 'Influencers',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
|
||||
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.influencers.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { EuiFormRow, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
||||
import { Field, AggFieldPair } from '../../../../../../../../common/types/fields';
|
||||
import { AggSelect, DropDownLabel, DropDownProps } from '../agg_select';
|
||||
|
@ -29,7 +30,11 @@ export const MetricSelector: FC<Props> = ({
|
|||
return (
|
||||
<EuiFlexGroup style={{ maxWidth: maxWidth !== undefined ? maxWidth : MAX_WIDTH }}>
|
||||
<EuiFlexItem>
|
||||
<EuiFormRow label="Add metric">
|
||||
<EuiFormRow
|
||||
label={i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.multiMetricView.addMetric', {
|
||||
defaultMessage: 'Add metric',
|
||||
})}
|
||||
>
|
||||
<AggSelect
|
||||
fields={fields}
|
||||
changeHandler={detectorChangeHandler}
|
||||
|
|
|
@ -233,7 +233,7 @@ export const PopulationDetectors: FC<Props> = ({ isActive, setIsValid }) => {
|
|||
|
||||
{isActive === false && splitField === null && (
|
||||
<Fragment>
|
||||
Population label TODO
|
||||
{/* Population label TODO */}
|
||||
{splitField !== null && <EuiHorizontalRule margin="l" />}
|
||||
</Fragment>
|
||||
)}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { EuiFormRow, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
||||
import { Field, AggFieldPair } from '../../../../../../../../common/types/fields';
|
||||
import { AggSelect, DropDownLabel, DropDownProps } from '../agg_select';
|
||||
|
@ -29,7 +30,11 @@ export const MetricSelector: FC<Props> = ({
|
|||
return (
|
||||
<EuiFlexGroup style={{ maxWidth: maxWidth !== undefined ? maxWidth : MAX_WIDTH }}>
|
||||
<EuiFlexItem>
|
||||
<EuiFormRow label="Add metric">
|
||||
<EuiFormRow
|
||||
label={i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.populationView.addMetric', {
|
||||
defaultMessage: 'Add metric',
|
||||
})}
|
||||
>
|
||||
<AggSelect
|
||||
fields={fields}
|
||||
changeHandler={detectorChangeHandler}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { Fragment, FC, useContext, useEffect, useState } from 'react';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui';
|
||||
|
||||
import { JobCreatorContext } from '../../../job_creator_context';
|
||||
|
@ -57,7 +58,10 @@ export const SingleMetricSettings: FC<Props> = ({ isActive, setIsValid }) => {
|
|||
<EuiFlexGroup>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty onClick={convertToMultiMetricJob}>
|
||||
Convert to multi metric job
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.singleMetricView.convertToMultiMetricButton"
|
||||
defaultMessage="Convert to multi metric job"
|
||||
/>
|
||||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import React, { FC, memo, Fragment } from 'react';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiHorizontalRule, EuiSpacer } from '@elastic/eui';
|
||||
|
||||
import { SplitField } from '../../../../../../../../common/types/fields';
|
||||
|
@ -85,7 +86,13 @@ export const SplitCards: FC<Props> = memo(
|
|||
<Fragment>
|
||||
{jobType === JOB_TYPE.MULTI_METRIC && (
|
||||
<Fragment>
|
||||
<div style={{ fontSize: 'small' }}>Data split by {splitField.name}</div>
|
||||
<div style={{ fontSize: 'small' }}>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.splitCards.dataSplitBy"
|
||||
defaultMessage="Data split by {field}"
|
||||
values={{ field: splitField.name }}
|
||||
/>
|
||||
</div>
|
||||
<EuiSpacer size="m" />
|
||||
</Fragment>
|
||||
)}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import React, { Fragment, memo, FC } from 'react';
|
||||
import React, { memo, FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
|
||||
|
||||
import { JOB_TYPE } from '../../../../../common/job_creator/util/constants';
|
||||
|
@ -16,16 +18,18 @@ interface Props {
|
|||
|
||||
export const Description: FC<Props> = memo(({ children, jobType }) => {
|
||||
if (jobType === JOB_TYPE.MULTI_METRIC) {
|
||||
const title = 'Split field';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.splitField.title', {
|
||||
defaultMessage: 'Split field',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
||||
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.splitField.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
@ -34,16 +38,18 @@ export const Description: FC<Props> = memo(({ children, jobType }) => {
|
|||
</EuiDescribedFormGroup>
|
||||
);
|
||||
} else if (jobType === JOB_TYPE.POPULATION) {
|
||||
const title = 'Population field';
|
||||
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.populationField.title', {
|
||||
defaultMessage: 'Population field',
|
||||
});
|
||||
return (
|
||||
<EuiDescribedFormGroup
|
||||
idAria="single-example-aria"
|
||||
title={<h3>{title}</h3>}
|
||||
description={
|
||||
<Fragment>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|
||||
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
|
||||
</Fragment>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.pickFieldsStep.populationField.description"
|
||||
defaultMessage="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam."
|
||||
/>
|
||||
}
|
||||
>
|
||||
<EuiFormRow label={title} describedByIds={['single-example-aria']}>
|
||||
|
|
|
@ -48,17 +48,23 @@ export const PostSaveOptions: FC<Props> = ({ jobRunner }) => {
|
|||
const started = await jobRunner.startDatafeedInRealTime(true);
|
||||
setDatafeedState(started === true ? DATAFEED_STATE.STARTED : DATAFEED_STATE.STOPPED);
|
||||
toastNotifications.addSuccess({
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.startJobInRealTimeSuccess', {
|
||||
defaultMessage: `Job {jobId} started`,
|
||||
values: { jobId: jobCreator.jobId },
|
||||
}),
|
||||
title: i18n.translate(
|
||||
'xpack.ml.newJob.wizard.summaryStep.postSaveOptions.startJobInRealTimeSuccess',
|
||||
{
|
||||
defaultMessage: `Job {jobId} started`,
|
||||
values: { jobId: jobCreator.jobId },
|
||||
}
|
||||
),
|
||||
});
|
||||
} catch (error) {
|
||||
setDatafeedState(DATAFEED_STATE.STOPPED);
|
||||
toastNotifications.addDanger({
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.startJobInRealTimeError', {
|
||||
defaultMessage: `Error starting job`,
|
||||
}),
|
||||
title: i18n.translate(
|
||||
'xpack.ml.newJob.wizard.summaryStep.postSaveOptions.startJobInRealTimeError',
|
||||
{
|
||||
defaultMessage: `Error starting job`,
|
||||
}
|
||||
),
|
||||
text: error.message,
|
||||
});
|
||||
}
|
||||
|
@ -76,7 +82,7 @@ export const PostSaveOptions: FC<Props> = ({ jobRunner }) => {
|
|||
data-test-subj="mlButtonUseFullData3"
|
||||
>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.startJobInRealTime"
|
||||
id="xpack.ml.newJob.wizard.summaryStep.postSaveOptions.startJobInRealTime"
|
||||
defaultMessage="Start job running in real time"
|
||||
/>
|
||||
</EuiButton>
|
||||
|
@ -90,7 +96,10 @@ export const PostSaveOptions: FC<Props> = ({ jobRunner }) => {
|
|||
onClick={() => setWatchFlyoutVisible(true)}
|
||||
data-test-subj="mlButtonUseFullData"
|
||||
>
|
||||
<FormattedMessage id="xpack.ml.newJob.wizard.createWatch" defaultMessage="Create watch" />
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.postSaveOptions.createWatch"
|
||||
defaultMessage="Create watch"
|
||||
/>
|
||||
</EuiButton>
|
||||
{datafeedState === DATAFEED_STATE.STARTED && watchFlyoutVisible && (
|
||||
<CreateWatchFlyout
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
*/
|
||||
|
||||
import React, { FC, useContext } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiDescriptionList } from '@elastic/eui';
|
||||
import { JobCreatorContext } from '../job_creator_context';
|
||||
import { isMultiMetricJobCreator, isPopulationJobCreator } from '../../../common/job_creator';
|
||||
|
@ -19,83 +21,140 @@ export const JobDetails: FC = () => {
|
|||
|
||||
const jobDetails: ListItems[] = [
|
||||
{
|
||||
title: 'Job ID',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.jobDetails.title', {
|
||||
defaultMessage: 'Job ID',
|
||||
}),
|
||||
description: jobCreator.jobId,
|
||||
},
|
||||
{
|
||||
title: 'Job description',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.jobDescription.title', {
|
||||
defaultMessage: 'Job description',
|
||||
}),
|
||||
description:
|
||||
jobCreator.description.length > 0 ? (
|
||||
jobCreator.description
|
||||
) : (
|
||||
<span style={{ fontStyle: 'italic' }}>No description provided</span>
|
||||
<span style={{ fontStyle: 'italic' }}>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jobDetails.jobDescription.placeholder"
|
||||
defaultMessage="No description provided"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Groups',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.groups.title', {
|
||||
defaultMessage: 'Groups',
|
||||
}),
|
||||
description:
|
||||
jobCreator.groups.length > 0 ? (
|
||||
jobCreator.groups.join(', ')
|
||||
) : (
|
||||
<span style={{ fontStyle: 'italic' }}>No groups selected</span>
|
||||
<span style={{ fontStyle: 'italic' }}>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jobDetails.groups.placeholder"
|
||||
defaultMessage="No groups selected"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
const detectorDetails: ListItems[] = [
|
||||
{
|
||||
title: 'Bucket span',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.bucketSpan.title', {
|
||||
defaultMessage: 'Bucket span',
|
||||
}),
|
||||
description: jobCreator.bucketSpan,
|
||||
},
|
||||
];
|
||||
|
||||
if (isMultiMetricJobCreator(jobCreator)) {
|
||||
detectorDetails.push({
|
||||
title: 'Split field',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.splitField.title', {
|
||||
defaultMessage: 'Split field',
|
||||
}),
|
||||
description:
|
||||
isMultiMetricJobCreator(jobCreator) && jobCreator.splitField !== null ? (
|
||||
jobCreator.splitField.name
|
||||
) : (
|
||||
<span style={{ fontStyle: 'italic' }}>No split field selected</span>
|
||||
<span style={{ fontStyle: 'italic' }}>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jobDetails.splitField.placeholder"
|
||||
defaultMessage="No split field selected"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
if (isPopulationJobCreator(jobCreator)) {
|
||||
detectorDetails.push({
|
||||
title: 'Population field',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.populationField.title', {
|
||||
defaultMessage: 'Population field',
|
||||
}),
|
||||
description:
|
||||
isPopulationJobCreator(jobCreator) && jobCreator.splitField !== null ? (
|
||||
jobCreator.splitField.name
|
||||
) : (
|
||||
<span style={{ fontStyle: jobCreator.splitField !== null ? 'inherit' : 'italic' }}>
|
||||
No population field selected
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jobDetails.populationField.placeholder"
|
||||
defaultMessage="No population field selected"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
detectorDetails.push({
|
||||
title: 'Influencers',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.influencers.title', {
|
||||
defaultMessage: 'Influencers',
|
||||
}),
|
||||
description:
|
||||
jobCreator.influencers.length > 0 ? (
|
||||
jobCreator.influencers.join(', ')
|
||||
) : (
|
||||
<span style={{ fontStyle: 'italic' }}>No split field selected</span>
|
||||
<span style={{ fontStyle: 'italic' }}>
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jobDetails.influencers.placeholder"
|
||||
defaultMessage="No influencers selected"
|
||||
/>
|
||||
</span>
|
||||
),
|
||||
});
|
||||
|
||||
const trueLabel = i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.trueLabel', {
|
||||
defaultMessage: 'True',
|
||||
});
|
||||
|
||||
const falseLabel = i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.falseLabel', {
|
||||
defaultMessage: 'False',
|
||||
});
|
||||
|
||||
const advancedDetails: ListItems[] = [
|
||||
{
|
||||
title: 'Enable model plot',
|
||||
description: jobCreator.modelPlot ? 'True' : 'False',
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.jobDetails.enableModelPlot.title', {
|
||||
defaultMessage: 'Enable model plot',
|
||||
}),
|
||||
description: jobCreator.modelPlot ? trueLabel : falseLabel,
|
||||
},
|
||||
{
|
||||
title: 'Use dedicated index',
|
||||
description: jobCreator.useDedicatedIndex ? 'True' : 'False',
|
||||
title: i18n.translate(
|
||||
'xpack.ml.newJob.wizard.summaryStep.jobDetails.useDedicatedIndex.title',
|
||||
{
|
||||
defaultMessage: 'Use dedicated index',
|
||||
}
|
||||
),
|
||||
description: jobCreator.useDedicatedIndex ? trueLabel : falseLabel,
|
||||
},
|
||||
{
|
||||
title: 'Model memory limit',
|
||||
title: i18n.translate(
|
||||
'xpack.ml.newJob.wizard.summaryStep.jobDetails.modelMemoryLimit.title',
|
||||
{
|
||||
defaultMessage: 'Model memory limit',
|
||||
}
|
||||
),
|
||||
description: jobCreator.modelMemoryLimit !== null ? jobCreator.modelMemoryLimit : '',
|
||||
},
|
||||
];
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
*/
|
||||
|
||||
import React, { FC } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import {
|
||||
EuiFlyout,
|
||||
EuiFlyoutFooter,
|
||||
|
@ -27,15 +29,28 @@ export const JsonFlyout: FC<Props> = ({ jobCreator, closeFlyout }) => {
|
|||
<EuiFlyout onClose={closeFlyout} hideCloseButton size="l">
|
||||
<EuiFlyoutBody>
|
||||
<EuiFlexGroup>
|
||||
<Contents title="Job configuration JSON" value={jobCreator.formattedJobJson} />
|
||||
<Contents title="Datafeed configuration JSON" value={jobCreator.formattedDatafeedJson} />
|
||||
<Contents
|
||||
title={i18n.translate('xpack.ml.newJob.wizard.summaryStep.jsonFlyout.job.title', {
|
||||
defaultMessage: 'Job configuration JSON',
|
||||
})}
|
||||
value={jobCreator.formattedJobJson}
|
||||
/>
|
||||
<Contents
|
||||
title={i18n.translate('xpack.ml.newJob.wizard.summaryStep.jsonFlyout.datafeed.title', {
|
||||
defaultMessage: 'Datafeed configuration JSON',
|
||||
})}
|
||||
value={jobCreator.formattedDatafeedJson}
|
||||
/>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlyoutBody>
|
||||
<EuiFlyoutFooter>
|
||||
<EuiFlexGroup justifyContent="spaceBetween">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty iconType="cross" onClick={closeFlyout} flush="left">
|
||||
Close
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.jsonFlyout.closeLink"
|
||||
defaultMessage="Close"
|
||||
/>
|
||||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
import React, { Fragment, FC, useContext, useState, useEffect } from 'react';
|
||||
import { EuiButton, EuiButtonEmpty, EuiHorizontalRule, EuiSpacer } from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { toastNotifications } from 'ui/notify';
|
||||
import { WizardNav } from '../wizard_nav';
|
||||
import { WIZARD_STEPS, StepProps } from '../step_types';
|
||||
|
@ -43,7 +44,7 @@ export const SummaryStep: FC<StepProps> = ({ setCurrentStep, isCurrentStep }) =>
|
|||
} catch (error) {
|
||||
// catch and display all job creation errors
|
||||
toastNotifications.addDanger({
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.createJobError', {
|
||||
title: i18n.translate('xpack.ml.newJob.wizard.summaryStep.createJobError', {
|
||||
defaultMessage: `Job creation error`,
|
||||
}),
|
||||
text: error.message,
|
||||
|
@ -89,7 +90,10 @@ export const SummaryStep: FC<StepProps> = ({ setCurrentStep, isCurrentStep }) =>
|
|||
isDisabled={creatingJob === true || isValid === false}
|
||||
data-test-subj="mlJobWizardButtonCreateJob"
|
||||
>
|
||||
Create job
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.createJobButton"
|
||||
defaultMessage="Create job"
|
||||
/>
|
||||
</EuiButton>
|
||||
 
|
||||
</Fragment>
|
||||
|
@ -102,7 +106,10 @@ export const SummaryStep: FC<StepProps> = ({ setCurrentStep, isCurrentStep }) =>
|
|||
isDisabled={progress > 0}
|
||||
data-test-subj="mlJobWizardButtonPreviewJobJson"
|
||||
>
|
||||
Preview job JSON
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.summaryStep.previewJsonButton"
|
||||
defaultMessage="Preview job JSON"
|
||||
/>
|
||||
</EuiButtonEmpty>
|
||||
{showJsonFlyout && (
|
||||
<JsonFlyout closeFlyout={() => setShowJsonFlyout(false)} jobCreator={jobCreator} />
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import moment from 'moment';
|
||||
import React, { Fragment, FC, useState, useEffect } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { EuiDatePickerRange, EuiDatePicker } from '@elastic/eui';
|
||||
|
||||
import { useKibanaContext } from '../../../../../contexts/kibana';
|
||||
|
@ -64,7 +65,12 @@ export const TimeRangePicker: FC<Props> = ({ setTimeRange, timeRange }) => {
|
|||
onChange={handleChangeStart}
|
||||
startDate={startMoment}
|
||||
endDate={endMoment}
|
||||
aria-label="Start date"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.startDateLabel',
|
||||
{
|
||||
defaultMessage: 'Start date',
|
||||
}
|
||||
)}
|
||||
showTimeSelect
|
||||
dateFormat={dateFormat}
|
||||
maxDate={endMoment}
|
||||
|
@ -76,7 +82,12 @@ export const TimeRangePicker: FC<Props> = ({ setTimeRange, timeRange }) => {
|
|||
onChange={handleChangeEnd}
|
||||
startDate={startMoment}
|
||||
endDate={endMoment}
|
||||
aria-label="End date"
|
||||
aria-label={i18n.translate(
|
||||
'xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.endDateLabel',
|
||||
{
|
||||
defaultMessage: 'End date',
|
||||
}
|
||||
)}
|
||||
showTimeSelect
|
||||
dateFormat={dateFormat}
|
||||
minDate={startMoment}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import React, { FC } from 'react';
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
|
||||
import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
|
||||
|
||||
|
@ -34,9 +34,10 @@ export const WizardNav: FC<StepsNavProps> = ({
|
|||
size="s"
|
||||
data-test-subj="mlJobWizardNavButtonPrevious"
|
||||
>
|
||||
{i18n.translate('xpack.ml.newJob.wizard.previousStepButton', {
|
||||
defaultMessage: 'Previous',
|
||||
})}
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.previousStepButton"
|
||||
defaultMessage="Previous"
|
||||
/>
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
)}
|
||||
|
@ -49,9 +50,7 @@ export const WizardNav: FC<StepsNavProps> = ({
|
|||
size="s"
|
||||
data-test-subj="mlJobWizardNavButtonNext"
|
||||
>
|
||||
{i18n.translate('xpack.ml.newJob.wizard.nextStepButton', {
|
||||
defaultMessage: 'Next',
|
||||
})}
|
||||
<FormattedMessage id="xpack.ml.newJob.wizard.nextStepButton" defaultMessage="Next" />
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
)}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
import React, { Fragment, FC, useReducer, useState, useEffect } from 'react';
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
|
||||
import { EuiStepsHorizontal, EuiSpacer, EuiTitle } from '@elastic/eui';
|
||||
import { WIZARD_STEPS } from '../components/step_types';
|
||||
|
@ -182,7 +183,12 @@ export const Wizard: FC<Props> = ({
|
|||
|
||||
{currentStep === WIZARD_STEPS.TIME_RANGE && (
|
||||
<Fragment>
|
||||
<Title data-test-subj="mlJobWizardStepTitleTimeRange">Time range</Title>
|
||||
<Title data-test-subj="mlJobWizardStepTitleTimeRange">
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.stepComponentWrapper.timeRangeTitle"
|
||||
defaultMessage="Time range"
|
||||
/>
|
||||
</Title>
|
||||
<TimeRangeStep
|
||||
isCurrentStep={currentStep === WIZARD_STEPS.TIME_RANGE}
|
||||
setCurrentStep={setCurrentStep}
|
||||
|
@ -191,7 +197,12 @@ export const Wizard: FC<Props> = ({
|
|||
)}
|
||||
{currentStep === WIZARD_STEPS.PICK_FIELDS && (
|
||||
<Fragment>
|
||||
<Title data-test-subj="mlJobWizardStepTitlePickFields">Pick fields</Title>
|
||||
<Title data-test-subj="mlJobWizardStepTitlePickFields">
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.stepComponentWrapper.pickFieldsTitle"
|
||||
defaultMessage="Pick fields"
|
||||
/>
|
||||
</Title>
|
||||
<PickFieldsStep
|
||||
isCurrentStep={currentStep === WIZARD_STEPS.PICK_FIELDS}
|
||||
setCurrentStep={setCurrentStep}
|
||||
|
@ -200,7 +211,12 @@ export const Wizard: FC<Props> = ({
|
|||
)}
|
||||
{currentStep === WIZARD_STEPS.JOB_DETAILS && (
|
||||
<Fragment>
|
||||
<Title data-test-subj="mlJobWizardStepTitleJobDetails">Job details</Title>
|
||||
<Title data-test-subj="mlJobWizardStepTitleJobDetails">
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.stepComponentWrapper.jobDetailsTitle"
|
||||
defaultMessage="Job details"
|
||||
/>
|
||||
</Title>
|
||||
<JobDetailsStep
|
||||
isCurrentStep={currentStep === WIZARD_STEPS.JOB_DETAILS}
|
||||
setCurrentStep={setCurrentStep}
|
||||
|
@ -213,7 +229,12 @@ export const Wizard: FC<Props> = ({
|
|||
)}
|
||||
{currentStep === WIZARD_STEPS.VALIDATION && (
|
||||
<Fragment>
|
||||
<Title data-test-subj="mlJobWizardStepTitleValidation">Validation</Title>
|
||||
<Title data-test-subj="mlJobWizardStepTitleValidation">
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.stepComponentWrapper.validationTitle"
|
||||
defaultMessage="Validation"
|
||||
/>
|
||||
</Title>
|
||||
<ValidationStep
|
||||
isCurrentStep={currentStep === WIZARD_STEPS.VALIDATION}
|
||||
setCurrentStep={setCurrentStep}
|
||||
|
@ -222,7 +243,13 @@ export const Wizard: FC<Props> = ({
|
|||
)}
|
||||
{currentStep === WIZARD_STEPS.SUMMARY && (
|
||||
<Fragment>
|
||||
<Title data-test-subj="mlJobWizardStepTitleSummary">Summary</Title>
|
||||
<Title data-test-subj="mlJobWizardStepTitleSummary">
|
||||
<FormattedMessage
|
||||
id="xpack.ml.newJob.wizard.stepComponentWrapper.summaryTitle"
|
||||
defaultMessage="Summary"
|
||||
/>
|
||||
Summary
|
||||
</Title>
|
||||
<SummaryStep
|
||||
isCurrentStep={currentStep === WIZARD_STEPS.SUMMARY}
|
||||
setCurrentStep={setCurrentStep}
|
||||
|
|
Loading…
Reference in a new issue