@@ -23,6 +23,11 @@ const recommendationsContent = _content as IRecommendationsStatic
2323const utmSource = 'redisinsight'
2424const utmMedium = 'recommendation'
2525
26+ interface ITelemetry {
27+ telemetryName : string
28+ onClickLink ?: ( ) => void
29+ }
30+
2631const badgesContent = [
2732 { id : 'code_changes' , icon : < CodeIcon className = { styles . badgeIcon } /> , name : 'Code Changes' } ,
2833 { id : 'configuration_changes' , icon : < ConfigurationIcon className = { styles . badgeIcon } /> , name : 'Configuration Changes' } ,
@@ -87,7 +92,7 @@ const addUtmToLink = (href: string, telemetryName: string): string => {
8792const renderContentElement = (
8893 { type, value : jsonValue , parameter } : IRecommendationContent ,
8994 params : any ,
90- telemetryName : string ,
95+ telemetry : ITelemetry ,
9196 insights : boolean ,
9297 idx : number
9398) => {
@@ -96,8 +101,8 @@ const renderContentElement = (
96101 case 'paragraph' :
97102 return (
98103 < EuiTextColor
99- data-testid = { `paragraph-${ telemetryName } -${ idx } ` }
100- key = { `${ telemetryName } -${ idx } ` }
104+ data-testid = { `paragraph-${ telemetry . telemetryName } -${ idx } ` }
105+ key = { `${ telemetry . telemetryName } -${ idx } ` }
101106 component = "div"
102107 className = { cx ( styles . text , { [ styles . insights ] : insights } ) }
103108 color = "subdued"
@@ -108,9 +113,9 @@ const renderContentElement = (
108113 case 'code' :
109114 return (
110115 < EuiTextColor
111- data-testid = { `code-${ telemetryName } -${ idx } ` }
116+ data-testid = { `code-${ telemetry . telemetryName } -${ idx } ` }
112117 className = { cx ( styles . code , { [ styles . insights ] : insights } ) }
113- key = { `${ telemetryName } -${ idx } ` }
118+ key = { `${ telemetry . telemetryName } -${ idx } ` }
114119 color = "subdued"
115120 >
116121 < code className = { cx ( styles . span , styles . text ) } >
@@ -121,8 +126,8 @@ const renderContentElement = (
121126 case 'span' :
122127 return (
123128 < EuiTextColor
124- data-testid = { `span-${ telemetryName } -${ idx } ` }
125- key = { `${ telemetryName } -${ idx } ` }
129+ data-testid = { `span-${ telemetry . telemetryName } -${ idx } ` }
130+ key = { `${ telemetry . telemetryName } -${ idx } ` }
126131 color = "subdued"
127132 className = { cx ( styles . span , styles . text , { [ styles . insights ] : ! ! insights } ) }
128133 >
@@ -132,23 +137,24 @@ const renderContentElement = (
132137 case 'link' :
133138 return (
134139 < EuiLink
135- key = { `${ telemetryName } -${ idx } ` }
140+ key = { `${ telemetry . telemetryName } -${ idx } ` }
136141 external = { false }
137- data-testid = { `link-${ telemetryName } -${ idx } ` }
142+ data-testid = { `link-${ telemetry . telemetryName } -${ idx } ` }
138143 target = "_blank"
139- href = { addUtmToLink ( value . href , telemetryName ) }
144+ href = { addUtmToLink ( value . href , telemetry . telemetryName ) }
145+ onClick = { ( ) => telemetry . onClickLink ?.( ) }
140146 >
141147 { value . name }
142148 </ EuiLink >
143149 )
144150 case 'code-link' :
145151 return (
146152 < EuiLink
147- key = { `${ telemetryName } -${ idx } ` }
153+ key = { `${ telemetry . telemetryName } -${ idx } ` }
148154 external = { false }
149- data-testid = { `code-link-${ telemetryName } -${ idx } ` }
155+ data-testid = { `code-link-${ telemetry . telemetryName } -${ idx } ` }
150156 target = "_blank"
151- href = { addUtmToLink ( value . href , telemetryName ) }
157+ href = { addUtmToLink ( value . href , telemetry . telemetryName ) }
152158 >
153159 < EuiTextColor
154160 className = { cx ( styles . code , { [ styles . insights ] : insights } ) }
@@ -163,21 +169,25 @@ const renderContentElement = (
163169 case 'spacer' :
164170 return (
165171 < EuiSpacer
166- data-testid = { `spacer-${ telemetryName } -${ idx } ` }
167- key = { `${ telemetryName } -${ idx } ` }
172+ data-testid = { `spacer-${ telemetry . telemetryName } -${ idx } ` }
173+ key = { `${ telemetry . telemetryName } -${ idx } ` }
168174 size = { value as SpacerSize }
169175 />
170176 )
171177 case 'list' :
172178 return (
173- < ul className = { styles . list } data-testid = { `list-${ telemetryName } -${ idx } ` } key = { `${ telemetryName } -${ idx } ` } >
179+ < ul
180+ className = { styles . list }
181+ data-testid = { `list-${ telemetry . telemetryName } -${ idx } ` }
182+ key = { `${ telemetry . telemetryName } -${ idx } ` }
183+ >
174184 { isArray ( jsonValue ) && jsonValue . map ( ( listElement : IRecommendationContent [ ] , idx ) => (
175185 < li
176186 className = { cx ( styles . listItem , { [ styles . insights ] : insights } ) }
177187 // eslint-disable-next-line react/no-array-index-key
178188 key = { `list-item-${ listElement [ 0 ] } -${ idx } ` }
179189 >
180- { renderRecommendationContent ( listElement , params , telemetryName , insights ) }
190+ { renderRecommendationContent ( listElement , params , telemetry , insights ) }
181191 </ li >
182192 ) ) }
183193 </ ul >
@@ -190,10 +200,10 @@ const renderContentElement = (
190200const renderRecommendationContent = (
191201 elements : IRecommendationContent [ ] = [ ] ,
192202 params : any ,
193- telemetryName : string ,
203+ telemetry : ITelemetry ,
194204 insights : boolean = false
195205) => (
196- elements ?. map ( ( item , idx ) => renderContentElement ( item , params , telemetryName , insights , idx ) ) )
206+ elements ?. map ( ( item , idx ) => renderContentElement ( item , params , telemetry , insights , idx ) ) )
197207
198208const sortRecommendations = ( recommendations : any [ ] ) => sortBy ( recommendations , [
199209 ( { name } ) => name !== 'searchJSON' ,
0 commit comments