diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs
index 7984e9fe2e..821e3ab897 100644
--- a/backend/windmill-api/src/jobs.rs
+++ b/backend/windmill-api/src/jobs.rs
@@ -66,6 +66,14 @@ pub fn workspaced_service() -> Router {
"/run_wait_result/f/*script_path",
post(run_wait_result_flow_by_path).head(|| async { "" }),
)
+ .route(
+ "/openai_sync/p/*script_path",
+ post(run_wait_result_job_by_path).head(|| async { "" }),
+ )
+ .route(
+ "/openapi_sync/f/*script_path",
+ post(run_wait_result_flow_by_path).head(|| async { "" }),
+ )
.route("/run/h/:hash", post(run_job_by_hash).head(|| async { "" }))
.route("/run/preview", post(run_preview_job))
.route("/run/preview_flow", post(run_preview_flow_job))
diff --git a/frontend/src/lib/components/flows/pickers/PickHubApp.svelte b/frontend/src/lib/components/flows/pickers/PickHubApp.svelte
index 97c4461cbe..9c8b5dcfc1 100644
--- a/frontend/src/lib/components/flows/pickers/PickHubApp.svelte
+++ b/frontend/src/lib/components/flows/pickers/PickHubApp.svelte
@@ -8,6 +8,7 @@
import { loadHubApps } from '$lib/hub'
export let filter = ''
+ export let syncQuery = false
type Item = { apps: string[]; summary: string; path: string }
let hubApps: any[] | undefined = undefined
@@ -37,7 +38,7 @@
-
+
{#if hubApps}
{#if filteredItems.length == 0}
diff --git a/frontend/src/lib/components/flows/pickers/PickHubFlow.svelte b/frontend/src/lib/components/flows/pickers/PickHubFlow.svelte
index e04b035792..ee666540fd 100644
--- a/frontend/src/lib/components/flows/pickers/PickHubFlow.svelte
+++ b/frontend/src/lib/components/flows/pickers/PickHubFlow.svelte
@@ -8,6 +8,7 @@
import { loadHubFlows } from '$lib/hub'
export let filter = ''
+ export let syncQuery = false
type Item = { apps: string[]; summary: string; path: string }
let hubFlows: any[] | undefined = undefined
@@ -37,7 +38,7 @@
-
+
{#if hubFlows}
{#if filteredItems.length == 0}
diff --git a/frontend/src/lib/components/flows/pickers/PickHubScript.svelte b/frontend/src/lib/components/flows/pickers/PickHubScript.svelte
index 652b40a589..cf620d338b 100644
--- a/frontend/src/lib/components/flows/pickers/PickHubScript.svelte
+++ b/frontend/src/lib/components/flows/pickers/PickHubScript.svelte
@@ -12,6 +12,7 @@
export let kind: 'script' | 'trigger' | 'approval' | 'failure' = 'script'
export let filter = ''
+ export let syncQuery = false
const dispatch = createEventDispatcher()
@@ -35,7 +36,7 @@
-
+
{#if $hubScripts}
{#if filteredItems.length == 0}
diff --git a/frontend/src/lib/components/home/ItemsList.svelte b/frontend/src/lib/components/home/ItemsList.svelte
index 91de64513c..28b2d2ebaa 100644
--- a/frontend/src/lib/components/home/ItemsList.svelte
+++ b/frontend/src/lib/components/home/ItemsList.svelte
@@ -342,7 +342,7 @@
-
+
{#if filteredItems?.length == 0}
{/if}
diff --git a/frontend/src/lib/components/home/ListFilters.svelte b/frontend/src/lib/components/home/ListFilters.svelte
index 9ed6a9c7aa..45f6eca04e 100644
--- a/frontend/src/lib/components/home/ListFilters.svelte
+++ b/frontend/src/lib/components/home/ListFilters.svelte
@@ -5,22 +5,54 @@
import { fade } from 'svelte/transition'
import { Badge } from '../common'
import { APP_TO_ICON_COMPONENT } from '../icons'
- import { setQuery } from '$lib/navigation'
- import { page } from '$app/stores'
+ import { onDestroy, onMount } from 'svelte'
export let filters: string[]
export let selectedFilter: string | undefined = undefined
export let resourceType = false
export let queryName = 'filter'
+ export let syncQuery = false
- if (selectedFilter == undefined) {
- let queryValue = $page.url.searchParams.get(queryName) ?? undefined
+ const queryChange: (value: URL) => void = (url: URL) => {
+ if (syncQuery) {
+ window.history.pushState(history.state, '', `?${url?.searchParams.toString()}`)
+ }
+ }
+
+ const eventListener = (e: PopStateEvent) => {
+ if (syncQuery) {
+ loadFilterFromUrl()
+ }
+ }
+
+ onMount(() => {
+ window.addEventListener('popstate', eventListener)
+ })
+
+ onDestroy(() => {
+ window.removeEventListener('popstate', (e) => eventListener(e))
+ })
+
+ loadFilterFromUrl()
+
+ function loadFilterFromUrl() {
+ console.log('LOAD')
+ let queryValue = new URL(window.location.href).searchParams.get(queryName) ?? undefined
selectedFilter = queryValue
}
function getIconComponent(name: string) {
return APP_TO_ICON_COMPONENT[name] || APP_TO_ICON_COMPONENT[name.split('_')[0]]
}
+ export async function setQuery(url: URL, key: string, value: string | undefined): Promise
{
+ if (value != undefined) {
+ url.searchParams.set(key, value)
+ } else {
+ url.searchParams.delete(key)
+ }
+ queryChange(url)
+ }
+
$: filtersAndSelected = selectedFilter
? filters.includes(selectedFilter)
? filters
@@ -40,9 +72,9 @@
on:click={() => {
selectedFilter = selectedFilter == filter ? undefined : filter
if (selectedFilter) {
- setQuery($page.url, queryName, selectedFilter)
+ setQuery(new URL(window.location.href), queryName, selectedFilter)
} else {
- setQuery($page.url, queryName, undefined)
+ setQuery(new URL(window.location.href), queryName, undefined)
}
}}
color={filter === selectedFilter ? 'blue' : 'gray'}
diff --git a/frontend/src/routes/(root)/(logged)/+page.svelte b/frontend/src/routes/(root)/(logged)/+page.svelte
index cbf5207b83..b687b7c74a 100644
--- a/frontend/src/routes/(root)/(logged)/+page.svelte
+++ b/frontend/src/routes/(root)/(logged)/+page.svelte
@@ -236,7 +236,7 @@
{#if subtab == 'scripts'}
- viewCode(e.detail)}
+ viewCode(e.detail)}
>
{:else if subtab == 'flows'}
- viewFlow(e.detail)}
+ viewFlow(e.detail)}
>
{:else if subtab == 'apps'}
- viewApp(e.detail)}
+ viewApp(e.detail)}
>
-
+
{#if tab != 'states' && tab != 'cache'}