All files / modules/85-cv/pages/health-source/connectors/GCOMetricsHealthSource/components/SelectGCODashboards SelectGCODashboards.tsx

100% Statements 13/13
77.78% Branches 7/9
100% Functions 3/3
100% Lines 13/13

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              22x 22x   22x 22x   22x   22x 7x 6x   16x 16x               6x 3x   6x                      
/*
 * 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 { StackdriverDashboardDTO, useGetStackdriverDashboards } 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 { getSelectedDashboards } from '../../GCOMetricsHealthSource.utils'
 
export function SelectGCODashboards(): JSX.Element {
  const { sourceData } = useContext(SetupSourceTabsContext)
  const dashboardItemMapper: (dashboard: StackdriverDashboardDTO & { id?: string }) => TableDashboardItem = useCallback(
    dashboard => {
      const { name = '', path = '', id = '' } = dashboard
      return {
        name: name,
        id: path || id
      }
    },
    []
  )
 
  const selectedDashboards = useMemo(() => {
    return sourceData.selectedDashboards || getSelectedDashboards(sourceData)
  }, [sourceData])
  return (
    <MetricsDashboardList<StackdriverDashboardDTO>
      manualQueryInputTitle={'cv.monitoringSources.gco.manualInputQueryModal.modalTitle'}
      dashboardsRequest={useGetStackdriverDashboards({ lazy: true })}
      defaultItemIcon={'service-stackdriver'}
      tableTitle={'cv.monitoringSources.gco.selectDashboardsPage.dashboardColumnName'}
      selectedDashboardList={selectedDashboards || []}
      tableItemMapper={dashboardItemMapper}
    />
  )
}