{ timelineCompute?.updateInputs(flowModulesIds, durationStatuses, flowDone) }} /> {#if items}
{min ? displayDate(new Date(min), true) : ''}
Wait
Execution
{#if hasApprovalWait}
Approval wait
{/if} {#if max && min} {msToSec(max - min, 1)}s {/if} {#if !max && min}{#if now} {msToSec(now - min, 1)}s {/if}{/if}
{#if selfWaitTime}
root:
{/if} {#each flowModules as { id: k, type: typ, suspend: isSuspend } (k)} {@const subItems = items?.[k]?.filter((x) => x.created_at && x.started_at)}
{k.startsWith('subflow:') ? k.substring(8) : k} {#if localModuleStates[k]?.selectedForloop && (typ == 'forloopflow' || typ == 'whileloopflow')} {/if}
{#if subItems?.length > 1} {subItems?.length} jobs {/if}
{#if min && total} subItems?.[index]?.id ?? `_${index}`} > {#snippet item({ index, style })} {@const b = subItems?.[index]} {#if b?.created_at} {@const waitingLen = b?.created_at ? b.started_at ? b.started_at - b?.created_at : b.duration_ms ? 0 : now - b?.created_at : 0} {@const aw = isSuspend ? approvalWaitByModule[k] : undefined}
{#if b.started_at} {/if} {#if aw} {/if}
{:else}
{/if} {/snippet}
{/if}
{/each}
{:else} {/if}