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 | 110x 110x 110x 110x 110x 110x 110x 110x 110x 110x 110x 1x 1x 1x 1x 1x 1x 1x 1x 1x 110x 110x 110x 1x 1x 1x | /*
* 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 React from 'react'
import { defaultTo } from 'lodash-es'
import { FormInput, Layout } from '@wings-software/uicore'
import { ArtifactSourceBase, ArtifactSourceRenderProps } from '@cd/factory/ArtifactSourceFactory/ArtifactSourceBase'
import { ENABLED_ARTIFACT_TYPES } from '@pipeline/components/ArtifactsSelection/ArtifactHelper'
import { useStrings } from 'framework/strings'
import { useVariablesExpression } from '@pipeline/components/PipelineStudio/PiplineHooks/useVariablesExpression'
import type { SidecarArtifact } from 'services/cd-ng'
import { isFieldRuntime } from '../../K8sServiceSpecHelper'
import { isArtifactSourceRuntime, isFieldfromTriggerTabDisabled } from '../artifactSourceUtils'
import css from '../../K8sServiceSpec.module.scss'
interface CustomArtifactRenderContent extends ArtifactSourceRenderProps {
isTagsSelectionDisabled: (data: ArtifactSourceRenderProps) => boolean
}
const Content = (props: CustomArtifactRenderContent): React.ReactElement => {
const {
isPrimaryArtifactsRuntime,
isSidecarRuntime,
template,
formik,
path,
readonly,
stageIdentifier,
isTagsSelectionDisabled,
allowableTypes,
fromTrigger,
artifact,
isSidecar,
artifactPath
} = props
const { getString } = useStrings()
const { expressions } = useVariablesExpression()
const isFieldDisabled = (fieldName: string, isTag = false): boolean => {
/* instanbul ignore else */
Iif (
readonly ||
isFieldfromTriggerTabDisabled(
fieldName,
formik,
stageIdentifier,
fromTrigger,
isSidecar ? (artifact as SidecarArtifact)?.identifier : undefined
)
) {
return true
}
Iif (isTag) {
return isTagsSelectionDisabled(props)
}
return false
}
const isRuntime = isArtifactSourceRuntime(isPrimaryArtifactsRuntime, isSidecarRuntime, isSidecar as boolean)
return (
<>
{isRuntime && (
<Layout.Vertical key={artifactPath} className={css.inputWidth}>
{isFieldRuntime(`artifacts.${artifactPath}.spec.version`, template) && (
<FormInput.MultiTextInput
label={getString('version')}
disabled={isFieldDisabled(`artifacts.${artifactPath}.spec.version`)}
multiTextInputProps={{
expressions,
allowableTypes
}}
name={`${path}.artifacts.${artifactPath}.spec.version`}
/>
)}
</Layout.Vertical>
)}
</>
)
}
export class CustomArtifactSource extends ArtifactSourceBase<ArtifactSourceRenderProps> {
protected artifactType = ENABLED_ARTIFACT_TYPES.CustomArtifact
protected isSidecar = false
isTagsSelectionDisabled(): boolean {
return false
}
renderContent(props: ArtifactSourceRenderProps): JSX.Element | null {
Iif (!props.isArtifactsRuntime) {
return null
}
this.isSidecar = defaultTo(props.isSidecar, false)
return <Content {...props} isTagsSelectionDisabled={this.isTagsSelectionDisabled.bind(this)} />
}
}
|