{#if job}
{#if isListJob} {@const lenToAdd = Math.min( 20, $localDurationStatuses[flowJobIds?.moduleId ?? '']?.iteration_from ?? 0 )} {#if (flowJobIds?.flowJobs.length ?? 0) > 20 && lenToAdd > 0} {@const allToAdd = (flowJobIds?.length ?? 0) - (slicedListJobIds.length ?? 0)}

For performance reasons, only the last 20 items are shown by default {#if allToAdd > 0} {/if}

{/if} {#if render}
{/if} {:else if render}
{#if !job}
{:else if `result` in job}
{:else if job.flow_status?.modules?.[job?.flow_status?.step]?.type === 'WaitingForEvents'} {:else if $suspendStatus && Object.keys($suspendStatus).length > 0}
{#each Object.values($suspendStatus) as suspendCount (suspendCount.job.id)}
Flow suspended, waiting for {suspendCount.nb} events
{/each}
{:else if job.logs}
{job.logs}
{:else if innerModules?.length > 0}
{#each innerModules as mod, i (mod.id)} {#if mod.type == 'InProgress'} {@const rawMod = job.raw_flow?.modules[i]}
{mod.id} {#if !emptyString(rawMod?.summary)} {rawMod?.summary ?? ''} {:else if rawMod?.value.type == 'script'} {rawMod.value.path ?? ''} {:else if rawMod?.value.type} {rawMod?.value.type} {/if}
{/if} {/each}
{/if}
{/if} {#if render} {#if innerModules.length > 0 && !isListJob} Graph Details {/if} {/if}
{#if isListJob} {@const lenToAdd = Math.min( 20, $localDurationStatuses[flowJobIds?.moduleId ?? '']?.iteration_from ?? 0 )}

Embedded flows: ({flowJobIds?.flowJobs.length} items)

{#if (flowJobIds?.flowJobs.length ?? 0) > 20 && lenToAdd > 0} {@const allToAdd = (flowJobIds?.length ?? 0) - (slicedListJobIds.length ?? 0)}

For performance reasons, only the last 20 items are shown by default {#if allToAdd > 0} {/if}

{/if} {#each slicedListJobIds as loopJobId, j (loopJobId)} {#if render} {/if}
20} {workspaceId} jobId={loopJobId} on:jobsLoaded={(e) => innerJobLoaded(e.detail, j)} />
{/each} {:else if innerModules.length > 0} {/if}
{#if render} {#if job.raw_flow && !isListJob}
{#each Object.values($retryStatus) as count} {#if count} Retry in progress, # of failed attempts: {count} {/if} {/each} {#each Object.values($suspendStatus) as count} {#if count.nb} Flow suspended, waiting for {count.nb} events {/if} {/each}
{ rightColumnSelect = 'detail' if (typeof e.detail == 'string') { if (e.detail == 'Input') { selectedNode = 'start' } else if (e.detail == 'Result') { selectedNode = 'end' } else { selectedNode = e.detail } } else { selectedNode = e.detail.id } }} modules={job.raw_flow?.modules ?? []} failureModule={job.raw_flow?.failure_module} />
Timeline Details {#if Object.keys(job?.flow_status?.user_states ?? {}).length > 0} User States {/if} {#if rightColumnSelect == 'timeline'} x.id)} durationStatuses={localDurationStatuses} /> {:else if rightColumnSelect == 'detail'}
{#if selectedNode} {@const node = $localModuleStates[selectedNode]} {#if selectedNode == 'end'} {:else if selectedNode == 'start'} {#if job.args}
{:else}

No arguments

{/if} {:else if node}
{#if node.duration_ms} {msToSec(node.duration_ms)} s {/if} {#if node.job_id} {/if}
{#if !node.isListJob}
{/if} {:else}

The execution of this node has no information attached to it. The job likely did not run yet

{/if} {:else}

Select a node to see its details here

{/if}
{:else if rightColumnSelect == 'user_states'}
{/if}
{/if} {/if} {:else} {/if}