99 lines
3.9 KiB
Python
99 lines
3.9 KiB
Python
# Copyright (c) 2025 Patrick Motsch
|
|
# Flow control node definitions.
|
|
|
|
FLOW_NODES = [
|
|
{
|
|
"id": "flow.ifElse",
|
|
"category": "flow",
|
|
"label": {"en": "If / Else", "de": "Wenn / Sonst", "fr": "Si / Sinon"},
|
|
"description": {"en": "Branch based on condition", "de": "Verzweigung nach Bedingung", "fr": "Branche selon condition"},
|
|
"parameters": [
|
|
{
|
|
"name": "condition",
|
|
"type": "string",
|
|
"required": True,
|
|
"frontendType": "condition",
|
|
"description": {"en": "Condition to evaluate", "de": "Bedingung", "fr": "Condition"},
|
|
},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 2,
|
|
"outputLabels": {"en": ["Yes", "No"], "de": ["Ja", "Nein"], "fr": ["Oui", "Non"]},
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "Transit"}, 1: {"schema": "Transit"}},
|
|
"executor": "flow",
|
|
"meta": {"icon": "mdi-source-branch", "color": "#FF9800"},
|
|
},
|
|
{
|
|
"id": "flow.switch",
|
|
"category": "flow",
|
|
"label": {"en": "Switch", "de": "Switch", "fr": "Switch"},
|
|
"description": {"en": "Multiple branches based on value", "de": "Mehrere Zweige nach Wert", "fr": "Branches multiples selon valeur"},
|
|
"parameters": [
|
|
{
|
|
"name": "value",
|
|
"type": "string",
|
|
"required": True,
|
|
"frontendType": "text",
|
|
"description": {"en": "Value to match", "de": "Zu vergleichender Wert", "fr": "Valeur à comparer"},
|
|
},
|
|
{
|
|
"name": "cases",
|
|
"type": "array",
|
|
"required": False,
|
|
"frontendType": "caseList",
|
|
"description": {"en": "List of cases", "de": "Fälle", "fr": "Cas"},
|
|
},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "Transit"}},
|
|
"executor": "flow",
|
|
"meta": {"icon": "mdi-swap-horizontal", "color": "#FF9800"},
|
|
},
|
|
{
|
|
"id": "flow.loop",
|
|
"category": "flow",
|
|
"label": {"en": "Loop / For Each", "de": "Schleife / Für Jedes", "fr": "Boucle / Pour Chaque"},
|
|
"description": {"en": "Iterate over array items", "de": "Über Array-Elemente iterieren", "fr": "Itérer sur les éléments"},
|
|
"parameters": [
|
|
{
|
|
"name": "items",
|
|
"type": "string",
|
|
"required": True,
|
|
"frontendType": "text",
|
|
"description": {"en": "Path to array (e.g. {{input.items}})", "de": "Pfad zum Array", "fr": "Chemin vers le tableau"},
|
|
},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "LoopItem"}},
|
|
"executor": "flow",
|
|
"meta": {"icon": "mdi-repeat", "color": "#FF9800"},
|
|
},
|
|
{
|
|
"id": "flow.merge",
|
|
"category": "flow",
|
|
"label": {"en": "Merge", "de": "Zusammenführen", "fr": "Fusionner"},
|
|
"description": {"en": "Merge multiple branches", "de": "Mehrere Zweige zusammenführen", "fr": "Fusionner plusieurs branches"},
|
|
"parameters": [
|
|
{
|
|
"name": "mode",
|
|
"type": "string",
|
|
"required": False,
|
|
"frontendType": "select",
|
|
"frontendOptions": {"options": ["first", "all", "append"]},
|
|
"description": {"en": "Merge mode", "de": "Zusammenführungsmodus", "fr": "Mode de fusion"},
|
|
"default": "first",
|
|
},
|
|
],
|
|
"inputs": 2,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}, 1: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "MergeResult"}},
|
|
"executor": "flow",
|
|
"meta": {"icon": "mdi-call-merge", "color": "#FF9800"},
|
|
},
|
|
]
|