Skip to content

Commit

Permalink
Revert "integrate autocomplete with other plugins"
Browse files Browse the repository at this point in the history
This reverts commit 0aae95f.
  • Loading branch information
alisonelizabeth committed Nov 12, 2020
1 parent 0aae95f commit 9b15fdf
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 97 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,76 +4,19 @@
* you may not use this file except in compliance with the Elastic License.
*/

import React, { useCallback, useMemo, useState, useEffect } from 'react';
import React from 'react';
import { i18n } from '@kbn/i18n';
import { PainlessLang, PainlessContext } from '@kbn/monaco';
import { EuiFormRow, EuiDescribedFormGroup, EuiComboBoxOptionOption } from '@elastic/eui';
import { EuiFormRow, EuiDescribedFormGroup } from '@elastic/eui';

import { CodeEditor, UseField, useFormData } from '../../../shared_imports';
import { CodeEditor, UseField } from '../../../shared_imports';
import { getFieldConfig } from '../../../lib';
import { EditFieldFormRow } from '../fields/edit_field';
import { RuntimeType } from '../../../types';
import { useMappingsState } from '../../../mappings_state_context';

interface Props {
stack?: boolean;
}
const mapRuntimeTypeToContext = (runtimeType: RuntimeType): PainlessContext => {
switch (runtimeType) {
case 'keyword':
return 'string_script_field_script_field';
case 'long':
return 'long_script_field_script_field';
case 'double':
return 'double_script_field_script_field';
case 'date':
return 'date_script_field';
case 'ip':
return 'ip_script_field_script_field';
case 'boolean':
return 'boolean_script_field_script_field';
default:
return 'painless_test';
}
};

export const PainlessScriptParameter = ({ stack }: Props) => {
const [{ runtime_type: runtimeType }] = useFormData<{
runtime_type: EuiComboBoxOptionOption[];
}>({
watch: 'runtime_type',
});

const [painlessContext, setPainlessContext] = useState<PainlessContext>('painless_test');

useEffect(() => {
if (runtimeType?.length) {
setPainlessContext(mapRuntimeTypeToContext(runtimeType[0]!.value as RuntimeType));
}
}, [setPainlessContext, runtimeType]);

const {
fields: { byId, rootLevelFields },
} = useMappingsState();

const getField = useCallback(
(fieldId: string) => ({
name: byId[fieldId].source.name,
type: byId[fieldId].source.type,
}),
[byId]
);

const fieldsToAutocomplete = useMemo(
() => rootLevelFields.map(getField).filter((field) => field.type !== 'runtime'),
[rootLevelFields, getField]
);

const suggestionProvider = PainlessLang.getSuggestionProvider(
painlessContext,
fieldsToAutocomplete
);

return (
<UseField path="script.source" config={getFieldConfig('script')}>
{(scriptField) => {
Expand All @@ -83,13 +26,12 @@ export const PainlessScriptParameter = ({ stack }: Props) => {
const field = (
<EuiFormRow label={scriptField.label} error={error} isInvalid={isInvalid} fullWidth>
<CodeEditor
languageId={PainlessLang.ID}
languageId="painless"
// 99% width allows the editor to resize horizontally. 100% prevents it from resizing.
width="99%"
height="400px"
value={scriptField.value as string}
onChange={scriptField.setValue}
suggestionProvider={suggestionProvider}
options={{
fontSize: 12,
minimap: {
Expand All @@ -99,9 +41,6 @@ export const PainlessScriptParameter = ({ stack }: Props) => {
wordWrap: 'on',
wrappingIndent: 'indent',
automaticLayout: true,
suggest: {
snippetsPreventQuickSuggestions: false,
},
}}
/>
</EuiFormRow>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export {
ArrayItem,
useForm,
useFormContext,
useFormData,
UseMultiFields,
VALIDATION_TYPES,
ValidationFunc,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

import React, { FunctionComponent } from 'react';
import { i18n } from '@kbn/i18n';
import { PainlessLang } from '@kbn/monaco';

import {
FieldConfig,
Expand Down Expand Up @@ -57,24 +56,18 @@ const tagConfig: FieldConfig = {
};

export const CommonProcessorFields: FunctionComponent = () => {
const suggestionProvider = PainlessLang.getSuggestionProvider('processor_conditional');

return (
<section>
<UseField
config={ifConfig}
component={TextEditor}
componentProps={{
editorProps: {
languageId: PainlessLang.ID,
suggestionProvider,
languageId: 'painless',
height: EDITOR_PX_HEIGHT.extraSmall,
options: {
lineNumbers: 'off',
minimap: { enabled: false },
suggest: {
snippetsPreventQuickSuggestions: false,
},
},
},
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,12 @@
* you may not use this file except in compliance with the Elastic License.
*/

import React, { useState, useEffect } from 'react';
import React, { useState } from 'react';
import { i18n } from '@kbn/i18n';
import { PainlessLang, PainlessContext } from '@kbn/monaco';
import { FormattedMessage } from '@kbn/i18n/react';
import { EuiCode, EuiSwitch, EuiFormRow } from '@elastic/eui';

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

import { XJsonEditor, TextEditor } from '../field_components';

Expand Down Expand Up @@ -129,17 +122,6 @@ const fieldsConfig: FieldsConfig = {

export const Script: FormFieldsComponent = ({ initialFieldValues }) => {
const [showId, setShowId] = useState(() => !!initialFieldValues?.id);
const [scriptLanguage, setScriptLanguage] = useState<string>('plaintext');

const [{ fields }] = useFormData();

const suggestionProvider = PainlessLang.getSuggestionProvider('processor_conditional');

useEffect(() => {
const isPainlessLang = fields?.lang === 'painless' || fields?.lang === '';
setScriptLanguage(isPainlessLang ? PainlessLang.ID : 'plaintext');
}, [fields?.lang]);

return (
<>
<EuiFormRow>
Expand All @@ -165,9 +147,6 @@ export const Script: FormFieldsComponent = ({ initialFieldValues }) => {
component={TextEditor}
componentProps={{
editorProps: {
languageId: scriptLanguage,
suggestionProvider:
scriptLanguage === PainlessLang.ID ? suggestionProvider : undefined,
height: EDITOR_PX_HEIGHT.medium,
'aria-label': i18n.translate(
'xpack.ingestPipelines.pipelineEditor.scriptForm.sourceFieldAriaLabel',
Expand Down

0 comments on commit 9b15fdf

Please sign in to comment.