Files
windmill/frontend/src/lib/components/ResourceEditorDrawer.svelte
HugoCasa fcb6ced8df feat: captures (#4807)
* 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 workflow_dispatch to build

* add workflow_dispatch to build

* better capture UI

* 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

* improve migration + http capture fixes

* fix sqlx

* update ee ref

---------

Co-authored-by: Guilhem <guilhemlemouel@gmail.com>
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2025-01-06 12:07:09 +01:00

78 lines
1.8 KiB
Svelte

<script lang="ts">
import { Button, Drawer } from './common'
import DrawerContent from './common/drawer/DrawerContent.svelte'
import { Loader2, Save } from 'lucide-svelte'
let drawer: Drawer
let canSave = true
let resource_type: string | undefined = undefined
let defaultValues: Record<string, any> | undefined = undefined
let resourceEditor: { editResource: () => void; createResource: () => void } | undefined =
undefined
let path: string | undefined = undefined
let newResource = false
export async function initEdit(p: string): Promise<void> {
resource_type = undefined
newResource = false
path = p
drawer.openDrawer?.()
}
export async function initNew(
resourceType: string,
nDefaultValues?: Record<string, any>
): Promise<void> {
newResource = true
path = undefined
resource_type = resourceType
defaultValues = nDefaultValues
drawer.openDrawer?.()
}
let mode: 'edit' | 'new' = newResource ? 'new' : 'edit'
$: path ? (mode = 'edit') : (mode = 'new')
</script>
<Drawer bind:this={drawer} size="800px">
<DrawerContent
title={mode == 'edit' ? 'Edit ' + path : 'Add a resourcee'}
on:close={drawer.closeDrawer}
>
{#await import('./ResourceEditor.svelte')}
<Loader2 class="animate-spin" />
{:then Module}
<Module.default
{newResource}
{path}
{resource_type}
{defaultValues}
on:refresh
bind:this={resourceEditor}
bind:canSave
/>
{/await}
<svelte:fragment slot="actions">
<Button
startIcon={{ icon: Save }}
on:click={() => {
if (mode == 'edit') {
resourceEditor?.editResource()
} else {
resourceEditor?.createResource()
}
drawer.closeDrawer()
}}
disabled={!canSave}
>
Save
</Button>
</svelte:fragment>
</DrawerContent>
</Drawer>