import React, { useState } from 'react'; import type { IPipeline } from '../../../domain'; import { HelpField } from '../../../help'; import { CheckboxInput, FormField, NumberInput } from '../../../presentation'; export interface IExecutionOptionsPageContentProps { pipeline: IPipeline; updatePipelineConfig: (changes: Partial) => void; } export function ExecutionOptionsPageContent(props: IExecutionOptionsPageContentProps) { const { pipeline, updatePipelineConfig } = props; const [currentMaxConcurrent, setCurrentMaxConcurrent] = useState(pipeline.maxConcurrentExecutions || 0); const handleMaxConcurrentChange = (changeEvent: any) => { const value = Number.parseInt(changeEvent.target.value); setCurrentMaxConcurrent(value); updatePipelineConfig({ maxConcurrentExecutions: value }); }; return (
( Disable concurrent pipeline executions (only run one at a time). } /> )} onChange={() => { updatePipelineConfig({ limitConcurrent: !pipeline.limitConcurrent }); if (!pipeline.limitConcurrent && !pipeline.keepWaitingPipelines) { pipeline.keepWaitingPipelines = true; updatePipelineConfig({ keepWaitingPipelines: true }); } }} value={pipeline.limitConcurrent} /> {pipeline.limitConcurrent && ( ( Do not automatically cancel pipelines waiting in queue. } /> )} onChange={() => { updatePipelineConfig({ keepWaitingPipelines: !pipeline.keepWaitingPipelines }); }} value={pipeline.keepWaitingPipelines} /> )} {!pipeline.limitConcurrent && (
} onChange={handleMaxConcurrentChange} value={currentMaxConcurrent} />
)}
); }