import { module } from 'angular'; import React from 'react'; import { react2angular } from 'react2angular'; import type { IExecutionBuildLinkProps } from './ExecutionBuildLink'; import { withErrorBoundary } from '../../presentation/SpinErrorBoundary'; import { timestamp } from '../../utils'; export interface IExecutionBuildTitleProps extends IExecutionBuildLinkProps { defaultToTimestamp?: boolean; } export class ExecutionBuildTitle extends React.Component { public static defaultProps: Partial = { defaultToTimestamp: false, }; public render() { const { execution, defaultToTimestamp } = this.props; const hasParentPipeline = !!(execution && execution.trigger.parentPipelineName); const hasBuildNumber = !!(execution && execution.buildInfo && execution.buildInfo.number); const showBuildInfo = hasBuildNumber && !hasParentPipeline; const showStartTime = defaultToTimestamp && !hasParentPipeline && !hasBuildNumber; return ( {hasParentPipeline && {execution.trigger.parentPipelineName}} {showBuildInfo && ( Build #{execution.buildInfo.number} )} {showStartTime && {timestamp(this.props.execution.startTime)}} ); } } export const EXECUTION_BUILD_TITLE = 'spinnaker.core.pipeline.executionbuild.executionbuildtitle'; const ngmodule = module(EXECUTION_BUILD_TITLE, []); ngmodule.component( 'executionBuildTitle', react2angular(withErrorBoundary(ExecutionBuildTitle, 'executionBuildTitle'), ['execution', 'defaultToTimestamp']), );