@@ -22,10 +22,9 @@ import {
22
22
PROCESSOR_CONTEXT ,
23
23
WorkflowConfig ,
24
24
JSONPATH_ROOT_SELECTOR ,
25
- ModelInputFormField ,
26
- ModelOutputFormField ,
27
25
ML_INFERENCE_DOCS_LINK ,
28
26
WorkflowFormValues ,
27
+ ModelInterface ,
29
28
} from '../../../../../common' ;
30
29
import { MapArrayField , ModelField } from '../input_fields' ;
31
30
import { isEmpty } from 'lodash' ;
@@ -108,9 +107,9 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
108
107
> ( false ) ;
109
108
110
109
// model interface state
111
- const [ hasModelInterface , setHasModelInterface ] = useState < boolean > ( true ) ;
112
- const [ inputFields , setInputFields ] = useState < ModelInputFormField [ ] > ( [ ] ) ;
113
- const [ outputFields , setOutputFields ] = useState < ModelOutputFormField [ ] > ( [ ] ) ;
110
+ const [ modelInterface , setModelInterface ] = useState <
111
+ ModelInterface | undefined
112
+ > ( undefined ) ;
114
113
115
114
// Hook to listen when the selected model has changed. We do a few checks here:
116
115
// 1: update model interface states
@@ -136,15 +135,7 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
136
135
// reusable function to update interface states based on the model ID
137
136
function updateModelInterfaceStates ( modelId : string ) {
138
137
const newSelectedModel = models [ modelId ] ;
139
- if ( newSelectedModel ?. interface !== undefined ) {
140
- setInputFields ( parseModelInputs ( newSelectedModel . interface ) ) ;
141
- setOutputFields ( parseModelOutputs ( newSelectedModel . interface ) ) ;
142
- setHasModelInterface ( true ) ;
143
- } else {
144
- setInputFields ( [ ] ) ;
145
- setOutputFields ( [ ] ) ;
146
- setHasModelInterface ( false ) ;
147
- }
138
+ setModelInterface ( newSelectedModel ?. interface ) ;
148
139
}
149
140
150
141
return (
@@ -156,7 +147,7 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
156
147
context = { props . context }
157
148
inputMapField = { inputMapField }
158
149
inputMapFieldPath = { inputMapFieldPath }
159
- inputFields = { inputFields }
150
+ modelInterface = { modelInterface }
160
151
onClose = { ( ) => setIsInputTransformModalOpen ( false ) }
161
152
/>
162
153
) }
@@ -167,14 +158,14 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
167
158
context = { props . context }
168
159
outputMapField = { outputMapField }
169
160
outputMapFieldPath = { outputMapFieldPath }
170
- outputFields = { outputFields }
161
+ modelInterface = { modelInterface }
171
162
onClose = { ( ) => setIsOutputTransformModalOpen ( false ) }
172
163
/>
173
164
) }
174
165
< ModelField
175
166
field = { modelField }
176
167
fieldPath = { modelFieldPath }
177
- hasModelInterface = { hasModelInterface }
168
+ hasModelInterface = { modelInterface !== undefined }
178
169
onModelChange = { onModelChange }
179
170
/>
180
171
{ ! isEmpty ( getIn ( values , modelFieldPath ) ?. id ) && (
@@ -226,7 +217,7 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
226
217
? 'Query field'
227
218
: 'Document field'
228
219
}
229
- keyOptions = { inputFields }
220
+ keyOptions = { parseModelInputs ( modelInterface ) }
230
221
/>
231
222
< EuiSpacer size = "l" />
232
223
< EuiFlexGroup direction = "row" >
@@ -274,7 +265,7 @@ export function MLProcessorInputs(props: MLProcessorInputsProps) {
274
265
: 'Document field'
275
266
}
276
267
valuePlaceholder = "Model output field"
277
- valueOptions = { outputFields }
268
+ valueOptions = { parseModelOutputs ( modelInterface ) }
278
269
/>
279
270
< EuiSpacer size = "s" />
280
271
{ inputMapValue . length !== outputMapValue . length &&
0 commit comments