All files / modules/85-cv/pages/health-source/connectors/DatadogMetricsHealthSource/components/SelectDatadogMetricsDashboards SelectDatadogMetricsDashboards.tsx

92.86% Statements 13/14
75% Branches 3/4
66.67% Functions 2/3
92.86% Lines 13/14

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              22x 22x   22x 22x   22x 22x   22x 2x 2x 2x             2x 1x         2x                        
/*
 * 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, { useCallback, useContext, useMemo } from 'react'
import { DatadogDashboardDTO, useGetDatadogDashboards } from 'services/cv'
 
import { SetupSourceTabsContext } from '@cv/components/CVSetupSourcesView/SetupSourceTabs/SetupSourceTabs'
import MetricsDashboardList from '@cv/components/MetricsDashboardList/MetricsDashboardList'
import type { TableDashboardItem } from '@cv/components/MetricsDashboardList/MetricsDashboardList.type'
import { mapDatadogMetricHealthSourceToDatadogMetricSetupSource } from '@cv/pages/health-source/connectors/DatadogMetricsHealthSource/DatadogMetricsHealthSource.utils'
import { useStrings } from 'framework/strings'
 
export function SelectDatadogMetricsDashboards(): JSX.Element {
  const { getString } = useStrings()
  const { sourceData } = useContext(SetupSourceTabsContext)
  const dashboardItemMapper: (dashboard: DatadogDashboardDTO) => TableDashboardItem = useCallback(dashboard => {
    return {
      name: dashboard.name,
      id: dashboard.id
    }
  }, [])
 
  const selectedDashboards = useMemo(() => {
    return (
      sourceData.selectedDashboards ||
      mapDatadogMetricHealthSourceToDatadogMetricSetupSource(sourceData).selectedDashboards
    )
  }, [sourceData])
  return (
    <MetricsDashboardList<DatadogDashboardDTO>
      manualQueryInputTitle={'cv.monitoringSources.datadog.manualInputQueryModal.modalTitle'}
      noDataMessage={getString('cv.monitoringSources.datadog.selectDashboardsPage.noDataText')}
      dashboardsRequest={useGetDatadogDashboards({ lazy: true })}
      defaultItemIcon={'service-datadog'}
      tableTitle={'cv.monitoringSources.datadog.selectDashboardsPage.dashboardColumnName'}
      selectedDashboardList={selectedDashboards || []}
      tableItemMapper={dashboardItemMapper}
    />
  )
}