@@ -21,6 +21,7 @@ import {
21
21
EuiButton ,
22
22
EuiIcon ,
23
23
EuiCard ,
24
+ EuiSelectableOption ,
24
25
} from '@elastic/eui' ;
25
26
import React , { useEffect , useState } from 'react' ;
26
27
@@ -52,7 +53,7 @@ interface CollectAndShipDataProps {
52
53
selectedDataSourceLabel : string ;
53
54
}
54
55
55
- interface CollectorOption {
56
+ export interface CollectorOption {
56
57
label : string ;
57
58
value : string ;
58
59
}
@@ -70,6 +71,21 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
70
71
const [ collectorOptions , setCollectorOptions ] = useState < CollectorOption [ ] > ( [ ] ) ;
71
72
const [ patternsContent , setPatternsContent ] = useState < any [ ] > ( [ ] ) ;
72
73
74
+ const getTelemetryOption = ( collectionMethodOtel : string ) => {
75
+ switch ( collectionMethodOtel ) {
76
+ case cardTwo :
77
+ return { label : 'Open Telemetry' , value : 'otelMetrics' } ;
78
+ case cardThree :
79
+ return { label : 'Open Telemetry' , value : 'otelTraces' } ;
80
+ default :
81
+ return { label : 'Open Telemetry' , value : 'otelLogs' } ;
82
+ }
83
+ } ;
84
+
85
+ const [ selectedIntegration , setSelectedIntegration ] = useState <
86
+ Array < EuiSelectableOption < CollectorOption > >
87
+ > ( [ getTelemetryOption ( cardOne ) ] ) ;
88
+
73
89
const technologyJsonMap : Record < string , any > = {
74
90
otelLogs : otelJsonLogs ,
75
91
otelMetrics : otelJsonMetrics ,
@@ -122,13 +138,14 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
122
138
} ;
123
139
} , [ specificMethod ] ) ;
124
140
125
- const handleSpecificMethodChange = ( newOption : any ) => {
141
+ const handleSpecificMethodChange = ( newOption : Array < EuiSelectableOption < CollectorOption > > ) => {
126
142
const selectedOptionValue = newOption [ 0 ] ?. value ;
127
143
128
144
if ( selectedOptionValue === specificMethod ) {
129
145
return ;
130
146
}
131
147
148
+ setSelectedIntegration ( newOption ) ;
132
149
setSpecificMethod ( selectedOptionValue ) ;
133
150
setSelectedWorkflow ( '' ) ;
134
151
setGettingStarted ( null ) ;
@@ -138,7 +155,8 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
138
155
// Auto-select first collector if nothing is selected and a collection method is set
139
156
useEffect ( ( ) => {
140
157
if ( collectorOptions . length > 0 && ! specificMethod && collectionMethod ) {
141
- handleSpecificMethodChange ( [ { value : collectorOptions [ 0 ] . value } ] ) ;
158
+ const telemetryOption = getTelemetryOption ( collectionMethod ) ;
159
+ handleSpecificMethodChange ( [ { ...telemetryOption } ] ) ;
142
160
}
143
161
} , [ collectorOptions , specificMethod , collectionMethod ] ) ;
144
162
@@ -151,17 +169,19 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
151
169
152
170
if ( value === cardOne ) {
153
171
setCollectorOptions ( [
154
- { label : 'Open Telemetry' , value : 'otelLogs' } ,
172
+ getTelemetryOption ( cardOne ) ,
155
173
{ label : 'Nginx' , value : 'nginx' } ,
156
174
{ label : 'Java' , value : 'java' } ,
157
175
{ label : 'Python' , value : 'python' } ,
158
176
{ label : 'Golang' , value : 'golang' } ,
159
177
] ) ;
160
178
} else if ( value === cardTwo ) {
161
- setCollectorOptions ( [ { label : 'Open Telemetry' , value : 'otelMetrics' } ] ) ;
179
+ setCollectorOptions ( [ getTelemetryOption ( cardTwo ) ] ) ;
162
180
} else if ( value === cardThree ) {
163
- setCollectorOptions ( [ { label : 'Open Telemetry' , value : 'otelTraces' } ] ) ;
181
+ setCollectorOptions ( [ getTelemetryOption ( cardThree ) ] ) ;
164
182
}
183
+
184
+ setSelectedIntegration ( [ getTelemetryOption ( value ) ] ) ;
165
185
} ;
166
186
167
187
const renderSpecificMethodDropdown = ( ) => {
@@ -200,7 +220,9 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
200
220
singleSelection = { { asPlainText : true } }
201
221
options = { optionsWithIcons }
202
222
selectedOptions = { selectedOption ? [ selectedOption ] : [ ] }
203
- onChange = { ( newOptions ) => handleSpecificMethodChange ( newOptions ) }
223
+ onChange = { ( newOptions ) =>
224
+ handleSpecificMethodChange ( newOptions as Array < EuiSelectableOption < CollectorOption > > )
225
+ }
204
226
renderOption = { ( option ) => (
205
227
< div style = { { display : 'flex' , alignItems : 'center' } } >
206
228
{ option . prepend }
@@ -347,7 +369,15 @@ export const CollectAndShipData: React.FC<CollectAndShipDataProps> = ({
347
369
</ EuiListGroup >
348
370
< EuiButton
349
371
onClick = { async ( ) => {
350
- await UploadAssets ( specificMethod , selectedDataSourceId , selectedDataSourceLabel ) ;
372
+ await UploadAssets (
373
+ specificMethod ,
374
+ selectedDataSourceId ,
375
+ selectedDataSourceLabel ,
376
+ technologyJsonMap [ specificMethod ] ?. [ 'getting-started' ] ?. schema ||
377
+ technologyJsonMap [ specificMethod ] ?. schema ||
378
+ [ ] ,
379
+ selectedIntegration
380
+ ) ;
351
381
} }
352
382
fill
353
383
>
0 commit comments