diff --git a/frontend/src/lib/components/common/button/Button.svelte b/frontend/src/lib/components/common/button/Button.svelte index d1e9924bbe..debde0c401 100644 --- a/frontend/src/lib/components/common/button/Button.svelte +++ b/frontend/src/lib/components/common/button/Button.svelte @@ -91,7 +91,7 @@ 'border border-gray-300 bg-white hover:bg-gray-100 focus:bg-gray-100 text-gray-700 hover:text-gray-800 focus:text-gray-800 focus:ring-gray-300', contained: 'bg-white border-gray-300 hover:bg-gray-100 focus:bg-gray-100 text-gray-700 focus:ring-gray-300', - divider: 'divide-x divide-gray-100' + divider: 'divide-x divide-gray-200' } } diff --git a/frontend/src/lib/components/common/button/ButtonDropdown.svelte b/frontend/src/lib/components/common/button/ButtonDropdown.svelte index 3c78082503..c86aaedb7b 100644 --- a/frontend/src/lib/components/common/button/ButtonDropdown.svelte +++ b/frontend/src/lib/components/common/button/ButtonDropdown.svelte @@ -24,7 +24,7 @@ } - + + import { ArrowRight, Calendar } from 'lucide-svelte' + import { createEventDispatcher } from 'svelte' + import { fade } from 'svelte/transition' + import { Button, Popup } from '..' + + export let date: string | undefined + export let label: string + + const dispatch = createEventDispatcher() + let value = date + let button: HTMLButtonElement + let input: HTMLInputElement + + $: if (date && input) { + input.value = new Date(date).toISOString().slice(0, 16) + } + + function save() { + dispatch('change', value) + input.blur() + } + + function close() { + const elem = document.activeElement as HTMLElement + if (elem.blur) { + elem.blur() + } + } + + + + + + diff --git a/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte index 6dbe55b9a5..69e577a259 100644 --- a/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/runs/[...path]/+page.svelte @@ -23,6 +23,8 @@ import { openStore } from '$lib/components/jobs/JobPreview.svelte' import { setQuery } from '$lib/navigation' import Tooltip from '$lib/components/Tooltip.svelte' + import { RefreshCcw } from 'lucide-svelte' + import CalendarPicker from '$lib/components/common/calendarPicker/CalendarPicker.svelte' let jobs: Job[] | undefined let error: Error | undefined @@ -195,6 +197,46 @@ let argError = '' let resultError = '' + + const manualDates = [ + { + label: 'Last 30 seconds', + setMinMax: () => { + minTs = new Date(new Date().getTime() - 30 * 1000).toISOString() + maxTs = new Date().toISOString() + } + }, + { + label: 'Last minute', + setMinMax: () => { + minTs = new Date(new Date().getTime() - 60 * 1000).toISOString() + maxTs = new Date().toISOString() + } + }, + { + label: 'Last 5 minutes', + setMinMax: () => { + minTs = new Date(new Date().getTime() - 5 * 60 * 1000).toISOString() + maxTs = new Date().toISOString() + } + }, + { + label: 'Last 30 minutes', + setMinMax: () => { + minTs = new Date(new Date().getTime() - 30 * 60 * 1000).toISOString() + maxTs = new Date().toISOString() + } + }, + { + label: 'Last 24 hours', + setMinMax: () => { + minTs = new Date(new Date().getTime() - 24 * 60 * 60 * 1000).toISOString() + maxTs = new Date().toISOString() + } + } + ] + + let selectedManualDate = 0 @@ -251,15 +293,63 @@ }} /> -
-
min datetime - +
+
+
+ Min datetime + + + + { + minTs = new Date(detail).toISOString() + jobs = await fetchJobs(maxTs, minTs) + }} + /> +
-
max datetime +
+ Max datetime + { + maxTs = new Date(detail).toISOString() + jobs = await fetchJobs(maxTs, minTs) + }} + />
+