mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-07 16:03:21 +00:00
* separate flow and status with splitpane * fix autoscroll behavior * Flow log viewer nit * not graph viewer * Improve flow job result * Create job detail header to replace metadata * Remove FlowPreviewResult * Create compact job header * Use job header in runs page * Improve runs page run preview * Use flow header in detail section * Show logs for script steps * Clean old schedule status * Limit result height * Script run detail improvement * Script run preview improvement * Fix csv table overflow * surface tertiary as background for Inputs * nit * Improve runs detail skeleton * fix check * nit * Improve node definition * fix flow module component overflow * Use component DataTable for flow schema viewer * Add language icon to step detail * improve run header * Improve Job detail header * nit * restore isOwner logic * Handle resume flows * restore execution status in run preview * restore flow execution status in the preview * flow preview, add status bar * nit module status * nit * Remove flor preview result * nit * nit * fix flow result card * nit * nit * nit * improve field selection on runs detail based on job type * Improve column layout * create JobStatusIcon component * remove job status badge icons * improve compact version * use shared job field display * improve job detail field display * fix badge alignment * increase padding * nit * nit * improve compact display * make background darker for metadata * use auto layout * fix auto layout * improve display * fix truncate logic * fix compact * improve flex adaptibility * improve responsive layout * improve extra compact header * nit * remove unused icons * nit * Improve flow result display * nit * merge progressbar and execution status * handle canceled flow better
77 lines
2.4 KiB
Svelte
77 lines
2.4 KiB
Svelte
<script lang="ts">
|
|
import { displayDate, msToReadableTime } from '$lib/utils'
|
|
import type { CompletedJob, QueuedJob } from '$lib/gen'
|
|
import Badge from './common/badge/Badge.svelte'
|
|
import { forLater } from '$lib/forLater'
|
|
import { Circle } from 'lucide-svelte'
|
|
import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte'
|
|
import QueuePosition from './QueuePosition.svelte'
|
|
import WaitTimeWarning from './common/waitTimeWarning/WaitTimeWarning.svelte'
|
|
|
|
const SMALL_ICON_SIZE = 12
|
|
|
|
interface Props {
|
|
job: QueuedJob | CompletedJob | undefined
|
|
large?: boolean
|
|
}
|
|
|
|
let { job, large = false }: Props = $props()
|
|
</script>
|
|
|
|
{#if job && 'success' in job && job.success}
|
|
<Badge {large} color="green">
|
|
Successfully ran in {msToReadableTime(job.duration_ms)}
|
|
{job.is_skipped ? '(Skipped)' : ''}
|
|
{#if job.self_wait_time_ms || job.aggregate_wait_time_ms}
|
|
<WaitTimeWarning
|
|
self_wait_time_ms={job.self_wait_time_ms}
|
|
aggregate_wait_time_ms={job.aggregate_wait_time_ms}
|
|
variant="alert"
|
|
/>
|
|
{/if}
|
|
</Badge>
|
|
{:else if job && 'success' in job}
|
|
<Badge {large} color="red">
|
|
Failed after {msToReadableTime(job.duration_ms)}
|
|
{#if job.self_wait_time_ms || job.aggregate_wait_time_ms}
|
|
<WaitTimeWarning
|
|
self_wait_time_ms={job.self_wait_time_ms}
|
|
aggregate_wait_time_ms={job.aggregate_wait_time_ms}
|
|
variant="alert"
|
|
/>
|
|
{/if}
|
|
</Badge>
|
|
{:else if job && 'running' in job && job.running && job.suspend}
|
|
<div>
|
|
<Badge {large} color="violet">
|
|
Suspended
|
|
{#if job.flow_status}
|
|
({(job.flow_status?.step ?? 0) + 1} of {job.raw_flow?.modules?.length ?? '?'})
|
|
{/if}
|
|
</Badge>
|
|
</div>
|
|
{:else if job && 'running' in job && job.running}
|
|
<div>
|
|
<Badge {large} color="yellow">
|
|
Running
|
|
{#if job.flow_status}
|
|
({(job.flow_status?.step ?? 0) + 1} of {job.raw_flow?.modules?.length ?? '?'})
|
|
{/if}
|
|
</Badge>
|
|
</div>
|
|
{:else if job && 'running' in job && 'scheduled_for' in job && job.scheduled_for && forLater(job.scheduled_for)}
|
|
<div>
|
|
<Badge color="blue" {large}>
|
|
Scheduled for {displayDate(job.scheduled_for)}
|
|
</Badge>
|
|
</div>
|
|
{:else if job && 'running' in job}
|
|
<div class="flex flex-row gap-1 items-center">
|
|
<Badge color="orange" {large}>Queued</Badge>
|
|
<NoWorkerWithTagWarning tag={job.tag} />
|
|
<QueuePosition jobId={job.id} workspaceId={job.workspace_id} minimal />
|
|
</div>
|
|
{:else}
|
|
<Circle size={SMALL_ICON_SIZE} class="text-gray-200" />
|
|
{/if}
|