feat(frontend): wip

This commit is contained in:
Faton Ramadani
2024-08-15 17:16:34 +02:00
parent 64150cf3ec
commit 5c47ede54e
7 changed files with 148 additions and 2 deletions

View File

@@ -225,7 +225,7 @@
const viewport = writable<Viewport>({
x: 0,
y: 5,
y: 100,
zoom: 1
})

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import VirtualItem from '$lib/components/flows/map/VirtualItem.svelte'
import { ExternalLink, Wand2 } from 'lucide-svelte'
import { Calendar, ExternalLink, Split, Wand2, Webhook } from 'lucide-svelte'
import NodeWrapper from './NodeWrapper.svelte'
import Popover from '$lib/components/Popover.svelte'
import type { GraphEventHandlers } from '../../graphBuilder'
@@ -12,6 +12,7 @@
import { copilotInfo } from '$lib/stores'
import { base } from '$lib/base'
import type { Writable } from 'svelte/store'
import TriggersWrapper from '../triggers/TriggersWrapper.svelte'
export let data: {
insertable: boolean
@@ -30,6 +31,10 @@
</script>
<NodeWrapper enableTargetHandle={false} let:darkMode>
<div class="absolute -top-32 left-1/2 transform -translate-x-1/2 z-10">
<TriggersWrapper />
</div>
{#if data.insertable && !data.disableAi}
<div class="absolute -top-10 left-1/2 transform -translate-x-1/2 z-10">
<Popover>

View File

@@ -0,0 +1,5 @@
<div
class="bg-surface hover:bg-surface-hover rounded-full border center-center text-xs relative w-8 h-8 flex flex-row gap-2"
>
<slot />
</div>

View File

@@ -0,0 +1,9 @@
<script lang="ts">
export let count: number = 0
</script>
<div class="absolute -right-1 -top-1">
<div class="bg-blue-500 rounded-full w-4 h-4 flex center-center text-white text-xs">
{count}
</div>
</div>

View File

@@ -0,0 +1,36 @@
<script lang="ts">
import { Calendar, Plus, Split, Webhook } from 'lucide-svelte'
import { getStateColor } from '../../util'
import TriggerButton from './TriggerButton.svelte'
export let darkMode: boolean = false
</script>
<div
class="text-xs border-x border-t py-1 px-2 rounded-t-sm w-min border-surface-selected"
style={`background-color: ${getStateColor(undefined, darkMode)};`}
>
Triggers
</div>
<div
class="flex flex-row gap-4 border p-2 rounded-b-lg rounded-r-lg border-surface-selected relative"
>
<TriggerButton>
<Webhook size={14} />
</TriggerButton>
<TriggerButton>
<Calendar size={14} />
</TriggerButton>
<TriggerButton>
<Split size={14} />
</TriggerButton>
<div class="absolute -right-10 top-1/2 -translate-y-1/2">
<div
class="bg-surface hover:bg-surface-hover rounded-full border center-center text-xs relative w-6 h-6 flex flex-row gap-2"
>
<Plus size={14} />
</div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
export function load() {
return {
stuff: { title: 'Routing' }
}
}

View File

@@ -0,0 +1,86 @@
<script lang="ts">
import CenteredPage from '$lib/components/CenteredPage.svelte'
import { Badge, Button } from '$lib/components/common'
import PageHeader from '$lib/components/PageHeader.svelte'
import DataTable from '$lib/components/table/DataTable.svelte'
import Head from '$lib/components/table/Head.svelte'
import Cell from '$lib/components/table/Cell.svelte'
import { Plus } from 'lucide-svelte'
const workers: {
method: string
route: string
path: string
}[] = [
{
method: 'GET',
route: '/api/v1/{:id}/flows',
path: 'flows'
},
{
method: 'POST',
route: '/api/v1/flows',
path: 'flows'
},
{
method: 'GET',
route: '/api/v1/flows/:id',
path: 'flows'
},
{
method: 'PUT',
route: '/api/v1/flows/:id',
path: 'flows'
},
{
method: 'DELETE',
route: '/api/v1/flows/:id',
path: 'flows'
}
]
</script>
<CenteredPage>
<PageHeader
title="Routing"
tooltip="Trigger Scripts and Flows according to a cron schedule"
documentationLink="https://www.windmill.dev/docs/core_concepts/routing"
>
<Button size="md" startIcon={{ icon: Plus }} on:click={() => {}}>New&nbsp;route</Button>
</PageHeader>
<div class="w-full h-full flex flex-col">
<DataTable>
<Head>
<tr>
<Cell head first class="w-24">Method</Cell>
<Cell head>Path</Cell>
<Cell head last>Flow/Script</Cell>
</tr>
</Head>
<tbody class="divide-y">
{#each workers as x}
<tr>
<Cell first class="!w-24">
<select value={x.method} class="!w-24">
<option value="GET" class="!text-green-500">GET</option>
<option value="POST">POST</option>
<option value="PUT">PUT</option>
<option value="DELETE">DELETE</option>
</select>
</Cell>
<Cell>
<Badge small>
{x.route}
</Badge>
</Cell>
<Cell last>
<Badge small>
{x.path}
</Badge>
</Cell>
</tr>
{/each}
</tbody>
</DataTable>
</div>
</CenteredPage>