diff --git a/frontend/src/lib/components/runs/RunsTable.svelte b/frontend/src/lib/components/runs/RunsTable.svelte index 38a9411a03..c07d6d0a26 100644 --- a/frontend/src/lib/components/runs/RunsTable.svelte +++ b/frontend/src/lib/components/runs/RunsTable.svelte @@ -307,140 +307,143 @@ {#if jobs?.length == 0 && (!showExternalJobs || externalJobs?.length == 0)}
No jobs found for the selected filters.
{:else} - - {#snippet header()}{/snippet} - {#snippet item({ index, style })} -
- {#if flatJobs} - {@const jobOrDate = flatJobs[index]} - {#if jobOrDate} - {#if jobOrDate?.type === 'date'} -
- {jobOrDate.date} -
- {:else} - {@const selected = - jobOrDate.job.id !== '-' && selectedIds.includes(jobOrDate.job.id)} - - -
{ - e.preventDefault() - rightClickPopover?.open(e) - }} - > - { - const jobId = jobOrDate.job.id - if (keysPressed.Control || keysPressed.Meta) { - if (selectedIds.includes(jobOrDate.job.id)) { - selectedIds = selectedIds.filter((id) => id != jobId) - } else { - selectedIds.push(jobId) - selectedIds = selectedIds - } - } else if (keysPressed.Shift && selectedIds.length > 0) { - const lastSelectedId = selectedIds[selectedIds.length - 1] - const lastSelectedIndex = flatJobs?.findIndex( - (jobOrDate) => - jobOrDate.type === 'job' && jobOrDate.job.id === lastSelectedId - ) - if (lastSelectedIndex != undefined && flatJobs) { - const [start, end] = - index < lastSelectedIndex - ? [index, lastSelectedIndex] - : [lastSelectedIndex, index] - const newSelectedIds = flatJobs - .slice(start, end + 1) - .filter((jobOrDate) => jobOrDate.type === 'job') - .map((jobOrDate) => jobOrDate.job.id) - selectedIds = Array.from(new Set([...selectedIds, ...newSelectedIds])) - } - } else { - if (batchRerunOptionsIsOpen) batchRerunOptionsIsOpen = false - if ( - JSON.stringify(selectedIds) !== JSON.stringify([jobOrDate.job.id]) || - selectedWorkspace !== jobOrDate.job.workspace_id - ) { - selectedWorkspace = jobOrDate.job.workspace_id - selectedIds = [jobOrDate.job.id] - dispatch('select') - } else { - selectedIds = [] - selectedWorkspace = undefined - dispatch('select') - } - } +
+ + {#snippet header()}{/snippet} + {#snippet item({ index, style })} +
+ {#if flatJobs} + {@const jobOrDate = flatJobs[index]} + {#if jobOrDate} + {#if jobOrDate?.type === 'date'} +
+ {jobOrDate.date} +
+ {:else} + {@const selected = + jobOrDate.job.id !== '-' && selectedIds.includes(jobOrDate.job.id)} + + +
{ + e.preventDefault() + rightClickPopover?.open(e) }} - {activeLabel} - on:filterByLabel - on:filterByPath - on:filterByUser - on:filterByFolder - on:filterByConcurrencyKey - on:filterBySchedule - on:filterByWorker - {containerWidth} - /> -
+ > + { + const jobId = jobOrDate.job.id + if (keysPressed.Control || keysPressed.Meta) { + if (selectedIds.includes(jobOrDate.job.id)) { + selectedIds = selectedIds.filter((id) => id != jobId) + } else { + selectedIds.push(jobId) + selectedIds = selectedIds + } + } else if (keysPressed.Shift && selectedIds.length > 0) { + const lastSelectedId = selectedIds[selectedIds.length - 1] + const lastSelectedIndex = flatJobs?.findIndex( + (jobOrDate) => + jobOrDate.type === 'job' && jobOrDate.job.id === lastSelectedId + ) + if (lastSelectedIndex != undefined && flatJobs) { + const [start, end] = + index < lastSelectedIndex + ? [index, lastSelectedIndex] + : [lastSelectedIndex, index] + const newSelectedIds = flatJobs + .slice(start, end + 1) + .filter((jobOrDate) => jobOrDate.type === 'job') + .map((jobOrDate) => jobOrDate.job.id) + selectedIds = Array.from(new Set([...selectedIds, ...newSelectedIds])) + } + } else { + if (batchRerunOptionsIsOpen) batchRerunOptionsIsOpen = false + if ( + JSON.stringify(selectedIds) !== JSON.stringify([jobOrDate.job.id]) || + selectedWorkspace !== jobOrDate.job.workspace_id + ) { + selectedWorkspace = jobOrDate.job.workspace_id + selectedIds = [jobOrDate.job.id] + dispatch('select') + } else { + selectedIds = [] + selectedWorkspace = undefined + dispatch('select') + } + } + }} + {activeLabel} + on:filterByLabel + on:filterByPath + on:filterByUser + on:filterByFolder + on:filterByConcurrencyKey + on:filterBySchedule + on:filterByWorker + {containerWidth} + /> +
+ {/if} + {:else} + {JSON.stringify(jobOrDate)} {/if} {:else} - {JSON.stringify(jobOrDate)} +
+
...
+
...
+
...
+
...
+
{/if} - {:else} -
-
...
-
...
-
...
-
...
-
- {/if} -
- {/snippet} - {#snippet footer()} -
{#if !lastFetchWentToEnd && jobs && jobs.length >= perPage} - - {/if}
- {/snippet} - +
+ {/snippet} + {#snippet footer()} +
{#if !lastFetchWentToEnd && jobs && jobs.length >= perPage} + + {/if}
+ {/snippet} + +
{/if}