windmill-components 1.623.2 → 1.642.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/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
- package/dist/sharedUtils/base.d.ts +1 -0
- package/dist/sharedUtils/cloud.d.ts +1 -0
- package/dist/sharedUtils/common.d.ts +111 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
- package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
- package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
- package/dist/sharedUtils/components/apps/types.d.ts +274 -0
- package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
- package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
- package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
- package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
- package/dist/sharedUtils/components/common/index.d.ts +24 -0
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
- package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
- package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
- package/dist/sharedUtils/components/ducklake.d.ts +1 -0
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
- package/dist/sharedUtils/components/icons/index.d.ts +101 -0
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
- package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers.d.ts +20 -0
- package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
- package/dist/sharedUtils/gen/core/request.d.ts +29 -0
- package/dist/sharedUtils/gen/index.d.ts +6 -0
- package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
- package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
- package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
- package/dist/sharedUtils/history.svelte.d.ts +9 -0
- package/dist/sharedUtils/hub.d.ts +49 -0
- package/dist/sharedUtils/jsr.json +6 -0
- package/dist/sharedUtils/lib.d.ts +5 -0
- package/dist/sharedUtils/lib.es.js +1588 -0
- package/dist/sharedUtils/package.json +12 -0
- package/dist/sharedUtils/schema.d.ts +3 -0
- package/dist/sharedUtils/stores.d.ts +97 -0
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
- package/dist/sharedUtils/toast.d.ts +8 -0
- package/dist/sharedUtils/utils.d.ts +265 -0
- package/package/assets/app.css +32 -13
- package/package/components/AIAgentLogViewer.svelte +2 -2
- package/package/components/AIAgentLogViewer.svelte.d.ts +1 -0
- package/package/components/AIProviderPicker.svelte +20 -80
- package/package/components/AIProviderPicker.svelte.d.ts +2 -7
- package/package/components/AddUser.svelte +2 -2
- package/package/components/ApiConnectForm.svelte +7 -1
- package/package/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +15 -5
- package/package/components/ArgInput.svelte.d.ts +3 -4
- package/package/components/Auth0Setting.svelte +6 -2
- package/package/components/AuthSettings.svelte +68 -39
- package/package/components/AuthSettings.svelte.d.ts +3 -1
- package/package/components/AutheliaSetting.svelte +3 -2
- package/package/components/AuthentikSetting.svelte +3 -2
- package/package/components/AutoscalingConfigEditor.svelte +2 -1
- package/package/components/AutoscalingConfigEditor.svelte.d.ts +1 -0
- package/package/components/CenteredModal.svelte +14 -4
- package/package/components/CenteredModal.svelte.d.ts +1 -0
- package/package/components/ChangeInstanceUsernameInner.svelte +1 -1
- package/package/components/CompareWorkspaces.svelte +29 -57
- package/package/components/ConcurrentJobsChart.svelte +1 -1
- package/package/components/ConnectionSection.svelte +69 -73
- package/package/components/CustomSso.svelte +7 -7
- package/package/components/DBManager.svelte +15 -4
- package/package/components/DBManager.svelte.d.ts +2 -0
- package/package/components/DBManagerContent.svelte +5 -0
- package/package/components/DBManagerContent.svelte.d.ts +1 -0
- package/package/components/DBManagerDrawer.svelte +2 -0
- package/package/components/DatatablePicker.svelte +29 -0
- package/package/components/DatatablePicker.svelte.d.ts +13 -0
- package/package/components/DateTimeInput.svelte +3 -3
- package/package/components/DedicatedWorkersSelector.svelte +39 -42
- package/package/components/DeployToSetting.svelte +183 -123
- package/package/components/DeployToSetting.svelte.d.ts +19 -28
- package/package/components/DeployWorkspace.svelte +6 -44
- package/package/components/DeployWorkspace.svelte.d.ts +2 -1
- package/package/components/DeployWorkspaceDrawer.svelte +18 -7
- package/package/components/DeployWorkspaceDrawer.svelte.d.ts +3 -20
- package/package/components/Description.svelte +3 -1
- package/package/components/Dev.svelte +1 -0
- package/package/components/DiffEditor.svelte +7 -6
- package/package/components/DiffEditor.svelte.d.ts +2 -6
- package/package/components/DisplayResult.svelte +2 -2
- package/package/components/DropdownMenu.svelte +39 -0
- package/package/components/DropdownMenu.svelte.d.ts +14 -0
- package/package/components/DropdownSubmenuItem.svelte +68 -0
- package/package/components/DropdownSubmenuItem.svelte.d.ts +10 -0
- package/package/components/DropdownV2.svelte +3 -3
- package/package/components/DropdownV2Inner.svelte +42 -34
- package/package/components/DropdownV2Inner.svelte.d.ts +2 -1
- package/package/components/DucklakePicker.svelte +2 -5
- package/package/components/EEOnly.svelte +4 -14
- package/package/components/EEOnly.svelte.d.ts +0 -1
- package/package/components/Editor.svelte +2 -2
- package/package/components/Editor.svelte.d.ts +1 -0
- package/package/components/EditorBar.svelte +2 -4
- package/package/components/ErrorOrRecoveryHandler.svelte +62 -53
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +1 -0
- package/package/components/ExploreAssetButton.svelte +1 -2
- package/package/components/FileExplorer.svelte +249 -0
- package/package/components/FileExplorer.svelte.d.ts +21 -0
- package/package/components/FilesetEditor.svelte +103 -0
- package/package/components/FilesetEditor.svelte.d.ts +6 -0
- package/package/components/FilterSearchbar.svelte +628 -0
- package/package/components/FilterSearchbar.svelte.d.ts +86 -0
- package/package/components/FlowBuilder.svelte +123 -79
- package/package/components/FlowGraphViewerStep.svelte +49 -33
- package/package/components/FlowHistoryJobPicker.svelte +2 -1
- package/package/components/FlowJobResult.svelte +31 -23
- package/package/components/FlowJobResult.svelte.d.ts +0 -1
- package/package/components/FlowLogRow.svelte +1 -1
- package/package/components/FlowLogViewer.svelte +8 -3
- package/package/components/FlowPreviewContent.svelte +65 -49
- package/package/components/FlowPreviewContent.svelte.d.ts +4 -0
- package/package/components/FlowRestartButton.svelte +47 -47
- package/package/components/FlowRestartButton.svelte.d.ts +2 -0
- package/package/components/FlowStatusViewer.svelte +2 -3
- package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewerInner.svelte +380 -297
- package/package/components/FlowStatusViewerInner.svelte.d.ts +2 -2
- package/package/components/FlowStatusWaitingForEvents.svelte +11 -10
- package/package/components/FolderPicker.svelte +195 -65
- package/package/components/FolderPicker.svelte.d.ts +2 -0
- package/package/components/HistoricInputs.svelte +3 -4
- package/package/components/IconedResourceType.svelte +8 -2
- package/package/components/IconedResourceType.svelte.d.ts +2 -0
- package/package/components/InputError.svelte +9 -0
- package/package/components/InputError.svelte.d.ts +6 -0
- package/package/components/InputTransformForm.svelte +46 -39
- package/package/components/InputTransformForm.svelte.d.ts +1 -0
- package/package/components/InputTransformSchemaForm.svelte +2 -1
- package/package/components/InputTransformSchemaForm.svelte.d.ts +1 -0
- package/package/components/InputTransformsViewer.svelte +37 -20
- package/package/components/InstanceNameEditor.svelte +3 -1
- package/package/components/InstanceSetting.svelte +150 -374
- package/package/components/InstanceSetting.svelte.d.ts +1 -0
- package/package/components/InstanceSettings.svelte +804 -193
- package/package/components/InstanceSettings.svelte.d.ts +17 -2
- package/package/components/IntegerInput.svelte +58 -0
- package/package/components/IntegerInput.svelte.d.ts +14 -0
- package/package/components/InviteGlobalUser.svelte +25 -25
- package/package/components/InviteGlobalUser.svelte.d.ts +4 -2
- package/package/components/JobArgs.svelte +14 -10
- package/package/components/JobLoader.svelte +6 -4
- package/package/components/JobLoader.svelte.d.ts +2 -2
- package/package/components/JobStatus.svelte +29 -26
- package/package/components/JobStatus.svelte.d.ts +1 -0
- package/package/components/KanidmSetting.svelte +3 -2
- package/package/components/KeycloakSetting.svelte +3 -2
- package/package/components/Login.svelte +9 -3
- package/package/components/ModuleStatus.svelte +5 -5
- package/package/components/ModuleTest.svelte +3 -3
- package/package/components/MoveDrawer.svelte +47 -76
- package/package/components/MoveDrawer.svelte.d.ts +4 -6
- package/package/components/NextcloudSetting.svelte +3 -2
- package/package/components/NoDirectDeployAlert.svelte +31 -0
- package/package/components/NoDirectDeployAlert.svelte.d.ts +6 -0
- package/package/components/NumberTypeNarrowing.svelte +65 -67
- package/package/components/NumberTypeNarrowing.svelte.d.ts +2 -1
- package/package/components/OAuthSetting.svelte +6 -14
- package/package/components/ObjectStoreConfigSettings.svelte +150 -55
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +34 -44
- package/package/components/OktaSetting.svelte +3 -2
- package/package/components/PageHeader.svelte +1 -1
- package/package/components/ParentWorkspaceProtectionAlert.svelte +48 -0
- package/package/components/ParentWorkspaceProtectionAlert.svelte.d.ts +7 -0
- package/package/components/Path.svelte +40 -28
- package/package/components/Path.svelte.d.ts +3 -0
- package/package/components/PocketIdSetting.svelte +3 -2
- package/package/components/ResourceEditor.svelte +9 -3
- package/package/components/ResourcePicker.svelte +2 -5
- package/package/components/RightClickPopover.svelte +37 -0
- package/package/components/RightClickPopover.svelte.d.ts +11 -0
- package/package/components/RunChart.svelte +2 -21
- package/package/components/RunChart.svelte.d.ts +0 -3
- package/package/components/RunsPage.svelte +458 -560
- package/package/components/SaveButton.svelte +78 -0
- package/package/components/SaveButton.svelte.d.ts +12 -0
- package/package/components/SaveInputsButton.svelte +1 -1
- package/package/components/SavedInputsV2.svelte +1 -3
- package/package/components/SchemaFormWithArgPicker.svelte +34 -30
- package/package/components/SchemaFormWithArgPicker.svelte.d.ts +12 -21
- package/package/components/SchemaViewer.svelte +56 -53
- package/package/components/ScriptBuilder.svelte +12 -12
- package/package/components/ScriptEditor.svelte +30 -28
- package/package/components/Section.svelte +2 -2
- package/package/components/ServiceLogsInner.svelte +21 -82
- package/package/components/Star.svelte +8 -22
- package/package/components/Star.svelte.d.ts +4 -4
- package/package/components/StringTypeNarrowing.svelte +1 -0
- package/package/components/SummaryPathDisplay.svelte +177 -0
- package/package/components/SummaryPathDisplay.svelte.d.ts +10 -0
- package/package/components/SuperadminSettings.svelte +185 -4
- package/package/components/SuperadminSettings.svelte.d.ts +4 -1
- package/package/components/SuperadminSettingsInner.svelte +307 -192
- package/package/components/SuperadminSettingsInner.svelte.d.ts +12 -1
- package/package/components/TaggedTextInput.svelte +449 -0
- package/package/components/TaggedTextInput.svelte.d.ts +28 -0
- package/package/components/Toast.svelte +69 -51
- package/package/components/Toast.svelte.d.ts +2 -2
- package/package/components/Tooltip.svelte +2 -2
- package/package/components/Tooltip.svelte.d.ts +2 -0
- package/package/components/TooltipInner.svelte +6 -1
- package/package/components/TooltipInner.svelte.d.ts +1 -0
- package/package/components/Uptodate.svelte +3 -2
- package/package/components/UserSettings.svelte +2 -2
- package/package/components/UserSettings.svelte.d.ts +1 -0
- package/package/components/WorkerGroup.svelte +320 -192
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkspaceDependenciesEditor.svelte +33 -17
- package/package/components/ZitadelSetting.svelte +3 -2
- package/package/components/aiProviderStorage.d.ts +5 -0
- package/package/components/aiProviderStorage.js +50 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +24 -13
- package/package/components/apps/components/display/dbtable/metadata.d.ts +1 -0
- package/package/components/apps/components/display/dbtable/metadata.js +1 -0
- package/package/components/apps/components/display/dbtable/queries/count.js +3 -1
- package/package/components/apps/components/display/dbtable/queries/delete.js +3 -1
- package/package/components/apps/components/display/dbtable/queries/insert.js +3 -1
- package/package/components/apps/components/display/dbtable/queries/select.js +15 -1
- package/package/components/apps/components/display/dbtable/queries/update.js +3 -1
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +6 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +7 -0
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +9 -3
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/theme/windmill-theme.css +8 -7
- package/package/components/apps/components/helpers/eval.js +5 -2
- package/package/components/apps/components/layout/AppModal.svelte +2 -1
- package/package/components/apps/components/layout/AppModal.svelte.d.ts +1 -0
- package/package/components/apps/editor/appPolicy.js +5 -4
- package/package/components/apps/editor/appUtils.d.ts +1 -1
- package/package/components/apps/editor/component/components.d.ts +11 -0
- package/package/components/apps/editor/component/components.js +19 -2
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +66 -29
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte.d.ts +2 -17
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +10 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/assets/AssetButtons.svelte +3 -7
- package/package/components/assets/AssetButtons.svelte.d.ts +2 -4
- package/package/components/assets/AssetColumnBadges.svelte +35 -0
- package/package/components/assets/AssetColumnBadges.svelte.d.ts +10 -0
- package/package/components/assets/AssetsDropdownButton.svelte +8 -6
- package/package/components/assets/AssetsUsageDrawer.svelte +16 -14
- package/package/components/assets/JobAssetsViewer.svelte +4 -6
- package/package/components/assets/assetsFilter.d.ts +50 -0
- package/package/components/assets/assetsFilter.js +43 -0
- package/package/components/assets/lib.d.ts +3 -2
- package/package/components/assets/lib.js +8 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +30 -1
- package/package/components/common/InlineCalendarInput.svelte +580 -0
- package/package/components/common/InlineCalendarInput.svelte.d.ts +31 -0
- package/package/components/common/alert/Alert.svelte +2 -8
- package/package/components/common/alert/model.d.ts +1 -0
- package/package/components/common/alert/model.js +7 -0
- package/package/components/common/badge/Badge.svelte +7 -3
- package/package/components/common/badge/Badge.svelte.d.ts +1 -0
- package/package/components/common/breadcrumb/Breadcrumb.svelte +10 -14
- package/package/components/common/breadcrumb/Breadcrumb.svelte.d.ts +8 -23
- package/package/components/common/drawer/DrawerContent.svelte +1 -1
- package/package/components/common/seconds/SecondsInput.svelte +158 -67
- package/package/components/common/seconds/SecondsInput.svelte.d.ts +9 -21
- package/package/components/common/sidebar/SidebarNavigation.svelte +50 -0
- package/package/components/common/sidebar/SidebarNavigation.svelte.d.ts +25 -0
- package/package/components/common/table/AppRow.svelte +7 -10
- package/package/components/common/table/AppRow.svelte.d.ts +2 -2
- package/package/components/common/table/FlowRow.svelte +12 -15
- package/package/components/common/table/FlowRow.svelte.d.ts +2 -2
- package/package/components/common/table/RawAppRow.svelte +5 -82
- package/package/components/common/table/RawAppRow.svelte.d.ts +2 -23
- package/package/components/common/table/Row.svelte +2 -2
- package/package/components/common/table/Row.svelte.d.ts +0 -2
- package/package/components/common/table/ScriptRow.svelte +8 -11
- package/package/components/common/table/ScriptRow.svelte.d.ts +2 -2
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -1
- package/package/components/copilot/TestAIKey.svelte +1 -1
- package/package/components/copilot/chat/AIChatInput.svelte +22 -11
- package/package/components/copilot/chat/AIChatManager.svelte.js +15 -17
- package/package/components/copilot/chat/AvailableContextList.svelte +215 -12
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +1 -0
- package/package/components/copilot/chat/ContextTextarea.svelte +15 -2
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +1 -1
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +4 -2
- package/package/components/copilot/chat/app/core.js +7 -86
- package/package/components/copilot/chat/context.js +4 -1
- package/package/components/copilot/chat/flow/core.js +193 -61
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.d.ts +2 -2
- package/package/components/copilot/chat/flow/openFlowZod.js +6 -8
- package/package/components/copilot/chat/navigator/core.d.ts +2 -2
- package/package/components/copilot/chat/navigator/core.js +11 -2
- package/package/components/copilot/chat/script/core.js +4 -1
- package/package/components/copilot/chat/shared.d.ts +53 -1
- package/package/components/copilot/chat/shared.js +227 -1
- package/package/components/copilot/lib.js +42 -0
- package/package/components/dedicated_worker.d.ts +7 -0
- package/package/components/dedicated_worker.js +36 -0
- package/package/components/details/DetailPageHeader.svelte +8 -23
- package/package/components/details/DetailPageHeader.svelte.d.ts +1 -0
- package/package/components/details/DetailPageLayout.svelte +1 -1
- package/package/components/details/createAppFromScript.d.ts +136 -16
- package/package/components/details/createAppFromScript.js +13 -12
- package/package/components/diffEditorTypes.d.ts +6 -0
- package/package/components/diffEditorTypes.js +1 -0
- package/package/components/flows/CreateActionsApp.svelte +32 -82
- package/package/components/flows/CreateActionsFlow.svelte +28 -28
- package/package/components/flows/FlowAssetsHandler.svelte +1 -4
- package/package/components/flows/FlowProgressBar.svelte +37 -1
- package/package/components/flows/FlowProgressBar.svelte.d.ts +3 -0
- package/package/components/flows/agentToolUtils.d.ts +18 -0
- package/package/components/flows/agentToolUtils.js +47 -0
- package/package/components/flows/common/FlowCardHeader.svelte +8 -9
- package/package/components/flows/content/FlowEnvironmentVariables.svelte +3 -2
- package/package/components/flows/content/FlowLoop.svelte +3 -4
- package/package/components/flows/content/FlowModuleCache.svelte +1 -3
- package/package/components/flows/content/FlowModuleComponent.svelte +22 -6
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
- package/package/components/flows/content/FlowResult.svelte +77 -25
- package/package/components/flows/content/FlowRetries.svelte +1 -1
- package/package/components/flows/content/FlowSettings.svelte +4 -7
- package/package/components/flows/flowState.js +6 -0
- package/package/components/flows/flowStateUtils.svelte.js +4 -1
- package/package/components/flows/flowStore.svelte.d.ts +1 -1
- package/package/components/flows/flowStore.svelte.js +4 -2
- package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/package/components/flows/header/FlowYamlEditor.svelte +2 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +12 -6
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +2 -2
- package/package/components/flows/map/InsertModuleInner.svelte +7 -0
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
- package/package/components/flows/missingInputWarnings.js +7 -0
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +4 -4
- package/package/components/flows/propPicker/OutputPicker.svelte +1 -1
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +6 -9
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +3 -3
- package/package/components/flows/scheduleUtils.js +2 -2
- package/package/components/flows/types.d.ts +1 -3
- package/package/components/flows/utils.svelte.js +5 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +23 -21
- package/package/components/git_sync/GitSyncSection.svelte +24 -27
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +3 -1
- package/package/components/graph/model.d.ts +1 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +3 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +25 -13
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +8 -0
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +5 -2
- package/package/components/home/Item.svelte +9 -15
- package/package/components/home/Item.svelte.d.ts +8 -7
- package/package/components/home/ItemsList.svelte +4 -10
- package/package/components/home/ItemsList.svelte.d.ts +1 -0
- package/package/components/icons/GoogleCalendarIcon.svelte +41 -0
- package/package/components/icons/GoogleCalendarIcon.svelte.d.ts +7 -0
- package/package/components/icons/GoogleDriveIcon.svelte +30 -0
- package/package/components/icons/GoogleDriveIcon.svelte.d.ts +7 -0
- package/package/components/icons/GoogleIcon.svelte +15 -6
- package/package/components/icons/GoogleIcon.svelte.d.ts +5 -2
- package/package/components/icons/MSSqlServerIcon.svelte +111 -47
- package/package/components/instanceSettings/IndexerJobIndexSettings.svelte +94 -0
- package/package/components/instanceSettings/IndexerJobIndexSettings.svelte.d.ts +9 -0
- package/package/components/instanceSettings/IndexerLogIndexSettings.svelte +67 -0
- package/package/components/instanceSettings/IndexerLogIndexSettings.svelte.d.ts +9 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +109 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte.d.ts +9 -0
- package/package/components/instanceSettings/SecretBackendConfig.svelte +15 -16
- package/package/components/instanceSettings/SettingCard.svelte +47 -0
- package/package/components/instanceSettings/SettingCard.svelte.d.ts +19 -0
- package/package/components/instanceSettings/SettingsSearchInput.svelte +66 -0
- package/package/components/instanceSettings/SettingsSearchInput.svelte.d.ts +9 -0
- package/package/components/instanceSettings.d.ts +52 -0
- package/package/components/instanceSettings.js +413 -69
- package/package/components/meltComponents/MenuItem.svelte +1 -0
- package/package/components/meltComponents/Popover.svelte +10 -1
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -0
- package/package/components/meltComponents/Tooltip.svelte +2 -1
- package/package/components/meltComponents/Tooltip.svelte.d.ts +1 -0
- package/package/components/moveRenameManager.d.ts +21 -0
- package/package/components/moveRenameManager.js +61 -0
- package/package/components/progressBar/ProgressBar.svelte +69 -27
- package/package/components/progressBar/ProgressBar.svelte.d.ts +7 -0
- package/package/components/prop_picker.d.ts +0 -3
- package/package/components/propertyPicker/PropPicker.svelte +34 -49
- package/package/components/propertyPicker/PropPicker.svelte.d.ts +12 -11
- package/package/components/raw_apps/FileTreeNode.svelte +1 -0
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +3 -2
- package/package/components/raw_apps/RawAppEditor.svelte +20 -16
- package/package/components/raw_apps/RawAppEditor.svelte.d.ts +4 -4
- package/package/components/raw_apps/RawAppEditorHeader.svelte +73 -7
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -1
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +1 -2
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +41 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +0 -1
- package/package/components/raw_apps/RawAppSidebar.svelte +32 -284
- package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -1
- package/package/components/raw_apps/RunnableRow.svelte +88 -34
- package/package/components/raw_apps/RunnableRow.svelte.d.ts +4 -0
- package/package/components/resources/resourcesFilter.d.ts +70 -0
- package/package/components/resources/resourcesFilter.js +61 -0
- package/package/components/runs/BatchReRunOptionsPane.svelte +130 -121
- package/package/components/runs/BatchReRunOptionsPane.svelte.d.ts +3 -2
- package/package/components/runs/FlowExecutionStatus.svelte +30 -0
- package/package/components/runs/FlowExecutionStatus.svelte.d.ts +15 -0
- package/package/components/runs/JobDetailFieldConfig.d.ts +47 -0
- package/package/components/runs/JobDetailFieldConfig.js +433 -0
- package/package/components/runs/JobDetailHeader.svelte +551 -0
- package/package/components/runs/JobDetailHeader.svelte.d.ts +17 -0
- package/package/components/runs/JobRunsPreview.svelte +174 -218
- package/package/components/runs/JobRunsPreview.svelte.d.ts +0 -1
- package/package/components/runs/JobStatusIcon.svelte +47 -0
- package/package/components/runs/JobStatusIcon.svelte.d.ts +9 -0
- package/package/components/runs/RunBadges.svelte +39 -34
- package/package/components/runs/RunBadges.svelte.d.ts +2 -1
- package/package/components/runs/RunRow.svelte +24 -64
- package/package/components/runs/RunRow.svelte.d.ts +1 -2
- package/package/components/runs/RunsTable.svelte +312 -131
- package/package/components/runs/RunsTable.svelte.d.ts +4 -3
- package/package/components/runs/TimeframeSelect.svelte +189 -0
- package/package/components/runs/TimeframeSelect.svelte.d.ts +44 -0
- package/package/components/runs/runsFilter.d.ts +201 -0
- package/package/components/runs/runsFilter.js +182 -0
- package/package/components/runs/useJobsLoader.svelte.d.ts +5 -7
- package/package/components/runs/useJobsLoader.svelte.js +27 -30
- package/package/components/schedules/schedulesFilter.d.ts +65 -0
- package/package/components/schedules/schedulesFilter.js +60 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +43 -22
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +1 -0
- package/package/components/schema/RunningJobSchemaPicker.svelte +1 -1
- package/package/components/schema/editable_schema_wrapper.d.ts +1 -0
- package/package/components/scripts/CreateActionsScript.svelte +0 -1
- package/package/components/search/GlobalSearchModal.svelte +1 -8
- package/package/components/select/GenericDropdown.svelte +113 -0
- package/package/components/select/GenericDropdown.svelte.d.ts +37 -0
- package/package/components/select/Select.svelte +17 -4
- package/package/components/select/Select.svelte.d.ts +2 -1
- package/package/components/select/SelectDropdown.svelte +76 -155
- package/package/components/select/SelectDropdown.svelte.d.ts +4 -1
- package/package/components/settings/ChangeWorkspaceColor.svelte +7 -8
- package/package/components/settings/ChangeWorkspaceId.svelte +4 -6
- package/package/components/settings/ChangeWorkspaceName.svelte +6 -8
- package/package/components/settings/PremiumInfo.svelte +268 -128
- package/package/components/settings/SettingsPageHeader.svelte +22 -0
- package/package/components/settings/SettingsPageHeader.svelte.d.ts +10 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +13 -23
- package/package/components/sidebar/CriticalAlertModalInner.svelte +28 -22
- package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +5 -20
- package/package/components/sidebar/DarkModeToggle.svelte +2 -2
- package/package/components/sidebar/FavoriteMenu.svelte +101 -20
- package/package/components/sidebar/FavoriteMenu.svelte.d.ts +29 -1
- package/package/components/sidebar/MenuButton.svelte +10 -7
- package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
- package/package/components/sidebar/MenuLink.svelte +4 -3
- package/package/components/sidebar/OperatorMenu.svelte +3 -1
- package/package/components/sidebar/OperatorMenu.svelte.d.ts +6 -1
- package/package/components/sidebar/SidebarContent.svelte +3 -3
- package/package/components/sidebar/WorkspaceMenu.svelte +3 -2
- package/package/components/table/AutoDataTable.svelte +2 -2
- package/package/components/toast.js +1 -2
- package/package/components/triggers/AddTriggersButton.svelte +11 -0
- package/package/components/triggers/TriggerFilters.svelte +71 -0
- package/package/components/triggers/TriggerFilters.svelte.d.ts +10 -0
- package/package/components/triggers/TriggersEditor.svelte +31 -11
- package/package/components/triggers/TriggersWrapper.svelte +10 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +7 -0
- package/package/components/triggers/kafka/utils.js +1 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte +22 -17
- package/package/components/triggers/native/NativeTriggerTable.svelte +16 -0
- package/package/components/triggers/native/services/google/GoogleCalendarPicker.svelte +112 -0
- package/package/components/triggers/native/services/google/GoogleCalendarPicker.svelte.d.ts +8 -0
- package/package/components/triggers/native/services/google/GoogleDrivePicker.svelte +323 -0
- package/package/components/triggers/native/services/google/GoogleDrivePicker.svelte.d.ts +8 -0
- package/package/components/triggers/native/services/google/GoogleTriggerForm.svelte +116 -0
- package/package/components/triggers/native/services/google/GoogleTriggerForm.svelte.d.ts +12 -0
- package/package/components/triggers/native/utils.d.ts +0 -1
- package/package/components/triggers/native/utils.js +15 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +3 -3
- package/package/components/triggers/triggers.svelte.d.ts +1 -1
- package/package/components/triggers/triggers.svelte.js +11 -3
- package/package/components/triggers/utils.js +33 -6
- package/package/components/triggers/websocket/WebsocketEditorConfigSection.svelte +1 -1
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +3 -81
- package/package/components/triggers.d.ts +1 -1
- package/package/components/variables/variablesFilter.d.ts +56 -0
- package/package/components/variables/variablesFilter.js +51 -0
- package/package/components/waitJob.d.ts +1 -1
- package/package/components/waitJob.js +3 -2
- package/package/components/worker_group.d.ts +2 -0
- package/package/components/worker_group.js +15 -0
- package/package/components/workspaceSettings/AISettings.svelte +36 -42
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte +4 -4
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte.d.ts +1 -2
- package/package/components/workspaceSettings/DataTableSettings.svelte +27 -16
- package/package/components/workspaceSettings/DataTableSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +21 -15
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +24 -66
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +6 -10
- package/package/components/workspaceSettings/OAuthClientConfig.svelte +46 -75
- package/package/components/workspaceSettings/OAuthClientConfig.svelte.d.ts +8 -1
- package/package/components/workspaceSettings/RulesetEditor.svelte +280 -0
- package/package/components/workspaceSettings/RulesetEditor.svelte.d.ts +9 -0
- package/package/components/workspaceSettings/SettingsFooter.svelte +35 -0
- package/package/components/workspaceSettings/SettingsFooter.svelte.d.ts +12 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +48 -34
- package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte +66 -27
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +237 -73
- package/package/components/workspaceSettings/WorkspaceRulesets.svelte +183 -0
- package/package/components/workspaceSettings/WorkspaceRulesets.svelte.d.ts +3 -0
- package/package/editorLangUtils.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +996 -70
- package/package/gen/schemas.gen.js +1352 -378
- package/package/gen/services.gen.d.ts +156 -41
- package/package/gen/services.gen.js +319 -83
- package/package/gen/types.gen.d.ts +1896 -317
- package/package/hub.d.ts +1 -0
- package/package/hub.js +7 -0
- package/package/hubPaths.json +2 -1
- package/package/infer.d.ts +2 -0
- package/package/mcpEndpointTools.d.ts +3 -0
- package/package/mcpEndpointTools.js +574 -147
- package/package/rawAppWmillTs.js +12 -11
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +1 -1
- package/package/storeUtils.js +8 -0
- package/package/stores.d.ts +1 -1
- package/package/stores.js +4 -2
- package/package/svelte5Utils.svelte.d.ts +40 -0
- package/package/svelte5Utils.svelte.js +158 -0
- package/package/svelte5UtilsKit.svelte.d.ts +13 -3
- package/package/svelte5UtilsKit.svelte.js +96 -20
- package/package/system_prompts/prompts.d.ts +5 -5
- package/package/system_prompts/prompts.js +94 -21
- package/package/toast.d.ts +5 -1
- package/package/toast.js +14 -5
- package/package/utils.js +214 -7
- package/package/utils_deployable.d.ts +25 -25
- package/package/utils_deployable.js +2 -1
- package/package/validators/workspaceSettings.d.ts +12 -0
- package/package/validators/workspaceSettings.js +72 -0
- package/package/workspaceProtectionRules.svelte.d.ts +73 -0
- package/package/workspaceProtectionRules.svelte.js +176 -0
- package/package.json +8 -5
- package/package/components/DropdownSelect.svelte +0 -26
- package/package/components/DropdownSelect.svelte.d.ts +0 -11
- package/package/components/FlowPreviewResult.svelte +0 -84
- package/package/components/FlowPreviewResult.svelte.d.ts +0 -20
- package/package/components/copilot/chat/context.d.ts +0 -119
- package/package/components/flows/propPicker/FlowPropPicker.svelte +0 -72
- package/package/components/flows/propPicker/FlowPropPicker.svelte.d.ts +0 -23
- package/package/components/runs/ManuelDatePicker.svelte +0 -96
- package/package/components/runs/ManuelDatePicker.svelte.d.ts +0 -35
- package/package/components/runs/RunsBatchActionsDropdown.svelte +0 -82
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +0 -15
- package/package/components/runs/RunsFilter.svelte +0 -966
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -80
|
@@ -1,115 +1,90 @@
|
|
|
1
1
|
<script lang="ts">import { JobService, UserService, FolderService, ScriptService, FlowService, OpenAPI } from '../gen';
|
|
2
2
|
import { sendUserToast } from '../toast';
|
|
3
|
-
import { userStore, workspaceStore, userWorkspaces } from '../stores';
|
|
4
|
-
import { Button, Drawer, DrawerContent, Skeleton } from './common';
|
|
3
|
+
import { userStore, workspaceStore, userWorkspaces, superadmin } from '../stores';
|
|
4
|
+
import { Button, ButtonType, Drawer, DrawerContent, Skeleton, Tab, Tabs } from './common';
|
|
5
5
|
import RunChart from './RunChart.svelte';
|
|
6
6
|
import JobRunsPreview from './runs/JobRunsPreview.svelte';
|
|
7
7
|
import Tooltip from './Tooltip.svelte';
|
|
8
|
-
import CalendarPicker from './common/calendarPicker/CalendarPicker.svelte';
|
|
9
8
|
import RunsTable from './runs/RunsTable.svelte';
|
|
10
9
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
11
|
-
import
|
|
10
|
+
import { allowWildcards, buildRunsFilterSearchbarSchema, buildRunsFilterPresets } from './runs/runsFilter';
|
|
12
11
|
import Toggle from './Toggle.svelte';
|
|
13
12
|
import ConfirmationModal from './common/confirmationModal/ConfirmationModal.svelte';
|
|
14
13
|
import RunsQueue from './runs/RunsQueue.svelte';
|
|
15
14
|
import { twMerge } from 'tailwind-merge';
|
|
16
|
-
import ManuelDatePicker from './runs/ManuelDatePicker.svelte';
|
|
17
15
|
import { computeJobKinds, useJobsLoader } from './runs/useJobsLoader.svelte';
|
|
18
|
-
import { Calendar, Clock, TriangleAlert } from 'lucide-svelte';
|
|
19
16
|
import ConcurrentJobsChart from './ConcurrentJobsChart.svelte';
|
|
20
|
-
import {
|
|
17
|
+
import { pluralize } from '../utils';
|
|
21
18
|
import BatchReRunOptionsPane, {} from './runs/BatchReRunOptionsPane.svelte';
|
|
22
19
|
import { untrack } from 'svelte';
|
|
23
20
|
import { page } from '$app/state';
|
|
24
|
-
import RunOption from './runs/RunOption.svelte';
|
|
25
|
-
import TooltipV2 from './meltComponents/Tooltip.svelte';
|
|
26
|
-
import DropdownSelect from './DropdownSelect.svelte';
|
|
27
|
-
import RunsBatchActionsDropdown from './runs/RunsBatchActionsDropdown.svelte';
|
|
28
|
-
import { createBubbler } from 'svelte/legacy';
|
|
29
|
-
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
30
|
-
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
31
21
|
import Select from './select/Select.svelte';
|
|
32
22
|
import AnimatedPane from './splitPanes/AnimatedPane.svelte';
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
23
|
+
import { StaleWhileLoading, useLocalStorageValue } from '../svelte5Utils.svelte';
|
|
24
|
+
import { CircleAlert, CircleCheck, CirclePlay, Hourglass, TriangleAlertIcon } from 'lucide-svelte';
|
|
25
|
+
import DropdownV2 from './DropdownV2.svelte';
|
|
26
|
+
import TimeframeSelect, { buildManualTimeframe, runsTimeframes, useSyncedTimeframe } from './runs/TimeframeSelect.svelte';
|
|
27
|
+
import FilterSearchbar, { useUrlSyncedFilterInstance } from './FilterSearchbar.svelte';
|
|
28
|
+
import { jobTriggerKinds } from './triggers/utils';
|
|
29
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
30
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
31
|
+
import ToggleButtonMore from './common/toggleButton-v2/ToggleButtonMore.svelte';
|
|
32
|
+
let paths = $state([]);
|
|
33
|
+
let usernames = $state([]);
|
|
34
|
+
let folders = $state([]);
|
|
35
|
+
let runsFilterSearchbarSchema = $derived(buildRunsFilterSearchbarSchema({
|
|
36
|
+
paths,
|
|
37
|
+
usernames,
|
|
38
|
+
folders,
|
|
39
|
+
jobTriggerKinds,
|
|
40
|
+
isSuperAdmin: !!$superadmin
|
|
41
|
+
}));
|
|
42
|
+
let perPage = useLocalStorageValue('runs_per_page', 1000, 'number');
|
|
43
|
+
let filters = useUrlSyncedFilterInstance(untrack(() => runsFilterSearchbarSchema));
|
|
35
44
|
let { initialPath } = $props();
|
|
36
|
-
let
|
|
45
|
+
let batchRerunOptionsIsOpen = $state(false);
|
|
37
46
|
// Initialize path filter from route param if provided and not already set via query params
|
|
38
|
-
if (initialPath && !filters.path) {
|
|
39
|
-
filters.path = initialPath;
|
|
40
|
-
}
|
|
41
|
-
// Initialize toggle filters from localStorage if not set via URL params
|
|
42
|
-
// Check if URL has the params explicitly set; if not, use localStorage values
|
|
43
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
44
|
-
if (!urlParams.has('show_schedules')) {
|
|
45
|
-
filters.show_schedules = getShowSchedules();
|
|
46
|
-
}
|
|
47
|
-
if (!urlParams.has('show_future_jobs')) {
|
|
48
|
-
filters.show_future_jobs = getShowFutureJobs();
|
|
47
|
+
if (initialPath && !filters.val.path) {
|
|
48
|
+
filters.val.path = initialPath;
|
|
49
49
|
}
|
|
50
50
|
let selectedIds = $state([]);
|
|
51
|
-
let loadingSelectedIds = $state(false);
|
|
52
51
|
let selectedWorkspace = $state(undefined);
|
|
53
|
-
let
|
|
54
|
-
let jobKinds = $derived(computeJobKinds(filters.job_kinds));
|
|
55
|
-
let paths = $state([]);
|
|
56
|
-
let usernames = $state([]);
|
|
57
|
-
let folders = $state([]);
|
|
52
|
+
let jobKinds = $derived(computeJobKinds(filters.val.job_kinds ?? null));
|
|
58
53
|
let argError = $state('');
|
|
59
54
|
let resultError = $state('');
|
|
60
|
-
let
|
|
61
|
-
let selectedManualDate = $state(0);
|
|
62
|
-
let autoRefresh = $state(getAutoRefresh());
|
|
55
|
+
let autoRefresh = useLocalStorageValue('auto_refresh_in_runs', true, 'boolean');
|
|
63
56
|
let runDrawer = $state(undefined);
|
|
64
57
|
let lookback = $state(1);
|
|
65
58
|
let askingForConfirmation = $state(undefined);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
catch (e) {
|
|
80
|
-
console.error('Error getting show schedules', e);
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
function getShowFutureJobs() {
|
|
85
|
-
try {
|
|
86
|
-
return localStorage.getItem('show_future_jobs_in_runs') != 'false';
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
console.error('Error getting show future jobs', e);
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
let manualDatePicker = $state(undefined);
|
|
59
|
+
let automaticTimeframeState = useLocalStorageValue('runs_automatic_timeframe', 'null', 'string');
|
|
60
|
+
let _timeframe = useSyncedTimeframe(runsTimeframes, () => ({
|
|
61
|
+
maxTs: filters.val.max_ts?.toISOString(),
|
|
62
|
+
minTs: filters.val.min_ts?.toISOString(),
|
|
63
|
+
timeframe: automaticTimeframeState.val === 'null' ? null : automaticTimeframeState.val
|
|
64
|
+
}), (v) => {
|
|
65
|
+
v.maxTs ? (filters.val.max_ts = new Date(v.maxTs)) : delete filters.val.max_ts;
|
|
66
|
+
v.minTs ? (filters.val.min_ts = new Date(v.minTs)) : delete filters.val.min_ts;
|
|
67
|
+
automaticTimeframeState.val = v.timeframe ?? 'null';
|
|
68
|
+
});
|
|
69
|
+
let timeframe = $derived(_timeframe.val);
|
|
70
|
+
let manualTimeframe = $derived(timeframe.type === 'manual' ? timeframe : undefined);
|
|
94
71
|
let graph = $state(typeOfChart(page.url.searchParams.get('graph')));
|
|
95
|
-
let graphIsRunsChart = $state(untrack(() => graph) === 'RunChart');
|
|
96
72
|
let innerWidth = $state(window.innerWidth);
|
|
97
73
|
let jobsLoader = useJobsLoader(() => ({
|
|
98
|
-
filters,
|
|
99
|
-
|
|
74
|
+
filters: filters.val,
|
|
75
|
+
timeframe,
|
|
100
76
|
jobKinds,
|
|
101
|
-
autoRefresh,
|
|
77
|
+
autoRefresh: autoRefresh.val,
|
|
102
78
|
argError,
|
|
103
79
|
resultError,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
80
|
+
perPage: perPage.val,
|
|
81
|
+
lookback: graph === 'RunChart' ? 0 : lookback,
|
|
82
|
+
onSetPerPage: (p) => (perPage.val = p),
|
|
107
83
|
currentWorkspace: $workspaceStore ?? ''
|
|
108
84
|
}));
|
|
109
85
|
let lastFetchWentToEnd = $derived(jobsLoader.lastFetchWentToEnd);
|
|
110
86
|
let queue_count = $derived(jobsLoader.queue_count);
|
|
111
87
|
let suspended_count = $derived(jobsLoader.suspended_count);
|
|
112
|
-
let loading = $derived(jobsLoader.loading);
|
|
113
88
|
let externalJobs = $derived(jobsLoader.externalJobs);
|
|
114
89
|
let extendedJobs = $derived(jobsLoader.extendedJobs);
|
|
115
90
|
// Avoid flicker, but still show empty if loading takes too long
|
|
@@ -118,22 +93,10 @@ let debouncedJobs = new StaleWhileLoading(() => jobsLoader.jobs);
|
|
|
118
93
|
let completedJobs = $derived(jobsLoader.completedJobs ?? debouncedCompletedJobs.current);
|
|
119
94
|
let jobs = $derived(jobsLoader.jobs ?? debouncedJobs.current);
|
|
120
95
|
let runsTable = $state(undefined);
|
|
121
|
-
function reloadJobsWithoutFilterError() {
|
|
122
|
-
if (resultError == '' && argError == '') {
|
|
123
|
-
filterTimeout && clearTimeout(filterTimeout);
|
|
124
|
-
filterTimeout = setTimeout(() => {
|
|
125
|
-
jobsLoader?.loadJobs(true);
|
|
126
|
-
}, 2000);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
96
|
function reset() {
|
|
130
|
-
|
|
131
|
-
filters.max_ts = null;
|
|
132
|
-
selectedManualDate = 0;
|
|
97
|
+
_timeframe.val = { ...runsTimeframes[0] };
|
|
133
98
|
selectedIds = [];
|
|
134
|
-
filters.schedule_path
|
|
135
|
-
batchReRunOptions = { flow: {}, script: {} };
|
|
136
|
-
selectionMode = false;
|
|
99
|
+
delete filters.val.schedule_path;
|
|
137
100
|
selectedWorkspace = undefined;
|
|
138
101
|
jobsLoader?.loadJobs(true);
|
|
139
102
|
}
|
|
@@ -152,25 +115,25 @@ async function loadPaths() {
|
|
|
152
115
|
}
|
|
153
116
|
function resetAndFilterBy(setter) {
|
|
154
117
|
return (e) => {
|
|
155
|
-
filters.path
|
|
156
|
-
filters.user
|
|
157
|
-
filters.folder
|
|
158
|
-
filters.label
|
|
159
|
-
filters.concurrency_key
|
|
160
|
-
filters.tag
|
|
161
|
-
filters.worker
|
|
162
|
-
filters.schedule_path
|
|
118
|
+
delete filters.val.path;
|
|
119
|
+
delete filters.val.user;
|
|
120
|
+
delete filters.val.folder;
|
|
121
|
+
delete filters.val.label;
|
|
122
|
+
delete filters.val.concurrency_key;
|
|
123
|
+
delete filters.val.tag;
|
|
124
|
+
delete filters.val.worker;
|
|
125
|
+
delete filters.val.schedule_path;
|
|
163
126
|
setter(e.detail);
|
|
164
127
|
};
|
|
165
128
|
}
|
|
166
|
-
const filterByPath = resetAndFilterBy((s) => (filters.path = s));
|
|
167
|
-
const filterByUser = resetAndFilterBy((s) => (filters.user = s));
|
|
168
|
-
const filterByFolder = resetAndFilterBy((s) => (filters.folder = s));
|
|
169
|
-
const filterByLabel = resetAndFilterBy((s) => (filters.label = s));
|
|
170
|
-
const filterByConcurrencyKey = resetAndFilterBy((s) => (filters.concurrency_key = s));
|
|
171
|
-
const filterByTag = resetAndFilterBy((s) => (filters.tag = s));
|
|
172
|
-
const filterBySchedule = resetAndFilterBy((s) => (filters.schedule_path = s));
|
|
173
|
-
const filterByWorker = resetAndFilterBy((s) => (filters.worker = s));
|
|
129
|
+
const filterByPath = resetAndFilterBy((s) => (filters.val.path = s));
|
|
130
|
+
const filterByUser = resetAndFilterBy((s) => (filters.val.user = s));
|
|
131
|
+
const filterByFolder = resetAndFilterBy((s) => (filters.val.folder = s));
|
|
132
|
+
const filterByLabel = resetAndFilterBy((s) => (filters.val.label = s));
|
|
133
|
+
const filterByConcurrencyKey = resetAndFilterBy((s) => (filters.val.concurrency_key = s));
|
|
134
|
+
const filterByTag = resetAndFilterBy((s) => (filters.val.tag = s));
|
|
135
|
+
const filterBySchedule = resetAndFilterBy((s) => (filters.val.schedule_path = s));
|
|
136
|
+
const filterByWorker = resetAndFilterBy((s) => (filters.val.worker = s));
|
|
174
137
|
function typeOfChart(s) {
|
|
175
138
|
switch (s) {
|
|
176
139
|
case 'RunChart':
|
|
@@ -181,72 +144,55 @@ function typeOfChart(s) {
|
|
|
181
144
|
return 'RunChart';
|
|
182
145
|
}
|
|
183
146
|
}
|
|
184
|
-
let selectionMode = $state(false);
|
|
185
|
-
async function onSetSelectionMode(mode) {
|
|
186
|
-
selectionMode = mode;
|
|
187
|
-
if (!mode) {
|
|
188
|
-
selectedIds = [];
|
|
189
|
-
batchReRunOptions = { flow: {}, script: {} };
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
const selectableIds = jobs?.filter(isJobSelectable(mode)).map((j) => j.id) ?? [];
|
|
193
|
-
selectedIds = [];
|
|
194
|
-
if (!selectableIds?.length) {
|
|
195
|
-
sendUserToast('There are no visible jobs that can be ' +
|
|
196
|
-
{ cancel: 'cancelled', 're-run': 're-ran' }[mode], true);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
147
|
function getSelectedFilters() {
|
|
200
|
-
const argFilter = filters.arg && JSON.parse(filters.arg);
|
|
201
|
-
const resultFilter = filters.result && JSON.parse(filters.result);
|
|
148
|
+
const argFilter = filters.val.arg && JSON.parse(filters.val.arg);
|
|
149
|
+
const resultFilter = filters.val.result && JSON.parse(filters.val.result);
|
|
150
|
+
const { minTs, maxTs } = timeframe.computeMinMax();
|
|
202
151
|
return {
|
|
203
152
|
workspace: $workspaceStore ?? '',
|
|
204
|
-
startedBefore:
|
|
205
|
-
startedAfter:
|
|
206
|
-
schedulePath: filters.schedule_path ?? undefined,
|
|
207
|
-
scriptPathExact: filters.path === null || filters.path === '' ? undefined : filters.path,
|
|
208
|
-
createdBy: filters.user || undefined,
|
|
209
|
-
scriptPathStart: filters.folder ? `f/${filters.folder}/` : undefined,
|
|
153
|
+
startedBefore: maxTs ?? undefined,
|
|
154
|
+
startedAfter: minTs ?? undefined,
|
|
155
|
+
schedulePath: filters.val.schedule_path ?? undefined,
|
|
156
|
+
scriptPathExact: filters.val.path === null || filters.val.path === '' ? undefined : filters.val.path,
|
|
157
|
+
createdBy: filters.val.user || undefined,
|
|
158
|
+
scriptPathStart: filters.val.folder ? `f/${filters.val.folder}/` : undefined,
|
|
210
159
|
jobKinds: jobKinds == '' ? undefined : jobKinds,
|
|
211
|
-
success: filters.
|
|
212
|
-
|
|
160
|
+
success: filters.val.status == 'success'
|
|
161
|
+
? true
|
|
162
|
+
: filters.val.status == 'failure'
|
|
163
|
+
? false
|
|
164
|
+
: undefined,
|
|
165
|
+
running: filters.val.status == 'running' || filters.val.status == 'suspended'
|
|
213
166
|
? true
|
|
214
|
-
: filters.
|
|
167
|
+
: filters.val.status == 'waiting'
|
|
215
168
|
? false
|
|
216
169
|
: undefined,
|
|
217
|
-
isSkipped: filters.show_skipped ? undefined : false,
|
|
170
|
+
isSkipped: filters.val.show_skipped ? undefined : false,
|
|
218
171
|
// isFlowStep: jobKindsCat != 'all' ? false : undefined,
|
|
219
|
-
hasNullParent: filters.
|
|
172
|
+
hasNullParent: filters.val.path != undefined ||
|
|
173
|
+
filters.val.path != undefined ||
|
|
174
|
+
filters.val.job_kinds != 'all'
|
|
220
175
|
? true
|
|
221
176
|
: undefined,
|
|
222
|
-
label: filters.label || undefined,
|
|
223
|
-
tag: filters.tag || undefined,
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
177
|
+
label: filters.val.label || undefined,
|
|
178
|
+
tag: filters.val.tag || undefined,
|
|
179
|
+
suspended: filters.val.status == 'waiting'
|
|
180
|
+
? false
|
|
181
|
+
: filters.val.status == 'suspended'
|
|
182
|
+
? true
|
|
183
|
+
: undefined,
|
|
184
|
+
scheduledForBeforeNow: filters.val.show_future_jobs == false ||
|
|
185
|
+
filters.val.status == 'waiting' ||
|
|
186
|
+
filters.val.status == 'suspended'
|
|
229
187
|
? true
|
|
230
188
|
: undefined,
|
|
231
189
|
args: argFilter && Object.keys(argFilter).length && !argError ? argFilter : undefined,
|
|
232
190
|
result: resultFilter && Object.keys(resultFilter).length && !resultError ? resultFilter : undefined,
|
|
233
|
-
jobTriggerKind: filters.job_trigger_kind || undefined,
|
|
234
|
-
allWorkspaces: filters.all_workspaces || undefined,
|
|
235
|
-
allowWildcards: filters.
|
|
191
|
+
jobTriggerKind: filters.val.job_trigger_kind || undefined,
|
|
192
|
+
allWorkspaces: filters.val.all_workspaces || undefined,
|
|
193
|
+
allowWildcards: allowWildcards(filters.val) || undefined
|
|
236
194
|
};
|
|
237
195
|
}
|
|
238
|
-
$effect(() => {
|
|
239
|
-
if (filters.job_trigger_kind === 'schedule' && !filters.show_schedules) {
|
|
240
|
-
filters.show_schedules = true;
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
// Persist toggle filters to localStorage
|
|
244
|
-
$effect(() => {
|
|
245
|
-
localStorage.setItem('show_schedules_in_runs', filters.show_schedules ? 'true' : 'false');
|
|
246
|
-
});
|
|
247
|
-
$effect(() => {
|
|
248
|
-
localStorage.setItem('show_future_jobs_in_runs', filters.show_future_jobs ? 'true' : 'false');
|
|
249
|
-
});
|
|
250
196
|
async function cancelJobs(uuidsToCancel, forceCancel = false) {
|
|
251
197
|
const uuids = await JobService.cancelSelection({
|
|
252
198
|
workspace: $workspaceStore ?? '',
|
|
@@ -256,9 +202,8 @@ async function cancelJobs(uuidsToCancel, forceCancel = false) {
|
|
|
256
202
|
selectedIds = [];
|
|
257
203
|
jobsLoader?.loadJobs(true, true);
|
|
258
204
|
sendUserToast(`Canceled ${uuids.length} jobs`);
|
|
259
|
-
selectionMode = false;
|
|
260
205
|
}
|
|
261
|
-
async function
|
|
206
|
+
async function onCancelAllJobsMatchingFilters() {
|
|
262
207
|
forceCancelInPopup = false;
|
|
263
208
|
askingForConfirmation = {
|
|
264
209
|
title: 'Confirm cancelling all jobs corresponding to the selected filters',
|
|
@@ -277,17 +222,17 @@ async function onCancelFilteredJobs() {
|
|
|
277
222
|
}
|
|
278
223
|
};
|
|
279
224
|
}
|
|
280
|
-
async function onCancelSelectedJobs() {
|
|
225
|
+
async function onCancelSelectedJobs(jobIdsToCancel) {
|
|
281
226
|
forceCancelInPopup = true;
|
|
282
227
|
askingForConfirmation = {
|
|
283
|
-
confirmBtnText: `Cancel ${
|
|
284
|
-
title:
|
|
228
|
+
confirmBtnText: `Cancel ${jobIdsToCancel.length} jobs`,
|
|
229
|
+
title: `Confirm cancelling ${jobIdsToCancel.length} jobs`,
|
|
285
230
|
onConfirm: (forceCancel) => {
|
|
286
|
-
cancelJobs(
|
|
231
|
+
cancelJobs(jobIdsToCancel, forceCancel);
|
|
287
232
|
}
|
|
288
233
|
};
|
|
289
234
|
}
|
|
290
|
-
async function reRunJobs(jobIdsToReRun) {
|
|
235
|
+
async function reRunJobs(jobIdsToReRun, batchReRunOptions) {
|
|
291
236
|
if (!$workspaceStore)
|
|
292
237
|
return;
|
|
293
238
|
if (askingForConfirmation) {
|
|
@@ -295,8 +240,8 @@ async function reRunJobs(jobIdsToReRun) {
|
|
|
295
240
|
}
|
|
296
241
|
const body = {
|
|
297
242
|
job_ids: jobIdsToReRun,
|
|
298
|
-
script_options_by_path: batchReRunOptions.script,
|
|
299
|
-
flow_options_by_path: batchReRunOptions.flow
|
|
243
|
+
script_options_by_path: batchReRunOptions.script ?? {},
|
|
244
|
+
flow_options_by_path: batchReRunOptions.flow ?? {}
|
|
300
245
|
};
|
|
301
246
|
// workaround because EventSource does not support POST requests
|
|
302
247
|
// https://medium.com/@david.richards.tech/sse-server-sent-events-using-a-post-request-without-eventsource-1c0bd6f14425
|
|
@@ -351,60 +296,50 @@ async function reRunJobs(jobIdsToReRun) {
|
|
|
351
296
|
resolve(undefined);
|
|
352
297
|
});
|
|
353
298
|
selectedIds = [];
|
|
354
|
-
batchReRunOptions = { flow: {}, script: {} };
|
|
355
299
|
jobsLoader?.loadJobs(true, true);
|
|
356
|
-
selectionMode = false;
|
|
357
300
|
}
|
|
358
|
-
async function
|
|
301
|
+
async function onRerunAllJobsMatchingFilters() {
|
|
359
302
|
const selectedFilters = getSelectedFilters();
|
|
360
303
|
selectedIds = [];
|
|
361
|
-
|
|
362
|
-
if (filters.job_kinds !== 'runs') {
|
|
304
|
+
const loadingToast = sendUserToast('Loading job ids', 'info');
|
|
305
|
+
if (filters.val.job_kinds !== 'runs') {
|
|
363
306
|
sendUserToast('Batch re-run is only supported for scripts and flows', true);
|
|
307
|
+
loadingToast.destroy();
|
|
308
|
+
return;
|
|
364
309
|
}
|
|
365
310
|
selectedIds = await JobService.listFilteredJobsUuids({
|
|
366
311
|
...selectedFilters,
|
|
367
312
|
jobKinds: 'script,flow'
|
|
368
313
|
});
|
|
369
|
-
|
|
314
|
+
loadingToast.destroy();
|
|
315
|
+
batchRerunOptionsIsOpen = true;
|
|
370
316
|
}
|
|
371
|
-
async function onReRunSelectedJobs() {
|
|
317
|
+
async function onReRunSelectedJobs(batchReRunOptions) {
|
|
372
318
|
const jobIdsToReRun = selectedIds;
|
|
373
319
|
askingForConfirmation = {
|
|
374
320
|
title: `Confirm re-running the selected jobs`,
|
|
375
321
|
confirmBtnText: `Re-run ${jobIdsToReRun.length} jobs`,
|
|
376
322
|
type: 'reload',
|
|
377
323
|
onConfirm: async () => {
|
|
378
|
-
await reRunJobs(jobIdsToReRun);
|
|
324
|
+
await reRunJobs(jobIdsToReRun, batchReRunOptions);
|
|
379
325
|
}
|
|
380
326
|
};
|
|
381
327
|
}
|
|
382
|
-
function setLookback(lookbackInDays) {
|
|
383
|
-
lookback = lookbackInDays;
|
|
384
|
-
}
|
|
385
328
|
async function loadExtra() {
|
|
386
329
|
await jobsLoader?.loadExtraJobs();
|
|
387
330
|
}
|
|
388
331
|
function jobsFilter(f) {
|
|
389
|
-
filters.path =
|
|
390
|
-
filters.user =
|
|
391
|
-
filters.folder =
|
|
392
|
-
filters.label =
|
|
393
|
-
filters.concurrency_key =
|
|
394
|
-
filters.tag =
|
|
395
|
-
filters.worker =
|
|
396
|
-
filters.schedule_path =
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
else {
|
|
401
|
-
filters.success = f;
|
|
402
|
-
}
|
|
403
|
-
filters.job_kinds = 'all';
|
|
332
|
+
filters.val.path = undefined;
|
|
333
|
+
filters.val.user = undefined;
|
|
334
|
+
filters.val.folder = undefined;
|
|
335
|
+
filters.val.label = undefined;
|
|
336
|
+
filters.val.concurrency_key = undefined;
|
|
337
|
+
filters.val.tag = undefined;
|
|
338
|
+
filters.val.worker = undefined;
|
|
339
|
+
filters.val.schedule_path = undefined;
|
|
340
|
+
filters.val.status = filters.val.status == f ? undefined : f;
|
|
341
|
+
filters.val.job_kinds = 'all';
|
|
404
342
|
}
|
|
405
|
-
$effect(() => {
|
|
406
|
-
loadingSelectedIds && selectedIds.length && setTimeout(() => (loadingSelectedIds = false), 250);
|
|
407
|
-
});
|
|
408
343
|
$effect(() => {
|
|
409
344
|
if ($workspaceStore) {
|
|
410
345
|
untrack(() => {
|
|
@@ -420,32 +355,10 @@ let warnJobLimit = $derived.by(() => {
|
|
|
420
355
|
extended !== undefined &&
|
|
421
356
|
extended.jobs.length + extended.obscured_jobs.length >= 1000);
|
|
422
357
|
});
|
|
423
|
-
const bubble = createBubbler();
|
|
424
|
-
function selectAll() {
|
|
425
|
-
if (!selectionMode)
|
|
426
|
-
return;
|
|
427
|
-
if (allSelected) {
|
|
428
|
-
allSelected = false;
|
|
429
|
-
selectedIds = [];
|
|
430
|
-
}
|
|
431
|
-
else {
|
|
432
|
-
allSelected = true;
|
|
433
|
-
selectedIds = jobs?.filter(isJobSelectable(selectionMode)).map((j) => j.id) ?? [];
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
let allSelected = $derived.by(() => {
|
|
437
|
-
return selectionMode && selectedIds.length === selectableJobCount;
|
|
438
|
-
});
|
|
439
|
-
const selectableJobCount = $derived.by(() => {
|
|
440
|
-
if (!selectionMode)
|
|
441
|
-
return 0;
|
|
442
|
-
return jobs?.filter(isJobSelectable(selectionMode)).length ?? 0;
|
|
443
|
-
});
|
|
444
|
-
let tableTopBarWidth = $state(0);
|
|
445
358
|
const smallScreenWidth = 1920;
|
|
446
|
-
const verySmallScreenWidth = 1300;
|
|
447
359
|
let forceCancelInPopup = $state(false);
|
|
448
|
-
const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${
|
|
360
|
+
const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${perPage.val} jobs are taken into account: a job that was started earlier than this limit will not be taken into account`);
|
|
361
|
+
let manualSelectionMode = $state();
|
|
449
362
|
</script>
|
|
450
363
|
|
|
451
364
|
<ConfirmationModal
|
|
@@ -495,7 +408,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
|
|
|
495
408
|
{#if selectedIds[0] === '-'}
|
|
496
409
|
<div class="p-4">There is no information available for this job</div>
|
|
497
410
|
{:else}
|
|
498
|
-
<JobRunsPreview
|
|
411
|
+
<JobRunsPreview id={selectedIds[0]} workspace={selectedWorkspace} />
|
|
499
412
|
{/if}
|
|
500
413
|
{/if}
|
|
501
414
|
</DrawerContent>
|
|
@@ -515,29 +428,27 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
|
|
|
515
428
|
{:else}
|
|
516
429
|
<div class="w-full h-screen flex flex-col" bind:clientWidth={innerWidth}>
|
|
517
430
|
<!-- Header and filters -->
|
|
518
|
-
<div class="flex flex-row items-start w-full
|
|
519
|
-
<div class="flex flex-row items-center
|
|
520
|
-
<
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
</h1>
|
|
431
|
+
<div class="flex flex-row items-start w-full px-4 gap-3 py-4 flex-wrap">
|
|
432
|
+
<div class="flex flex-row items-center gap-6">
|
|
433
|
+
<h1
|
|
434
|
+
class={twMerge(
|
|
435
|
+
'!text-2xl font-semibold leading-6 tracking-tight',
|
|
436
|
+
$userStore?.operator ? 'pl-10' : ''
|
|
437
|
+
)}
|
|
438
|
+
>
|
|
439
|
+
Runs
|
|
440
|
+
</h1>
|
|
529
441
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
</div>
|
|
442
|
+
<Tooltip
|
|
443
|
+
documentationLink="https://www.windmill.dev/docs/core_concepts/monitor_past_and_future_runs"
|
|
444
|
+
>
|
|
445
|
+
All past and schedule executions of scripts and flows, including previews. You only see
|
|
446
|
+
your own runs or runs of groups you belong to unless you are an admin.
|
|
447
|
+
</Tooltip>
|
|
537
448
|
|
|
538
449
|
<!-- Queue -->
|
|
539
450
|
<RunsQueue
|
|
540
|
-
success={filters.
|
|
451
|
+
success={filters.val.status ?? null}
|
|
541
452
|
{queue_count}
|
|
542
453
|
{suspended_count}
|
|
543
454
|
onJobsWaiting={() => {
|
|
@@ -550,178 +461,174 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
|
|
|
550
461
|
/>
|
|
551
462
|
</div>
|
|
552
463
|
|
|
553
|
-
<div class="
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
clearable={true}
|
|
570
|
-
bind:date={filters.min_ts}
|
|
571
|
-
on:clear={() => (filters.min_ts = null)}
|
|
572
|
-
label="From"
|
|
573
|
-
class={filters.min_ts || filters.max_ts
|
|
574
|
-
? ''
|
|
575
|
-
: 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
|
|
464
|
+
<div class="hidden xl:flex gap-2 ml-6">
|
|
465
|
+
<ToggleButtonGroup
|
|
466
|
+
tabListClass="hidden 2xl:flex"
|
|
467
|
+
bind:selected={
|
|
468
|
+
() => filters.val.job_kinds ?? 'runs',
|
|
469
|
+
(v) => (v === 'runs' ? delete filters.val.job_kinds : (filters.val.job_kinds = v))
|
|
470
|
+
}
|
|
471
|
+
>
|
|
472
|
+
{#snippet children({ item })}
|
|
473
|
+
<ToggleButton value="all" label="All" {item} />
|
|
474
|
+
<ToggleButton
|
|
475
|
+
value="runs"
|
|
476
|
+
label="Runs"
|
|
477
|
+
showTooltipIcon
|
|
478
|
+
tooltip="Runs are jobs that have no parent jobs (flows are jobs that are parent of the jobs they start), they have been triggered through the UI, a schedule or webhook"
|
|
479
|
+
{item}
|
|
576
480
|
/>
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
481
|
+
<ToggleButton
|
|
482
|
+
value="dependencies"
|
|
483
|
+
label="Deps"
|
|
484
|
+
showTooltipIcon
|
|
485
|
+
tooltip="Deploying a script, flow or an app launch a dependency job that create and then attach the lockfile to the deployed item. This mechanism ensure that logic is always executed with the exact same direct and indirect dependencies."
|
|
486
|
+
{item}
|
|
487
|
+
/>
|
|
488
|
+
<ToggleButtonMore
|
|
489
|
+
togglableItems={[
|
|
490
|
+
{
|
|
491
|
+
label: 'Previews',
|
|
492
|
+
value: 'previews',
|
|
493
|
+
tooltip: "Previews are jobs that have been started in the editor as 'Tests'"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
label: 'Sync',
|
|
497
|
+
value: 'deploymentcallbacks',
|
|
498
|
+
tooltip:
|
|
499
|
+
'Sync jobs that are triggered on every script deployment to sync the workspace with the Git repository configured in the the workspace settings'
|
|
500
|
+
}
|
|
501
|
+
]}
|
|
502
|
+
{item}
|
|
503
|
+
bind:selected={filters.val.job_kinds}
|
|
504
|
+
/>
|
|
505
|
+
{/snippet}
|
|
506
|
+
</ToggleButtonGroup>
|
|
507
|
+
<ToggleButtonGroup
|
|
508
|
+
bind:selected={
|
|
509
|
+
() => filters.val.status ?? 'all',
|
|
510
|
+
(v) => (v === 'all' ? delete filters.val.status : (filters.val.status = v))
|
|
511
|
+
}
|
|
512
|
+
id="status"
|
|
513
|
+
>
|
|
514
|
+
{#snippet children({ item })}
|
|
515
|
+
<ToggleButton value={'all'} label="All" {item} />
|
|
516
|
+
<ToggleButton
|
|
517
|
+
value={'running'}
|
|
518
|
+
tooltip="Running"
|
|
519
|
+
class="whitespace-nowrap"
|
|
520
|
+
icon={CirclePlay}
|
|
521
|
+
iconProps={{
|
|
522
|
+
class:
|
|
523
|
+
'group-data-[state=on]:text-yellow-600 dark:group-data-[state=on]:text-yellow-400'
|
|
524
|
+
}}
|
|
525
|
+
{item}
|
|
526
|
+
/>
|
|
527
|
+
<ToggleButton
|
|
528
|
+
value={'success'}
|
|
529
|
+
tooltip="Success"
|
|
530
|
+
class="whitespace-nowrap"
|
|
531
|
+
icon={CircleCheck}
|
|
532
|
+
iconProps={{
|
|
533
|
+
class:
|
|
534
|
+
'group-data-[state=on]:text-green-500 dark:group-data-[state=on]:text-green-300'
|
|
535
|
+
}}
|
|
536
|
+
{item}
|
|
537
|
+
/>
|
|
538
|
+
<ToggleButton
|
|
539
|
+
value={'failure'}
|
|
540
|
+
tooltip="Failure"
|
|
541
|
+
class="whitespace-nowrap"
|
|
542
|
+
icon={CircleAlert}
|
|
543
|
+
iconProps={{
|
|
544
|
+
class: 'group-data-[state=on]:text-red-500 dark:group-data-[state=on]:text-red-300'
|
|
545
|
+
}}
|
|
546
|
+
{item}
|
|
547
|
+
/>
|
|
548
|
+
{#if filters.val.status == 'waiting'}
|
|
549
|
+
<ToggleButton
|
|
550
|
+
value={'waiting'}
|
|
551
|
+
tooltip="Waiting"
|
|
552
|
+
class="whitespace-nowrap"
|
|
553
|
+
icon={Hourglass}
|
|
554
|
+
selectedColor="blue"
|
|
555
|
+
{item}
|
|
556
|
+
/>
|
|
557
|
+
{:else if filters.val.status == 'suspended'}
|
|
558
|
+
<ToggleButton
|
|
559
|
+
value={'suspended'}
|
|
560
|
+
tooltip="Suspended"
|
|
561
|
+
class="whitespace-nowrap"
|
|
562
|
+
icon={Hourglass}
|
|
563
|
+
selectedColor="purple"
|
|
564
|
+
{item}
|
|
589
565
|
/>
|
|
590
566
|
{/if}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
on:clear={() => (filters.max_ts = null)}
|
|
594
|
-
bind:date={filters.max_ts}
|
|
595
|
-
label="To"
|
|
596
|
-
class={filters.min_ts || filters.max_ts
|
|
597
|
-
? ''
|
|
598
|
-
: 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
|
|
599
|
-
/>
|
|
600
|
-
</RunOption>
|
|
601
|
-
|
|
602
|
-
{#if filters.min_ts || filters.max_ts}
|
|
603
|
-
<RunOption label="Reset" for="reset" noLabel>
|
|
604
|
-
<Button variant="default" size="xs" onClick={reset} btnClasses="h-9">Reset</Button>
|
|
605
|
-
</RunOption>
|
|
606
|
-
{/if}
|
|
607
|
-
</div>
|
|
608
|
-
|
|
609
|
-
<!-- Filters 1 -->
|
|
610
|
-
<div class="flex flex-row gap-2">
|
|
611
|
-
<RunsFilter
|
|
612
|
-
bind:allowWildcards={filters.allow_wildcards}
|
|
613
|
-
bind:user={filters.user}
|
|
614
|
-
bind:folder={filters.folder}
|
|
615
|
-
bind:label={filters.label}
|
|
616
|
-
bind:concurrencyKey={filters.concurrency_key}
|
|
617
|
-
bind:tag={filters.tag}
|
|
618
|
-
bind:worker={filters.worker}
|
|
619
|
-
bind:showSkipped={filters.show_skipped}
|
|
620
|
-
bind:path={filters.path}
|
|
621
|
-
bind:success={filters.success}
|
|
622
|
-
bind:jobTriggerKind={filters.job_trigger_kind}
|
|
623
|
-
bind:argError
|
|
624
|
-
bind:resultError
|
|
625
|
-
bind:jobKindsCat={filters.job_kinds}
|
|
626
|
-
bind:allWorkspaces={filters.all_workspaces}
|
|
627
|
-
bind:schedulePath={filters.schedule_path}
|
|
628
|
-
bind:argFilter={filters.arg}
|
|
629
|
-
bind:resultFilter={filters.result}
|
|
630
|
-
on:change={reloadJobsWithoutFilterError}
|
|
631
|
-
on:successChange={(e) => {
|
|
632
|
-
if (e.detail == 'running' && filters.max_ts != undefined) {
|
|
633
|
-
filters.max_ts = null
|
|
634
|
-
}
|
|
635
|
-
}}
|
|
636
|
-
{usernames}
|
|
637
|
-
{folders}
|
|
638
|
-
{paths}
|
|
639
|
-
mobile={innerWidth < verySmallScreenWidth}
|
|
640
|
-
small={innerWidth < smallScreenWidth}
|
|
641
|
-
calendarSmall={!filters.min_ts && !filters.max_ts}
|
|
642
|
-
/>
|
|
643
|
-
</div>
|
|
567
|
+
{/snippet}
|
|
568
|
+
</ToggleButtonGroup>
|
|
644
569
|
</div>
|
|
570
|
+
|
|
571
|
+
<TimeframeSelect
|
|
572
|
+
wrapperClasses="ml-auto"
|
|
573
|
+
onClick={() => jobsLoader?.loadJobs(true)}
|
|
574
|
+
loading={jobsLoader?.loading}
|
|
575
|
+
items={runsTimeframes}
|
|
576
|
+
bind:value={_timeframe.val}
|
|
577
|
+
/>
|
|
578
|
+
<FilterSearchbar
|
|
579
|
+
class="flex-1 relative max-w-[34rem] min-w-[18rem] {ButtonType.UnifiedMinHeightClasses.md}"
|
|
580
|
+
schema={runsFilterSearchbarSchema}
|
|
581
|
+
presets={buildRunsFilterPresets({ isSuperadmin: !!$superadmin })}
|
|
582
|
+
bind:value={filters.val}
|
|
583
|
+
placeholder="Filter runs..."
|
|
584
|
+
/>
|
|
645
585
|
</div>
|
|
646
586
|
|
|
647
587
|
<!-- Graph -->
|
|
648
|
-
<div class="p-2 px-4
|
|
649
|
-
<div class="relative z-10">
|
|
650
|
-
<
|
|
651
|
-
<
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
>
|
|
658
|
-
{#snippet children({ item })}
|
|
659
|
-
<ToggleButton value="RunChart" label="Duration" {item} />
|
|
660
|
-
<ToggleButton
|
|
661
|
-
{item}
|
|
662
|
-
value="ConcurrencyChart"
|
|
663
|
-
label="Concurrency"
|
|
664
|
-
icon={warnJobLimit ? TriangleAlert : undefined}
|
|
665
|
-
tooltip={warnJobLimit ? warnJobLimitMsg : undefined}
|
|
666
|
-
/>
|
|
588
|
+
<div class="p-2 px-4 bg-surface-tertiary mx-4 border rounded-md">
|
|
589
|
+
<div class="relative z-10 mb-2 flex gap-2">
|
|
590
|
+
<Tabs bind:selected={graph}>
|
|
591
|
+
<Tab value="RunChart" label="Duration" />
|
|
592
|
+
<Tab value="ConcurrencyChart" label="Concurrency">
|
|
593
|
+
{#snippet extra()}
|
|
594
|
+
{#if warnJobLimit}
|
|
595
|
+
<Tooltip Icon={TriangleAlertIcon}>{warnJobLimitMsg}</Tooltip>
|
|
596
|
+
{/if}
|
|
667
597
|
{/snippet}
|
|
668
|
-
</
|
|
598
|
+
</Tab>
|
|
599
|
+
</Tabs>
|
|
669
600
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
displayName: '7 days',
|
|
690
|
-
action: () => setLookback(7),
|
|
691
|
-
id: '7'
|
|
692
|
-
}
|
|
693
|
-
]}
|
|
694
|
-
selected={lookback.toString()}
|
|
695
|
-
selectedDisplayName={`${lookback} days lookback`}
|
|
696
|
-
>
|
|
697
|
-
{#snippet extraLabel()}
|
|
698
|
-
<TooltipV2>
|
|
699
|
-
{#snippet text()}
|
|
700
|
-
How far behind the min datetime to start considering jobs for the concurrency
|
|
701
|
-
graph. Change this value to include jobs started before the set time window for
|
|
702
|
-
the computation of the graph
|
|
703
|
-
{/snippet}
|
|
704
|
-
</TooltipV2>
|
|
705
|
-
{/snippet}
|
|
706
|
-
</DropdownSelect>
|
|
707
|
-
{/if}
|
|
708
|
-
</div>
|
|
601
|
+
{#if graph !== 'RunChart'}
|
|
602
|
+
<Select
|
|
603
|
+
class="ml-2"
|
|
604
|
+
bind:value={lookback}
|
|
605
|
+
items={[
|
|
606
|
+
{ label: 'None', value: 0 },
|
|
607
|
+
{ label: '1 day', value: 1 },
|
|
608
|
+
{ label: '3 days', value: 3 },
|
|
609
|
+
{ label: '7 days', value: 7 }
|
|
610
|
+
]}
|
|
611
|
+
transformInputSelectedText={(_, v) => `${pluralize(v, 'day')} lookback`}
|
|
612
|
+
tooltip={'How far behind the min datetime to start considering jobs for the concurrency graph. Change this value to include jobs started before the set time window for the computation of the graph'}
|
|
613
|
+
/>
|
|
614
|
+
{:else if !lastFetchWentToEnd}
|
|
615
|
+
<Button wrapperClasses="ml-2" unifiedSize="md" onClick={() => jobsLoader.loadExtraJobs()}>
|
|
616
|
+
Load more
|
|
617
|
+
<Tooltip>There are more jobs to load</Tooltip>
|
|
618
|
+
</Button>
|
|
619
|
+
{/if}
|
|
709
620
|
</div>
|
|
710
621
|
{#if graph === 'RunChart'}
|
|
622
|
+
{@const manualTimeframe = timeframe.type === 'manual' ? timeframe : undefined}
|
|
711
623
|
<RunChart
|
|
712
|
-
{lastFetchWentToEnd}
|
|
713
624
|
bind:selectedIds
|
|
714
|
-
canSelect
|
|
715
|
-
minTimeSet={
|
|
716
|
-
maxTimeSet={
|
|
717
|
-
|
|
718
|
-
maxIsNow={filters.max_ts == undefined}
|
|
719
|
-
onLoadExtra={loadExtra}
|
|
625
|
+
canSelect
|
|
626
|
+
minTimeSet={manualTimeframe?.minTs}
|
|
627
|
+
maxTimeSet={manualTimeframe?.maxTs}
|
|
628
|
+
maxIsNow={manualTimeframe?.maxTs == undefined}
|
|
720
629
|
jobs={completedJobs}
|
|
721
630
|
onZoom={async (zoom) => {
|
|
722
|
-
|
|
723
|
-
filters.max_ts = zoom.max.toISOString()
|
|
724
|
-
manualDatePicker?.resetChoice()
|
|
631
|
+
_timeframe.val = buildManualTimeframe(zoom.min.toISOString(), zoom.max.toISOString())
|
|
725
632
|
jobsLoader?.loadJobs(true)
|
|
726
633
|
}}
|
|
727
634
|
onPointClicked={(ids) => {
|
|
@@ -730,197 +637,188 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
|
|
|
730
637
|
/>
|
|
731
638
|
{:else if graph === 'ConcurrencyChart'}
|
|
732
639
|
<ConcurrentJobsChart
|
|
733
|
-
minTimeSet={
|
|
734
|
-
maxTimeSet={
|
|
735
|
-
maxIsNow={
|
|
640
|
+
minTimeSet={manualTimeframe?.minTs}
|
|
641
|
+
maxTimeSet={manualTimeframe?.maxTs}
|
|
642
|
+
maxIsNow={manualTimeframe?.maxTs == undefined}
|
|
736
643
|
{extendedJobs}
|
|
737
644
|
onZoom={async (zoom) => {
|
|
738
|
-
|
|
739
|
-
filters.max_ts = zoom.max.toISOString()
|
|
645
|
+
_timeframe.val = buildManualTimeframe(zoom.min.toISOString(), zoom.max.toISOString())
|
|
740
646
|
jobsLoader?.loadJobs(true)
|
|
741
647
|
}}
|
|
742
648
|
/>
|
|
743
649
|
{/if}
|
|
744
650
|
</div>
|
|
745
651
|
|
|
746
|
-
<div class="grow min-h-0">
|
|
652
|
+
<div class="grow min-h-0 bottom-splitpane-wrapper">
|
|
747
653
|
<Splitpanes>
|
|
748
654
|
<Pane minSize={40}>
|
|
749
|
-
<div class="
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
class="
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
655
|
+
<div class="h-full flex">
|
|
656
|
+
<div class="flex flex-col flex-1 m-4 mt-2 mr-2">
|
|
657
|
+
<!-- Runs table. Add overflow-hidden because scroll is handled inside the runs table based on this wrapper height -->
|
|
658
|
+
<div class="grow min-h-0 overflow-y-hidden overflow-x-auto">
|
|
659
|
+
{#if jobs}
|
|
660
|
+
<RunsTable
|
|
661
|
+
{jobs}
|
|
662
|
+
externalJobs={externalJobs ?? []}
|
|
663
|
+
omittedObscuredJobs={extendedJobs?.omitted_obscured_jobs ?? false}
|
|
664
|
+
showExternalJobs={graph !== 'RunChart'}
|
|
665
|
+
activeLabel={filters.val.label}
|
|
666
|
+
{lastFetchWentToEnd}
|
|
667
|
+
bind:selectedIds
|
|
668
|
+
bind:selectedWorkspace
|
|
669
|
+
on:loadExtra={loadExtra}
|
|
670
|
+
on:filterByPath={filterByPath}
|
|
671
|
+
on:filterByUser={filterByUser}
|
|
672
|
+
on:filterByFolder={filterByFolder}
|
|
673
|
+
on:filterByLabel={filterByLabel}
|
|
674
|
+
on:filterByConcurrencyKey={filterByConcurrencyKey}
|
|
675
|
+
on:filterByTag={filterByTag}
|
|
676
|
+
on:filterBySchedule={filterBySchedule}
|
|
677
|
+
on:filterByWorker={filterByWorker}
|
|
678
|
+
bind:this={runsTable}
|
|
679
|
+
perPage={perPage.val}
|
|
680
|
+
bind:batchRerunOptionsIsOpen
|
|
681
|
+
onCancelJobs={onCancelSelectedJobs}
|
|
682
|
+
{manualSelectionMode}
|
|
683
|
+
></RunsTable>
|
|
684
|
+
{:else}
|
|
685
|
+
<div class="gap-1 flex flex-col">
|
|
686
|
+
{#each new Array(8) as _}
|
|
687
|
+
<Skeleton layout={[[3]]} />
|
|
688
|
+
{/each}
|
|
776
689
|
</div>
|
|
777
690
|
{/if}
|
|
778
|
-
|
|
779
|
-
<RunsBatchActionsDropdown
|
|
780
|
-
isLoading={loadingSelectedIds}
|
|
781
|
-
{selectionMode}
|
|
782
|
-
selectionCount={selectedIds.length}
|
|
783
|
-
{onSetSelectionMode}
|
|
784
|
-
{onCancelFilteredJobs}
|
|
785
|
-
{onCancelSelectedJobs}
|
|
786
|
-
{onReRunFilteredJobs}
|
|
787
|
-
{onReRunSelectedJobs}
|
|
788
|
-
small={tableTopBarWidth < 800}
|
|
789
|
-
/>
|
|
790
691
|
</div>
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
:
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
692
|
+
<div
|
|
693
|
+
class="bg-surface-tertiary border rounded-b-md flex text-xs px-2 py-1 items-center gap-4"
|
|
694
|
+
>
|
|
695
|
+
{#if !manualSelectionMode}
|
|
696
|
+
<DropdownV2
|
|
697
|
+
btnText="Batch actions"
|
|
698
|
+
size="xs"
|
|
699
|
+
items={[
|
|
700
|
+
{
|
|
701
|
+
displayName: 'Cancel jobs',
|
|
702
|
+
action: () => ((manualSelectionMode = 'cancel'), (selectedIds = []))
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
displayName: 'Re-run jobs',
|
|
706
|
+
action: () => {
|
|
707
|
+
manualSelectionMode = 'rerun'
|
|
708
|
+
selectedIds = []
|
|
709
|
+
batchRerunOptionsIsOpen = true
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
displayName: 'Cancel all jobs matching filters',
|
|
714
|
+
action: () => onCancelAllJobsMatchingFilters()
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
displayName: 'Re-run all jobs matching filters',
|
|
718
|
+
action: () => onRerunAllJobsMatchingFilters()
|
|
719
|
+
}
|
|
720
|
+
]}
|
|
816
721
|
/>
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
jobsLoader?.loadJobs(true)
|
|
722
|
+
{:else}
|
|
723
|
+
<Button
|
|
724
|
+
size="xs"
|
|
725
|
+
destructive
|
|
726
|
+
onClick={() => {
|
|
727
|
+
manualSelectionMode = undefined
|
|
728
|
+
batchRerunOptionsIsOpen = false
|
|
825
729
|
}}
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
<!-- Runs table. Add overflow-hidden because scroll is handled inside the runs table based on this wrapper height -->
|
|
847
|
-
<div class="grow min-h-0 overflow-y-hidden overflow-x-auto">
|
|
848
|
-
{#if jobs}
|
|
849
|
-
<RunsTable
|
|
850
|
-
{jobs}
|
|
851
|
-
externalJobs={externalJobs ?? []}
|
|
852
|
-
omittedObscuredJobs={extendedJobs?.omitted_obscured_jobs ?? false}
|
|
853
|
-
showExternalJobs={!graphIsRunsChart}
|
|
854
|
-
activeLabel={filters.label}
|
|
855
|
-
{selectionMode}
|
|
856
|
-
{lastFetchWentToEnd}
|
|
857
|
-
bind:selectedIds
|
|
858
|
-
bind:selectedWorkspace
|
|
859
|
-
on:loadExtra={loadExtra}
|
|
860
|
-
on:filterByPath={filterByPath}
|
|
861
|
-
on:filterByUser={filterByUser}
|
|
862
|
-
on:filterByFolder={filterByFolder}
|
|
863
|
-
on:filterByLabel={filterByLabel}
|
|
864
|
-
on:filterByConcurrencyKey={filterByConcurrencyKey}
|
|
865
|
-
on:filterByTag={filterByTag}
|
|
866
|
-
on:filterBySchedule={filterBySchedule}
|
|
867
|
-
on:filterByWorker={filterByWorker}
|
|
868
|
-
bind:this={runsTable}
|
|
869
|
-
perPage={filters.per_page}
|
|
870
|
-
></RunsTable>
|
|
871
|
-
{:else}
|
|
872
|
-
<div class="gap-1 flex flex-col">
|
|
873
|
-
{#each new Array(8) as _}
|
|
874
|
-
<Skeleton layout={[[3]]} />
|
|
875
|
-
{/each}
|
|
876
|
-
</div>
|
|
877
|
-
{/if}
|
|
878
|
-
</div>
|
|
879
|
-
<div
|
|
880
|
-
class="bg-surface-secondary border-t flex text-xs px-2 py-1 items-center justify-end gap-2"
|
|
881
|
-
>
|
|
882
|
-
Per page:
|
|
883
|
-
<Select
|
|
884
|
-
class="w-20"
|
|
885
|
-
bind:value={
|
|
886
|
-
() => filters.per_page,
|
|
887
|
-
(newPerPage) => {
|
|
888
|
-
filters.per_page = newPerPage
|
|
889
|
-
if (newPerPage > (jobs?.length ?? 1000)) loadExtra()
|
|
730
|
+
>
|
|
731
|
+
Exit selection mode
|
|
732
|
+
</Button>
|
|
733
|
+
{/if}
|
|
734
|
+
<div class="flex-1"></div>
|
|
735
|
+
<Toggle
|
|
736
|
+
size="xs"
|
|
737
|
+
bind:checked={autoRefresh.val}
|
|
738
|
+
options={{ right: 'Auto-refresh' }}
|
|
739
|
+
textClass="whitespace-nowrap"
|
|
740
|
+
/>
|
|
741
|
+
<Select
|
|
742
|
+
class="w-24"
|
|
743
|
+
bind:value={
|
|
744
|
+
() => perPage.val,
|
|
745
|
+
(newPerPage) => {
|
|
746
|
+
perPage.val = newPerPage
|
|
747
|
+
if (newPerPage > (jobs?.length ?? 1000)) loadExtra()
|
|
748
|
+
}
|
|
890
749
|
}
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
750
|
+
onCreateItem={(v) => (perPage.val = parseInt(v))}
|
|
751
|
+
items={[
|
|
752
|
+
{ value: 25, label: '25' },
|
|
753
|
+
{ value: 100, label: '100' },
|
|
754
|
+
{ value: 1000, label: '1000' },
|
|
755
|
+
{ value: 10000, label: '10000' }
|
|
756
|
+
]}
|
|
757
|
+
transformInputSelectedText={(_, v) => `${v} / page`}
|
|
758
|
+
/>
|
|
759
|
+
</div>
|
|
900
760
|
</div>
|
|
901
761
|
</div>
|
|
902
762
|
</Pane>
|
|
903
|
-
<AnimatedPane
|
|
904
|
-
{
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
763
|
+
<AnimatedPane
|
|
764
|
+
size={40}
|
|
765
|
+
minSize={15}
|
|
766
|
+
class="flex flex-col"
|
|
767
|
+
opened={selectedIds.length > 0 || !!manualSelectionMode}
|
|
768
|
+
>
|
|
769
|
+
<div class="mt-12 overflow-y-auto pr-4 ml-2 relative flex-1">
|
|
770
|
+
{#if manualSelectionMode === 'cancel'}
|
|
771
|
+
<div
|
|
772
|
+
class="rounded-md bg-surface-tertiary border absolute inset-0 mb-4 flex flex-col items-center justify-center"
|
|
773
|
+
>
|
|
774
|
+
<Button
|
|
775
|
+
destructive
|
|
776
|
+
variant="accent"
|
|
777
|
+
disabled={!selectedIds.length}
|
|
778
|
+
onClick={() => onCancelSelectedJobs(selectedIds)}
|
|
779
|
+
>
|
|
780
|
+
Cancel {selectedIds.length} jobs
|
|
781
|
+
</Button>
|
|
782
|
+
</div>
|
|
783
|
+
{:else if batchRerunOptionsIsOpen}
|
|
784
|
+
<BatchReRunOptionsPane
|
|
785
|
+
{selectedIds}
|
|
786
|
+
onCancel={() => (
|
|
787
|
+
(batchRerunOptionsIsOpen = false),
|
|
788
|
+
(manualSelectionMode = undefined)
|
|
789
|
+
)}
|
|
790
|
+
onConfirm={async (options) => {
|
|
791
|
+
await onReRunSelectedJobs(options)
|
|
792
|
+
}}
|
|
915
793
|
/>
|
|
794
|
+
{:else if selectedIds.length === 1}
|
|
795
|
+
{#if selectedIds[0] === '-'}
|
|
796
|
+
<div class="p-4">There is no information available for this job</div>
|
|
797
|
+
{:else}
|
|
798
|
+
<JobRunsPreview
|
|
799
|
+
id={selectedIds[0]}
|
|
800
|
+
workspace={selectedWorkspace}
|
|
801
|
+
on:filterByConcurrencyKey={filterByConcurrencyKey}
|
|
802
|
+
on:filterByWorker={filterByWorker}
|
|
803
|
+
/>
|
|
804
|
+
{/if}
|
|
805
|
+
{:else if selectedIds.length > 1}
|
|
806
|
+
<div
|
|
807
|
+
class="rounded-md bg-surface-tertiary border absolute inset-0 mb-4 flex items-center justify-center"
|
|
808
|
+
>
|
|
809
|
+
<div class="text-xs m-4"> {selectedIds.length} jobs selected</div>
|
|
810
|
+
</div>
|
|
916
811
|
{/if}
|
|
917
|
-
|
|
918
|
-
<div class="text-xs m-4"
|
|
919
|
-
>There are {selectedIds.length} jobs selected. Choose 1 to see detailed information</div
|
|
920
|
-
>
|
|
921
|
-
{/if}
|
|
812
|
+
</div>
|
|
922
813
|
</AnimatedPane>
|
|
923
814
|
</Splitpanes>
|
|
924
815
|
</div>
|
|
925
816
|
</div>
|
|
926
817
|
{/if}
|
|
818
|
+
|
|
819
|
+
<style>
|
|
820
|
+
:global(.bottom-splitpane-wrapper .splitpanes__splitter) {
|
|
821
|
+
background-color: transparent !important;
|
|
822
|
+
border: none !important;
|
|
823
|
+
/* opacity: 0 !important; */
|
|
824
|
+
}</style>
|