mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-30 00:16:53 +00:00
111 lines
3.6 KiB
Svelte
111 lines
3.6 KiB
Svelte
<script lang="ts">
|
|
import { Tabs, Tab, TabContent } from '$lib/components/common'
|
|
import SplitPanesWrapper from '$lib/components/splitPanes/SplitPanesWrapper.svelte'
|
|
import { Pane, Splitpanes } from 'svelte-splitpanes'
|
|
import DetailPageDetailPanel from './DetailPageDetailPanel.svelte'
|
|
import type { ScheduleTrigger, TriggerContext } from '../triggers'
|
|
import { setContext } from 'svelte'
|
|
import { writable, type Writable } from 'svelte/store'
|
|
import type { TriggersCount } from '$lib/gen'
|
|
import DetailPageTriggerPanel from './DetailPageTriggerPanel.svelte'
|
|
|
|
export let isOperator: boolean = false
|
|
export let flow_json: any | undefined = undefined
|
|
export let selected: string
|
|
export let triggersCount: Writable<TriggersCount | undefined>
|
|
|
|
let mobileTab: 'form' | 'detail' = 'form'
|
|
|
|
let clientWidth = window.innerWidth
|
|
|
|
const primaryScheduleStore = writable<ScheduleTrigger | undefined | false>(undefined)
|
|
const selectedTriggerStore = writable<
|
|
'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' | 'scheduledPoll'
|
|
>('webhooks')
|
|
|
|
const simplifiedPoll = writable(false)
|
|
setContext<TriggerContext>('TriggerContext', {
|
|
selectedTrigger: selectedTriggerStore,
|
|
primarySchedule: primaryScheduleStore,
|
|
triggersCount,
|
|
simplifiedPoll
|
|
})
|
|
</script>
|
|
|
|
<main class="h-screen w-full" bind:clientWidth>
|
|
{#if clientWidth >= 768}
|
|
<div class="h-full w-full">
|
|
<slot name="header" />
|
|
<SplitPanesWrapper>
|
|
<Splitpanes>
|
|
<Pane size={65} minSize={50}>
|
|
<slot name="form" />
|
|
</Pane>
|
|
<Pane size={35} minSize={15}>
|
|
<DetailPageDetailPanel
|
|
simplfiedPoll={$simplifiedPoll}
|
|
bind:triggerSelected={$selectedTriggerStore}
|
|
bind:selected
|
|
{isOperator}
|
|
{flow_json}
|
|
>
|
|
<slot slot="webhooks" name="webhooks" />
|
|
<slot slot="routes" name="routes" />
|
|
<slot slot="websockets" name="websockets" />
|
|
<slot slot="emails" name="emails" />
|
|
<slot slot="schedules" name="schedules" />
|
|
<slot slot="cli" name="cli" />
|
|
<slot slot="script" name="script" />
|
|
<slot slot="save_inputs" name="save_inputs" />
|
|
<slot slot="flow_step" name="flow_step" />
|
|
</DetailPageDetailPanel>
|
|
</Pane>
|
|
</Splitpanes>
|
|
</SplitPanesWrapper>
|
|
</div>
|
|
{:else}
|
|
<div class="h-full w-full">
|
|
<slot name="header" />
|
|
<Tabs bind:selected={mobileTab}>
|
|
<Tab value="form">Run form</Tab>
|
|
<Tab value="saved_inputs">Saved Inputs</Tab>
|
|
{#if !isOperator}
|
|
<Tab value="triggers">Triggers</Tab>
|
|
{/if}
|
|
{#if !flow_json}
|
|
<Tab value="script">Script</Tab>
|
|
{/if}
|
|
|
|
<svelte:fragment slot="content">
|
|
<div class="h-full">
|
|
<TabContent value="form" class="flex flex-col flex-1 h-full">
|
|
<slot name="form" />
|
|
</TabContent>
|
|
|
|
<TabContent value="saved_inputs" class="flex flex-col flex-1 h-full">
|
|
<slot name="save_inputs" />
|
|
</TabContent>
|
|
<TabContent value="triggers" class="flex flex-col flex-1 h-full">
|
|
<DetailPageTriggerPanel
|
|
simplfiedPoll={$simplifiedPoll}
|
|
bind:triggerSelected={$selectedTriggerStore}
|
|
>
|
|
<slot slot="webhooks" name="webhooks" />
|
|
<slot slot="routes" name="routes" />
|
|
<slot slot="script" name="script" />
|
|
<slot slot="websockets" name="websockets" />
|
|
<slot slot="emails" name="emails" />
|
|
<slot slot="schedules" name="schedules" />
|
|
<slot slot="cli" name="cli" />
|
|
</DetailPageTriggerPanel>
|
|
</TabContent>
|
|
<TabContent value="script" class="flex flex-col flex-1 h-full">
|
|
<slot name="script" />
|
|
</TabContent>
|
|
</div>
|
|
</svelte:fragment>
|
|
</Tabs>
|
|
</div>
|
|
{/if}
|
|
</main>
|