diff --git a/backend/windmill-api/src/inputs.rs b/backend/windmill-api/src/inputs.rs index 9897a58d4b..c601c07ee2 100644 --- a/backend/windmill-api/src/inputs.rs +++ b/backend/windmill-api/src/inputs.rs @@ -134,14 +134,14 @@ async fn get_input_history( let mut tx = user_db.begin(&authed).await?; let args_query = if let Some(args) = &g.args { - sql_builder::bind::Bind::bind(&"args @> ?", &args.replace("'", "''")) + sql_builder::bind::Bind::bind(&"and args @> ?", &args.replace("'", "''")) } else { "".to_string() }; let sql = &format!( "select id, v2_job.created_at, created_by, 'null'::jsonb as args, status = 'success' as success from v2_job JOIN v2_job_completed USING (id) \ - where {} = $1 and kind = any($2) {args_query} and v2_job.workspace_id = $3 AND v2_job_completed.status != 'skipped' \ + where v2_job.workspace_id = $3 and {} = $1 and kind = any($2) {args_query} AND v2_job_completed.status != 'skipped' \ order by v2_job.created_at desc limit $4 offset $5", r.runnable_type.column_name(), diff --git a/frontend/src/lib/components/HistoricInputs.svelte b/frontend/src/lib/components/HistoricInputs.svelte index 83574a2d61..d7020b4f11 100644 --- a/frontend/src/lib/components/HistoricInputs.svelte +++ b/frontend/src/lib/components/HistoricInputs.svelte @@ -57,8 +57,8 @@ let jobHovered: string | undefined = undefined - export function refresh() { - historicList?.refresh() + export function refresh(clearCurrentRuns: boolean = false) { + historicList?.refresh(clearCurrentRuns) } export function resetSelected(dispatchEvent?: boolean) { diff --git a/frontend/src/lib/components/HistoricList.svelte b/frontend/src/lib/components/HistoricList.svelte index 2814806487..01dbcf4530 100644 --- a/frontend/src/lib/components/HistoricList.svelte +++ b/frontend/src/lib/components/HistoricList.svelte @@ -18,7 +18,10 @@ let viewerOpen = false let openStates: Record = {} // Track open state for each item - export function refresh() { + export function refresh(clearCurrentRuns: boolean = false) { + if (clearCurrentRuns) { + infiniteList?.reset() + } if (infiniteList) { infiniteList.loadData('refresh') } diff --git a/frontend/src/lib/components/InfiniteList.svelte b/frontend/src/lib/components/InfiniteList.svelte index e8caaefdb7..96220be937 100644 --- a/frontend/src/lib/components/InfiniteList.svelte +++ b/frontend/src/lib/components/InfiniteList.svelte @@ -12,19 +12,35 @@ export let isEmpty: boolean = true export let length: number = 0 + const perPage = 20 + let hasMore = false let page = 1 - let perPage = 10 let hasAlreadyFailed = false let hovered: any | undefined = undefined let initLoad = false let loadInputs: ((page: number, perPage: number) => Promise) | undefined = undefined let deleteItemFn: ((id: any) => Promise) | undefined = undefined + export function reset() { + items = undefined + loading = false + initLoad = false + length = 0 + hasMore = false + page = 1 + } + + let loadingMore = false + export async function loadData(loadOption: 'refresh' | 'forceRefresh' | 'loadMore' = 'loadMore') { // console.log('loadData', loadOption, length, items?.length) if (!loadInputs) return + if (loadOption == 'loadMore') { + if (loadingMore || loading) return + loadingMore = true + } loading = true hasMore = length === perPage * page @@ -76,6 +92,7 @@ dispatch('error', { type: 'load', error: err }) } finally { loading = false + loadingMore = false } } @@ -119,6 +136,7 @@ loadData() }} {loading} + {loadingMore} > diff --git a/frontend/src/lib/components/RunChart.svelte b/frontend/src/lib/components/RunChart.svelte index 074fa46293..9d1dbc16d1 100644 --- a/frontend/src/lib/components/RunChart.svelte +++ b/frontend/src/lib/components/RunChart.svelte @@ -181,8 +181,6 @@ if (date < min) { min = date } - } else { - console.log(job) } } return min diff --git a/frontend/src/lib/components/SavedInputsV2.svelte b/frontend/src/lib/components/SavedInputsV2.svelte index df4a4f5389..08eb4a7211 100644 --- a/frontend/src/lib/components/SavedInputsV2.svelte +++ b/frontend/src/lib/components/SavedInputsV2.svelte @@ -144,7 +144,7 @@ searchArgs = {} appliedSearchArgs = {} await tick() - historicInputs?.refresh() + historicInputs?.refresh(true) }} variant="contained" size="xs2" @@ -155,7 +155,7 @@ on:click={async () => { appliedSearchArgs = structuredClone(searchArgs) await tick() - historicInputs?.refresh() + historicInputs?.refresh(true) }} endIcon={{ icon: Search }} variant="contained" diff --git a/frontend/src/lib/components/table/DataTable.svelte b/frontend/src/lib/components/table/DataTable.svelte index cd439e0ff9..4418d5ba4f 100644 --- a/frontend/src/lib/components/table/DataTable.svelte +++ b/frontend/src/lib/components/table/DataTable.svelte @@ -7,7 +7,7 @@