feat(frontend): fix trigger when position when a preprocessor is presetn

This commit is contained in:
Faton Ramadani
2024-09-30 19:08:35 +02:00
parent 64ed13663e
commit 8053c927ef
3 changed files with 131 additions and 91 deletions
@@ -173,9 +173,16 @@ export default function graphBuilder(
}
nodes.push(triggerNode)
addEdge('Trigger', 'Input', {
type: 'hiddenedge'
})
if (!!preprocessorModule) {
addEdge('Trigger', preprocessorModule.id, {
type: 'hiddenedge'
})
} else {
addEdge('Trigger', 'Input', {
type: 'hiddenedge'
})
}
}
const resultNode: Node = {
@@ -1,5 +1,7 @@
<script>
<script lang="ts">
import { twMerge } from 'tailwind-merge'
export let disabled: boolean = false
</script>
<button
@@ -7,7 +9,8 @@
class={twMerge(
'bg-surface-secondary hover:bg-surface-hover rounded-md border text-xs',
'w-6 h-6',
'relative center-center'
'relative center-center',
disabled ? 'cursor-not-allowed bg-surface-disabled' : 'cursor-pointer'
)}
>
<slot />
@@ -66,23 +66,25 @@
}
onMount(() => {
loadSchedules()
loadTriggers()
if (!newFlow) {
loadSchedules()
loadTriggers()
}
})
let drawer: Drawer | undefined = undefined
let selectedTab: 'webhooks' | 'mail' | 'routes' | 'schedules' = 'webhooks'
</script>
{#if !newFlow}
{#if isEditor}
{#if isEditor}
{#if !newFlow}
<Drawer bind:this={drawer} size="600px">
<DrawerContent title="Triggers" noPadding on:close={drawer.closeDrawer}>
<Tabs bind:selected={selectedTab}>
<Tab value="webhooks">Webhooks</Tab>
<Tab value="mail">Mail</Tab>
<Tab value="routes">Routes</Tab>
<Tab value="schedules">Schedules</Tab>
<Tab value="webhooks" disabled={newFlow}>Webhooks</Tab>
<Tab value="mail" disabled={newFlow}>Mail</Tab>
<Tab value="routes" disabled={newFlow}>Routes</Tab>
<Tab value="schedules" disabled={newFlow}>Schedules</Tab>
<svelte:fragment slot="content">
{#if selectedTab === 'webhooks'}
@@ -99,11 +101,11 @@
<EmailTriggerPanel token="" scopes={[`run:flow/${path}`]} {path} isFlow={true} />
{/if}
{#if selectedTab === 'routes'}
{#if !newFlow && selectedTab === 'routes'}
<RoutesPanel path={path ?? ''} isFlow={true} bind:triggers />
{/if}
{#if selectedTab === 'schedules'}
{#if !newFlow && selectedTab === 'schedules'}
<RunPageSchedules
isFlow={true}
path={path ?? ''}
@@ -115,85 +117,113 @@
</Tabs>
</DrawerContent>
</Drawer>
<div style={`width: ${NODE.width}px; margin-top: -24px;`}>
<div class="flex flex-row mx-auto w-min">
<div
class="flex flex-row gap-2 px-2 border p-1 rounded-md border-surface-selected bg-surface shadow-md items-center"
>
<div class="flex flex-col">
<div class="flex flex-row items-center text-2xs">
Triggers
{/if}
<div style={`width: ${NODE.width}px; margin-top: -24px;`}>
<div class="flex flex-row mx-auto w-min">
<div
class="flex flex-row gap-2 px-2 border p-1 rounded-md border-surface-selected bg-surface shadow-md items-center"
>
<div class="flex flex-col">
<div class="flex flex-row items-center text-2xs">
Triggers
<Tooltip small wrapperClass="center-center">
The flow can be triggered by webhooks, emails, schedules or routes. Click on the
icons to see the triggers.
</Tooltip>
</div>
<Tooltip small wrapperClass="center-center">
The flow can be triggered by webhooks, emails, schedules or routes. Click on the icons
to see the triggers.
</Tooltip>
</div>
<Popover>
<svelte:fragment slot="text">See default webhooks triggers</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'webhooks'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'webhooks')
}
}}
>
<Webhook size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">See default mail trigger</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'mail'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'mail')
}
}}
>
<Mail size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">See all routes</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'routes'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'routes')
}
}}
>
<TriggerCount count={triggers?.length} />
<Route size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">See all schedules</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'schedules'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'schedule')
}
}}
>
<TriggerCount count={(schedules?.length ?? 0) + (primaryScheduleExists ? 1 : 0)} />
<Calendar size={12} />
</TriggerButton>
</Popover>
</div>
<Popover>
<svelte:fragment slot="text">
{#if newFlow}
Deploy the flow to see webhooks triggers
{:else}
See default webhooks triggers
{/if}
</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'webhooks'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'webhooks')
}
}}
disabled={newFlow}
>
<Webhook size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">
{#if newFlow}
Deploy the flow to see email triggers
{:else}
See all email triggers
{/if}
</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'mail'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'mail')
}
}}
disabled={newFlow}
>
<Mail size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">
{#if newFlow}
Deploy the flow to add routes triggers
{:else}
See all routes triggers
{/if}
</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'routes'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'routes')
}
}}
disabled={newFlow}
>
<TriggerCount count={triggers?.length} />
<Route size={12} />
</TriggerButton>
</Popover>
<Popover>
<svelte:fragment slot="text">
{#if newFlow}
Deploy the flow to add schedules triggers
{:else}
See all schedules triggers
{/if}
</svelte:fragment>
<TriggerButton
on:click={() => {
if (isEditor) {
selectedTab = 'schedules'
drawer?.openDrawer()
} else {
dispatch('triggerDetail', 'schedule')
}
}}
disabled={newFlow}
>
<TriggerCount count={(schedules?.length ?? 0) + (primaryScheduleExists ? 1 : 0)} />
<Calendar size={12} />
</TriggerButton>
</Popover>
</div>
</div>
{/if}
</div>
{/if}