Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 17x 17x 9x 17x 17x 9x 1x 1x 8x 17x 8x 21x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import React, { useMemo, useState } from 'react'
import { useStrings } from 'framework/strings'
import { SetupSourceTabs } from '@cv/components/CVSetupSourcesView/SetupSourceTabs/SetupSourceTabs'
import { DatadogProduct } from '../connectors/DatadogMetricsHealthSource/DatadogMetricsHealthSource.utils'
import { SelectDatadogMetricsDashboards } from '../connectors/DatadogMetricsHealthSource/components/SelectDatadogMetricsDashboards/SelectDatadogMetricsDashboards'
import DefineHealthSource from './component/defineHealthSource/DefineHealthSource'
import CustomiseHealthSource from './component/customiseHealthSource/CustomiseHealthSource'
import { createHealthSourceDrawerFormData } from './HealthSourceDrawerContent.utils'
import type { HealthSourceDrawerInterface } from './HealthSourceDrawerContent.types'
import { GCOProduct } from '../connectors/GCOLogsMonitoringSource/GoogleCloudOperationsMonitoringSourceUtils'
import { SelectGCODashboards } from '../connectors/GCOMetricsHealthSource/components/SelectGCODashboards/SelectGCODashboards'
import { getSelectedFeature } from './component/defineHealthSource/DefineHealthSource.utils'
import { HealthSourceMaxTab } from './HealthSourceDrawerContent.constant'
function HealthSourceDrawerContent({
serviceRef,
environmentRef,
monitoredServiceRef,
onSuccess,
isEdit,
rowData,
tableData,
shouldRenderAtVerifyStep,
changeSources,
metricDetails
}: HealthSourceDrawerInterface): JSX.Element {
const { getString } = useStrings()
const sourceData = useMemo(
() =>
createHealthSourceDrawerFormData({
isEdit,
monitoredServiceRef,
serviceRef,
environmentRef,
tableData,
rowData,
changeSources,
existingMetricDetails: metricDetails
}),
[rowData, tableData, monitoredServiceRef, serviceRef, environmentRef, isEdit, changeSources]
)
const [selectedProduct, setSelectedProduct] = useState<string | undefined>(getSelectedFeature(sourceData)?.value)
const [tabTitles, ...tabs] = useMemo(() => {
if (selectedProduct === GCOProduct.CLOUD_METRICS || selectedProduct === DatadogProduct.CLOUD_METRICS) {
const dashboardsScreen =
selectedProduct === DatadogProduct.CLOUD_METRICS ? (
<SelectDatadogMetricsDashboards key="selectDatadogDashboards" />
) : (
<SelectGCODashboards key="selectGCODashboards" />
)
return [
[
getString('cv.healthSource.defineHealthSource'),
getString('cv.healthSource.connectors.gco.selectDashboardTab'),
getString('cv.healthSource.customizeHealthSource')
],
<DefineHealthSource
key="defineHealthSource"
onSubmit={values => {
setSelectedProduct(values.product?.value)
}}
/>,
dashboardsScreen,
<CustomiseHealthSource
key="customiseHealthSource"
onSuccess={onSuccess}
shouldRenderAtVerifyStep={shouldRenderAtVerifyStep}
/>
]
}
return [
[getString('cv.healthSource.defineHealthSource'), getString('cv.healthSource.customizeHealthSource')],
<DefineHealthSource key="defineHealthSource" onSubmit={values => setSelectedProduct(values.product?.value)} />,
<CustomiseHealthSource
key="customiseHealthSource"
onSuccess={onSuccess}
shouldRenderAtVerifyStep={shouldRenderAtVerifyStep}
/>
]
}, [selectedProduct])
return (
<>
<SetupSourceTabs
data={sourceData}
determineMaxTab={isEdit ? () => HealthSourceMaxTab : undefined}
tabTitles={tabTitles}
disableCache={true}
>
{tabs}
</SetupSourceTabs>
</>
)
}
export default HealthSourceDrawerContent
|