windmill-components 1.269.4 → 1.291.4
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/package/ata/apis.d.ts +8 -5
- package/package/ata/apis.js +20 -9
- package/package/ata/edgeCases.js +5 -1
- package/package/ata/index.d.ts +3 -3
- package/package/ata/index.js +51 -28
- package/package/common.d.ts +1 -0
- package/package/components/AddUser.svelte +15 -6
- package/package/components/ApiConnectForm.svelte +1 -1
- package/package/components/ArgEnum.svelte +1 -1
- package/package/components/ArgEnum.svelte.d.ts +1 -1
- package/package/components/ArgInfo.svelte +2 -1
- package/package/components/ArgInput.svelte +7 -6
- package/package/components/ArgInput.svelte.d.ts +1 -1
- package/package/components/ArrayTypeNarrowing.svelte +2 -0
- package/package/components/CenteredModal.svelte +5 -2
- package/package/components/ChangeInstanceUsername.svelte +123 -0
- package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
- package/package/components/ContentSearch.svelte +3 -4
- package/package/components/ContentSearch.svelte.d.ts +0 -3
- package/package/components/DateTimeInput.svelte +73 -9
- package/package/components/DateTimeInput.svelte.d.ts +8 -1
- package/package/components/DefaultScripts.svelte +26 -0
- package/package/components/DefaultScripts.svelte.d.ts +14 -0
- package/package/components/DefaultScriptsInner.svelte +75 -0
- package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
- package/package/components/Dev.svelte +59 -17
- package/package/components/DisplayResult.svelte +73 -67
- package/package/components/DurationMs.svelte +9 -8
- package/package/components/DurationMs.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +23 -7
- package/package/components/FieldHeader.svelte +7 -7
- package/package/components/FlowBuilder.svelte +24 -13
- package/package/components/FlowBuilder.svelte.d.ts +0 -3
- package/package/components/FlowLoopIterationPreview.svelte +6 -5
- package/package/components/FlowMetadata.svelte +6 -2
- package/package/components/FlowPreviewContent.svelte +5 -5
- package/package/components/FolderEditor.svelte +20 -39
- package/package/components/GroupEditor.svelte +1 -1
- package/package/components/HighlightCode.svelte +7 -5
- package/package/components/IconedResourceType.svelte +5 -3
- package/package/components/IconedResourceType.svelte.d.ts +21 -7
- package/package/components/InputTransformForm.svelte +6 -1
- package/package/components/InstanceSettings.svelte +29 -17
- package/package/components/InstanceSettings.svelte.d.ts +3 -0
- package/package/components/InviteGlobalUser.svelte +1 -1
- package/package/components/JobArgs.svelte +20 -7
- package/package/components/JobStatus.svelte +8 -2
- package/package/components/LightweightArgInput.svelte +30 -14
- package/package/components/LightweightSchemaForm.svelte +1 -0
- package/package/components/LogViewer.svelte +21 -6
- package/package/components/ModulePreview.svelte +19 -11
- package/package/components/ModulePreview.svelte.d.ts +3 -2
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/Password.svelte +5 -2
- package/package/components/Password.svelte.d.ts +1 -0
- package/package/components/Path.svelte +10 -11
- package/package/components/ResourcePicker.svelte +28 -9
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunChart.svelte +1 -0
- package/package/components/RunForm.svelte +9 -17
- package/package/components/RunFormAdvancedPopup.svelte +11 -12
- package/package/components/S3FilePicker.svelte +1 -0
- package/package/components/ScheduleEditorInner.svelte +10 -9
- package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
- package/package/components/SchemaEditor.svelte +12 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaModal.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +152 -79
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte +8 -9
- package/package/components/ScriptSchedules.svelte +99 -0
- package/package/components/ScriptSchedules.svelte.d.ts +20 -0
- package/package/components/ShareModal.svelte +1 -0
- package/package/components/StringTypeNarrowing.svelte +9 -3
- package/package/components/SuperadminSettings.svelte +114 -10
- package/package/components/TestJobLoader.svelte +8 -0
- package/package/components/TestJobLoader.svelte.d.ts +1 -0
- package/package/components/TimeAgo.svelte +2 -2
- package/package/components/TimelineBar.svelte +5 -2
- package/package/components/Toggle.svelte +5 -2
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/Tooltip.svelte +13 -2
- package/package/components/Tooltip.svelte.d.ts +1 -0
- package/package/components/Uptodate.svelte +12 -6
- package/package/components/UserSettings.svelte +87 -73
- package/package/components/WorkerTagPicker.svelte +4 -2
- package/package/components/WorkflowTimeline.svelte +106 -0
- package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
- package/package/components/WorkspaceGroup.svelte +1 -0
- package/package/components/apps/components/buttons/AppButton.svelte +9 -19
- package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
- package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
- package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
- package/package/components/apps/components/display/dbtable/utils.js +284 -309
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
- package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
- package/package/components/apps/components/display/table/AppTable.svelte +4 -0
- package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/utils.js +42 -0
- package/package/components/apps/components/helpers/InputValue.svelte +10 -8
- package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
- package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
- package/package/components/apps/components/helpers/eval.d.ts +2 -2
- package/package/components/apps/components/helpers/eval.js +33 -11
- package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
- package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
- package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
- package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
- package/package/components/apps/components/layout/AppStepper.svelte +4 -2
- package/package/components/apps/editor/AppEditor.svelte +19 -4
- package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
- package/package/components/apps/editor/AppTimeline.svelte +4 -4
- package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
- package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
- package/package/components/apps/editor/SettingsPanel.svelte +2 -0
- package/package/components/apps/editor/TabsDebug.svelte +2 -2
- package/package/components/apps/editor/appUtils.js +8 -0
- package/package/components/apps/editor/component/Component.svelte +21 -0
- package/package/components/apps/editor/component/components.d.ts +168 -9
- package/package/components/apps/editor/component/components.js +203 -10
- package/package/components/apps/editor/component/sets.js +2 -0
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
- package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
- package/package/components/apps/types.d.ts +5 -3
- package/package/components/build_workers.js +9 -13
- package/package/components/common/button/Button.svelte +78 -36
- package/package/components/common/button/Button.svelte.d.ts +7 -0
- package/package/components/common/button/model.d.ts +0 -1
- package/package/components/common/button/model.js +0 -8
- package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
- package/package/components/common/table/ScriptRow.svelte +28 -1
- package/package/components/common/tabs/Tab.svelte +6 -4
- package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
- package/package/components/copilot/IteratorGen.svelte +10 -5
- package/package/components/copilot/MetadataGen.svelte +6 -1
- package/package/components/copilot/PredicateGen.svelte +3 -4
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/StepGen.svelte +2 -1
- package/package/components/copilot/StepGen.svelte.d.ts +1 -0
- package/package/components/copilot/StepInputGen.svelte +13 -7
- package/package/components/copilot/StepInputsGen.svelte +12 -7
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +2 -2
- package/package/components/details/Menu.svelte +11 -6
- package/package/components/details/Menu.svelte.d.ts +1 -3
- package/package/components/details/WebhooksPanel.svelte +1 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
- package/package/components/flows/content/FlowInputs.svelte +84 -238
- package/package/components/flows/content/FlowLoop.svelte +25 -16
- package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
- package/package/components/flows/content/FlowSchedules.svelte +75 -1
- package/package/components/flows/content/FlowSettings.svelte +5 -0
- package/package/components/flows/content/SuspendDrawer.svelte +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -1
- package/package/components/flows/flowStateUtils.js +2 -2
- package/package/components/flows/idUtils.js +12 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
- package/package/components/flows/map/InsertModuleButton.svelte +1 -3
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/package/components/flows/scheduleUtils.d.ts +2 -1
- package/package/components/flows/scheduleUtils.js +2 -1
- package/package/components/home/ItemsList.svelte +10 -9
- package/package/components/icons/AsanaIcon.svelte +5 -0
- package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
- package/package/components/icons/BitbucketIcon.svelte +19 -0
- package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
- package/package/components/icons/CACertificate.svelte +7 -0
- package/package/components/icons/CACertificate.svelte.d.ts +17 -0
- package/package/components/icons/CurrencyApiIcon.svelte +24 -0
- package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
- package/package/components/icons/DynatraceIcon.svelte +26 -0
- package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
- package/package/components/icons/EdgeDbIcon.svelte +25 -0
- package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
- package/package/components/icons/GitIcon.svelte +7 -0
- package/package/components/icons/GitIcon.svelte.d.ts +17 -0
- package/package/components/icons/GoogleCloudIcon.svelte +20 -0
- package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
- package/package/components/icons/IpinfoIcon.svelte +8 -0
- package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
- package/package/components/icons/MSTeamsIcon.svelte +5 -0
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
- package/package/components/icons/MailgunIcon.svelte +11 -0
- package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
- package/package/components/icons/PushoverIcon.svelte +8 -0
- package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
- package/package/components/icons/QuickbooksIcon.svelte +5 -0
- package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
- package/package/components/icons/ResendIcon.svelte +7 -0
- package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
- package/package/components/icons/TrelloIcon.svelte +5 -0
- package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
- package/package/components/icons/TwilioIcon.svelte +11 -0
- package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
- package/package/components/icons/ZendeskIcon.svelte +11 -0
- package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +36 -1
- package/package/components/icons/index.js +37 -2
- package/package/components/instanceSettings.js +38 -1
- package/package/components/jobs/JobPreview.svelte +4 -1
- package/package/components/runs/JobLoader.svelte +6 -4
- package/package/components/runs/JobPreview.svelte +15 -1
- package/package/components/runs/ManuelDatePicker.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
- package/package/components/runs/RunRow.svelte +5 -19
- package/package/components/runs/RunsFilter.svelte +1 -1
- package/package/components/runs/RunsTable.svelte +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +12 -0
- package/package/components/settings/PremiumInfo.svelte +92 -31
- package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
- package/package/components/sidebar/changelogs.js +20 -0
- package/package/components/table/AutoDataTable.svelte +18 -4
- package/package/consts.d.ts +0 -3
- package/package/consts.js +0 -3
- package/package/enterpriseUtils.d.ts +1 -0
- package/package/enterpriseUtils.js +17 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +5 -2
- package/package/gen/models/LargeFileStorage.d.ts +3 -1
- package/package/gen/models/LargeFileStorage.js +2 -0
- package/package/gen/models/User.d.ts +0 -2
- package/package/gen/models/UserUsage.d.ts +4 -0
- package/package/gen/models/WorkflowStatus.d.ts +6 -0
- package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
- package/package/gen/models/WorkflowStatusRecord.js +5 -0
- package/package/gen/models/WorkflowTask.d.ts +4 -0
- package/package/gen/models/WorkflowTask.js +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
- package/package/gen/services/AdminService.d.ts +6 -9
- package/package/gen/services/AdminService.js +6 -7
- package/package/gen/services/FolderService.d.ts +3 -2
- package/package/gen/services/JobService.d.ts +27 -2
- package/package/gen/services/JobService.js +22 -2
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +14 -9
- package/package/gen/services/UserService.js +20 -7
- package/package/gen/services/WorkspaceService.d.ts +62 -0
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/infer.d.ts +20 -1
- package/package/infer.js +39 -19
- package/package/script_helpers.d.ts +7 -6
- package/package/script_helpers.js +24 -7
- package/package/scripts.d.ts +11 -0
- package/package/scripts.js +38 -1
- package/package/stores.d.ts +2 -1
- package/package/stores.js +2 -0
- package/package/utils.d.ts +1 -1
- package/package/utils.js +3 -3
- package/package.json +3 -4
- package/package/components/common/confirmationModal/model.d.ts +0 -9
- package/package/components/common/confirmationModal/model.js +0 -1
- package/package/gen/models/NewUser.d.ts +0 -5
- package/package/gen/models/Usage.d.ts +0 -3
- /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
- /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<script>import { defaultIfEmptyString, emptyString,
|
|
1
|
+
<script>import { defaultIfEmptyString, emptyString, truncateHash } from '../utils';
|
|
2
2
|
import CliHelpBox from './CliHelpBox.svelte';
|
|
3
|
-
import { Badge, Button
|
|
3
|
+
import { Badge, Button } from './common';
|
|
4
4
|
import SchemaForm from './SchemaForm.svelte';
|
|
5
5
|
import SharedBadge from './SharedBadge.svelte';
|
|
6
6
|
import CollapseLink from './CollapseLink.svelte';
|
|
@@ -9,7 +9,7 @@ import TimeAgo from './TimeAgo.svelte';
|
|
|
9
9
|
import ClipboardPanel from './details/ClipboardPanel.svelte';
|
|
10
10
|
import Popup from './common/popup/Popup.svelte';
|
|
11
11
|
import { autoPlacement } from '@floating-ui/core';
|
|
12
|
-
import { Calendar } from 'lucide-svelte';
|
|
12
|
+
import { Calendar, CornerDownLeft } from 'lucide-svelte';
|
|
13
13
|
import RunFormAdvancedPopup from './RunFormAdvancedPopup.svelte';
|
|
14
14
|
export let runnable;
|
|
15
15
|
export let runAction;
|
|
@@ -121,14 +121,9 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
|
|
|
121
121
|
btnClasses="!px-6 !py-1 !h-8 inline-flex gap-2"
|
|
122
122
|
disabled={!isValid}
|
|
123
123
|
on:click={() => runAction(scheduledForStr, args, invisible_to_owner, overrideTag)}
|
|
124
|
+
shortCut={{ Icon: CornerDownLeft, hide: !viewKeybinding }}
|
|
124
125
|
>
|
|
125
|
-
{
|
|
126
|
-
<div class="inline-flex gap-0 items-center">
|
|
127
|
-
<Kbd small isModifier>{getModifierKey()}</Kbd><Kbd small>Enter</Kbd>
|
|
128
|
-
</div>{/if}
|
|
129
|
-
<div>
|
|
130
|
-
{scheduledForStr ? 'Schedule to run later' : buttonText}
|
|
131
|
-
</div>
|
|
126
|
+
{scheduledForStr ? 'Schedule to run later' : buttonText}
|
|
132
127
|
</Button>
|
|
133
128
|
<div>
|
|
134
129
|
<Popup
|
|
@@ -150,9 +145,9 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
|
|
|
150
145
|
blockOpen={blockPopupOpen}
|
|
151
146
|
>
|
|
152
147
|
<svelte:fragment slot="button">
|
|
153
|
-
<Button nonCaptureEvent startIcon={{ icon: Calendar }} size="xs" color="light"
|
|
154
|
-
|
|
155
|
-
>
|
|
148
|
+
<Button nonCaptureEvent startIcon={{ icon: Calendar }} size="xs" color="light">
|
|
149
|
+
Advanced
|
|
150
|
+
</Button>
|
|
156
151
|
</svelte:fragment>
|
|
157
152
|
<RunFormAdvancedPopup
|
|
158
153
|
bind:scheduledForStr
|
|
@@ -180,11 +175,8 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
|
|
|
180
175
|
btnClasses="!px-6 !py-1 w-full"
|
|
181
176
|
disabled={!isValid}
|
|
182
177
|
on:click={() => runAction(undefined, args, invisible_to_owner, overrideTag)}
|
|
178
|
+
shortCut={{ Icon: CornerDownLeft, hide: !viewKeybinding }}
|
|
183
179
|
>
|
|
184
|
-
{#if viewKeybinding}
|
|
185
|
-
<div>
|
|
186
|
-
<Kbd small isModifier>{getModifierKey()}</Kbd>+<Kbd small>Enter</Kbd>
|
|
187
|
-
</div>{/if}
|
|
188
180
|
{buttonText}
|
|
189
181
|
</Button>
|
|
190
182
|
{/if}
|
|
@@ -5,8 +5,8 @@ import Toggle from './Toggle.svelte';
|
|
|
5
5
|
import Tooltip from './Tooltip.svelte';
|
|
6
6
|
import { userStore, workerTags } from '../stores';
|
|
7
7
|
import { Button } from './common';
|
|
8
|
-
import { getToday } from '../utils';
|
|
9
8
|
import { WorkerService } from '../gen';
|
|
9
|
+
import DateTimeInput from './DateTimeInput.svelte';
|
|
10
10
|
export let runnable;
|
|
11
11
|
export let scheduledForStr;
|
|
12
12
|
export let invisible_to_owner;
|
|
@@ -29,23 +29,22 @@ async function loadWorkerGroups() {
|
|
|
29
29
|
</svelte:fragment>
|
|
30
30
|
</Label>
|
|
31
31
|
|
|
32
|
-
<div class="flex flex-row items-
|
|
33
|
-
<div
|
|
32
|
+
<div class="flex flex-row items-center my-1">
|
|
33
|
+
<div>
|
|
34
34
|
<label for="run-time" />
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
min={getToday().toISOString().slice(0, 16)}
|
|
35
|
+
<DateTimeInput
|
|
36
|
+
value={scheduledForStr}
|
|
37
|
+
on:change={(e) => {
|
|
38
|
+
console.log('e.detail', e.detail)
|
|
39
|
+
scheduledForStr = e.detail
|
|
40
|
+
}}
|
|
42
41
|
/>
|
|
43
42
|
</div>
|
|
44
43
|
<Button
|
|
45
44
|
variant="border"
|
|
46
45
|
color="light"
|
|
47
|
-
size="
|
|
48
|
-
btnClasses="mx-2
|
|
46
|
+
size="xs"
|
|
47
|
+
btnClasses="mx-2 "
|
|
49
48
|
on:click={() => {
|
|
50
49
|
scheduledForStr = undefined
|
|
51
50
|
}}
|
|
@@ -246,6 +246,7 @@ async function reloadContent() {
|
|
|
246
246
|
}
|
|
247
247
|
try {
|
|
248
248
|
await HelpersService.datasetStorageTestConnection({ workspace: $workspaceStore });
|
|
249
|
+
workspaceSettingsInitialized = true;
|
|
249
250
|
}
|
|
250
251
|
catch (e) {
|
|
251
252
|
console.error('Workspace not connected to S3 bucket: ', e);
|
|
@@ -57,9 +57,10 @@ export function openEdit(ePath, isFlow) {
|
|
|
57
57
|
edit = true;
|
|
58
58
|
drawer?.openDrawer();
|
|
59
59
|
}
|
|
60
|
-
export async function openNew(
|
|
60
|
+
export async function openNew(nis_flow, initial_script_path) {
|
|
61
61
|
args = {};
|
|
62
62
|
runnable = undefined;
|
|
63
|
+
is_flow = nis_flow;
|
|
63
64
|
let defaultErrorHandlerMaybe = undefined;
|
|
64
65
|
let defaultRecoveryHandlerMaybe = undefined;
|
|
65
66
|
if ($workspaceStore) {
|
|
@@ -71,7 +72,7 @@ export async function openNew(is_flow, initial_script_path) {
|
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
edit = false;
|
|
74
|
-
itemKind =
|
|
75
|
+
itemKind = nis_flow ? 'flow' : 'script';
|
|
75
76
|
initialScriptPath = initial_script_path ?? '';
|
|
76
77
|
summary = '';
|
|
77
78
|
no_flow_overlap = false;
|
|
@@ -261,13 +262,13 @@ async function loadSchedule() {
|
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
264
|
async function scheduleScript() {
|
|
265
|
+
if (errorHandlerPath !== undefined && isSlackHandler('error', errorHandlerPath)) {
|
|
266
|
+
errorHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
|
|
267
|
+
}
|
|
268
|
+
if (recoveryHandlerPath !== undefined && isSlackHandler('recovery', recoveryHandlerPath)) {
|
|
269
|
+
recoveryHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
|
|
270
|
+
}
|
|
264
271
|
if (edit) {
|
|
265
|
-
if (errorHandlerPath !== undefined && isSlackHandler('error', errorHandlerPath)) {
|
|
266
|
-
errorHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
|
|
267
|
-
}
|
|
268
|
-
if (recoveryHandlerPath !== undefined && isSlackHandler('recovery', recoveryHandlerPath)) {
|
|
269
|
-
recoveryHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
|
|
270
|
-
}
|
|
271
272
|
await ScheduleService.updateSchedule({
|
|
272
273
|
workspace: $workspaceStore,
|
|
273
274
|
path: initialPath,
|
|
@@ -364,7 +365,7 @@ let dirtyPath = false;
|
|
|
364
365
|
View Runs
|
|
365
366
|
</Button>
|
|
366
367
|
</div>
|
|
367
|
-
<div class="mr-8 center-center -mt-
|
|
368
|
+
<div class="mr-8 center-center -mt-1">
|
|
368
369
|
<Toggle
|
|
369
370
|
disabled={!can_write}
|
|
370
371
|
checked={enabled}
|
|
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
openEdit?: ((ePath: string, isFlow: boolean) => void) | undefined;
|
|
5
|
-
openNew?: ((
|
|
5
|
+
openNew?: ((nis_flow: boolean, initial_script_path?: string) => Promise<void>) | undefined;
|
|
6
6
|
};
|
|
7
7
|
events: {
|
|
8
8
|
update: CustomEvent<any>;
|
|
@@ -16,6 +16,6 @@ export type ScheduleEditorInnerEvents = typeof __propDef.events;
|
|
|
16
16
|
export type ScheduleEditorInnerSlots = typeof __propDef.slots;
|
|
17
17
|
export default class ScheduleEditorInner extends SvelteComponent<ScheduleEditorInnerProps, ScheduleEditorInnerEvents, ScheduleEditorInnerSlots> {
|
|
18
18
|
get openEdit(): (ePath: string, isFlow: boolean) => void;
|
|
19
|
-
get openNew(): (
|
|
19
|
+
get openNew(): (nis_flow: boolean, initial_script_path?: string | undefined) => Promise<void>;
|
|
20
20
|
}
|
|
21
21
|
export {};
|
|
@@ -83,6 +83,9 @@ function handleAddOrEditArgument(modalProperty) {
|
|
|
83
83
|
if (!schema.required) {
|
|
84
84
|
schema.required = [];
|
|
85
85
|
}
|
|
86
|
+
if (!schema.order || !Array.isArray(schema.order)) {
|
|
87
|
+
syncOrders();
|
|
88
|
+
}
|
|
86
89
|
schema.properties[modalProperty.name] = modalToSchema(modalProperty);
|
|
87
90
|
if (modalProperty.required) {
|
|
88
91
|
if (!schema.required.includes(modalProperty.name)) {
|
|
@@ -96,15 +99,20 @@ function handleAddOrEditArgument(modalProperty) {
|
|
|
96
99
|
}
|
|
97
100
|
}
|
|
98
101
|
if (editing && oldArgName && oldArgName !== modalProperty.name) {
|
|
102
|
+
let oldPosition = schema.order.indexOf(oldArgName);
|
|
103
|
+
schema.order[oldPosition] = modalProperty.name;
|
|
104
|
+
reorder();
|
|
99
105
|
handleDeleteArgument([oldArgName]);
|
|
100
106
|
}
|
|
107
|
+
if (!schema.order?.includes(modalProperty.name)) {
|
|
108
|
+
schema.order.push(modalProperty.name);
|
|
109
|
+
}
|
|
101
110
|
modalProperty = Object.assign({}, DEFAULT_PROPERTY);
|
|
102
111
|
editing = false;
|
|
103
112
|
oldArgName = undefined;
|
|
104
113
|
schemaModal.closeDrawer();
|
|
105
114
|
}
|
|
106
115
|
schema = schema;
|
|
107
|
-
syncOrders();
|
|
108
116
|
schemaString = JSON.stringify(schema, null, '\t');
|
|
109
117
|
jsonEditor?.setCode(schemaString);
|
|
110
118
|
dispatch('change', schema);
|
|
@@ -144,6 +152,9 @@ function handleDeleteArgument(argPath) {
|
|
|
144
152
|
if (Object.keys(modifiedProperties).includes(argName)) {
|
|
145
153
|
delete modifiedProperties[argName];
|
|
146
154
|
modifiedObject.required = schema.required.filter((arg) => arg !== argName);
|
|
155
|
+
if (modifiedObject.order) {
|
|
156
|
+
modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName);
|
|
157
|
+
}
|
|
147
158
|
schema = schema;
|
|
148
159
|
schemaString = JSON.stringify(schema, null, '\t');
|
|
149
160
|
dispatch('change', schema);
|
|
@@ -73,7 +73,6 @@ async function loadResourceTypes() {
|
|
|
73
73
|
loadResourceTypes();
|
|
74
74
|
$: schema && reorder();
|
|
75
75
|
function reorder() {
|
|
76
|
-
console.log('reordering');
|
|
77
76
|
if (schema?.order && Array.isArray(schema.order)) {
|
|
78
77
|
const n = {};
|
|
79
78
|
schema.order.forEach((x) => {
|
|
@@ -110,7 +109,7 @@ function reorder() {
|
|
|
110
109
|
{disablePortal}
|
|
111
110
|
{resourceTypes}
|
|
112
111
|
{prettifyHeader}
|
|
113
|
-
autofocus={i == 0 && autofocus}
|
|
112
|
+
autofocus={i == 0 && autofocus ? true : null}
|
|
114
113
|
label={argName}
|
|
115
114
|
description={schema.properties[argName].description}
|
|
116
115
|
bind:value={args[argName]}
|
|
@@ -273,9 +273,9 @@ function getResourceTypesFromFormat(format) {
|
|
|
273
273
|
bind:currencyLocale={property.currencyLocale}
|
|
274
274
|
/>
|
|
275
275
|
{:else if property.selectedType == 'object' && property.format !== 'resource-s3'}
|
|
276
|
-
<Tabs selected="
|
|
277
|
-
<Tab value="custom-object">Custom Object</Tab>
|
|
276
|
+
<Tabs selected="resource">
|
|
278
277
|
<Tab value="resource">Resource</Tab>
|
|
278
|
+
<Tab value="custom-object">Custom Object</Tab>
|
|
279
279
|
<svelte:fragment slot="content">
|
|
280
280
|
<div class="pt-2">
|
|
281
281
|
<TabContent value="custom-object">
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
<script>import { DraftService, NewScript, Script, ScriptService } from '../gen';
|
|
1
|
+
<script>import { DraftService, NewScript, Script, ScriptService, ScheduleService } from '../gen';
|
|
2
|
+
import { goto } from '$app/navigation';
|
|
2
3
|
import { page } from '$app/stores';
|
|
3
4
|
import { inferArgs } from '../infer';
|
|
4
5
|
import { initialCode } from '../script_helpers';
|
|
5
|
-
import { enterpriseLicense, userStore, workspaceStore } from '../stores';
|
|
6
|
-
import { cleanValueProperties, emptySchema, emptyString, encodeState,
|
|
6
|
+
import { defaultScripts, enterpriseLicense, userStore, workspaceStore } from '../stores';
|
|
7
|
+
import { cleanValueProperties, emptySchema, emptyString, encodeState, formatCron, orderedJsonStringify } from '../utils';
|
|
7
8
|
import Path from './Path.svelte';
|
|
8
9
|
import ScriptEditor from './ScriptEditor.svelte';
|
|
9
|
-
import { Alert, Badge, Button, Drawer,
|
|
10
|
+
import { Alert, Badge, Button, Drawer, SecondsInput, Tab, TabContent, Tabs } from './common';
|
|
10
11
|
import LanguageIcon from './common/languageIcons/LanguageIcon.svelte';
|
|
11
12
|
import Tooltip from './Tooltip.svelte';
|
|
12
13
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
13
14
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
14
15
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
15
16
|
import ErrorHandlerToggleButton from './details/ErrorHandlerToggleButton.svelte';
|
|
16
|
-
import { Bug, CheckCircle, Code, DiffIcon, Pen, Plus, Rocket, Save, Settings, X } from 'lucide-svelte';
|
|
17
|
-
import { SCRIPT_SHOW_BASH, SCRIPT_SHOW_GO } from '../consts';
|
|
17
|
+
import { Bug, Calendar, CheckCircle, Code, DiffIcon, Pen, Plus, Rocket, Save, Settings, X } from 'lucide-svelte';
|
|
18
18
|
import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirmationModal.svelte';
|
|
19
19
|
import { sendUserToast } from '../toast';
|
|
20
20
|
import { isCloudHosted } from '../cloud';
|
|
@@ -28,7 +28,10 @@ import Label from './Label.svelte';
|
|
|
28
28
|
import { cloneDeep } from 'lodash';
|
|
29
29
|
import WorkerTagPicker from './WorkerTagPicker.svelte';
|
|
30
30
|
import MetadataGen from './copilot/MetadataGen.svelte';
|
|
31
|
-
import
|
|
31
|
+
import ScriptSchedules from './ScriptSchedules.svelte';
|
|
32
|
+
import { writable } from 'svelte/store';
|
|
33
|
+
import { loadScriptSchedule, defaultScriptLanguages } from '../scripts';
|
|
34
|
+
import DefaultScripts from './DefaultScripts.svelte';
|
|
32
35
|
export let script;
|
|
33
36
|
export let initialPath = '';
|
|
34
37
|
export let template = 'script';
|
|
@@ -43,29 +46,31 @@ let metadataOpen = showMeta ||
|
|
|
43
46
|
$page.url.searchParams.get('collab') == undefined);
|
|
44
47
|
let editor = undefined;
|
|
45
48
|
let scriptEditor = undefined;
|
|
49
|
+
let scheduleStore = writable({
|
|
50
|
+
summary: '',
|
|
51
|
+
cron: '0 */5 * * *',
|
|
52
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
53
|
+
args: {},
|
|
54
|
+
enabled: false
|
|
55
|
+
});
|
|
56
|
+
async function loadSchedule() {
|
|
57
|
+
const scheduleRes = await loadScriptSchedule(initialPath, $workspaceStore);
|
|
58
|
+
if (scheduleRes) {
|
|
59
|
+
scheduleStore.set(scheduleRes);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
$: {
|
|
63
|
+
if (initialPath != '') {
|
|
64
|
+
loadSchedule();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
46
67
|
const enterpriseLangs = ['bigquery', 'snowflake', 'mssql'];
|
|
47
68
|
export function setCode(code) {
|
|
48
69
|
editor?.setCode(code);
|
|
49
70
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
['TypeScript (Bun)', Script.language.BUN]
|
|
54
|
-
];
|
|
55
|
-
if (SCRIPT_SHOW_BASH) {
|
|
56
|
-
langs.push(['Bash', Script.language.BASH]);
|
|
57
|
-
}
|
|
58
|
-
if (SCRIPT_SHOW_GO) {
|
|
59
|
-
langs.push(['Go', Script.language.GO]);
|
|
60
|
-
}
|
|
61
|
-
langs.push(['REST', Script.language.NATIVETS]);
|
|
62
|
-
langs.push(['PostgreSQL', Script.language.POSTGRESQL]);
|
|
63
|
-
langs.push(['MySQL', Script.language.MYSQL]);
|
|
64
|
-
langs.push(['BigQuery', Script.language.BIGQUERY]);
|
|
65
|
-
langs.push(['Snowflake', Script.language.SNOWFLAKE]);
|
|
66
|
-
langs.push(['MS SQL Server', Script.language.MSSQL]);
|
|
67
|
-
langs.push(['GraphQL', Script.language.GRAPHQL]);
|
|
68
|
-
langs.push(['PowerShell', Script.language.POWERSHELL]);
|
|
71
|
+
$: langs = ($defaultScripts?.order ?? Object.keys(defaultScriptLanguages))
|
|
72
|
+
.map((l) => [defaultScriptLanguages[l], l])
|
|
73
|
+
.filter((x) => $defaultScripts?.hidden == undefined || !$defaultScripts.hidden.includes(x[1]));
|
|
69
74
|
const scriptKindOptions = [
|
|
70
75
|
{
|
|
71
76
|
value: Script.kind.SCRIPT,
|
|
@@ -117,6 +122,27 @@ function initContent(language, kind, template) {
|
|
|
117
122
|
setCode(script.content);
|
|
118
123
|
}
|
|
119
124
|
}
|
|
125
|
+
async function createSchedule(path) {
|
|
126
|
+
const { cron, timezone, args, enabled, summary } = $scheduleStore;
|
|
127
|
+
try {
|
|
128
|
+
await ScheduleService.createSchedule({
|
|
129
|
+
workspace: $workspaceStore,
|
|
130
|
+
requestBody: {
|
|
131
|
+
path: path,
|
|
132
|
+
schedule: formatCron(cron),
|
|
133
|
+
timezone,
|
|
134
|
+
script_path: path,
|
|
135
|
+
is_flow: false,
|
|
136
|
+
args,
|
|
137
|
+
enabled,
|
|
138
|
+
summary
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
sendUserToast(`The primary schedule could not be created: ${err}`, true);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
120
146
|
async function editScript(stay) {
|
|
121
147
|
loadingSave = true;
|
|
122
148
|
try {
|
|
@@ -159,6 +185,42 @@ async function editScript(stay) {
|
|
|
159
185
|
concurrency_key: emptyString(script.concurrency_key) ? undefined : script.concurrency_key
|
|
160
186
|
}
|
|
161
187
|
});
|
|
188
|
+
const { enabled, timezone, args, cron, summary } = $scheduleStore;
|
|
189
|
+
const scheduleExists = await ScheduleService.existsSchedule({
|
|
190
|
+
workspace: $workspaceStore ?? '',
|
|
191
|
+
path: script.path
|
|
192
|
+
});
|
|
193
|
+
if (scheduleExists) {
|
|
194
|
+
const schedule = await ScheduleService.getSchedule({
|
|
195
|
+
workspace: $workspaceStore ?? '',
|
|
196
|
+
path: script.path
|
|
197
|
+
});
|
|
198
|
+
if (JSON.stringify(schedule.args) != JSON.stringify(args) ||
|
|
199
|
+
schedule.schedule != cron ||
|
|
200
|
+
schedule.timezone != timezone ||
|
|
201
|
+
schedule.summary != summary) {
|
|
202
|
+
await ScheduleService.updateSchedule({
|
|
203
|
+
workspace: $workspaceStore ?? '',
|
|
204
|
+
path: script.path,
|
|
205
|
+
requestBody: {
|
|
206
|
+
schedule: formatCron(cron),
|
|
207
|
+
timezone,
|
|
208
|
+
args,
|
|
209
|
+
summary
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (enabled != schedule.enabled) {
|
|
214
|
+
await ScheduleService.setScheduleEnabled({
|
|
215
|
+
workspace: $workspaceStore ?? '',
|
|
216
|
+
path: script.path,
|
|
217
|
+
requestBody: { enabled }
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (enabled) {
|
|
222
|
+
await createSchedule(script.path);
|
|
223
|
+
}
|
|
162
224
|
savedScript = cloneDeep(script);
|
|
163
225
|
history.replaceState(history.state, '', `/scripts/edit/${script.path}`);
|
|
164
226
|
if (stay) {
|
|
@@ -242,7 +304,6 @@ async function saveDraft(forceSave = false) {
|
|
|
242
304
|
: script.concurrency_key
|
|
243
305
|
}
|
|
244
306
|
});
|
|
245
|
-
initialPath = script.path;
|
|
246
307
|
}
|
|
247
308
|
await DraftService.createDraft({
|
|
248
309
|
workspace: $workspaceStore,
|
|
@@ -259,6 +320,7 @@ async function saveDraft(forceSave = false) {
|
|
|
259
320
|
draft: cloneDeep(script)
|
|
260
321
|
};
|
|
261
322
|
if (initialPath == '' || (savedScript?.draft_only && script.path !== initialPath)) {
|
|
323
|
+
initialPath = script.path;
|
|
262
324
|
goto(`/scripts/edit/${script.path}`);
|
|
263
325
|
}
|
|
264
326
|
sendUserToast('Saved as draft');
|
|
@@ -313,13 +375,7 @@ let selectedTab = 'metadata';
|
|
|
313
375
|
</script>
|
|
314
376
|
|
|
315
377
|
<svelte:window on:keydown={onKeyDown} />
|
|
316
|
-
<UnsavedConfirmationModal
|
|
317
|
-
gotoUrl={goto}
|
|
318
|
-
{beforeNavigate}
|
|
319
|
-
{diffDrawer}
|
|
320
|
-
savedValue={savedScript}
|
|
321
|
-
modifiedValue={script}
|
|
322
|
-
/>
|
|
378
|
+
<UnsavedConfirmationModal {diffDrawer} savedValue={savedScript} modifiedValue={script} />
|
|
323
379
|
|
|
324
380
|
{#if !$userStore?.operator}
|
|
325
381
|
<Drawer placement="right" bind:open={metadataOpen} size="800px">
|
|
@@ -337,6 +393,7 @@ let selectedTab = 'metadata';
|
|
|
337
393
|
cannot be inferred from the type directly.
|
|
338
394
|
</Tooltip>
|
|
339
395
|
</Tab>
|
|
396
|
+
<Tab value="schedule" active={$scheduleStore.enabled}>Schedule</Tab>
|
|
340
397
|
<svelte:fragment slot="content">
|
|
341
398
|
<div class="p-4">
|
|
342
399
|
<TabContent value="metadata">
|
|
@@ -406,14 +463,17 @@ let selectedTab = 'metadata';
|
|
|
406
463
|
</Section>
|
|
407
464
|
|
|
408
465
|
<Section label="Language">
|
|
466
|
+
<svelte:fragment slot="action"><DefaultScripts /></svelte:fragment>
|
|
409
467
|
{#if lockedLanguage}
|
|
410
468
|
<div class="text-sm text-tertiary italic mb-2">
|
|
411
469
|
As a forked script, the language '{script.language}' cannot be modified.
|
|
412
470
|
</div>
|
|
413
471
|
{/if}
|
|
414
472
|
<div class=" grid grid-cols-3 gap-2">
|
|
415
|
-
{#each langs as [label, lang]}
|
|
416
|
-
{@const isPicked =
|
|
473
|
+
{#each langs as [label, lang] (lang)}
|
|
474
|
+
{@const isPicked =
|
|
475
|
+
(lang == script.language && template == 'script') ||
|
|
476
|
+
(template == 'docker' && lang == 'docker')}
|
|
417
477
|
<Popover
|
|
418
478
|
disablePopup={!enterpriseLangs.includes(lang) || !!$enterpriseLicense}
|
|
419
479
|
>
|
|
@@ -425,9 +485,33 @@ let selectedTab = 'metadata';
|
|
|
425
485
|
? '!border-2 !bg-blue-50/75 dark:!bg-frost-900/75'
|
|
426
486
|
: 'm-[1px]'}
|
|
427
487
|
on:click={() => {
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
488
|
+
if (lang == 'docker') {
|
|
489
|
+
if (isCloudHosted()) {
|
|
490
|
+
sendUserToast(
|
|
491
|
+
'You cannot use Docker scripts on the multi-tenant platform. Use a dedicated instance or self-host windmill instead.',
|
|
492
|
+
true,
|
|
493
|
+
[
|
|
494
|
+
{
|
|
495
|
+
label: 'Learn more',
|
|
496
|
+
callback: () => {
|
|
497
|
+
window.open(
|
|
498
|
+
'https://www.windmill.dev/docs/advanced/docker',
|
|
499
|
+
'_blank'
|
|
500
|
+
)
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
]
|
|
504
|
+
)
|
|
505
|
+
return
|
|
506
|
+
}
|
|
507
|
+
template = 'docker'
|
|
508
|
+
} else {
|
|
509
|
+
template = 'script'
|
|
510
|
+
}
|
|
511
|
+
let language = lang == 'docker' ? Script.language.BASH : lang
|
|
512
|
+
//
|
|
513
|
+
initContent(language, script.kind, template)
|
|
514
|
+
script.language = language
|
|
431
515
|
}}
|
|
432
516
|
disabled={lockedLanguage ||
|
|
433
517
|
(enterpriseLangs.includes(lang) && !$enterpriseLicense)}
|
|
@@ -440,40 +524,6 @@ let selectedTab = 'metadata';
|
|
|
440
524
|
>
|
|
441
525
|
</Popover>
|
|
442
526
|
{/each}
|
|
443
|
-
<Button
|
|
444
|
-
size="sm"
|
|
445
|
-
variant="border"
|
|
446
|
-
color={template == 'docker' ? 'blue' : 'light'}
|
|
447
|
-
btnClasses={template == 'docker'
|
|
448
|
-
? '!border-2 !bg-blue-50/75 dark:!bg-frost-900/75'
|
|
449
|
-
: 'm-[1px]'}
|
|
450
|
-
disabled={lockedLanguage}
|
|
451
|
-
on:click={() => {
|
|
452
|
-
if (isCloudHosted()) {
|
|
453
|
-
sendUserToast(
|
|
454
|
-
'You cannot use Docker scripts on the multi-tenant platform. Use a dedicated instance or self-host windmill instead.',
|
|
455
|
-
true,
|
|
456
|
-
[
|
|
457
|
-
{
|
|
458
|
-
label: 'Learn more',
|
|
459
|
-
callback: () => {
|
|
460
|
-
window.open(
|
|
461
|
-
'https://www.windmill.dev/docs/advanced/docker',
|
|
462
|
-
'_blank'
|
|
463
|
-
)
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
]
|
|
467
|
-
)
|
|
468
|
-
return
|
|
469
|
-
}
|
|
470
|
-
template = 'docker'
|
|
471
|
-
initContent(Script.language.BASH, script.kind, template)
|
|
472
|
-
script.language = Script.language.BASH
|
|
473
|
-
}}
|
|
474
|
-
>
|
|
475
|
-
<LanguageIcon lang="docker" /><span class="ml-2 py-2">Docker</span>
|
|
476
|
-
</Button>
|
|
477
527
|
</div>
|
|
478
528
|
</Section>
|
|
479
529
|
|
|
@@ -541,8 +591,13 @@ let selectedTab = 'metadata';
|
|
|
541
591
|
type="text"
|
|
542
592
|
autofocus
|
|
543
593
|
bind:value={script.concurrency_key}
|
|
544
|
-
placeholder={`$workspace/script/${script.path}`}
|
|
594
|
+
placeholder={`$workspace/script/${script.path}-$args[foo]`}
|
|
545
595
|
/>
|
|
596
|
+
<Tooltip
|
|
597
|
+
>Concurrency keys are global, you can have them be workspace specific using
|
|
598
|
+
the variable `$workspace`. You can also use an argument's value using
|
|
599
|
+
`$args[name_of_arg]`</Tooltip
|
|
600
|
+
>
|
|
546
601
|
</Label>
|
|
547
602
|
</div>
|
|
548
603
|
</Section>
|
|
@@ -750,7 +805,7 @@ let selectedTab = 'metadata';
|
|
|
750
805
|
<Section label="Custom env variables">
|
|
751
806
|
<svelte:fragment slot="header">
|
|
752
807
|
<Tooltip
|
|
753
|
-
documentationLink="https://www.windmill.dev/docs/
|
|
808
|
+
documentationLink="https://www.windmill.dev/docs/script_editor/custom_environment_variables"
|
|
754
809
|
>
|
|
755
810
|
Additional static custom env variables to pass to the script.
|
|
756
811
|
</Tooltip>
|
|
@@ -808,6 +863,9 @@ let selectedTab = 'metadata';
|
|
|
808
863
|
<div class="mt-4" />
|
|
809
864
|
<ScriptSchema bind:schema={script.schema} />
|
|
810
865
|
</TabContent>
|
|
866
|
+
<TabContent value="schedule">
|
|
867
|
+
<ScriptSchedules {initialPath} schema={script.schema} schedule={scheduleStore} />
|
|
868
|
+
</TabContent>
|
|
811
869
|
</div>
|
|
812
870
|
</svelte:fragment>
|
|
813
871
|
</Tabs>
|
|
@@ -838,6 +896,21 @@ let selectedTab = 'metadata';
|
|
|
838
896
|
</div>
|
|
839
897
|
|
|
840
898
|
<div class="gap-4 flex">
|
|
899
|
+
{#if $scheduleStore.enabled}
|
|
900
|
+
<Button
|
|
901
|
+
btnClasses="hidden lg:inline-flex"
|
|
902
|
+
startIcon={{ icon: Calendar }}
|
|
903
|
+
variant="contained"
|
|
904
|
+
color="light"
|
|
905
|
+
size="xs"
|
|
906
|
+
on:click={async () => {
|
|
907
|
+
metadataOpen = true
|
|
908
|
+
selectedTab = 'schedule'
|
|
909
|
+
}}
|
|
910
|
+
>
|
|
911
|
+
{$scheduleStore.cron ?? ''}
|
|
912
|
+
</Button>
|
|
913
|
+
{/if}
|
|
841
914
|
<div class="flex justify-start w-full border rounded-md overflow-hidden">
|
|
842
915
|
<div>
|
|
843
916
|
<button
|
|
@@ -911,11 +984,11 @@ let selectedTab = 'metadata';
|
|
|
911
984
|
startIcon={{ icon: Save }}
|
|
912
985
|
on:click={() => saveDraft()}
|
|
913
986
|
disabled={initialPath != '' && !savedScript}
|
|
987
|
+
shortCut={{
|
|
988
|
+
key: 'S'
|
|
989
|
+
}}
|
|
914
990
|
>
|
|
915
|
-
<span class="hidden lg:flex">
|
|
916
|
-
Draft <Kbd small isModifier>{getModifierKey()}</Kbd>
|
|
917
|
-
</span>
|
|
918
|
-
<Kbd small>S</Kbd>
|
|
991
|
+
<span class="hidden lg:flex"> Draft </span>
|
|
919
992
|
</Button>
|
|
920
993
|
<Button
|
|
921
994
|
loading={loadingSave}
|
|
@@ -5,7 +5,7 @@ declare const __propDef: {
|
|
|
5
5
|
props: {
|
|
6
6
|
script: NewScript;
|
|
7
7
|
initialPath?: string | undefined;
|
|
8
|
-
template?: "script" | "
|
|
8
|
+
template?: "script" | "docker" | undefined;
|
|
9
9
|
initialArgs?: Record<string, any> | undefined;
|
|
10
10
|
lockedLanguage?: boolean | undefined;
|
|
11
11
|
showMeta?: boolean | undefined;
|