windmill-components 1.52.0 → 1.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ApiConnectForm.svelte +42 -7
- package/components/ApiConnectForm.svelte.d.ts +2 -1
- package/components/AppConnect.svelte +19 -11
- package/components/ArgInfo.svelte +6 -2
- package/components/ArgInput.svelte +9 -3
- package/components/ArgInput.svelte.d.ts +1 -0
- package/components/CenteredPage.svelte +1 -1
- package/components/CenteredPage.svelte.d.ts +6 -2
- package/components/CronInput.svelte +1 -1
- package/components/DisplayResult.svelte +39 -2
- package/components/Dropdown.svelte +73 -100
- package/components/Dropdown.svelte.d.ts +1 -3
- package/components/Editor.svelte +16 -5
- package/components/EditorBar.svelte +69 -63
- package/components/EditorBar.svelte.d.ts +1 -0
- package/components/FlowBuilder.svelte +74 -68
- package/components/FlowGraphViewer.svelte +136 -34
- package/components/FlowGraphViewer.svelte.d.ts +1 -0
- package/components/FlowJobResult.svelte +6 -1
- package/components/FlowJobResult.svelte.d.ts +2 -0
- package/components/FlowMetadata.svelte +4 -2
- package/components/FlowPreviewContent.svelte +10 -23
- package/components/FlowPreviewContent.svelte.d.ts +3 -0
- package/components/FlowStatusViewer.svelte +155 -30
- package/components/FlowStatusViewer.svelte.d.ts +4 -2
- package/components/FlowViewer.svelte +3 -3
- package/components/FlowViewer.svelte.d.ts +1 -0
- package/components/HighlightCode.svelte +1 -1
- package/components/HighlightCode.svelte.d.ts +1 -0
- package/components/IconedPath.svelte +16 -6
- package/components/IconedPath.svelte.d.ts +2 -0
- package/components/IconedResourceType.svelte +5 -2
- package/components/InputTransformForm.svelte +92 -73
- package/components/InviteGlobalUser.svelte +2 -2
- package/components/InviteGlobalUser.svelte.d.ts +1 -1
- package/components/InviteUser.svelte +20 -6
- package/components/InviteUser.svelte.d.ts +1 -1
- package/components/ItemPicker.svelte +38 -27
- package/components/ItemPicker.svelte.d.ts +2 -1
- package/components/JobStatus.svelte +19 -13
- package/components/LogViewer.svelte +11 -3
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModuleStatus.svelte +38 -0
- package/components/ModuleStatus.svelte.d.ts +18 -0
- package/components/ObjectResourceInput.svelte +8 -52
- package/components/ObjectResourceInput.svelte.d.ts +0 -1
- package/components/Path.svelte +2 -2
- package/components/Path.svelte.d.ts +1 -1
- package/components/Popover.svelte +7 -1
- package/components/Popover.svelte.d.ts +3 -1
- package/components/ResourceEditor.svelte +57 -29
- package/components/ResourcePicker.svelte +12 -2
- package/components/SchemaEditor.svelte +2 -1
- package/components/SchemaForm.svelte +2 -1
- package/components/SchemaForm.svelte.d.ts +1 -0
- package/components/SchemaModal.svelte +11 -10
- package/components/ScriptBuilder.svelte +207 -192
- package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/components/ScriptEditor.svelte +49 -45
- package/components/ScriptEditor.svelte.d.ts +1 -0
- package/components/ScriptPicker.svelte.d.ts +1 -1
- package/components/ScriptSchema.svelte +11 -30
- package/components/ScriptSchema.svelte.d.ts +0 -1
- package/components/SharedBadge.svelte +2 -3
- package/components/SimpleEditor.svelte +6 -7
- package/components/SimpleEditor.svelte.d.ts +1 -0
- package/components/Star.svelte +2 -2
- package/components/SuperadminSettings.svelte +9 -38
- package/components/TableSimple.svelte +1 -1
- package/components/TestJobLoader.svelte +20 -8
- package/components/ToggleHubWorkspace.svelte +16 -0
- package/components/ToggleHubWorkspace.svelte.d.ts +16 -0
- package/components/Tooltip.svelte.d.ts +1 -1
- package/components/VariableEditor.svelte +22 -9
- package/components/apps/CreateApp.svelte +5 -2
- package/components/apps/CreateApp.svelte.d.ts +1 -1
- package/components/apps/components/DisplayComponent.svelte +7 -14
- package/components/apps/components/DisplayComponent.svelte.d.ts +3 -2
- package/components/apps/components/buttons/AppButton.svelte +34 -27
- package/components/apps/components/buttons/AppButton.svelte.d.ts +6 -6
- package/components/apps/components/dataDisplay/AppBarChart.svelte +33 -9
- package/components/apps/components/dataDisplay/AppBarChart.svelte.d.ts +3 -5
- package/components/apps/components/dataDisplay/AppPieChart.svelte +33 -12
- package/components/apps/components/dataDisplay/AppPieChart.svelte.d.ts +3 -5
- package/components/apps/components/dataDisplay/AppTable.svelte +27 -30
- package/components/apps/components/dataDisplay/AppTable.svelte.d.ts +4 -8
- package/components/apps/components/dataDisplay/AppText.svelte +16 -9
- package/components/apps/components/dataDisplay/AppText.svelte.d.ts +3 -2
- package/components/apps/components/dataDisplay/app.md +49 -0
- package/components/apps/components/form/AppForm.svelte +50 -0
- package/components/apps/components/form/AppForm.svelte.d.ts +25 -0
- package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
- package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -1
- package/components/apps/components/helpers/InputValue.svelte +15 -6
- package/components/apps/components/helpers/InputValue.svelte.d.ts +2 -2
- package/components/apps/components/helpers/NonRunnableComponent.svelte +20 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +21 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +36 -30
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +6 -7
- package/components/apps/components/helpers/RunnableWrapper.svelte +32 -0
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +26 -0
- package/components/apps/components/numberInputs/AppNumberInput.svelte +36 -0
- package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +20 -0
- package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -2
- package/components/apps/components/selectInputs/AppCheckbox.svelte.d.ts +2 -2
- package/components/apps/components/textInputs/AppTextInput.svelte +21 -0
- package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +20 -0
- package/components/apps/editor/AppEditor.svelte +66 -55
- package/components/apps/editor/AppEditorHeader.svelte +4 -4
- package/components/apps/editor/AppPreview.svelte +42 -0
- package/components/apps/editor/AppPreview.svelte.d.ts +17 -0
- package/components/apps/editor/ComponentEditor.svelte +41 -20
- package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentHeader.svelte +28 -0
- package/components/apps/editor/ComponentHeader.svelte.d.ts +20 -0
- package/components/apps/editor/GridEditor.svelte +54 -5
- package/components/apps/editor/GridEditor.svelte.d.ts +1 -1
- package/components/apps/editor/RecomputeAllComponents.svelte +28 -0
- package/components/apps/editor/RecomputeAllComponents.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +94 -26
- package/components/apps/editor/componentsPanel/ComponentList.svelte.d.ts +1 -1
- package/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +2 -6
- package/components/apps/editor/componentsPanel/componentDefaultProps.js +1 -5
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -1
- package/components/apps/editor/componentsPanel/data.js +191 -76
- package/components/apps/editor/contextPanel/ContextPanel.svelte +56 -48
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +67 -0
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +55 -0
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +154 -129
- package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte +70 -0
- package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -6
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +55 -87
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +3 -4
- package/components/apps/editor/settingsPanel/PickFlow.svelte +3 -2
- package/components/apps/editor/settingsPanel/PickFlow.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/PickInlineScript.svelte +3 -3
- package/components/apps/editor/settingsPanel/Recompute.svelte +46 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/StaticInputEditor.svelte +31 -14
- package/components/apps/editor/settingsPanel/StaticInputEditor.svelte.d.ts +3 -3
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +17 -0
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/TableActionLabel.svelte +10 -0
- package/components/apps/editor/settingsPanel/TableActionLabel.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/TableActions.svelte +13 -9
- package/components/apps/editor/settingsPanel/UserInputEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +3 -2
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +53 -0
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +21 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +98 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +81 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte.d.ts +20 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +81 -0
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte.d.ts +20 -0
- package/components/apps/inputType.d.ts +62 -0
- package/components/apps/inputType.js +1 -0
- package/components/apps/rx.d.ts +4 -4
- package/components/apps/rx.js +16 -4
- package/components/apps/types.d.ts +20 -54
- package/components/apps/utils.d.ts +11 -34
- package/components/apps/utils.js +54 -18
- package/components/common/alert/Alert.svelte +2 -1
- package/components/common/alert/Alert.svelte.d.ts +1 -0
- package/components/common/button/Button.svelte +1 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +1 -1
- package/components/common/drawer/DrawerContent.svelte +23 -22
- package/components/common/drawer/DrawerContent.svelte.d.ts +1 -3
- package/components/common/kbd/Kbd.svelte.d.ts +2 -2
- package/components/common/languageIcons/LanguageIcon.svelte +4 -2
- package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
- package/components/common/menu/Menu.svelte +0 -1
- package/components/common/menu/MenuItem.svelte.d.ts +6 -2
- package/components/common/popup/Popup.svelte +0 -11
- package/components/common/table/AppRow.svelte +42 -26
- package/components/common/table/AppRow.svelte.d.ts +1 -1
- package/components/common/table/FlowRow.svelte +54 -49
- package/components/common/table/LanguageBadge.svelte +1 -1
- package/components/common/table/Row.svelte +27 -16
- package/components/common/table/Row.svelte.d.ts +2 -1
- package/components/common/table/RowIcon.svelte +13 -8
- package/components/common/table/ScriptRow.svelte +65 -57
- package/components/common/table/Table.svelte.d.ts +6 -2
- package/components/flows/CreateActionsFlow.svelte +14 -41
- package/components/flows/CreateActionsFlow.svelte.d.ts +1 -1
- package/components/flows/common/FlowCardHeader.svelte +7 -8
- package/components/flows/content/BranchPredicateEditor.svelte +30 -0
- package/components/flows/content/BranchPredicateEditor.svelte.d.ts +23 -0
- package/components/flows/content/CapturePayload.svelte +12 -8
- package/components/flows/content/DynamicInputHelpBox.svelte.d.ts +1 -1
- package/components/flows/content/FlowBranchAllWrapper.svelte +2 -2
- package/components/flows/content/FlowBranchOneWrapper.svelte +4 -36
- package/components/flows/content/FlowBranchesAllWrapper.svelte +91 -0
- package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +18 -0
- package/components/flows/content/FlowBranchesOneWrapper.svelte +88 -0
- package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +18 -0
- package/components/flows/content/FlowFailureModule.svelte.d.ts +1 -1
- package/components/flows/content/FlowInput.svelte +1 -2
- package/components/flows/content/FlowInput.svelte.d.ts +1 -1
- package/components/flows/content/FlowInputs.svelte +28 -26
- package/components/flows/content/FlowInputsFlow.svelte +101 -0
- package/components/flows/content/FlowInputsFlow.svelte.d.ts +20 -0
- package/components/flows/content/FlowLoop.svelte +10 -3
- package/components/flows/content/FlowModuleComponent.svelte +46 -35
- package/components/flows/content/FlowModuleEarlyStop.svelte +4 -3
- package/components/flows/content/FlowModuleHeader.svelte +22 -21
- package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
- package/components/flows/content/FlowModuleSleep.svelte +69 -0
- package/components/flows/content/FlowModuleSleep.svelte.d.ts +18 -0
- package/components/flows/content/FlowModuleSuspend.svelte +5 -63
- package/components/flows/content/FlowModuleSuspend.svelte.d.ts +0 -1
- package/components/flows/content/FlowModuleWrapper.svelte +59 -35
- package/components/flows/content/FlowPathViewer.svelte +20 -0
- package/components/flows/content/FlowPathViewer.svelte.d.ts +17 -0
- package/components/flows/content/FlowSchedules.svelte.d.ts +1 -1
- package/components/flows/content/FlowSettings.svelte +8 -12
- package/components/flows/flowState.js +2 -2
- package/components/flows/flowStateUtils.d.ts +7 -3
- package/components/flows/flowStateUtils.js +29 -8
- package/components/flows/header/FlowImportExportMenu.svelte.d.ts +1 -1
- package/components/flows/header/FlowPreviewButtons.svelte +6 -2
- package/components/flows/header/FlowPreviewButtons.svelte.d.ts +1 -1
- package/components/flows/map/FlowErrorHandlerItem.svelte +5 -5
- package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -1
- package/components/flows/map/FlowInputsItem.svelte.d.ts +1 -1
- package/components/flows/map/FlowModuleSchemaItem.svelte +30 -11
- package/components/flows/map/FlowModuleSchemaMap.svelte +26 -20
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
- package/components/flows/map/FlowSettingsItem.svelte +1 -1
- package/components/flows/map/FlowSettingsItem.svelte.d.ts +1 -1
- package/components/flows/map/InsertModuleButton.svelte +20 -4
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -1
- package/components/flows/map/MapItem.svelte +11 -5
- package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/components/flows/pickers/PickHubFlow.svelte +72 -0
- package/components/flows/pickers/PickHubFlow.svelte.d.ts +20 -0
- package/components/flows/pickers/PickHubScript.svelte +65 -56
- package/components/flows/pickers/PickHubScript.svelte.d.ts +3 -1
- package/components/flows/pickers/PickScript.svelte +2 -2
- package/components/flows/pickers/WorkspaceScriptPicker.svelte +79 -19
- package/components/flows/pickers/WorkspaceScriptPicker.svelte.d.ts +5 -1
- package/components/flows/previousResults.d.ts +1 -0
- package/components/flows/previousResults.js +2 -1
- package/components/flows/propPicker/PropPickerWrapper.svelte +9 -1
- package/components/flows/utils.d.ts +0 -1
- package/components/flows/utils.js +6 -6
- package/components/graph/FlowGraph.svelte +120 -54
- package/components/graph/FlowGraph.svelte.d.ts +3 -2
- package/components/graph/model.d.ts +11 -0
- package/components/home/ItemsList.svelte +265 -0
- package/components/home/ItemsList.svelte.d.ts +16 -0
- package/components/home/ListFilters.svelte +37 -0
- package/components/home/ListFilters.svelte.d.ts +18 -0
- package/components/home/NoItemFound.svelte +6 -0
- package/components/home/NoItemFound.svelte.d.ts +23 -0
- package/components/icons/DatadogIcon.svelte +48 -0
- package/components/icons/DatadogIcon.svelte.d.ts +17 -0
- package/components/icons/FunkwhaleIcon.svelte +90 -0
- package/components/icons/FunkwhaleIcon.svelte.d.ts +17 -0
- package/components/icons/GdocsIcon.svelte +9 -0
- package/components/icons/GdocsIcon.svelte.d.ts +17 -0
- package/components/icons/HubspotIcon.svelte +9 -0
- package/components/icons/HubspotIcon.svelte.d.ts +17 -0
- package/components/icons/LinkedinIcon.svelte +9 -0
- package/components/icons/LinkedinIcon.svelte.d.ts +17 -0
- package/components/icons/Mail.svelte +9 -53
- package/components/icons/Mysql.svelte +8 -8
- package/components/icons/NextcloudIcon.svelte +9 -0
- package/components/icons/NextcloudIcon.svelte.d.ts +17 -0
- package/components/icons/QRCodeIcon.svelte +5 -0
- package/components/icons/QRCodeIcon.svelte.d.ts +16 -0
- package/components/icons/SendflakeIcon.svelte +15 -0
- package/components/icons/SendflakeIcon.svelte.d.ts +17 -0
- package/components/icons/StripeIcon.svelte +9 -0
- package/components/icons/StripeIcon.svelte.d.ts +17 -0
- package/components/icons/TelegramIcon.svelte +9 -0
- package/components/icons/TelegramIcon.svelte.d.ts +17 -0
- package/components/icons/WindmillIcon.svelte +3 -3
- package/components/icons/index.d.ts +23 -1
- package/components/icons/index.js +23 -1
- package/components/jobs/JobDetail.svelte +2 -2
- package/components/preview/FlowPreviewStatus.svelte +12 -23
- package/components/propertyPicker/PropPicker.svelte +16 -0
- package/components/propertyPicker/PropPickerResult.svelte +2 -3
- package/components/propertyPicker/WarningMessage.svelte.d.ts +6 -2
- package/components/scriptEditor/LogPanel.svelte +11 -4
- package/components/scripts/CreateActionsScript.svelte +13 -59
- package/components/scripts/CreateActionsScript.svelte.d.ts +1 -1
- package/components/sidebar/FavoriteMenu.svelte +52 -0
- package/components/sidebar/FavoriteMenu.svelte.d.ts +21 -0
- package/components/sidebar/SidebarContent.svelte +10 -19
- package/components/sidebar/SidebarContent.svelte.d.ts +0 -4
- package/components/sidebar/UserMenu.svelte +21 -4
- package/components/sidebar/WorkspaceMenu.svelte +6 -7
- package/editorUtils.d.ts +2 -0
- package/editorUtils.js +3 -1
- package/gen/core/OpenAPI.js +1 -1
- package/gen/index.d.ts +1 -0
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/CreateWorkspace.d.ts +0 -1
- package/gen/models/EditWorkspaceUser.d.ts +2 -0
- package/gen/models/FlowModuleValue.d.ts +2 -1
- package/gen/models/FlowStatus.d.ts +3 -1
- package/gen/models/FlowStatusModule.d.ts +1 -1
- package/gen/models/FlowStatusModule.js +1 -1
- package/gen/models/Identity.d.ts +1 -0
- package/gen/models/ListableResource.d.ts +1 -0
- package/gen/models/ListableVariable.d.ts +1 -0
- package/gen/models/PathFlow.d.ts +6 -0
- package/gen/models/PathFlow.js +4 -0
- package/gen/models/PathScript.d.ts +1 -0
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/Schedule.d.ts +2 -0
- package/gen/models/Usage.d.ts +1 -3
- package/gen/models/WorkspaceInvite.d.ts +1 -0
- package/gen/services/AppService.d.ts +7 -1
- package/gen/services/AppService.js +2 -1
- package/gen/services/JobService.d.ts +35 -5
- package/gen/services/JobService.js +14 -5
- package/gen/services/OauthService.d.ts +1 -1
- package/gen/services/ResourceService.d.ts +6 -2
- package/gen/services/ResourceService.js +2 -1
- package/gen/services/UserService.d.ts +6 -0
- package/gen/services/UserService.js +11 -0
- package/gen/services/WorkspaceService.d.ts +35 -0
- package/gen/services/WorkspaceService.js +41 -0
- package/package.json +56 -17
- package/script_helpers.d.ts +2 -1
- package/script_helpers.js +20 -3
- package/scripts.d.ts +1 -0
- package/scripts.js +8 -1
- package/stores.d.ts +11 -2
- package/stores.js +24 -6
- package/utils.d.ts +3 -1
- package/utils.js +11 -4
- package/components/ButtonAndDropdown.svelte +0 -25
- package/components/ButtonAndDropdown.svelte.d.ts +0 -23
- package/components/apps/components/index.d.ts +0 -22
- package/components/apps/components/index.js +0 -42
- package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte +0 -64
- package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte.d.ts +0 -17
- package/components/flows/content/FlowBranchesWrapper.svelte +0 -140
- package/components/flows/content/FlowBranchesWrapper.svelte.d.ts +0 -19
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
<script>import { Script } from '../../../gen';
|
|
2
2
|
import { getContext } from 'svelte';
|
|
3
|
-
import FlowBranchesWrapper from './FlowBranchesWrapper.svelte';
|
|
4
3
|
import FlowLoop from './FlowLoop.svelte';
|
|
5
4
|
import FlowModuleComponent from './FlowModuleComponent.svelte';
|
|
6
5
|
import FlowBranchAllWrapper from './FlowBranchAllWrapper.svelte';
|
|
7
6
|
import FlowBranchOneWrapper from './FlowBranchOneWrapper.svelte';
|
|
8
|
-
import { createInlineScriptModule,
|
|
7
|
+
import { createInlineScriptModule, pickFlow, pickScript } from '../flowStateUtils';
|
|
9
8
|
import FlowInputs from './FlowInputs.svelte';
|
|
10
9
|
import { flowStateStore } from '../flowState';
|
|
11
|
-
import Tooltip from '../../Tooltip.svelte';
|
|
12
10
|
import { Alert } from '../../common';
|
|
11
|
+
import FlowInputsFlow from './FlowInputsFlow.svelte';
|
|
12
|
+
import FlowBranchesAllWrapper from './FlowBranchesAllWrapper.svelte';
|
|
13
|
+
import FlowBranchesOneWrapper from './FlowBranchesOneWrapper.svelte';
|
|
13
14
|
const { selectedId } = getContext('FlowEditorContext');
|
|
14
15
|
export let flowModule;
|
|
15
16
|
// These pointers are used to easily access previewArgs of parent module, and previous module
|
|
@@ -22,8 +23,10 @@ export let previousModule = undefined;
|
|
|
22
23
|
{#if flowModule.id === $selectedId}
|
|
23
24
|
{#if flowModule.value.type === 'forloopflow'}
|
|
24
25
|
<FlowLoop bind:mod={flowModule} {parentModule} {previousModule} />
|
|
25
|
-
{:else if flowModule.value.type === 'branchone'
|
|
26
|
-
<
|
|
26
|
+
{:else if flowModule.value.type === 'branchone'}
|
|
27
|
+
<FlowBranchesOneWrapper {previousModule} bind:flowModule />
|
|
28
|
+
{:else if flowModule.value.type === 'branchall'}
|
|
29
|
+
<FlowBranchesAllWrapper {previousModule} bind:flowModule />
|
|
27
30
|
{:else if flowModule.value.type === 'identity'}
|
|
28
31
|
{#if $selectedId == 'failure'}
|
|
29
32
|
<Alert type="info" title="Error handlers are triggered upon non recovered errors">
|
|
@@ -36,42 +39,60 @@ export let previousModule = undefined;
|
|
|
36
39
|
</Alert>
|
|
37
40
|
{/if}
|
|
38
41
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const [module, state] = await pickScript(path, summary, flowModule.id)
|
|
42
|
+
{#if flowModule.value.flow}
|
|
43
|
+
<FlowInputsFlow
|
|
44
|
+
failureModule={$selectedId === 'failure'}
|
|
45
|
+
on:pick={async ({ detail }) => {
|
|
46
|
+
const { path, summary } = detail
|
|
47
|
+
const [module, state] = await pickFlow(path, summary, flowModule.id)
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
module.
|
|
49
|
-
}
|
|
49
|
+
flowModule = module
|
|
50
|
+
$flowStateStore[module.id] = state
|
|
51
|
+
}}
|
|
52
|
+
/>
|
|
53
|
+
{:else}
|
|
54
|
+
<FlowInputs
|
|
55
|
+
shouldDisableTriggerScripts={parentModule !== undefined ||
|
|
56
|
+
previousModule !== undefined ||
|
|
57
|
+
$selectedId == 'failure'}
|
|
58
|
+
on:pick={async ({ detail }) => {
|
|
59
|
+
const { path, summary, kind, hash } = detail
|
|
60
|
+
const [module, state] = await pickScript(path, summary, flowModule.id, hash)
|
|
61
|
+
|
|
62
|
+
if (kind == Script.kind.APPROVAL) {
|
|
63
|
+
module.suspend = { required_events: 1, timeout: 1800 }
|
|
64
|
+
}
|
|
50
65
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
66
|
+
flowModule = module
|
|
67
|
+
$flowStateStore[module.id] = state
|
|
68
|
+
}}
|
|
69
|
+
on:new={async ({ detail }) => {
|
|
70
|
+
const { language, kind, subkind } = detail
|
|
56
71
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
72
|
+
const [module, state] = await createInlineScriptModule(
|
|
73
|
+
language,
|
|
74
|
+
kind,
|
|
75
|
+
subkind,
|
|
76
|
+
flowModule.id
|
|
77
|
+
)
|
|
63
78
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
if (kind == Script.kind.APPROVAL) {
|
|
80
|
+
module.suspend = { required_events: 1, timeout: 1800 }
|
|
81
|
+
}
|
|
67
82
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
flowModule = module
|
|
84
|
+
$flowStateStore[module.id] = state
|
|
85
|
+
}}
|
|
86
|
+
failureModule={$selectedId === 'failure'}
|
|
87
|
+
/>
|
|
88
|
+
{/if}
|
|
89
|
+
{:else if flowModule.value.type === 'rawscript' || flowModule.value.type === 'script' || flowModule.value.type === 'flow'}
|
|
90
|
+
<FlowModuleComponent
|
|
91
|
+
bind:flowModule
|
|
92
|
+
{parentModule}
|
|
93
|
+
{previousModule}
|
|
71
94
|
failureModule={$selectedId === 'failure'}
|
|
72
95
|
/>
|
|
73
|
-
{:else if flowModule.value.type === 'rawscript' || flowModule.value.type === 'script'}
|
|
74
|
-
<FlowModuleComponent bind:flowModule {parentModule} {previousModule} />
|
|
75
96
|
{/if}
|
|
76
97
|
{:else if flowModule.value.type === 'forloopflow'}
|
|
77
98
|
{#each flowModule.value.modules as submodule, index (index)}
|
|
@@ -83,7 +104,10 @@ export let previousModule = undefined;
|
|
|
83
104
|
{/each}
|
|
84
105
|
{:else if flowModule.value.type === 'branchone'}
|
|
85
106
|
{#if $selectedId === `${flowModule?.id}-branch-default`}
|
|
86
|
-
<div class="p-
|
|
107
|
+
<div class="p-2">
|
|
108
|
+
<h3 class="mb-4">Default branch</h3>
|
|
109
|
+
Nothing to configure, this is the default branch if none of the predicates are met.
|
|
110
|
+
</div>
|
|
87
111
|
{:else}
|
|
88
112
|
{#each flowModule.value.default as submodule, index}
|
|
89
113
|
<svelte:self
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script>import Skeleton from '../../common/skeleton/Skeleton.svelte';
|
|
2
|
+
import FlowGraphViewer from '../../FlowGraphViewer.svelte';
|
|
3
|
+
import { FlowService } from '../../../gen';
|
|
4
|
+
import { workspaceStore } from '../../../stores';
|
|
5
|
+
export let path;
|
|
6
|
+
export let noSide = false;
|
|
7
|
+
let flow = undefined;
|
|
8
|
+
async function loadFlow(path) {
|
|
9
|
+
flow = await FlowService.getFlowByPath({ workspace: $workspaceStore, path });
|
|
10
|
+
}
|
|
11
|
+
$: path && loadFlow(path);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<div class="flex flex-col flex-1 h-full overflow-auto">
|
|
15
|
+
{#if flow}
|
|
16
|
+
<FlowGraphViewer {noSide} {flow} />
|
|
17
|
+
{:else}
|
|
18
|
+
<Skeleton layout={[[40]]} />
|
|
19
|
+
{/if}
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
path: string;
|
|
5
|
+
noSide?: boolean | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type FlowPathViewerProps = typeof __propDef.props;
|
|
13
|
+
export type FlowPathViewerEvents = typeof __propDef.events;
|
|
14
|
+
export type FlowPathViewerSlots = typeof __propDef.slots;
|
|
15
|
+
export default class FlowPathViewer extends SvelteComponentTyped<FlowPathViewerProps, FlowPathViewerEvents, FlowPathViewerSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -6,7 +6,6 @@ import Path from '../../Path.svelte';
|
|
|
6
6
|
import Required from '../../Required.svelte';
|
|
7
7
|
import FlowCard from '../common/FlowCard.svelte';
|
|
8
8
|
import FlowSchedules from './FlowSchedules.svelte';
|
|
9
|
-
import SvelteMarkdown from 'svelte-markdown';
|
|
10
9
|
import Toggle from '../../Toggle.svelte';
|
|
11
10
|
import { Alert } from '../../common';
|
|
12
11
|
import { FlowGraph } from '../../graph';
|
|
@@ -23,7 +22,7 @@ let topHeight = 0;
|
|
|
23
22
|
<Tabs selected={defaultTab}>
|
|
24
23
|
<Tab value="metadata">Metadata</Tab>
|
|
25
24
|
<Tab value="schedule">Schedule</Tab>
|
|
26
|
-
<Tab value="same-worker">
|
|
25
|
+
<Tab value="same-worker">Shared Directory</Tab>
|
|
27
26
|
<Tab value="graph">Graph</Tab>
|
|
28
27
|
|
|
29
28
|
<svelte:fragment slot="content">
|
|
@@ -60,7 +59,7 @@ let topHeight = 0;
|
|
|
60
59
|
<div class="font-bold pb-1 mt-4">Description preview</div>
|
|
61
60
|
{#if $flowStore.description}
|
|
62
61
|
<div class="prose max-h-48 mt-5 text-xs shadow-inner shadow-blue p-4 overflow-auto">
|
|
63
|
-
|
|
62
|
+
{$flowStore.description}
|
|
64
63
|
</div>
|
|
65
64
|
{:else}
|
|
66
65
|
<div class="text-sm text-gray-500"> Enter a description to see the preview </div>
|
|
@@ -78,19 +77,16 @@ let topHeight = 0;
|
|
|
78
77
|
</TabContent>
|
|
79
78
|
|
|
80
79
|
<TabContent value="same-worker" class="p-4 flex flex-col">
|
|
81
|
-
<Alert
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Steps will be run one after the other on the same worker, and will share a folder at
|
|
86
|
-
`./shared` in which they can store heavier data and pass them to the next step. <br
|
|
87
|
-
/><br />Beware that the `./shared` folder is not preserved across suspends and sleeps.
|
|
80
|
+
<Alert type="info" title="Shared Directory">
|
|
81
|
+
Steps will share a folder at `./shared` in which they can store heavier data and pass
|
|
82
|
+
them to the next step. <br /><br />Beware that the `./shared` folder is not preserved
|
|
83
|
+
across suspends and sleeps.
|
|
88
84
|
</Alert>
|
|
89
|
-
<span class="my-2 text-sm font-bold">
|
|
85
|
+
<span class="my-2 text-sm font-bold">Shared Directoryr</span>
|
|
90
86
|
<Toggle
|
|
91
87
|
bind:checked={$flowStore.value.same_worker}
|
|
92
88
|
options={{
|
|
93
|
-
right: '
|
|
89
|
+
right: 'Shared Directory on `./shared`'
|
|
94
90
|
}}
|
|
95
91
|
/>
|
|
96
92
|
</TabContent>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { writable } from 'svelte/store';
|
|
2
2
|
import { loadFlowModuleState } from './flowStateUtils';
|
|
3
|
-
import { emptyFlowModuleState
|
|
3
|
+
import { emptyFlowModuleState } from './utils';
|
|
4
4
|
/**
|
|
5
5
|
* flowStateStore represents the local state of each module indexed by its id.
|
|
6
6
|
* It contains data loaded that are not contained in a Flow object i.e. schemas.
|
|
@@ -33,7 +33,7 @@ async function mapFlowModule(flowModule, modulesState) {
|
|
|
33
33
|
if (value.type === 'branchone' || value.type === 'branchall') {
|
|
34
34
|
await Promise.all(value.branches.map((branchModule) => mapFlowModules(branchModule.modules, modulesState)));
|
|
35
35
|
}
|
|
36
|
-
if (
|
|
36
|
+
if (value.type === 'identity') {
|
|
37
37
|
modulesState[flowModule.id] = emptyFlowModuleState();
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import type { Schema } from '../../common';
|
|
2
|
-
import { Script, type FlowModule, type PathScript, type RawScript } from '../../gen';
|
|
2
|
+
import { Script, type FlowModule, type PathFlow, type PathScript, type RawScript } from '../../gen';
|
|
3
3
|
import { type FlowModuleState } from './flowState';
|
|
4
4
|
import { Mutex } from 'async-mutex';
|
|
5
5
|
export declare function loadFlowModuleState(flowModule: FlowModule): Promise<FlowModuleState>;
|
|
6
6
|
export declare const idMutex: Mutex;
|
|
7
7
|
export declare function getNextId(currentKeys: string[]): string;
|
|
8
8
|
export declare function nextId(): string;
|
|
9
|
-
export declare function pickScript(path: string, summary: string, id: string): Promise<[FlowModule & {
|
|
9
|
+
export declare function pickScript(path: string, summary: string, id: string, hash?: string): Promise<[FlowModule & {
|
|
10
10
|
value: PathScript;
|
|
11
11
|
}, FlowModuleState]>;
|
|
12
|
+
export declare function pickFlow(path: string, summary: string, id: string): Promise<[FlowModule & {
|
|
13
|
+
value: PathFlow;
|
|
14
|
+
}, FlowModuleState]>;
|
|
12
15
|
export declare function createInlineScriptModule(language: RawScript.language, kind: Script.kind, subkind: 'pgsql' | 'flow', id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
13
16
|
export declare function createLoop(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
14
17
|
export declare function createBranches(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
15
18
|
export declare function createBranchAll(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
19
|
+
export declare function createFlow(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
16
20
|
export declare function fork(flowModule: FlowModule): Promise<[FlowModule & {
|
|
17
21
|
value: RawScript;
|
|
18
22
|
}, FlowModuleState]>;
|
|
19
|
-
export declare function emptyModule(): FlowModule;
|
|
23
|
+
export declare function emptyModule(flow?: boolean): FlowModule;
|
|
20
24
|
export declare function createScriptFromInlineScript(flowModule: FlowModule, suffix: string, schema: Schema): Promise<[FlowModule & {
|
|
21
25
|
value: PathScript;
|
|
22
26
|
}, FlowModuleState]>;
|
|
@@ -10,7 +10,7 @@ import { Mutex } from 'async-mutex';
|
|
|
10
10
|
export async function loadFlowModuleState(flowModule) {
|
|
11
11
|
try {
|
|
12
12
|
const { input_transforms, schema } = await loadSchemaFromModule(flowModule);
|
|
13
|
-
if (flowModule.value.type == 'script' || flowModule.value.type == 'rawscript') {
|
|
13
|
+
if (flowModule.value.type == 'script' || flowModule.value.type == 'rawscript' || flowModule.value.type == 'flow') {
|
|
14
14
|
flowModule.value.input_transforms = input_transforms;
|
|
15
15
|
}
|
|
16
16
|
return { schema, previewResult: NEVER_TESTED_THIS_FAR };
|
|
@@ -47,10 +47,18 @@ export function nextId() {
|
|
|
47
47
|
}, 0);
|
|
48
48
|
return numberToChars(max);
|
|
49
49
|
}
|
|
50
|
-
export async function pickScript(path, summary, id) {
|
|
50
|
+
export async function pickScript(path, summary, id, hash) {
|
|
51
51
|
const flowModule = {
|
|
52
52
|
id,
|
|
53
|
-
value: { type: 'script', path, input_transforms: {} },
|
|
53
|
+
value: { type: 'script', path, hash, input_transforms: {} },
|
|
54
|
+
summary
|
|
55
|
+
};
|
|
56
|
+
return [flowModule, await loadFlowModuleState(flowModule)];
|
|
57
|
+
}
|
|
58
|
+
export async function pickFlow(path, summary, id) {
|
|
59
|
+
const flowModule = {
|
|
60
|
+
id,
|
|
61
|
+
value: { type: 'flow', path, input_transforms: {} },
|
|
54
62
|
summary
|
|
55
63
|
};
|
|
56
64
|
return [flowModule, await loadFlowModuleState(flowModule)];
|
|
@@ -69,7 +77,7 @@ export async function createLoop(id) {
|
|
|
69
77
|
value: {
|
|
70
78
|
type: 'forloopflow',
|
|
71
79
|
modules: [],
|
|
72
|
-
iterator: { type: 'javascript', expr: '' },
|
|
80
|
+
iterator: { type: 'javascript', expr: '["dynamic or static array"]' },
|
|
73
81
|
skip_failures: true
|
|
74
82
|
}
|
|
75
83
|
};
|
|
@@ -101,6 +109,19 @@ export async function createBranchAll(id) {
|
|
|
101
109
|
const flowModuleState = await loadFlowModuleState(branchesFlowModules);
|
|
102
110
|
return [branchesFlowModules, flowModuleState];
|
|
103
111
|
}
|
|
112
|
+
export async function createFlow(id) {
|
|
113
|
+
const flowFlowModules = {
|
|
114
|
+
id,
|
|
115
|
+
value: {
|
|
116
|
+
type: 'flow',
|
|
117
|
+
path: '',
|
|
118
|
+
input_transforms: {},
|
|
119
|
+
},
|
|
120
|
+
summary: ''
|
|
121
|
+
};
|
|
122
|
+
const flowModuleState = await loadFlowModuleState(flowFlowModules);
|
|
123
|
+
return [flowFlowModules, flowModuleState];
|
|
124
|
+
}
|
|
104
125
|
export async function fork(flowModule) {
|
|
105
126
|
if (flowModule.value.type !== 'script') {
|
|
106
127
|
throw new Error('Can only fork a script module');
|
|
@@ -122,10 +143,10 @@ async function createInlineScriptModuleFromPath(path, id) {
|
|
|
122
143
|
}
|
|
123
144
|
};
|
|
124
145
|
}
|
|
125
|
-
export function emptyModule() {
|
|
146
|
+
export function emptyModule(flow) {
|
|
126
147
|
return {
|
|
127
148
|
id: nextId(),
|
|
128
|
-
value: { type: 'identity' }
|
|
149
|
+
value: { type: 'identity', flow }
|
|
129
150
|
};
|
|
130
151
|
}
|
|
131
152
|
export async function createScriptFromInlineScript(flowModule, suffix, schema) {
|
|
@@ -144,7 +165,7 @@ export async function createScriptFromInlineScript(flowModule, suffix, schema) {
|
|
|
144
165
|
const forkedDescription = wasForked ? `as a fork of ${originalScriptPath}` : '';
|
|
145
166
|
const description = `This script was edited in place of flow ${flow.path} ${forkedDescription} by ${user?.username}.`;
|
|
146
167
|
const availablePath = await findNextAvailablePath(path);
|
|
147
|
-
await ScriptService.createScript({
|
|
168
|
+
const hash = await ScriptService.createScript({
|
|
148
169
|
workspace: get(workspaceStore),
|
|
149
170
|
requestBody: {
|
|
150
171
|
path: availablePath,
|
|
@@ -157,7 +178,7 @@ export async function createScriptFromInlineScript(flowModule, suffix, schema) {
|
|
|
157
178
|
language: flowModule.value.language
|
|
158
179
|
}
|
|
159
180
|
});
|
|
160
|
-
return pickScript(availablePath, flowModule.summary ?? '', flowModule.id);
|
|
181
|
+
return pickScript(availablePath, flowModule.summary ?? '', flowModule.id, hash);
|
|
161
182
|
}
|
|
162
183
|
export function deleteFlowStateById(id) {
|
|
163
184
|
flowStateStore.update((fss) => {
|
|
@@ -7,6 +7,8 @@ import { getContext } from 'svelte';
|
|
|
7
7
|
const { selectedId } = getContext('FlowEditorContext');
|
|
8
8
|
let previewOpen = false;
|
|
9
9
|
let previewMode = 'whole';
|
|
10
|
+
let jobId = undefined;
|
|
11
|
+
let job = undefined;
|
|
10
12
|
$: upToDisabled =
|
|
11
13
|
[
|
|
12
14
|
'settings',
|
|
@@ -17,7 +19,7 @@ $: upToDisabled =
|
|
|
17
19
|
'inputs',
|
|
18
20
|
'schedules',
|
|
19
21
|
'failure'
|
|
20
|
-
].includes($selectedId) || $selectedId
|
|
22
|
+
].includes($selectedId) || $selectedId?.includes('branch');
|
|
21
23
|
</script>
|
|
22
24
|
|
|
23
25
|
<div class="flex flex-row-reverse justify-between items-center gap-x-2">
|
|
@@ -51,10 +53,12 @@ $: upToDisabled =
|
|
|
51
53
|
{/if}
|
|
52
54
|
</div>
|
|
53
55
|
|
|
54
|
-
<Drawer bind:open={previewOpen} size="
|
|
56
|
+
<Drawer bind:open={previewOpen} size="75%">
|
|
55
57
|
<FlowPreviewContent
|
|
56
58
|
open={previewOpen}
|
|
57
59
|
bind:previewMode
|
|
60
|
+
bind:job
|
|
61
|
+
bind:jobId
|
|
58
62
|
on:close={() => {
|
|
59
63
|
previewOpen = false
|
|
60
64
|
}}
|
|
@@ -8,7 +8,7 @@ import { flowStore } from '../flowStore';
|
|
|
8
8
|
import { NEVER_TESTED_THIS_FAR } from '../utils';
|
|
9
9
|
const { select, selectedId } = getContext('FlowEditorContext');
|
|
10
10
|
function onToggle() {
|
|
11
|
-
if ($flowStore
|
|
11
|
+
if ($flowStore?.value?.failure_module) {
|
|
12
12
|
$flowStore.value.failure_module = undefined;
|
|
13
13
|
// By default, we return to settings when disabling the failure module
|
|
14
14
|
select('settings');
|
|
@@ -31,7 +31,7 @@ function onToggle() {
|
|
|
31
31
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
32
32
|
<div
|
|
33
33
|
on:click={() => {
|
|
34
|
-
if ($flowStore
|
|
34
|
+
if ($flowStore?.value?.failure_module) {
|
|
35
35
|
select('failure')
|
|
36
36
|
} else {
|
|
37
37
|
onToggle()
|
|
@@ -39,7 +39,7 @@ function onToggle() {
|
|
|
39
39
|
}}
|
|
40
40
|
class={classNames(
|
|
41
41
|
'border rounded-sm px-2 py-1 bg-white text-sm border-gray-400 cursor-pointer flex flex-col overflow-x-hidden ',
|
|
42
|
-
$selectedId
|
|
42
|
+
$selectedId?.includes('failure') ? 'outline outline-offset-1 outline-2 outline-slate-900' : ''
|
|
43
43
|
)}
|
|
44
44
|
>
|
|
45
45
|
<div class=" flex justify-between items-center flex-wrap">
|
|
@@ -48,12 +48,12 @@ function onToggle() {
|
|
|
48
48
|
<span class="font-bold text-xs">Error handler</span>
|
|
49
49
|
</div>
|
|
50
50
|
<div class="-my-1">
|
|
51
|
-
<Toggle checked={Boolean($flowStore
|
|
51
|
+
<Toggle checked={Boolean($flowStore?.value?.failure_module)} on:change={onToggle} />
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
54
54
|
|
|
55
55
|
<div class="w-full truncate block">
|
|
56
|
-
{#if Boolean($flowStore
|
|
56
|
+
{#if Boolean($flowStore?.value?.failure_module)}
|
|
57
57
|
<span>
|
|
58
58
|
{$flowStore.value.failure_module?.summary ||
|
|
59
59
|
($flowStore.value.failure_module?.value.type === 'rawscript'
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
<script>import Badge from '../../common/badge/Badge.svelte';
|
|
2
|
+
import Popover from '../../Popover.svelte';
|
|
2
3
|
import { classNames } from '../../../utils';
|
|
3
4
|
import { faBed, faRepeat, faStop, faTimesCircle } from '@fortawesome/free-solid-svg-icons';
|
|
4
5
|
import { createEventDispatcher } from 'svelte';
|
|
5
6
|
import Icon from 'svelte-awesome';
|
|
7
|
+
import { PhoneIncoming, Repeat } from 'lucide-svelte';
|
|
6
8
|
export let isFirst = false;
|
|
7
9
|
export let isLast = false;
|
|
8
10
|
export let hasLine = true;
|
|
@@ -35,21 +37,38 @@ const dispatch = createEventDispatcher();
|
|
|
35
37
|
margin
|
|
36
38
|
)}
|
|
37
39
|
>
|
|
38
|
-
<div class="absolute text-sm right-
|
|
40
|
+
<div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
|
|
39
41
|
{#if retry}
|
|
40
|
-
<
|
|
41
|
-
<
|
|
42
|
-
|
|
42
|
+
<Popover notClickable>
|
|
43
|
+
<div class="bg-white rounded border text-gray-700 px-1 center-center">
|
|
44
|
+
<Repeat size={14} />
|
|
45
|
+
</div>
|
|
46
|
+
<span slot="text">Retries</span>
|
|
47
|
+
</Popover>
|
|
43
48
|
{/if}
|
|
44
49
|
{#if earlyStop}
|
|
45
|
-
<
|
|
46
|
-
<
|
|
47
|
-
|
|
50
|
+
<Popover notClickable>
|
|
51
|
+
<div class="bg-white rounded border text-gray-700 px-1">
|
|
52
|
+
<Icon scale={0.8} data={faStop} />
|
|
53
|
+
</div>
|
|
54
|
+
<span slot="text">Early Stop/Break</span>
|
|
55
|
+
</Popover>
|
|
48
56
|
{/if}
|
|
49
|
-
{#if
|
|
50
|
-
<
|
|
51
|
-
<
|
|
52
|
-
|
|
57
|
+
{#if sleep}
|
|
58
|
+
<Popover notClickable>
|
|
59
|
+
<div class="bg-white rounded border text-gray-700 px-1">
|
|
60
|
+
<Icon scale={0.8} data={faBed} />
|
|
61
|
+
</div>
|
|
62
|
+
<span slot="text">Sleep</span>
|
|
63
|
+
</Popover>
|
|
64
|
+
{/if}
|
|
65
|
+
{#if suspend}
|
|
66
|
+
<Popover notClickable>
|
|
67
|
+
<div class="bg-white rounded border text-gray-700 px-1 center-center">
|
|
68
|
+
<PhoneIncoming size={12} />
|
|
69
|
+
</div>
|
|
70
|
+
<span slot="text">Suspend</span>
|
|
71
|
+
</Popover>
|
|
53
72
|
{/if}
|
|
54
73
|
</div>
|
|
55
74
|
<div
|
|
@@ -3,7 +3,7 @@ import { createBranchAll, createBranches, createLoop, deleteFlowStateById, empty
|
|
|
3
3
|
import { flowStateStore } from '../flowState';
|
|
4
4
|
import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
|
|
5
5
|
import RemoveStepConfirmationModal from '../content/RemoveStepConfirmationModal.svelte';
|
|
6
|
-
import { emptyFlowModuleState
|
|
6
|
+
import { emptyFlowModuleState } from '../utils';
|
|
7
7
|
import MapItem from './MapItem.svelte';
|
|
8
8
|
import FlowSettingsItem from './FlowSettingsItem.svelte';
|
|
9
9
|
import FlowInputsItem from './FlowInputsItem.svelte';
|
|
@@ -15,7 +15,7 @@ let indexToRemove = undefined;
|
|
|
15
15
|
const { select } = getContext('FlowEditorContext');
|
|
16
16
|
async function insertNewModuleAtIndex(index, kind) {
|
|
17
17
|
await idMutex.runExclusive(async () => {
|
|
18
|
-
var module = emptyModule();
|
|
18
|
+
var module = emptyModule(kind == 'flow');
|
|
19
19
|
var state = emptyFlowModuleState();
|
|
20
20
|
if (kind == 'forloop') {
|
|
21
21
|
;
|
|
@@ -30,6 +30,8 @@ async function insertNewModuleAtIndex(index, kind) {
|
|
|
30
30
|
[module, state] = await createBranchAll(module.id);
|
|
31
31
|
}
|
|
32
32
|
const flowModule = module;
|
|
33
|
+
if (!modules)
|
|
34
|
+
return;
|
|
33
35
|
modules.splice(index, 0, flowModule);
|
|
34
36
|
modules = modules;
|
|
35
37
|
$flowStateStore[flowModule.id] = state;
|
|
@@ -38,6 +40,8 @@ async function insertNewModuleAtIndex(index, kind) {
|
|
|
38
40
|
}
|
|
39
41
|
function removeAtIndex(index) {
|
|
40
42
|
select('settings');
|
|
43
|
+
if (!modules)
|
|
44
|
+
return;
|
|
41
45
|
const [removedModule] = modules.splice(index, 1);
|
|
42
46
|
modules = modules;
|
|
43
47
|
const leaves = findLeaves(removedModule);
|
|
@@ -87,25 +91,27 @@ $: confirmationModalOpen = indexToRemove !== undefined;
|
|
|
87
91
|
</li>
|
|
88
92
|
{/if}
|
|
89
93
|
|
|
90
|
-
{#
|
|
91
|
-
|
|
92
|
-
<
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
{#if modules}
|
|
95
|
+
{#each modules as mod, index (mod.id ?? index)}
|
|
96
|
+
<div transition:slide|local>
|
|
97
|
+
<MapItem
|
|
98
|
+
bind:mod
|
|
99
|
+
on:delete={(event) => {
|
|
100
|
+
if (event.detail.detail.shiftKey || mod.value.type === 'identity') {
|
|
101
|
+
removeAtIndex(index)
|
|
102
|
+
} else {
|
|
103
|
+
indexToRemove = index
|
|
104
|
+
}
|
|
105
|
+
}}
|
|
106
|
+
on:insert={(e) => {
|
|
107
|
+
insertNewModuleAtIndex(index, e.detail)
|
|
108
|
+
}}
|
|
109
|
+
/>
|
|
110
|
+
</div>
|
|
111
|
+
{/each}
|
|
112
|
+
{/if}
|
|
107
113
|
|
|
108
|
-
<InsertModuleButton on:new={(e) => insertNewModuleAtIndex(modules
|
|
114
|
+
<InsertModuleButton on:new={(e) => insertNewModuleAtIndex(modules?.length ?? 0, e.detail)} />
|
|
109
115
|
</ul>
|
|
110
116
|
{#if root}
|
|
111
117
|
<div class="sticky bottom-0 bg-gray-50 flex-none px-4 py-1 pb-2 border-t">
|
|
@@ -23,7 +23,7 @@ $: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray
|
|
|
23
23
|
</Badge>
|
|
24
24
|
{/if}
|
|
25
25
|
{#if $flowStore.value.same_worker}
|
|
26
|
-
<Badge color="blue" baseClass="truncate"
|
|
26
|
+
<Badge color="blue" baseClass="truncate">./shared</Badge>
|
|
27
27
|
{/if}
|
|
28
28
|
</span>
|
|
29
29
|
</span>
|