All files / modules/75-cd/pages/gitops/NativeArgo/ProvidersGridView ProvidersGridView.tsx

84.62% Statements 11/13
86.11% Branches 31/36
60% Functions 3/5
84.62% Lines 11/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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67              2x 2x 2x   2x 2x                     2x 9x   8x                           130x           130x                                     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 from 'react'
import { Container, Layout, Pagination } from '@wings-software/uicore'
import { PageSpinner } from '@common/components'
import type { GitopsProviderResponse, PageGitopsProviderResponse } from 'services/cd-ng'
import ProviderCard from '../ProviderCard/ProviderCard'
import css from './ProvidersGridView.module.scss'
 
interface ProvidersGridViewProps {
  data?: PageGitopsProviderResponse
  loading?: boolean
  reloadPage?: () => Promise<void>
  gotoPage: (index: number) => void
  onDelete?: (provider: GitopsProviderResponse) => Promise<void>
  onEdit?: (provider: GitopsProviderResponse) => Promise<void>
}
 
const ProvidersGridView: React.FC<ProvidersGridViewProps> = props => {
  const { loading, data, onEdit, onDelete, gotoPage } = props
 
  return (
    <>
      {loading ? (
        <div style={{ position: 'relative', height: 'calc(100vh - 128px)' }}>
          <PageSpinner />
        </div>
      ) : (
        <>
          <Container className={css.masonry}>
            <Layout.Masonry
              center
              gutter={25}
              items={data?.content || []}
              renderItem={provider => (
                <ProviderCard
                  provider={provider}
                  onEdit={async () => onEdit && onEdit(provider)}
                  onDelete={async () => onDelete && onDelete(provider)}
                />
              )}
              keyOf={provider => provider.identifier}
            />
          </Container>
 
          <Container className={css.pagination}>
            <Pagination
              itemCount={data?.totalItems || 0}
              pageSize={data?.pageSize || 10}
              pageCount={data?.totalPages || 0}
              pageIndex={data?.pageIndex || 0}
              gotoPage={gotoPage}
            />
          </Container>
        </>
      )}
    </>
  )
}
 
export default ProvidersGridView