44 * you may not use this file except in compliance with the Elastic License.
55 */
66
7- import { EuiCard , EuiIcon } from '@elastic/eui' ;
8- import React from 'react' ;
9- import { EuiButton } from '@elastic/eui' ;
7+ import { EuiButton , EuiCard , EuiIcon } from '@elastic/eui' ;
108import { FormattedMessage } from '@kbn/i18n/react' ;
11- import { RecreateJobButton } from '../../log_analysis_job_status ' ;
9+ import React from 'react ' ;
1210import { SetupStatus } from '../../../../../common/log_analysis' ;
11+ import { RecreateJobButton } from '../../log_analysis_job_status' ;
12+ import { MissingSetupPrivilegesToolTip } from '../missing_setup_privileges_tooltip' ;
1313
1414export const LogAnalysisModuleListCard : React . FC < {
1515 hasSetupCapabilities : boolean ;
@@ -18,14 +18,38 @@ export const LogAnalysisModuleListCard: React.FC<{
1818 moduleStatus : SetupStatus ;
1919 onViewSetup : ( ) => void ;
2020} > = ( { hasSetupCapabilities, moduleDescription, moduleName, moduleStatus, onViewSetup } ) => {
21- const icon =
21+ const moduleIcon =
2222 moduleStatus . type === 'required' ? (
2323 < EuiIcon size = "xxl" type = "machineLearningApp" />
2424 ) : (
2525 < EuiIcon color = "secondary" size = "xxl" type = "check" />
2626 ) ;
27- const footerContent =
28- moduleStatus . type === 'required' ? (
27+
28+ const moduleSetupButton = (
29+ < ModuleSetupButton
30+ hasSetupCapabilities = { hasSetupCapabilities }
31+ onViewSetup = { onViewSetup }
32+ setupType = { moduleStatus . type === 'required' ? 'create' : 'recreate' }
33+ />
34+ ) ;
35+
36+ return (
37+ < EuiCard
38+ description = { moduleDescription }
39+ footer = { < div > { moduleSetupButton } </ div > }
40+ icon = { moduleIcon }
41+ title = { moduleName }
42+ />
43+ ) ;
44+ } ;
45+
46+ const ModuleSetupButton : React . FC < {
47+ hasSetupCapabilities : boolean ;
48+ onViewSetup : ( ) => void ;
49+ setupType : 'create' | 'recreate' ;
50+ } > = ( { hasSetupCapabilities, onViewSetup, setupType } ) => {
51+ const moduleSetupButton =
52+ setupType === 'create' ? (
2953 < EuiButton disabled = { ! hasSetupCapabilities } onClick = { onViewSetup } >
3054 < FormattedMessage
3155 id = "xpack.infra.logs.analysis.enableAnomalyDetectionButtonLabel"
@@ -36,12 +60,11 @@ export const LogAnalysisModuleListCard: React.FC<{
3660 < RecreateJobButton disabled = { ! hasSetupCapabilities } onClick = { onViewSetup } />
3761 ) ;
3862
39- return (
40- < EuiCard
41- description = { moduleDescription }
42- footer = { < div > { footerContent } </ div > }
43- icon = { icon }
44- title = { moduleName }
45- />
63+ return hasSetupCapabilities ? (
64+ moduleSetupButton
65+ ) : (
66+ < MissingSetupPrivilegesToolTip position = "bottom" delay = "regular" >
67+ { moduleSetupButton }
68+ </ MissingSetupPrivilegesToolTip >
4669 ) ;
4770} ;
0 commit comments