mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-05 16:03:47 +00:00
* migrate postgresEditorInner to svelte 5 syntaxe
* Add postgress
* add postgres capture section
* migrate kafka trigger config to svelte 5
* use snippets in kafka config
* feat: Update KafkaTriggerEditorInner with editMode, hideTarget and other props from WebsocketTriggerEditorInner
* feat: Create KafkaTriggerPanelV2 following WebsocketTriggersPanelV2 model
* feat: Integrate KafkaTriggerPanelV2 into TriggersEditorV2
* feat: add kafka capture panel
* use svelte 5 syntaxe for nats config
* use snippet in nats config
* feat: add editMode for nats trigger config
* fix import
* create NatsTriggerPanelV2.svelte for NATS trigger
* integrate NatsTriggerPanelV2 into TriggersEditorV2.svelte
* Create NatsCapture.svelte and update CaptureWrapperV2.svelte to use it
* migrate MqttTriggerEditorInner to svelte 5
* add mqtt trigger to new trigger panel
* migrate SqsTriggerEditorInner to svelte 5 syntaxe
* feat: add sqs triggers panel
* Add badge to MQTT config section
* remove unnecessary binding
* add gcp to the trigger list
* add prop size to GCP icon
* add gcp trigger utils
* migrate GcpTriggerEditorInner to svelte5 syntaxe
* add gcp trigger panel
* Revert "add gcp trigger utils"
This reverts commit 58f0df9985.
* fix type error
* add gcp to trigger bar
* add capture gcp panel
* add schedule poll panel
* feat: add trigger table horizontal bar
* add http trigger label
* make triggerbar vertical
* nit
* add trigger delete button for drafts
* enable edit from table for all triggers
* fix automatic edit mode for draft trigger
* fix proxy dispatching issue
* fix primary star positionning
* fix apply args to preprocessor
* automatically load bigpayloads
* clean capture wrapper code
* nit
* fix capture config not passed
* use Url component
* remove unused prop captureTable
* use new schedule panel for scheduled poll
* update triggersWrapperV2
* improve webhook capture panel
* remove debug log
* save draft with flow draft
* add path in draft label when available
* remove flowcard title
* use trigger label for trigger badge dropdown
* break from table to sidebar at 1000px
* remove triggers badge allways show sidebar behavior
* fix multiple primary addition
* improve primary schedule deploy logic
* remove debug logs
* gather imports
* add path for draft primary schedule
* handle redirection
* Add confirmation modal to deploy triggers
* remove debug log
* Save draft route trigger on deploy
* Allow draft for deployed triggers
* add component trigger editor toolbar
* improve update trigger utility function
* Add reset button for deployed draft triggers
* allow draft trigger for kafka triggers
* allow draft trigger for websocket triggers
* allow draft trigger for postgres triggers
* Add toggle to trigger toolbar
* allow draft for nats triggers
* allow draft for mqtt triggers
* allow draft sqs triggers
* allow draft for gcp triggers
* revert changes on the schedule editor
* update all triggers to use the same toolbar
* remove debug logs
* remove PrimarySchedule Panel and merge primary schedule logic with all triggers
* load schema from draft when editing a draft schedule
* prevent overflow in trigger table
* fix path saving for draft schedule
* fix trigger badge dropdown display
* get draft status from trigger
* remove unused event
* nit
* Add deploy badge to trigger
* replace checkbox with toggle for the modal
* fix selection of triggers with draft
* fix nit
* fix nit
* add missing config for loading schedule
* save schedule from config
* save http route from cfg
* save websocket trigger from cfg
* save postgres trigger from cfg
* save kafka trigger from cfg
* save sqs trigger from cfg
* save nats trigger from cfg
* save mqtt triggers from cfg
* save gcp trigger from config
* nit
* fix path update when editing a trigger
* remove unused saveCb
* fix trigger node navigation
* remove debug log
* add min size for trigger editor capture panel
* Integrate new triggers Editor to script builder
* remove previous triggersEdior page
* Remove former triggers Editor
* Migrate detail page to new triggers editor UI
* Remove unused dev TriggersBadge
* migrate triggers to V2
* Migrate capture components to V2
* improve triggers badge UI
* fix trigger panel with scheduled poll
* fix auto select all draft on deploy
* simplify permission check
* Add custom label to every trigger editor
* fix draft not deleting when saving triggers and add option to deploy now
* remove unused utility function
* fix triggers loading from draft
* make advanced route section collapsible
* handle subflow triggers display
* center triggers badge
* fix panel redirection when adding a new triggers from node
* Remove unnecessary alerts
* Fix proxy issue in schedule editor inner
* Remove unused schedule pages
* nit
* nit cli panel
* Migrate selectedTrigger store to V2
* handle extra header button for trigger editor panel
* prevent reload on toggle schedule enable
* remove unused utility function
* remove primaryScheduleStore
* handle triggerCount with drafts
* fix editing in Schedule Poll Mode
* Remove triggers default value context store
* fix triggers label max width
* Remove dbg logs
* improve no trigger selected message
* nit
* Do not show enable toggle for http triggers
* Adapt ui to dark mode
* nit
* remove captureOn context value
* improve dark mode
* fix nit
* fix merge issue
* nit
* nit
* fix schedule permission initialisation
* nit
* Disable deploy now if needed
* Improve utilitu function for handling with triggers
* improve trigger badge look
* fix kafka
* nit
* fix schedule display
* fix toggling edit mode
* fix edit/cancel edit
* nit
* prevent capture config update in editor
* migrate webhook panel to svelte 5
* fix postgres trigger creation
* fix bind issue in nats triggers
* fix modal triggers message flow/script
* fix apply args for script
* fix gcp triggers update when creating
* fix gcp capture
* nits
* add loading state for deploying all triggers
* remove default mqtt
* update base_endpoint for gcp
* nit
* fix
* fix
* remove base endpoint
* add catch in case of error while creating a trigger
* Add animation is capture panels
* show preprocessor extra when there is a preprocessor
* Add loading state for captures
* add missing fields for capture
* migrate URL to svelte 5
* show icon by default in confirmation modal
* do not show draft triggers in detail badge list
* migrate to new captures
* revert unwanted change
* migrate to preprocesor v2
* nit
* fix email capture
* nits and fix
* nits
* update repo ref
* Feat: auto save draft instad of save button
* use triggerIndex as selection
* Add modified tag to triggers
* Update trigger modal
* fix trigger node select
* fix schedule page
* migrate TriggersEditor to svelte 5
* remove unused props
* fix schedule editor init
* fix store reactivity issue
* use class instead of store for triggers context
* nit
* nit
* fix schedule init
* Add postgres error message
* nit
* fix deploy new script
* load schema in shedule editor
* improve transitions
* Improve capture indication
* revert unwanted changes
* improve update
* nit
* migrate captures section to svelte 5
* only show trash on hover triggers row
* Add token count
* improve trigger display
* Add relevent naming for triggers
* Use wrapper div insted of width binding in flow card
* add trigger sorting
* nit
* handle reload from URL for draft triggers
* dirty script and flow draft with draft triggers
* handle cloud hosted triggers
* nit
* nit
* fix nats reactivity
* remove debug log
* handle deployed draft triggers in the flow editor
* Add warning for event stream capture
---------
Co-authored-by: dieriba <dieriba.pro@gmail.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
155 lines
4.5 KiB
Svelte
155 lines
4.5 KiB
Svelte
<script lang="ts">
|
|
import { getContext, onMount } from 'svelte'
|
|
import type { FlowEditorContext } from '../types'
|
|
import FlowModuleWrapper from './FlowModuleWrapper.svelte'
|
|
import FlowSettings from './FlowSettings.svelte'
|
|
import FlowInput from './FlowInput.svelte'
|
|
import FlowFailureModule from './FlowFailureModule.svelte'
|
|
import FlowConstants from './FlowConstants.svelte'
|
|
import type { FlowModule, Flow } from '$lib/gen'
|
|
import { initFlowStepWarnings } from '../utils'
|
|
import { dfs } from '../dfs'
|
|
import FlowPreprocessorModule from './FlowPreprocessorModule.svelte'
|
|
import type { TriggerContext } from '$lib/components/triggers'
|
|
import { insertNewPreprocessorModule } from '../flowStateUtils'
|
|
import TriggersEditor from '../../triggers/TriggersEditor.svelte'
|
|
import { handleSelectTriggerFromKind, type Trigger } from '$lib/components/triggers/utils'
|
|
|
|
export let noEditor = false
|
|
export let enableAi = false
|
|
export let newFlow = false
|
|
export let disabledFlowInputs = false
|
|
export let savedFlow:
|
|
| (Flow & {
|
|
draft?: Flow | undefined
|
|
})
|
|
| undefined = undefined
|
|
export let onDeployTrigger: (trigger: Trigger) => void = () => {}
|
|
const {
|
|
selectedId,
|
|
flowStore,
|
|
flowStateStore,
|
|
flowInputsStore,
|
|
pathStore,
|
|
initialPathStore,
|
|
fakeInitialPath,
|
|
previewArgs,
|
|
flowInputEditorState
|
|
} = getContext<FlowEditorContext>('FlowEditorContext')
|
|
|
|
const { showCaptureHint, triggersState, triggersCount } =
|
|
getContext<TriggerContext>('TriggerContext')
|
|
function checkDup(modules: FlowModule[]): string | undefined {
|
|
let seenModules: string[] = []
|
|
for (const m of modules) {
|
|
if (seenModules.includes(m.id)) {
|
|
console.error(`Duplicate module id: ${m.id}`)
|
|
return m.id
|
|
}
|
|
seenModules.push(m.id)
|
|
}
|
|
}
|
|
|
|
async function initWarnings() {
|
|
for (const module of $flowStore?.value?.modules) {
|
|
if (!module) {
|
|
continue
|
|
}
|
|
|
|
if (!$flowInputsStore) {
|
|
$flowInputsStore = {}
|
|
}
|
|
|
|
$flowInputsStore[module?.id] = {
|
|
flowStepWarnings: await initFlowStepWarnings(
|
|
module.value,
|
|
$flowStateStore?.[module?.id]?.schema,
|
|
dfs($flowStore.value.modules, (fm) => fm.id)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
onMount(() => {
|
|
initWarnings()
|
|
})
|
|
</script>
|
|
|
|
{#if $selectedId?.startsWith('settings')}
|
|
<FlowSettings {noEditor} />
|
|
{:else if $selectedId === 'Input'}
|
|
<FlowInput
|
|
{noEditor}
|
|
disabled={disabledFlowInputs}
|
|
on:openTriggers={(ev) => {
|
|
$selectedId = 'triggers'
|
|
handleSelectTriggerFromKind(triggersState, triggersCount, savedFlow?.path, ev.detail.kind)
|
|
showCaptureHint.set(true)
|
|
}}
|
|
on:applyArgs
|
|
/>
|
|
{:else if $selectedId === 'Result'}
|
|
<p class="p-4 text-secondary">The result of the flow will be the result of the last node.</p>
|
|
{:else if $selectedId === 'constants'}
|
|
<FlowConstants {noEditor} />
|
|
{:else if $selectedId === 'failure'}
|
|
<FlowFailureModule {noEditor} savedModule={savedFlow?.value.failure_module} />
|
|
{:else if $selectedId === 'preprocessor'}
|
|
<FlowPreprocessorModule {noEditor} savedModule={savedFlow?.value.preprocessor_module} />
|
|
{:else if $selectedId === 'triggers'}
|
|
<TriggersEditor
|
|
on:applyArgs
|
|
on:addPreprocessor={async () => {
|
|
await insertNewPreprocessorModule(flowStore, flowStateStore, {
|
|
language: 'bun'
|
|
})
|
|
$selectedId = 'preprocessor'
|
|
}}
|
|
on:updateSchema={(e) => {
|
|
const { payloadData, redirect } = e.detail
|
|
if (payloadData) {
|
|
$previewArgs = JSON.parse(JSON.stringify(payloadData))
|
|
}
|
|
if (redirect) {
|
|
$selectedId = 'Input'
|
|
$flowInputEditorState.selectedTab = 'captures'
|
|
$flowInputEditorState.payloadData = payloadData
|
|
}
|
|
}}
|
|
on:testWithArgs
|
|
currentPath={$pathStore}
|
|
initialPath={$initialPathStore}
|
|
{fakeInitialPath}
|
|
{noEditor}
|
|
newItem={newFlow}
|
|
isFlow={true}
|
|
hasPreprocessor={!!$flowStore.value.preprocessor_module}
|
|
canHavePreprocessor={true}
|
|
args={$previewArgs}
|
|
isDeployed={savedFlow && !savedFlow?.draft_only}
|
|
schema={$flowStore.schema}
|
|
{onDeployTrigger}
|
|
/>
|
|
{:else if $selectedId.startsWith('subflow:')}
|
|
<div class="p-4"
|
|
>Selected step is witin an expanded subflow and is not directly editable in the flow editor</div
|
|
>
|
|
{:else}
|
|
{@const dup = checkDup($flowStore.value.modules)}
|
|
{#if dup}
|
|
<div class="text-red-600 text-xl p-2">There are duplicate modules in the flow at id: {dup}</div>
|
|
{:else}
|
|
{#key $selectedId}
|
|
{#each $flowStore.value.modules as flowModule, index (flowModule.id ?? index)}
|
|
<FlowModuleWrapper
|
|
{noEditor}
|
|
bind:flowModule={$flowStore.value.modules[index]}
|
|
previousModule={$flowStore.value.modules[index - 1]}
|
|
{enableAi}
|
|
savedModule={savedFlow?.value.modules[index]}
|
|
/>
|
|
{/each}
|
|
{/key}
|
|
{/if}
|
|
{/if}
|