Skip to content

Commit

Permalink
Refactor to use new shared target_field component, and fix JSON seria…
Browse files Browse the repository at this point in the history
…lizer bug
  • Loading branch information
jloleysens committed Aug 14, 2020
1 parent daed879 commit 0daae40
Show file tree
Hide file tree
Showing 12 changed files with 104 additions and 171 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,9 @@
import React, { FunctionComponent } from 'react';
import { i18n } from '@kbn/i18n';

import { FIELD_TYPES, UseField, Field } from '../../../../../../shared_imports';

import { FieldsConfig } from './shared';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { FieldNameField } from './common_fields/field_name_field';

const fieldsConfig: FieldsConfig = {
target_field: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.bytesForm.targetFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.bytesForm.targetFieldHelpText', {
defaultMessage: 'The field to assign the converted value to',
}),
},
};
import { TargetField } from './common_fields/target_field';

export const Bytes: FunctionComponent = () => {
return (
Expand All @@ -35,7 +21,7 @@ export const Bytes: FunctionComponent = () => {
)}
/>

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField />

<IgnoreMissingField />
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ import {
FIELD_TYPES,
fieldValidators,
UseField,
Field,
SelectField,
NumericField,
} from '../../../../../../shared_imports';

import { FieldsConfig } from './shared';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { FieldNameField } from './common_fields/field_name_field';
import { TargetField } from './common_fields/target_field';

const { emptyField } = fieldValidators;

Expand Down Expand Up @@ -60,6 +60,7 @@ const fieldsConfig: FieldsConfig = {
},
shape_type: {
type: FIELD_TYPES.SELECT,
serializer: String,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.circleForm.shapeTypeFieldLabel', {
defaultMessage: 'Shape type',
}),
Expand All @@ -77,20 +78,6 @@ const fieldsConfig: FieldsConfig = {
},
],
},

/* Optional fields config */
target_field: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.circleForm.targetFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.circleForm.targetFieldHelpText',
{
defaultMessage: 'By default field is updated in-place.',
}
),
},
};

export const Circle: FunctionComponent = () => {
Expand Down Expand Up @@ -135,7 +122,7 @@ export const Circle: FunctionComponent = () => {
path="fields.shape_type"
/>

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField />

<IgnoreMissingField />
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ export const TargetField: FunctionComponent<Props> = (props) => {
<UseField
config={{
...fieldsConfig.target_field,
helpText: props.helpText ?? fieldsConfig.target_field.helpText,
...props,
}}
component={Field}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import {
FIELD_TYPES,
fieldValidators,
UseField,
Field,
SelectField,
} from '../../../../../../shared_imports';

import { FieldsConfig } from './shared';
import { FieldNameField } from './common_fields/field_name_field';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { TargetField } from './common_fields/target_field';

const { emptyField } = fieldValidators;

Expand All @@ -42,19 +42,6 @@ const fieldsConfig: FieldsConfig = {
},
],
},
/* Optional fields config */
target_field: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.convertForm.targetFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.convertForm.targetFieldHelpText',
{
defaultMessage: 'The field to assign the converted value to.',
}
),
},
};

export const Convert: FunctionComponent = () => {
Expand Down Expand Up @@ -128,7 +115,14 @@ export const Convert: FunctionComponent = () => {
path="fields.type"
/>

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.convertForm.targetFieldHelpText',
{
defaultMessage: 'The field to assign the converted value to.',
}
)}
/>

<IgnoreMissingField />
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {

import { FieldsConfig, to } from './shared';
import { FieldNameField } from './common_fields/field_name_field';
import { TargetField } from './common_fields/target_field';

const { minLengthField } = fieldValidators;

Expand Down Expand Up @@ -49,22 +50,6 @@ const fieldsConfig: FieldsConfig = {
],
},
/* Optional fields config */
target_field: {
type: FIELD_TYPES.TEXT,
serializer: (v) => (v ? undefined : v),
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.dateForm.targetFieldFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateForm.targetFieldHelpText"
defaultMessage="The field that will hold the parsed date. Default field is {defaultField}."
values={{
defaultField: <EuiCode inline>{'@timestamp'}</EuiCode>,
}}
/>
),
},
timezone: {
type: FIELD_TYPES.TEXT,
serializer: (v) => (v ? v : undefined),
Expand Down Expand Up @@ -110,7 +95,17 @@ export const DateProcessor: FunctionComponent = () => {

<UseField config={fieldsConfig.formats} component={ComboBoxField} path="fields.formats" />

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField
helpText={
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateForm.targetFieldHelpText"
defaultMessage="The field that will hold the parsed date. Default field is {defaultField}."
values={{
defaultField: <EuiCode inline>{'@timestamp'}</EuiCode>,
}}
/>
}
/>

<UseField config={fieldsConfig.timezone} component={Field} path="fields.timezone" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,13 @@ import {
ToggleField,
NumericField,
SelectField,
ValidationConfig,
} from '../../../../../../shared_imports';

import { FieldNameField } from './common_fields/field_name_field';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { TargetField } from './common_fields/target_field';

import { FieldsConfig, from, to } from './shared';

const { emptyField, numberSmallerThanField, numberGreaterThanField } = fieldValidators;
Expand All @@ -41,6 +44,14 @@ const maxMatchesValidators = {
}),
};

