Skip to content

Commit 11f100b

Browse files
[Mappings editor] Add support for histogram field type (#76671)
1 parent 53c8fad commit 11f100b

File tree

18 files changed

+167
-47
lines changed

18 files changed

+167
-47
lines changed

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ export * from './other_type_name_parameter';
6969

7070
export * from './other_type_json_parameter';
7171

72+
export * from './meta_parameter';
73+
7274
export * from './ignore_above_parameter';
7375

7476
export const PARAMETER_SERIALIZERS = [relationsSerializer, dynamicSerializer];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import React, { FunctionComponent } from 'react';
8+
9+
import { i18n } from '@kbn/i18n';
10+
11+
import { documentationService } from '../../../../../services/documentation';
12+
import { UseField, JsonEditorField } from '../../../shared_imports';
13+
import { getFieldConfig } from '../../../lib';
14+
import { EditFieldFormRow } from '../fields/edit_field';
15+
16+
interface Props {
17+
defaultToggleValue: boolean;
18+
}
19+
20+
export const MetaParameter: FunctionComponent<Props> = ({ defaultToggleValue }) => (
21+
<EditFieldFormRow
22+
title={i18n.translate('xpack.idxMgmt.mappingsEditor.metaParameterTitle', {
23+
defaultMessage: 'Set metadata',
24+
})}
25+
description={i18n.translate('xpack.idxMgmt.mappingsEditor.metaParameterDescription', {
26+
defaultMessage: 'Arbitrary information about the field. Specify as JSON key-value pairs.',
27+
})}
28+
defaultToggleValue={defaultToggleValue}
29+
docLink={{
30+
text: i18n.translate('xpack.idxMgmt.mappingsEditor.metaParameterDocLinkText', {
31+
defaultMessage: 'Metadata documentation',
32+
}),
33+
href: documentationService.getMetaLink(),
34+
}}
35+
>
36+
<UseField
37+
path="meta"
38+
config={getFieldConfig('meta')}
39+
component={JsonEditorField}
40+
componentProps={{
41+
euiCodeEditorProps: {
42+
height: '300px',
43+
'aria-label': i18n.translate('xpack.idxMgmt.mappingsEditor.metaParameterAriaLabel', {
44+
defaultMessage: 'metadata field data editor',
45+
}),
46+
},
47+
}}
48+
/>
49+
</EditFieldFormRow>
50+
);

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/binary_type.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,25 @@
55
*/
66
import React from 'react';
77

8-
import { StoreParameter, DocValuesParameter } from '../../field_parameters';
8+
import { NormalizedField, ParameterName, Field as FieldType } from '../../../../types';
9+
import { getFieldConfig } from '../../../../lib';
10+
import { StoreParameter, DocValuesParameter, MetaParameter } from '../../field_parameters';
911
import { AdvancedParametersSection } from '../edit_field';
1012

11-
export const BinaryType = () => {
13+
const getDefaultToggleValue = (param: ParameterName, field: FieldType) => {
14+
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
15+
};
16+
17+
interface Props {
18+
field: NormalizedField;
19+
}
20+
21+
export const BinaryType = ({ field }: Props) => {
1222
return (
1323
<AdvancedParametersSection>
1424
<DocValuesParameter configPath="doc_values_binary" />
1525
<StoreParameter />
26+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
1627
</AdvancedParametersSection>
1728
);
1829
};

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/boolean_type.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ import {
1616
DocValuesParameter,
1717
BoostParameter,
1818
NullValueParameter,
19+
MetaParameter,
1920
} from '../../field_parameters';
2021
import { BasicParametersSection, AdvancedParametersSection } from '../edit_field';
2122

2223
const getDefaultToggleValue = (param: string, field: FieldType) => {
2324
switch (param) {
25+
case 'meta':
2426
case 'boost': {
2527
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
2628
}
@@ -90,6 +92,8 @@ export const BooleanType = ({ field }: Props) => {
9092

9193
<StoreParameter />
9294

95+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
96+
9397
<BoostParameter defaultToggleValue={getDefaultToggleValue('boost', field.source)} />
9498
</AdvancedParametersSection>
9599
</>

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/completion_type.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import { i18n } from '@kbn/i18n';
1010
import { NormalizedField, Field as FieldType } from '../../../../types';
1111
import { getFieldConfig } from '../../../../lib';
1212
import { UseField, Field } from '../../../../shared_imports';
13-
import { AnalyzersParameter } from '../../field_parameters';
13+
import { AnalyzersParameter, MetaParameter } from '../../field_parameters';
1414
import { EditFieldFormRow, AdvancedParametersSection } from '../edit_field';
1515

1616
const getDefaultToggleValue = (param: string, field: FieldType) => {
1717
switch (param) {
18+
case 'meta':
1819
case 'max_input_length': {
1920
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
2021
}
@@ -88,6 +89,8 @@ export const CompletionType = ({ field }: Props) => {
8889
)}
8990
formFieldPath="preserve_position_increments"
9091
/>
92+
93+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
9194
</AdvancedParametersSection>
9295
);
9396
};

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/constant_keyword_type.tsx

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,20 @@
66
import React, { FunctionComponent } from 'react';
77
import { i18n } from '@kbn/i18n';
88

9-
import { documentationService } from '../../../../../../services/documentation';
10-
import { UseField, Field, JsonEditorField } from '../../../../shared_imports';
9+
import { UseField, Field } from '../../../../shared_imports';
1110
import { getFieldConfig } from '../../../../lib';
12-
import { NormalizedField } from '../../../../types';
11+
import { NormalizedField, Field as FieldType, ParameterName } from '../../../../types';
12+
import { MetaParameter } from '../../field_parameters';
1313
import { AdvancedParametersSection, EditFieldFormRow, BasicParametersSection } from '../edit_field';
1414

1515
interface Props {
1616
field: NormalizedField;
1717
}
1818

19+
const getDefaultToggleValue = (param: ParameterName, field: FieldType) => {
20+
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
21+
};
22+
1923
export const ConstantKeywordType: FunctionComponent<Props> = ({ field }) => {
2024
return (
2125
<>
@@ -32,50 +36,14 @@ export const ConstantKeywordType: FunctionComponent<Props> = ({ field }) => {
3236
'The value of this field for all documents in the index. If not specified, defaults to the value specified in the first document indexed.',
3337
}
3438
)}
35-
defaultToggleValue={field.source?.value !== undefined}
39+
defaultToggleValue={getDefaultToggleValue('value', field.source)}
3640
>
3741
<UseField path="value" config={getFieldConfig('value')} component={Field} />
3842
</EditFieldFormRow>
3943
</BasicParametersSection>
4044

4145
<AdvancedParametersSection>
42-
{/* Meta field */}
43-
<EditFieldFormRow
44-
title={i18n.translate('xpack.idxMgmt.mappingsEditor.constantKeyword.metaFieldTitle', {
45-
defaultMessage: 'Set metadata',
46-
})}
47-
description={i18n.translate(
48-
'xpack.idxMgmt.mappingsEditor.constantKeyword.metaFieldDescription',
49-
{
50-
defaultMessage:
51-
'Arbitrary information about the field. Specify as JSON key-value pairs.',
52-
}
53-
)}
54-
defaultToggleValue={field.source?.meta !== undefined}
55-
docLink={{
56-
text: i18n.translate('xpack.idxMgmt.mappingsEditor.constantKeyword.metaDocLinkText', {
57-
defaultMessage: 'Metadata documentation',
58-
}),
59-
href: documentationService.getMetaLink(),
60-
}}
61-
>
62-
<UseField
63-
path="meta"
64-
config={getFieldConfig('meta')}
65-
component={JsonEditorField}
66-
componentProps={{
67-
euiCodeEditorProps: {
68-
height: '300px',
69-
'aria-label': i18n.translate(
70-
'xpack.idxMgmt.mappingsEditor.constantKeyword.metaFieldAriaLabel',
71-
{
72-
defaultMessage: 'metadata field data editor',
73-
}
74-
),
75-
},
76-
}}
77-
/>
78-
</EditFieldFormRow>
46+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
7947
</AdvancedParametersSection>
8048
</>
8149
);

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/date_type.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ import {
1919
IgnoreMalformedParameter,
2020
FormatParameter,
2121
LocaleParameter,
22+
MetaParameter,
2223
} from '../../field_parameters';
2324
import { BasicParametersSection, AdvancedParametersSection } from '../edit_field';
2425

2526
const getDefaultToggleValue = (param: string, field: FieldType) => {
2627
switch (param) {
2728
case 'locale':
2829
case 'format':
30+
case 'meta':
2931
case 'boost': {
3032
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
3133
}
@@ -73,6 +75,8 @@ export const DateType = ({ field }: Props) => {
7375

7476
<StoreParameter />
7577

78+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
79+
7680
<BoostParameter defaultToggleValue={getDefaultToggleValue('boost', field.source)} />
7781
</AdvancedParametersSection>
7882
</>

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/flattened_type.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
NullValueParameter,
1919
SimilarityParameter,
2020
SplitQueriesOnWhitespaceParameter,
21+
MetaParameter,
2122
IgnoreAboveParameter,
2223
} from '../../field_parameters';
2324
import { BasicParametersSection, EditFieldFormRow, AdvancedParametersSection } from '../edit_field';
@@ -30,6 +31,7 @@ const getDefaultToggleValue = (param: string, field: FieldType) => {
3031
switch (param) {
3132
case 'boost':
3233
case 'ignore_above':
34+
case 'meta':
3335
case 'similarity': {
3436
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
3537
}
@@ -83,6 +85,8 @@ export const FlattenedType = React.memo(({ field }: Props) => {
8385
defaultToggleValue={getDefaultToggleValue('null_value', field.source)}
8486
/>
8587

88+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
89+
8690
<BoostParameter defaultToggleValue={getDefaultToggleValue('boost', field.source)} />
8791
</AdvancedParametersSection>
8892
</>

x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/geo_point_type.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@ import {
1414
IgnoreMalformedParameter,
1515
NullValueParameter,
1616
IgnoreZValueParameter,
17+
MetaParameter,
1718
} from '../../field_parameters';
1819
import { BasicParametersSection, AdvancedParametersSection } from '../edit_field';
1920

2021
const getDefaultToggleValue = (param: string, field: FieldType) => {
2122
switch (param) {
23+
case 'meta':
24+
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
2225
case 'null_value': {
2326
return field.null_value !== undefined;
2427
}
@@ -65,6 +68,8 @@ export const GeoPointType = ({ field }: Props) => {
6568
config={getFieldConfig('null_value_geo_point')}
6669
/>
6770
</NullValueParameter>
71+
72+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
6873
</AdvancedParametersSection>
6974
</>
7075
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
import React from 'react';
7+
8+
import { NormalizedField, Field as FieldType, ParameterName } from '../../../../types';
9+
import { getFieldConfig } from '../../../../lib';
10+
import { IgnoreMalformedParameter, MetaParameter } from '../../field_parameters';
11+
import { AdvancedParametersSection } from '../edit_field';
12+
13+
interface Props {
14+
field: NormalizedField;
15+
}
16+
17+
const getDefaultToggleValue = (param: ParameterName, field: FieldType) => {
18+
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
19+
};
20+
21+
export const HistogramType = ({ field }: Props) => {
22+
return (
23+
<AdvancedParametersSection>
24+
<IgnoreMalformedParameter />
25+
26+
<MetaParameter defaultToggleValue={getDefaultToggleValue('meta', field.source)} />
27+
</AdvancedParametersSection>
28+
);
29+
};

0 commit comments

Comments
 (0)