mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-05 00:03:08 +00:00
improve
This commit is contained in:
@@ -82,7 +82,8 @@ export async function createInlineScriptModule(
|
||||
const flowModule: FlowModule = {
|
||||
id,
|
||||
summary,
|
||||
value: { type: 'rawscript', content: code, language, input_transforms: {} }
|
||||
value: { type: 'rawscript', content: code, language, input_transforms: {} },
|
||||
isTrigger: kind === 'trigger'
|
||||
}
|
||||
|
||||
return [flowModule, await loadFlowModuleState(flowModule)]
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
detail.inlineScript
|
||||
)
|
||||
$selectedId = detail.modules[detail.index ?? 0].id
|
||||
console.log('Modules', detail.modules)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,6 +78,8 @@
|
||||
let fullWidth = 0
|
||||
let width = 0
|
||||
|
||||
let forloopEdge: Edge | undefined = undefined
|
||||
|
||||
function layoutNodes(nodes: Node[]): Node[] {
|
||||
let seenId: string[] = []
|
||||
for (const n of nodes) {
|
||||
@@ -260,7 +262,7 @@
|
||||
return { nodes: updatedNodes, edges: updatedEdges }
|
||||
}
|
||||
|
||||
function removeTriggerForLoopNodes(nodes, edges) {
|
||||
function removeForLoopNodes(nodes, edges) {
|
||||
let updatedGraph = {
|
||||
nodes: [...nodes],
|
||||
edges: [...edges]
|
||||
@@ -271,21 +273,6 @@
|
||||
return updatedGraph
|
||||
}
|
||||
|
||||
if (forloopNode?.data?.value?.parentsIds?.length > 0) {
|
||||
console.log('triggerScript', forloopNode?.data?.value?.parentsIds[0])
|
||||
}
|
||||
|
||||
let forloopModules = forloopNode?.data?.value?.modules
|
||||
if (!forloopModules) {
|
||||
return updatedGraph
|
||||
}
|
||||
|
||||
for (let i = 0; i < forloopModules.length; i++) {
|
||||
const module = forloopModules[i]
|
||||
console.log(`Processing module ${i}:`, module)
|
||||
updatedGraph = removeInputNode(updatedGraph.nodes, updatedGraph.edges, module.id)
|
||||
}
|
||||
|
||||
updatedGraph = removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id)
|
||||
|
||||
return updatedGraph
|
||||
@@ -300,6 +287,7 @@
|
||||
if (!forloopNode) {
|
||||
return updatedGraph
|
||||
}
|
||||
forloopEdge = updatedGraph.edges.find((edge) => edge.source === forloopNode.id)
|
||||
return removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id)
|
||||
}
|
||||
|
||||
@@ -315,15 +303,47 @@
|
||||
return removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id)
|
||||
}
|
||||
|
||||
function removeTriggerScriptModule(nodes, edges) {
|
||||
let updatedGraph = {
|
||||
nodes: [...nodes],
|
||||
edges: [...edges]
|
||||
}
|
||||
let triggerScriptModule = updatedGraph.nodes.find((node) => node?.data?.module?.isTrigger)
|
||||
console.log('triggerScriptModule', triggerScriptModule)
|
||||
if (!triggerScriptModule) {
|
||||
return updatedGraph
|
||||
}
|
||||
return removeInputNode(updatedGraph.nodes, updatedGraph.edges, triggerScriptModule.id)
|
||||
}
|
||||
|
||||
function processGraph(graph) {
|
||||
let newGraph = { nodes: graph.nodes, edges: graph.edges }
|
||||
newGraph = removeInputNode(newGraph.nodes, newGraph.edges, 'Input')
|
||||
newGraph = removeTriggerForLoopNodes(newGraph.nodes, newGraph.edges)
|
||||
newGraph = removeForLoopNodes(newGraph.nodes, newGraph.edges)
|
||||
newGraph = removeForLoopStartNodes(newGraph.nodes, newGraph.edges)
|
||||
newGraph = removeForLoopEndNodes(newGraph.nodes, newGraph.edges)
|
||||
newGraph = removeTriggerScriptModule(newGraph.nodes, newGraph.edges)
|
||||
newGraph.edges = replaceEdge(newGraph.edges, forloopEdge)
|
||||
return newGraph
|
||||
}
|
||||
|
||||
function replaceEdge(edges, edge) {
|
||||
if (!edge) {
|
||||
return edges
|
||||
}
|
||||
const schedulePollEdge = edges.find((edge) => edge.source === 'SchedulePoll')
|
||||
if (!schedulePollEdge) {
|
||||
return edges
|
||||
}
|
||||
const targetNode = schedulePollEdge.target
|
||||
edge.source = 'SchedulePoll'
|
||||
edge.target = targetNode
|
||||
edges.push(edge)
|
||||
|
||||
// Remove the original SchedulePoll edge
|
||||
return edges.filter((e) => e !== schedulePollEdge)
|
||||
}
|
||||
|
||||
function updateStores() {
|
||||
if (graph.error) {
|
||||
return
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
import type { GraphEventHandlers } from '../../graphBuilder'
|
||||
import { twMerge } from 'tailwind-merge'
|
||||
import { NODE } from '../../util'
|
||||
import InsertModuleButton from '../../../flows/map/InsertModuleButton.svelte'
|
||||
import type { FlowModule } from '$lib/gen'
|
||||
import MapItem from '../../../flows/map/MapItem.svelte'
|
||||
|
||||
@@ -26,31 +25,24 @@
|
||||
|
||||
console.log('Modules', data.modules)
|
||||
|
||||
let forloopModules: FlowModule[] = []
|
||||
let triggerModule: FlowModule | undefined = undefined
|
||||
let triggerScriptModule: FlowModule | undefined = undefined
|
||||
|
||||
function getSchedulePollModules() {
|
||||
let forloopModule = data.modules.find((mod) => mod.value.type === 'forloopflow')
|
||||
if (forloopModule) {
|
||||
forloopModules = forloopModule.value.modules
|
||||
}
|
||||
console.log('Forloop Modules', forloopModules)
|
||||
if (data.modules.length > 0) {
|
||||
triggerModule = data.modules[0]
|
||||
}
|
||||
console.log('Trigger Module', triggerModule)
|
||||
function getTriggerScriptModule() {
|
||||
triggerScriptModule = data.modules.find((mod) => mod.isTrigger)
|
||||
console.log('Trigger Module', triggerScriptModule)
|
||||
}
|
||||
|
||||
$: getSchedulePollModules()
|
||||
$: getTriggerScriptModule(), data.modules
|
||||
</script>
|
||||
|
||||
<NodeWrapper wrapperClass="!shadow-none">
|
||||
<div
|
||||
class="flex flex-row"
|
||||
style="width: {NODE.width}px; min-height: {NODE.height}px; transform: translate(0, calc({NODE.height}px - {componentHeight}px));"
|
||||
>
|
||||
<button
|
||||
class={twMerge(
|
||||
'flex flex-col gap-2 rounded-sm p-1 border absolute grow w-full',
|
||||
'flex flex-row gap-2 rounded-sm p-2 border absolute grow w-full items-center',
|
||||
$selectedId === 'schedulePoll'
|
||||
? 'outline outline-offset-0 outline-2 outline-slate-500 dark:outline-gray-400'
|
||||
: ''
|
||||
@@ -60,13 +52,16 @@
|
||||
on:mouseenter={() => (hover = true)}
|
||||
on:mouseleave={() => (hover = false)}
|
||||
>
|
||||
{#if triggerModule}
|
||||
<div class="flex flex-row gap-2">
|
||||
<Repeat class="w-4 h-4 text-secondary" />
|
||||
</div>
|
||||
{#if triggerScriptModule}
|
||||
<div
|
||||
class="text-2xs text-secondary font-normal text-center rounded-sm shadow-md w-[80%] border bg-surface"
|
||||
class="text-2xs text-secondary font-normal text-center rounded-sm shrink shadow-md w-full border bg-surface"
|
||||
>
|
||||
<MapItem
|
||||
mod={triggerModule}
|
||||
insertable={true}
|
||||
mod={triggerScriptModule}
|
||||
insertable={false}
|
||||
bgColor={'#ffffff'}
|
||||
modules={data.modules ?? []}
|
||||
moving={''}
|
||||
@@ -81,13 +76,13 @@
|
||||
data.eventHandlers.changeId(e.detail)
|
||||
}}
|
||||
on:move={(e) => {
|
||||
if (triggerModule) {
|
||||
data.eventHandlers.move(triggerModule, data.modules)
|
||||
if (triggerScriptModule) {
|
||||
data.eventHandlers.move(triggerScriptModule, data.modules)
|
||||
}
|
||||
}}
|
||||
on:newBranch={(e) => {
|
||||
if (triggerModule) {
|
||||
data.eventHandlers.newBranch(triggerModule)
|
||||
if (triggerScriptModule) {
|
||||
data.eventHandlers.newBranch(triggerScriptModule)
|
||||
}
|
||||
}}
|
||||
on:select={(e) => {
|
||||
@@ -95,43 +90,10 @@
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{:else}
|
||||
<div> loading ... </div>
|
||||
{/if}
|
||||
{#each forloopModules as mod}
|
||||
<div class="text-2xs text-secondary font-normal w-[80%] ml-auto shadow-sm">
|
||||
<MapItem
|
||||
{mod}
|
||||
insertable={true}
|
||||
bgColor={'#ffffff'}
|
||||
modules={data.modules ?? []}
|
||||
moving={''}
|
||||
flowJobs={undefined}
|
||||
on:delete={(e) => {
|
||||
data.eventHandlers.delete(e.detail, '')
|
||||
}}
|
||||
on:insert={(e) => {
|
||||
data.eventHandlers.insert(e.detail)
|
||||
}}
|
||||
on:changeId={(e) => {
|
||||
data.eventHandlers.changeId(e.detail)
|
||||
}}
|
||||
on:move={(e) => {
|
||||
data.eventHandlers.move(mod, data.modules)
|
||||
}}
|
||||
on:newBranch={(e) => {
|
||||
data.eventHandlers.newBranch(mod)
|
||||
}}
|
||||
on:select={(e) => {
|
||||
data.eventHandlers.select(e.detail)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{/each}
|
||||
|
||||
<div class="text-2xs text-secondary font-normal w-[80%] ml-auto">
|
||||
<div class="flex justify-center items-center w-full">
|
||||
<InsertModuleButton />
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
class="absolute -top-[10px] -right-[10px] rounded-full h-[20px] w-[20px] trash center-center text-secondary
|
||||
outline-[1px] outline dark:outline-gray-500 outline-gray-300 bg-surface duration-150 hover:bg-red-400 hover:text-white
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
data?.eventHandlers.insert({
|
||||
modules: data.modules,
|
||||
index: 0,
|
||||
kind: e.detail.kind,
|
||||
kind: 'trigger',
|
||||
inlineScript: e.detail.inlineScript
|
||||
})
|
||||
data?.eventHandlers.insert({
|
||||
|
||||
Reference in New Issue
Block a user