| + Stage + | ++ Status + | ++ Duration + | ++ % of Total + | ++ Records In + | ++ Records Out + | +
|---|---|---|---|---|---|
|
+
+
+ {index + 1}
+
+ {stage}
+
+ |
+
+ {stageMetrics ? (
+ stageMetrics.success ? (
+
+ |
+ + + {stageMetrics ? formatDurationMs(stageMetrics.duration_ms) : '-'} + + | +
+ {stageMetrics && totalDuration > 0 ? (
+
+
+ ) : (
+ -
+ )}
+
+
+
+
+ {percentage}%
+
+ |
+ + + {stageMetrics?.records_in?.toLocaleString() || '-'} + + | ++ + {stageMetrics?.records_out?.toLocaleString() || '-'} + + | +
| Total | ++ | + {formatDurationMs(totalDuration)} + | +100% | ++ | + |
+ {JSON.stringify(data, null, 2)}
+
+ {error}
+ +
+ {execution?.id}
+
+ + {formatDate(execution?.started_at)} +
++ {formatDate(execution?.completed_at)} +
++ {execution?.total_duration_ms + ? formatDurationMs(execution.total_duration_ms) + : formatDuration(execution?.started_at, execution?.completed_at)} +
++ {execution?.stages_completed.length} / {execution?.stages_requested.length} +
+{execution.error_message}
+{error}
++ {pipeline?.name} - Select a completed job to process +
+{error}
+No completed jobs found
++ {job.place_id} +
++ All stages will run sequentially. Each stage depends on the output of the previous stage. +
+ + {/* Summary */} +