* Fix flow time display * Make compute timeline a separate component * Add timeline to log viewer * Add timeline for subflows * remove debug log * fix progresion display while running * Handle loop iteration * nit * Display all iteration for loops * Show total execution time for loop steps * Show subflow timeline * Do not hightlight selected iteration * Add subflow duration and starting time * Allow zoom on subflow timeline * Show execution time * Improve timeline layout * nit * hover effect * add show timeline toggle * reset log viewer state when job id changes * Display history loader in flow preview * handle branch one * reset timeline on jobId change * nit * fix branch chosen default * improve time display * improve look v1 * improve look v2 * Allow loading of more iterations when limit is reached * fix display * Add tooltip * Use popover to display durations * allow select iteration from timeline * remove debug log * fix iteration to index for long loops * select iteration based on id * Use localModuleState to get current display job ids * clean subflow job creation * improve subflow fetching * fix load more position * improve parallele display * clean * Add color status * remove unwanted change * prevent toggle expand on click timeline * fix expand running module * make timeline optional * prevent running flow be marked as error * Fix width jump during execution * fix typo * nit * Use a class for timeline computation * nit
58 lines
1.5 KiB
Svelte
58 lines
1.5 KiB
Svelte
<script lang="ts">
|
|
import { HistoryIcon } from 'lucide-svelte'
|
|
import { createEventDispatcher } from 'svelte'
|
|
import PopoverV2 from '$lib/components/meltComponents/Popover.svelte'
|
|
import HistoricInputs from './HistoricInputs.svelte'
|
|
import { workspaceStore } from '$lib/stores'
|
|
import { JobService } from '$lib/gen'
|
|
|
|
export let path: string
|
|
export let selected: string | undefined = undefined
|
|
export let selectInitial: boolean = false
|
|
export let loading: boolean = false
|
|
const dispatch = createEventDispatcher()
|
|
|
|
async function loadInitial() {
|
|
loading = true
|
|
let jobs = await JobService.listJobs({
|
|
workspace: $workspaceStore!,
|
|
scriptPathExact: path,
|
|
jobKinds: ['flow', 'flowpreview'].join(','),
|
|
page: 1,
|
|
perPage: 1
|
|
})
|
|
if (jobs.length > 0) {
|
|
if (selectInitial) {
|
|
dispatch('select', { jobId: jobs[0].id, initial: true })
|
|
}
|
|
} else {
|
|
dispatch('nohistory')
|
|
}
|
|
loading = false
|
|
}
|
|
|
|
$: $workspaceStore && loadInitial()
|
|
</script>
|
|
|
|
<PopoverV2 closeButton={false}>
|
|
<svelte:fragment slot="trigger">
|
|
<HistoryIcon size={14} />
|
|
</svelte:fragment>
|
|
<svelte:fragment slot="content">
|
|
<div class="p-2 h-[400px] overflow-hidden w-80 border shadow-sm">
|
|
<HistoricInputs
|
|
on:select={(e) => {
|
|
if (e.detail) {
|
|
dispatch('select', { jobId: e.detail?.jobId, initial: false })
|
|
} else {
|
|
dispatch('unselect')
|
|
}
|
|
}}
|
|
{selected}
|
|
runnableId={path}
|
|
runnableType={'FlowPath'}
|
|
/>
|
|
</div>
|
|
</svelte:fragment>
|
|
</PopoverV2>
|