mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-26 08:01:38 +00:00
ebfde197fc
* feat: captures * flow UI and improvements * fix: build * fix sqlx * Move Capture WIP * Add capture to webhook and websocket * Move connection status viewer in the head * change trigger section label * Add popover capture picker using melt ui * Add shortcut to triggers capture from input form * remove capture tab in input * Allways show capture * remove useless logs * Add email capture * Add kafka capture into triggers * Add edit option in capture table * use light header for arg input * Add prefilled group id * Change button label * fix logic * Open resource drawer if prototype has fields * fix default completion * Change name Prototype * Dissociate Editor Mode for triggers * Fix bug for script * Fix apply args * fix apply schema * Add capture table to script * fix apply args * Add capture button for script * Delete capture tab * Set capture on when opening triggers capture * fix connection indicator * fix minor issues * Add preprocessor logic * Use slot in log Panel for captures * handle capture refresh in script * Delete capture tab from script editor * reset kafka resource on toggle static * fix minor issue * Allow resource in kafka capture * use simple capture button in flow * Remove capture panel * Polish route trigger editor * Fix resource saving * Remove excessive padding * merge nits * Add history tab # Conflicts: # frontend/src/lib/components/EditableSchemaForm.svelte * add workflow_dispatch to build * add workflow_dispatch to build * Move input copy from in a panel * better capture UI * Add smoothing animation on open input editor * fix bad wrapping in input editor menu * clean code * restore captureTable * clean * fix sqlx * fix build * fix build * build * make initial_messages optional in line with db * fix npm check * better handle args for capture webhook and http * add capture pagination * Add capture table * Add table for history inputs * nit * simplify capture table * stop capturing on closing capture section * show only 10 items per page for captures * set focus to logs on script test * Fix collapsable section * nit * open captures when applying args from triggers * update edit input drawer * fix all EditableSchemaForm * fix panel init animation * Add capture popover * change open tab button * clean code * fix bad table display * Fix JSON input bad sync * make capture icon bigger * nit * nit * revert unwanted change * Change capture name and nits * infinite scroll and cleaning * Add toast when failing to retreive first step input * add icons to dropdown edit input list * remove unused log * Add click outside to all schema pickers * fix click oustide * Fix migrations * solve run button not refreshing properly * Add a capture drawer * change apply args and schema logic * change apply args and schema logic * fix toggle display * fix schema display * improve preview mode * Add first step panel * nit * clean * Add hint for captures * clean * nit * nit * fix script node page height * improve animation on redirecting to capture * improve saved input picker * nit * add Json placeholder * nit * add list animations * delete useless logs * add animated list to captures history and saved inputs * Delete unused component * clean * nit * clean code * improve tab scroll experience * nit * nits * nits * fix script args update * nit * nit: include preview in history inputs in edit mode --------- Co-authored-by: HugoCasa <hugo@casademont.ch> Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com> Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
90 lines
2.5 KiB
TypeScript
90 lines
2.5 KiB
TypeScript
import type { Flow, OpenFlow } from '$lib/gen'
|
|
import { writable, type Writable } from 'svelte/store'
|
|
import { initFlowState, type FlowState } from './flowState'
|
|
import { sendUserToast } from '$lib/toast'
|
|
import { get } from 'svelte/store'
|
|
|
|
export type FlowMode = 'push' | 'pull'
|
|
|
|
export const importFlowStore = writable<Flow | undefined>(undefined)
|
|
|
|
export async function initFlow(
|
|
flow: Flow,
|
|
flowStore: Writable<Flow>,
|
|
flowStateStore: Writable<FlowState>
|
|
) {
|
|
await initFlowState(flow, flowStateStore)
|
|
flowStore.set(flow)
|
|
}
|
|
|
|
export async function copyFirstStepSchema(flowState: FlowState, flowStore: Writable<OpenFlow>) {
|
|
flowStore.update((flow) => {
|
|
const firstModuleId = flow.value.modules[0]?.id
|
|
|
|
if (flowState[firstModuleId] && firstModuleId) {
|
|
flow.schema = structuredClone(flowState[firstModuleId].schema)
|
|
const v = flow.value.modules[0].value
|
|
if (v.type == 'rawscript' || v.type == 'script') {
|
|
Object.keys(v.input_transforms ?? {}).forEach((key) => {
|
|
v.input_transforms[key] = {
|
|
type: 'javascript',
|
|
expr: `flow_input.${key}`
|
|
}
|
|
})
|
|
return flow
|
|
}
|
|
sendUserToast('Only scripts can be used as a input schema', true)
|
|
return flow
|
|
}
|
|
sendUserToast('No first step found', true)
|
|
return flow
|
|
})
|
|
}
|
|
|
|
export async function getFirstStepSchema(flowState: FlowState, flowStore: Writable<OpenFlow>) {
|
|
const flow = get(flowStore)
|
|
const firstModuleId = flow.value.modules[0]?.id
|
|
|
|
if (!firstModuleId || !flowState[firstModuleId]) {
|
|
throw new Error('no first step found')
|
|
}
|
|
|
|
const schema = structuredClone(flowState[firstModuleId].schema)
|
|
const v = flow.value.modules[0].value
|
|
|
|
if (v.type !== 'rawscript' && v.type !== 'script') {
|
|
throw new Error('only scripts can be used as a input schema')
|
|
}
|
|
|
|
const simplifiedModule = {
|
|
id: flow.value.modules[0].id,
|
|
summary: flow.value.modules[0].summary,
|
|
value: {
|
|
type: flow.value.modules[0].value.type,
|
|
...('path' in flow.value.modules[0].value ? { path: flow.value.modules[0].value.path } : {}),
|
|
...('language' in flow.value.modules[0].value
|
|
? { language: flow.value.modules[0].value.language }
|
|
: {})
|
|
}
|
|
}
|
|
|
|
return {
|
|
schema,
|
|
mod: simplifiedModule,
|
|
connectFirstNode: () => {
|
|
Object.keys(v.input_transforms ?? {}).forEach((key) => {
|
|
v.input_transforms[key] = {
|
|
type: 'javascript',
|
|
expr: `flow_input.${key}`
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
export function replaceId(expr: string, id: string, newId: string): string {
|
|
return expr
|
|
.replaceAll(`results.${id}`, `results.${newId}`)
|
|
.replaceAll(`results?.${id}`, `results?.${newId}`)
|
|
}
|