{#snippet flowVersionSelector()} Flow version {#if loadingVersions} Loading versions... {:else if flowVersions.length > 0} {#if flowVersionId && !runVersionInList} Same as run (v{flowVersionId}) {/if} {#each flowVersions as version, i (version.id)} {@const isLatest = i === 0} {@const isSameAsRun = flowVersionId !== undefined && version.id === flowVersionId} {formatVersionLabel(version)}{isSameAsRun ? ' (Same as run)' : isLatest ? ' (Latest)' : ''} {/each} {:else} No versions available {/if} {/snippet} {#snippet restartTriggerButton(usePlayIcon: boolean)} { if (usePlayIcon && !flowPath) { handleRestart() } }} > Re-start from {displayStepId} {#if enterpriseOnly && disabled} (EE) {/if} {/snippet} {#if !needsPopup} {@render restartTriggerButton(true)} {:else} { if (e.detail) { loadFlowVersions() resetEditsFromProps() } }} > {#snippet trigger()} {@render restartTriggerButton(selectedJobStepType === 'single')} {/snippet} {#snippet content()} {#if selectedJobStepType === 'forloop'} {@const topCount = iterationCounts?.[selectedJobStep] ?? 0} From iteration # {#if topCount > 0} {#each Array.from({ length: topCount }, (_, i) => i) as i (i)} {i + 1} {/each} {:else} {/if} {:else if selectedJobStepType === 'branchall'} From branch {#each restartBranchNames as [branchIdx, branchName] (branchIdx)} {branchName} {/each} {/if} {#each iterationFields as field (field.key)} {@const count = nestedPathIterationCounts?.[field.key] ?? 0} From iteration # of {field.label} {#if count > 0} { const v = parseInt((e.target as HTMLSelectElement).value, 10) if (!Number.isNaN(v)) { iterationEdits = { ...iterationEdits, [field.key]: v } } }} class="!w-32 grow" > {#each Array.from({ length: count }, (_, i) => i) as i (i)} {i + 1} {/each} {:else} { const v = parseInt((e.target as HTMLInputElement).value, 10) if (!Number.isNaN(v)) { iterationEdits = { ...iterationEdits, [field.key]: v } } }} class="!w-32 grow" /> {/if} {/each} {#if flowPath} {@render flowVersionSelector()} {/if} Restart {/snippet} {/if}
{field.label}