const targetFieldValidator: ValidationConfig = {
validator: emptyField(
i18n.translate('xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldRequiredError', {
defaultMessage: 'A target field value is required.',
})
),
};

const fieldsConfig: FieldsConfig = {
/* Required fields config */
policy_name: {
Expand All @@ -65,31 +76,6 @@ const fieldsConfig: FieldsConfig = {
],
},

target_field: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldLabel', {
defaultMessage: 'Target field',
}),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldHelpText',
{
defaultMessage: 'Field added to incoming documents to contain enrich data.',
}
),
validations: [
{
validator: emptyField(
i18n.translate(
'xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldRequiredError',
{
defaultMessage: 'A target field value is required.',
}
)
),
},
],
},

/* Optional fields config */
override: {
type: FIELD_TYPES.TOGGLE,
Expand Down Expand Up @@ -173,7 +159,18 @@ export const Enrich: FunctionComponent = () => {

<UseField config={fieldsConfig.policy_name} component={Field} path="fields.policy_name" />

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField
label={i18n.translate('xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldLabel', {
defaultMessage: 'Target field',
})}
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.enrichForm.targetFieldHelpText',
{
defaultMessage: 'Field added to incoming documents to contain enrich data.',
}
)}
validations={[targetFieldValidator]}
/>

<UseField config={fieldsConfig.override} component={ToggleField} path="fields.override" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,10 @@ import {
import { FieldNameField } from './common_fields/field_name_field';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { FieldsConfig, from, to } from './shared';
import { TargetField } from './common_fields/target_field';

const fieldsConfig: FieldsConfig = {
/* Optional field config */
target_field: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.geoIPForm.targetFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.geoIPForm.targetFieldHelpText', {
defaultMessage:
'The field that will hold the geographical information looked up from the Maxmind database.',
}),
},
database_file: {
type: FIELD_TYPES.TEXT,
serializer: (v) => (v === 'GeoLite2-City.mmdb' ? undefined : v),
Expand Down Expand Up @@ -84,7 +75,15 @@ export const GeoIP: FunctionComponent = () => {
)}
/>

<UseField component={Field} config={fieldsConfig.target_field} path="fields.target_field" />
<TargetField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.geoIPForm.targetFieldHelpText',
{
defaultMessage:
'The field that will hold the geographical information looked up from the Maxmind database.',
}
)}
/>

<UseField component={Field} config={fieldsConfig.database_file} path="fields.database_file" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { TextEditor } from '../field_components';
import { FieldsConfig } from './shared';
import { FieldNameField } from './common_fields/field_name_field';
import { IgnoreMissingField } from './common_fields/ignore_missing_field';
import { TargetField } from './common_fields/target_field';

const { emptyField } = fieldValidators;

Expand Down Expand Up @@ -58,18 +59,6 @@ const fieldsConfig: FieldsConfig = {
},
],
},

/* Optional fields config */
target_field: {
type: FIELD_TYPES.TEXT,
deserializer: String,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.gsubForm.targetFieldLabel', {
defaultMessage: 'Target field (optional)',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.gsubForm.targetFieldHelpText', {
defaultMessage: 'The field to assign the converted value to.',
}),
},
};

export const Gsub: FunctionComponent = () => {
Expand All @@ -96,7 +85,14 @@ export const Gsub: FunctionComponent = () => {

<UseField config={fieldsConfig.replacement} component={Field} path="fields.replacement" />

<UseField config={fieldsConfig.target_field} component={Field} path="fields.target_field" />
<TargetField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.gsubForm.targetFieldHelpText',
{
defaultMessage: 'The field to assign the converted value to.',
}
)}
/>

<IgnoreMissingField />
</>
Expand Down
Loading

0 comments on commit 0daae40

Please sign in to comment.