mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-11 00:06:06 +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
89 lines
2.4 KiB
Svelte
89 lines
2.4 KiB
Svelte
<script lang="ts">
|
|
import { Loader2 } from 'lucide-svelte'
|
|
import DisplayResult from './DisplayResult.svelte'
|
|
import LogViewer from './LogViewer.svelte'
|
|
import type { CompletedJob, Job } from '$lib/gen'
|
|
import AiAgentLogViewer from './AIAgentLogViewer.svelte'
|
|
import { twMerge } from 'tailwind-merge'
|
|
import type { AgentTool } from './flows/agentToolUtils'
|
|
|
|
interface Props {
|
|
waitingForExecutor?: boolean
|
|
result: any
|
|
result_stream?: string
|
|
logs: string | undefined
|
|
col?: boolean
|
|
loading: boolean
|
|
filename?: string | undefined
|
|
jobId?: string | undefined
|
|
tag?: string | undefined
|
|
workspaceId?: string | undefined
|
|
refreshLog?: boolean
|
|
downloadLogs?: boolean
|
|
tagLabel?: string | undefined
|
|
aiAgentStatus?: {
|
|
tools: AgentTool[]
|
|
agentJob: Partial<CompletedJob> & Pick<CompletedJob, 'id'> & { type: 'CompletedJob' }
|
|
storedToolCallJobs?: Record<number, Job>
|
|
onToolJobLoaded?: (job: Job, idx: number) => void
|
|
}
|
|
}
|
|
|
|
let {
|
|
waitingForExecutor = false,
|
|
result,
|
|
result_stream,
|
|
logs,
|
|
col = false,
|
|
loading,
|
|
filename = undefined,
|
|
jobId = undefined,
|
|
tag = undefined,
|
|
workspaceId = undefined,
|
|
downloadLogs = true,
|
|
tagLabel = undefined,
|
|
aiAgentStatus = undefined
|
|
}: Props = $props()
|
|
</script>
|
|
|
|
<div
|
|
class={twMerge(
|
|
'grow overflow-hidden text-xs',
|
|
!col ? 'grid grid-cols-2 gap-2' : 'flex flex-col max-h-screen gap-6 overflow-hidden'
|
|
)}
|
|
>
|
|
<div class="relative flex flex-col gap-1">
|
|
<span class="text-emphasis text-xs font-semibold">Result</span>
|
|
<div
|
|
class="{col
|
|
? 'max-h-1/2 grow'
|
|
: 'max-h-80'} overflow-auto rounded-md grow min-h-0 border bg-surface-tertiary p-2"
|
|
>
|
|
{#if result !== undefined || result_stream !== undefined}
|
|
<DisplayResult {workspaceId} {jobId} {filename} {result} {result_stream} growVertical />
|
|
{:else if loading}
|
|
<Loader2 class="animate-spin" />
|
|
{:else}
|
|
<div class="text-secondary">No result (result is undefined)</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
<div class="relative flex flex-col gap-1">
|
|
<span class="text-emphasis text-xs font-semibold">Logs</span>
|
|
{#if aiAgentStatus}
|
|
<AiAgentLogViewer {...aiAgentStatus} {workspaceId} noPadding />
|
|
{:else}
|
|
<div class="rounded-md grow min-h-0 border bg-surface-tertiary overflow-hidden">
|
|
<LogViewer
|
|
{tagLabel}
|
|
download={downloadLogs}
|
|
content={logs ?? ''}
|
|
{jobId}
|
|
isLoading={waitingForExecutor}
|
|
{tag}
|
|
/>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|