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 | 259x 259x 259x 259x 259x 259x 259x 259x 2x 2x 1x 1x 1x 1x 1x 259x | /* * Copyright 2022 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 { Container, Icon, Layout, Text, IconName } from '@harness/uicore' import { Color, FontVariation } from '@harness/design-system' import React from 'react' import cx from 'classnames' import { Connectors } from '@connectors/constants' import { useStrings } from 'framework/strings' import type { ResponseMessage } from 'services/cd-ng' import css from '@common/components/ErrorHandler/ErrorHandler.module.scss' const Suggestions: React.FC<{ items: ResponseMessage[] header: string icon: IconName connectorType: string }> = props => { const { getString } = useStrings() if (!props.items.length) { return null } /* istanbul ignore next */ const getDocumentIndex = (msg: string) => { const docIndex = msg.lastIndexOf('documentation') let firstStr = msg let secondStr = '' if (docIndex >= 0) { firstStr = msg.slice(0, docIndex) secondStr = msg.slice(docIndex) } return { firstStr, secondStr } } /* istanbul ignore next */ const getDocLink = () => { switch (props.connectorType) { case Connectors.CE_KUBERNETES: return 'https://ngdocs.harness.io/article/ltt65r6k39-set-up-cost-visibility-for-kubernetes' case Connectors.CEAWS: return 'https://ngdocs.harness.io/article/80vbt5jv0q-set-up-cost-visibility-for-aws' case Connectors.CE_AZURE: return 'https://ngdocs.harness.io/article/v682mz6qfd-set-up-cost-visibility-for-azure' case Connectors.CE_GCP: return 'https://ngdocs.harness.io/article/kxnsritjls-set-up-cost-visibility-for-gcp' default: return 'https://ngdocs.harness.io/article/n8e7rddf8w-cloud-cost-management-overview' } } const docUrl = getDocLink() return ( <Layout.Horizontal margin={{ bottom: 'xlarge' }}> <Icon name={props.icon} margin={{ right: 'small' }} /> <Layout.Vertical className={cx(css.errorListTextContainer, css.shrink)}> <Text font={{ variation: FontVariation.SMALL_SEMI }} color={Color.BLACK} margin={{ bottom: 'xsmall' }}> {props.header} </Text> {props.items.map((item, index) => { const { firstStr, secondStr } = getDocumentIndex(item.message as string) return ( <Container margin={{ bottom: 'xsmall' }} key={index}> <Text color={Color.BLACK} font={{ variation: FontVariation.SMALL }} className={css.text}> {firstStr} {secondStr ? ( /* istanbul ignore next */ <a href={docUrl} target="_blank" rel="noreferrer" className={cx(css.link, css.linkSmall)}> {secondStr} </a> ) : /* istanbul ignore next */ null} </Text> {!secondStr ? ( <Text font={{ variation: FontVariation.SMALL_SEMI }} color={Color.BLACK} margin={{ bottom: 'xsmall' }}> {getString('common.errorHandler.contactLabel')} <a href="mailto:support@harness.io">{getString('common.errorHandler.contactSupport')}</a> {getString('or')} <a href="https://community.harness.io/" target="_blank" rel="noreferrer"> {getString('common.errorHandler.communityForum')} </a> </Text> ) : /* istanbul ignore next */ null} </Container> ) })} </Layout.Vertical> </Layout.Horizontal> ) } export default Suggestions |