diff --git a/frontend/src/lib/components/RunForm.svelte b/frontend/src/lib/components/RunForm.svelte index e5568d4dbd..a818e0a66b 100644 --- a/frontend/src/lib/components/RunForm.svelte +++ b/frontend/src/lib/components/RunForm.svelte @@ -1,16 +1,17 @@
@@ -213,18 +210,4 @@ {buttonText} {/if} - - {#if viewCliRun} -
-
- {#if SCRIPT_VIEW_SHOW_RUN_FROM_CLI} - -
- - - - {/if} -
-
- {/if}
diff --git a/frontend/src/lib/components/RunFormAdvancedPopup.svelte b/frontend/src/lib/components/RunFormAdvancedPopup.svelte index 0fbb023bad..ecf4671aba 100644 --- a/frontend/src/lib/components/RunFormAdvancedPopup.svelte +++ b/frontend/src/lib/components/RunFormAdvancedPopup.svelte @@ -27,7 +27,6 @@ export let scheduledForStr: string | undefined export let invisible_to_owner: boolean | undefined export let overrideTag: string | undefined - loadWorkerGroups() async function loadWorkerGroups() { diff --git a/frontend/src/lib/components/details/WebhooksPanel.svelte b/frontend/src/lib/components/details/WebhooksPanel.svelte index a6555de201..3fb8902aff 100644 --- a/frontend/src/lib/components/details/WebhooksPanel.svelte +++ b/frontend/src/lib/components/details/WebhooksPanel.svelte @@ -21,7 +21,14 @@ let userSettings: UserSettings - export let webhooks: { + export let token: string + export let args: any + export let scopes: string[] = [] + export let isFlow: boolean = false + export let hash: string | undefined = undefined + export let path: string + + let webhooks: { async: { hash?: string path: string @@ -32,10 +39,39 @@ get_path?: string } } - export let token: string - export let args: any - export let scopes: string[] = [] - export let isFlow: boolean = false + + $: webhooks = isFlow ? computeFlowWebhooks(path) : computeScriptWebhooks(hash, path) + + function computeScriptWebhooks(hash: string | undefined, path: string) { + let base = `${$page.url.origin}/api/w/${$workspaceStore}/jobs/` + return { + async: { + hash: `${base}run/h/${hash}`, + path: `${base}run/p/${path}` + }, + sync: { + hash: `${base}run_wait_result/h/${hash}`, + path: `${base}run_wait_result/p/${path}`, + get_path: `${base}run_wait_result/p/${path}` + } + } + } + + function computeFlowWebhooks(path: string) { + let base = `${$page.url.origin}/api/w/${$workspaceStore}/jobs/` + + let urlAsync = `${base}run/f/${path}` + let urlSync = `${base}run_wait_result/f/${path}` + return { + async: { + path: urlAsync + }, + sync: { + path: urlSync, + get_path: urlSync + } + } + } let webhookType: 'async' | 'sync' = DEFAULT_WEBHOOK_TYPE let requestType: 'hash' | 'path' | 'get_path' = isFlow ? 'path' : 'path' diff --git a/frontend/src/lib/components/runs/JobLoader.svelte b/frontend/src/lib/components/runs/JobLoader.svelte index f1051ca885..66321a86db 100644 --- a/frontend/src/lib/components/runs/JobLoader.svelte +++ b/frontend/src/lib/components/runs/JobLoader.svelte @@ -110,9 +110,8 @@ async function fetchJobs( startedBefore: string | undefined, startedAfter: string | undefined, - startedAfterCompletedJobs: string | undefined, + startedAfterCompletedJobs: string | undefined ): Promise { - console.log('fetching jobs', startedAfter, startedBefore) return JobService.listJobs({ workspace: $workspaceStore!, createdOrStartedBefore: startedBefore, diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts index 3a5db29f66..94b85ce69a 100644 --- a/frontend/src/lib/stores.ts +++ b/frontend/src/lib/stores.ts @@ -33,7 +33,6 @@ export const enterpriseLicense = writable(undefined) export const workerTags = writable(undefined) export const usageStore = writable(0) export const workspaceUsageStore = writable(0) -export const runFormStore = writable() export const oauthStore = writable(undefined) export const userStore = writable(undefined) export const workspaceStore = writable( diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index ed6cffcaa1..fc5557e189 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -49,14 +49,16 @@ export function displayDateOnly(dateString: string | Date | undefined): string { } } -export function subtractDaysFromDateString(dateString: string | undefined, days: number): string | undefined { +export function subtractDaysFromDateString( + dateString: string | undefined, + days: number +): string | undefined { if (dateString == undefined) { return undefined } let date = new Date(dateString) date.setDate(date.getDate() - days) return date.toISOString() - } export function displayDate( @@ -507,7 +509,7 @@ export function isObject(obj: any) { export function debounce(func: (...args: any[]) => any, wait: number) { let timeout: any - return function(...args: any[]) { + return function (...args: any[]) { // @ts-ignore const context = this clearTimeout(timeout) @@ -517,7 +519,7 @@ export function debounce(func: (...args: any[]) => any, wait: number) { export function throttle(func: (...args: any[]) => T, wait: number) { let timeout: any - return function(...args: any[]) { + return function (...args: any[]) { if (!timeout) { timeout = setTimeout(() => { timeout = null @@ -666,6 +668,17 @@ export function extractCustomProperties(styleStr: string): string { return customStyleStr } +export function computeSharableHash(args: any) { + let nargs = {} + Object.entries(args).forEach(([k, v]) => { + if (v !== undefined) { + // if + nargs[k] = JSON.stringify(v) + } + }) + return new URLSearchParams(nargs).toString() +} + export function toCamel(s: string) { return s.replace(/([-_][a-z])/gi, ($1) => { return $1.toUpperCase().replace('-', '').replace('_', '') @@ -711,7 +724,7 @@ export async function tryEvery({ try { await tryCode() break - } catch (err) { } + } catch (err) {} i++ } if (i >= times) { diff --git a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte index c61b364a5a..d25dd664cf 100644 --- a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte @@ -9,7 +9,7 @@ import MoveDrawer from '$lib/components/MoveDrawer.svelte' import RunForm from '$lib/components/RunForm.svelte' import ShareModal from '$lib/components/ShareModal.svelte' - import { runFormStore, userStore, workspaceStore } from '$lib/stores' + import { userStore, workspaceStore } from '$lib/stores' import { sendUserToast } from '$lib/toast' import DeployWorkspaceDrawer from '$lib/components/DeployWorkspaceDrawer.svelte' import SavedInputs from '$lib/components/SavedInputs.svelte' @@ -55,9 +55,13 @@ $: cliCommand = `wmill flow run ${flow?.path} -d '${JSON.stringify(args)}'` + let previousPath: string | undefined = undefined $: { if ($workspaceStore && $userStore && $page.params.path) { - loadFlow() + if (previousPath !== path) { + previousPath = path + loadFlow() + } } } @@ -88,9 +92,6 @@ } catch {} } - $: urlAsync = `${$page.url.origin}/api/w/${$workspaceStore}/jobs/run/f/${flow?.path}` - $: urlSync = `${$page.url.origin}/api/w/${$workspaceStore}/jobs/run_wait_result/f/${flow?.path}` - let isValid = true let loading = false @@ -113,11 +114,18 @@ await goto('/run/' + run + '?workspace=' + $workspaceStore) } - let args = undefined + let args: Record | undefined = undefined - if ($runFormStore) { - args = $runFormStore - $runFormStore = undefined + let hash = window.location.hash + if (hash.length > 1) { + console.log(hash) + try { + let searchParams = new URLSearchParams(hash.slice(1)) + let params = [...searchParams.entries()].map(([k, v]) => [k, JSON.parse(v)]) + args = Object.fromEntries(params) + } catch (e) { + console.error('Was not able to transform hash as args', e) + } } let moveDrawer: MoveDrawer @@ -359,7 +367,6 @@ runnable={flow} runAction={runFlow} bind:args - isFlow bind:this={runForm} />
@@ -418,15 +425,7 @@ diff --git a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte index ef1529bf07..5e7f198f23 100644 --- a/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/run/[...run]/+page.svelte @@ -11,6 +11,7 @@ } from '$lib/gen' import { canWrite, + computeSharableHash, copyToClipboard, displayDate, emptyString, @@ -43,7 +44,6 @@ import DisplayResult from '$lib/components/DisplayResult.svelte' import { enterpriseLicense, - runFormStore, superadmin, userStore, userWorkspaces, @@ -564,8 +564,7 @@ {#if job?.job_kind === 'script' || job?.job_kind === 'flow'}