From 095969f125e9186cb4f02f75e914ef9a70e3abc4 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Tue, 29 Aug 2023 15:42:56 +0200 Subject: [PATCH] feat(frontend): Filter runs by user (#2187) * feat(frontend): Filter runs by user * feat(frontend): Improve UI * feat(frontend): Add filter by folder * feat(frontend): Clean up filters * feat(frontend): Clean up filters * feat(frontend): add shortcut to filter by folder * fix(frontend): Fix filters * fix(frontend): remove logs * fix(frontend): Fix filter by syncing * fix(frontend): refactor all filters * fix(frontend): refactor all filters * fix(frontend): refactor all filters * fix(frontend): refactor all filters * fix(frontend): add missing tooltips * fix(frontend): correcly set args and result filters + handle status filter --- .../toggleButton-v2/ToggleButton.svelte | 6 + .../src/lib/components/runs/RunRow.svelte | 40 ++- .../src/lib/components/runs/RunsFilter.svelte | 256 +++++++++++++----- .../src/lib/components/runs/RunsTable.svelte | 2 +- frontend/src/lib/utils.ts | 18 +- .../(logged)/runs/[...path]/+page.svelte | 168 ++++++++---- 6 files changed, 358 insertions(+), 132 deletions(-) diff --git a/frontend/src/lib/components/common/toggleButton-v2/ToggleButton.svelte b/frontend/src/lib/components/common/toggleButton-v2/ToggleButton.svelte index 4820ffff07..7171f498d0 100644 --- a/frontend/src/lib/components/common/toggleButton-v2/ToggleButton.svelte +++ b/frontend/src/lib/components/common/toggleButton-v2/ToggleButton.svelte @@ -5,6 +5,8 @@ import { twMerge } from 'tailwind-merge' import Popover from '$lib/components/Popover.svelte' + import { Info } from 'lucide-svelte' + export let value: any export let label: string | undefined = undefined export let iconOnly: boolean = false @@ -14,6 +16,7 @@ export let selectedColor: string = '#3b82f6' export let small: boolean = false export let iconProps: Record = {} + export let showTooltipIcon: boolean = false const { select, selected } = getContext('ToggleButtonGroup') @@ -45,6 +48,9 @@ {#if label && !iconOnly} {label} {/if} + {#if showTooltipIcon} + + {/if} {tooltip} diff --git a/frontend/src/lib/components/runs/RunRow.svelte b/frontend/src/lib/components/runs/RunRow.svelte index 8ac46d6f76..f2a4eabe37 100644 --- a/frontend/src/lib/components/runs/RunRow.svelte +++ b/frontend/src/lib/components/runs/RunRow.svelte @@ -8,7 +8,16 @@ import ScheduleEditor from '../ScheduleEditor.svelte' import Row from '../table/Row.svelte' import Cell from '../table/Cell.svelte' - import { Calendar, Check, FastForward, Hourglass, ListFilter, Play, X } from 'lucide-svelte' + import { + Calendar, + Check, + FastForward, + Folder, + Hourglass, + ListFilter, + Play, + X + } from 'lucide-svelte' import { createEventDispatcher } from 'svelte' import TimeAgo from '../TimeAgo.svelte' import { forLater } from '$lib/forLater' @@ -101,7 +110,7 @@ {#if job === undefined} No job found {:else} -
+
{#if job.script_path}
@@ -115,6 +124,20 @@ > + {#if job.script_path?.startsWith('f/')} + + {/if}
{:else if 'job_kind' in job && job.job_kind == 'preview'} Preview without path @@ -158,7 +181,18 @@
{:else} - {job.created_by} +
+ {job.created_by} + +
{/if} diff --git a/frontend/src/lib/components/runs/RunsFilter.svelte b/frontend/src/lib/components/runs/RunsFilter.svelte index 937fb6b46e..b8634206ed 100644 --- a/frontend/src/lib/components/runs/RunsFilter.svelte +++ b/frontend/src/lib/components/runs/RunsFilter.svelte @@ -1,17 +1,15 @@
- {#key selectedPath} +
- {#if selectedPath} - - {:else} - - {/if} - - Path - - + Filter by + { + if (!manuallySet) { + path = null + user = null + folder = null + } else { + manuallySet = false + } + }} + > + + + +
- {/key} +
+ + {#if filterBy == 'user'} + {#key user} +
+ {#if user} + + {:else} + + {/if} + + User + +
+ {/key} + {/if} + {#if filterBy == 'folder'} + {#key folder} +
+ {#if folder} + + {:else} + + {/if} + + Folder + + +
+ {/key} + {/if} + {#if filterBy === 'path'} + {#key path} +
+ {#if path} + + {:else} + + {/if} + + Path + + +
+ {/key} + {/if}
Kind - { - const url = new URL($page.url) - - url.searchParams.set('job_kinds', e.detail) - goto(url) - }} - > + - - - + + +
Status - - await setQuery($page.url, 'success', success === undefined ? success : String(success))} - > +
-
- - Flow - Skipped flows are flows that did an early break +
+ Show Skipped Flows - - await setQuery( - $page.url, - 'is_skipped', - isSkipped === undefined ? isSkipped : String(isSkipped) - )} - > - - - - +
+ + Skipped flows are flows that did an early break +
@@ -117,14 +215,26 @@
- Filters +
+ Filters + +
+ {`Filter by a json being a subset of the args/result. Try '\{"foo": "bar"\}'`} Filter by args - + Filter by result - +
+
diff --git a/frontend/src/lib/components/runs/RunsTable.svelte b/frontend/src/lib/components/runs/RunsTable.svelte index 798e3c4864..f7a2dc35d5 100644 --- a/frontend/src/lib/components/runs/RunsTable.svelte +++ b/frontend/src/lib/components/runs/RunsTable.svelte @@ -86,7 +86,7 @@ {#each jobsByDay as job (job.id)} - + {/each} {/each} diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index d329ac7c1a..fc4c9b21f7 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -360,21 +360,21 @@ export async function copyToClipboard(value?: string, sendToast = true): Promise .then(() => true) .catch(() => false) } else { - const textArea = document.createElement("textarea"); - textArea.value = value; - textArea.style.position = "fixed"; - textArea.style.left = "-999999px"; + const textArea = document.createElement('textarea') + textArea.value = value + textArea.style.position = 'fixed' + textArea.style.left = '-999999px' - document.body.appendChild(textArea); - textArea.select(); + document.body.appendChild(textArea) + textArea.select() try { - document.execCommand('copy'); - success = true; + document.execCommand('copy') + success = true } catch (error) { // ignore (success = false) } finally { - textArea.remove(); + textArea.remove() } } diff --git a/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte index be0b726248..a80cf14685 100644 --- a/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte @@ -1,13 +1,19 @@