windmill-components 1.448.50 → 1.472.2
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/components/AddUser.svelte +52 -54
- package/package/components/ApiConnectForm.svelte +57 -45
- package/package/components/AppConnectInner.svelte +18 -8
- package/package/components/ArgInput.svelte +132 -83
- package/package/components/ArgInput.svelte.d.ts +12 -1
- package/package/components/ArrayTypeNarrowing.svelte +35 -30
- package/package/components/ArrayTypeNarrowing.svelte.d.ts +1 -0
- package/package/components/AssignableTags.svelte +10 -6
- package/package/components/AssignableTagsInner.svelte +1 -1
- package/package/components/Auth0Setting.svelte +103 -0
- package/package/components/Auth0Setting.svelte.d.ts +16 -0
- package/package/components/AuthSettings.svelte +7 -2
- package/package/components/AutoscalingConfigEditor.svelte +12 -17
- package/package/components/ChangeInstanceUsername.svelte +15 -13
- package/package/components/ChangeInstanceUsernameInner.svelte +4 -5
- package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +1 -0
- package/package/components/ConnectionSection.svelte +176 -0
- package/package/components/ConnectionSection.svelte.d.ts +28 -0
- package/package/components/ContentSearchInner.svelte +13 -3
- package/package/components/CronBuilder.svelte +12 -13
- package/package/components/CronBuilder.svelte.d.ts +1 -1
- package/package/components/CronInput.svelte +1 -1
- package/package/components/DBSchemaExplorer.svelte +18 -5
- package/package/components/DateTimeInput.svelte +3 -3
- package/package/components/DefaultTags.svelte +8 -8
- package/package/components/Dev.svelte +30 -8
- package/package/components/DisplayResult.svelte +132 -80
- package/package/components/DisplayResult.svelte.d.ts +2 -0
- package/package/components/DropdownV2.svelte +89 -16
- package/package/components/DropdownV2.svelte.d.ts +10 -27
- package/package/components/DropdownV2Inner.svelte +7 -4
- package/package/components/DropdownV2Inner.svelte.d.ts +4 -25
- package/package/components/DynSelect.svelte +6 -2
- package/package/components/EditableSchemaForm.svelte +48 -45
- package/package/components/EditableSchemaForm.svelte.d.ts +4 -1
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +15 -13
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/EditorSettings.svelte +9 -7
- package/package/components/ErrorOrRecoveryHandler.svelte +195 -18
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -2
- package/package/components/FlowBuilder.svelte +10 -31
- package/package/components/FlowBuilder.svelte.d.ts +3 -0
- package/package/components/FlowBuilderTutorials.svelte +34 -64
- package/package/components/FlowBuilderTutorials.svelte.d.ts +0 -1
- package/package/components/FlowHistoryJobPicker.svelte +48 -0
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +21 -0
- package/package/components/FlowJobResult.svelte +6 -3
- package/package/components/FlowPreviewContent.svelte +264 -182
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +28 -7
- package/package/components/FlowStatusWaitingForEvents.svelte +2 -2
- package/package/components/FolderEditor.svelte +14 -7
- package/package/components/GroupEditor.svelte +4 -0
- package/package/components/HistoricInputs.svelte +51 -110
- package/package/components/HistoricInputs.svelte.d.ts +9 -3
- package/package/components/HistoricList.svelte +95 -0
- package/package/components/HistoricList.svelte.d.ts +24 -0
- package/package/components/IconedResourceType.svelte +4 -1
- package/package/components/InfiniteList.svelte +12 -6
- package/package/components/InputTransformForm.svelte +25 -5
- package/package/components/InstanceNameEditor.svelte +100 -103
- package/package/components/InstanceSetting.svelte +777 -607
- package/package/components/InstanceSettings.svelte +33 -36
- package/package/components/InviteUser.svelte +43 -43
- package/package/components/{apps/editor/settingsPanel/inputEditor/JsonEditor.svelte → JsonEditor.svelte} +1 -1
- package/package/components/{apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts → JsonEditor.svelte.d.ts} +1 -1
- package/package/components/JsonInputs.svelte +63 -0
- package/package/components/JsonInputs.svelte.d.ts +23 -0
- package/package/components/Label.svelte +6 -4
- package/package/components/Login.svelte +8 -2
- package/package/components/OAuthSetting.svelte +42 -15
- package/package/components/OAuthSetting.svelte.d.ts +1 -0
- package/package/components/ObjectResourceInput.svelte +6 -3
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -1
- package/package/components/OktaSetting.svelte +9 -3
- package/package/components/PasswordArgInput.svelte +1 -1
- package/package/components/Path.svelte +16 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResourceEditor.svelte +6 -2
- package/package/components/ResourcePicker.svelte +3 -3
- package/package/components/ResourceTypePicker.svelte +10 -11
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/RunForm.svelte +51 -47
- package/package/components/RunForm.svelte.d.ts +3 -0
- package/package/components/RunFormAdvancedPopup.svelte +2 -7
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +0 -2
- package/package/components/RunPageSchedules.svelte +3 -2
- package/package/components/S3FilePicker.svelte +9 -1
- package/package/components/S3FilePicker.svelte.d.ts +1 -0
- package/package/components/S3ObjectPicker.svelte +13 -12
- package/package/components/S3ObjectPicker.svelte.d.ts +1 -1
- package/package/components/SavedInputsPicker.svelte +95 -56
- package/package/components/SavedInputsPicker.svelte.d.ts +10 -1
- package/package/components/SavedInputsV2.svelte +113 -0
- package/package/components/SavedInputsV2.svelte.d.ts +26 -0
- package/package/components/ScheduleEditorInner.svelte +40 -13
- package/package/components/SchemaForm.svelte +158 -191
- package/package/components/SchemaForm.svelte.d.ts +16 -3
- package/package/components/SchemaFormWithArgPicker.svelte +166 -0
- package/package/components/SchemaFormWithArgPicker.svelte.d.ts +29 -0
- package/package/components/ScriptBuilder.svelte +139 -71
- package/package/components/ScriptBuilder.svelte.d.ts +3 -0
- package/package/components/ScriptEditor.svelte +28 -2
- package/package/components/ScriptEditor.svelte.d.ts +2 -2
- package/package/components/ScriptPicker.svelte +6 -3
- package/package/components/ScriptSchema.svelte +2 -1
- package/package/components/ScriptSchema.svelte.d.ts +2 -0
- package/package/components/ScriptVersionHistory.svelte +9 -3
- package/package/components/Section.svelte +21 -9
- package/package/components/Section.svelte.d.ts +4 -0
- package/package/components/ShareModal.svelte +10 -5
- package/package/components/ShareModal.svelte.d.ts +2 -2
- package/package/components/SharedBadge.svelte +3 -3
- package/package/components/StringTypeNarrowing.svelte +10 -1
- package/package/components/SuperadminSettings.svelte +9 -2
- package/package/components/TestJobLoader.svelte +1 -1
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/TimelineBar.svelte.d.ts +1 -1
- package/package/components/ToggleHubWorkspace.svelte +3 -3
- package/package/components/ToggleHubWorkspaceQuick.svelte +4 -4
- package/package/components/Tooltip.svelte +36 -30
- package/package/components/VariableEditor.svelte +27 -20
- package/package/components/WorkerGroup.svelte +12 -3
- package/package/components/apps/components/buttons/AppButton.svelte +22 -2
- package/package/components/apps/components/buttons/AppFormButton.svelte +74 -70
- package/package/components/apps/components/buttons/AppSchemaForm.svelte +4 -2
- package/package/components/apps/components/display/AppAccordionList.svelte +149 -0
- package/package/components/apps/components/display/AppAccordionList.svelte.d.ts +25 -0
- package/package/components/apps/components/display/AppCarouselList.svelte +114 -106
- package/package/components/apps/components/display/AppCustomComponent.svelte +13 -13
- package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +3 -1
- package/package/components/apps/components/display/AppHtml.svelte +28 -22
- package/package/components/apps/components/display/AppMarkdown.svelte +98 -31
- package/package/components/apps/components/display/AppMenu.svelte +77 -66
- package/package/components/apps/components/display/AppMenu.svelte.d.ts +0 -3
- package/package/components/apps/components/display/AppRecomputeAll.svelte +12 -1
- package/package/components/apps/components/display/AppText.svelte +8 -3
- package/package/components/apps/components/display/PlotlyHtml.svelte +16 -12
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +16 -12
- package/package/components/apps/components/display/VegaLiteHtml.svelte +9 -5
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +1 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +4 -4
- package/package/components/apps/components/display/dbtable/utils.js +19 -1
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +6 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +4 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +27 -19
- package/package/components/apps/components/display/table/AppTable.svelte +19 -15
- package/package/components/apps/components/helpers/InitializeComponent.svelte +1 -0
- package/package/components/apps/components/helpers/InputValue.svelte +4 -3
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +0 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte +16 -4
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +32 -3
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +29 -21
- package/package/components/apps/components/layout/AppContainer.svelte +28 -20
- package/package/components/apps/components/layout/AppDecisionTree.svelte +59 -49
- package/package/components/apps/components/layout/AppDrawer.svelte +94 -87
- package/package/components/apps/components/layout/AppList.svelte +70 -62
- package/package/components/apps/components/layout/AppModal.svelte +83 -79
- package/package/components/apps/components/layout/AppSplitpanes.svelte +51 -43
- package/package/components/apps/components/layout/AppStepper.svelte +97 -83
- package/package/components/apps/components/layout/AppTabs.svelte +128 -74
- package/package/components/apps/editor/AppEditor.svelte +21 -3
- package/package/components/apps/editor/AppEditor.svelte.d.ts +24 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +73 -61
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +24 -1
- package/package/components/apps/editor/AppEditorTutorial.svelte +53 -60
- package/package/components/apps/editor/AppJsonEditor.svelte +1 -1
- package/package/components/apps/editor/AppPreview.svelte +5 -5
- package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -0
- package/package/components/apps/editor/ComponentHeader.svelte +44 -20
- package/package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +56 -73
- package/package/components/apps/editor/GridEditor.svelte +7 -4
- package/package/components/apps/editor/GridViewer.svelte +19 -7
- package/package/components/apps/editor/GridViewer.svelte.d.ts +1 -3
- package/package/components/apps/editor/PreviewToggle.svelte +3 -0
- package/package/components/apps/editor/RecomputeAllButton.svelte +7 -40
- package/package/components/apps/editor/RecomputeAllComponents.svelte +52 -19
- package/package/components/apps/editor/RecomputeAllWrapper.svelte +1 -10
- package/package/components/apps/editor/SubGridEditor.svelte +147 -145
- package/package/components/apps/editor/TabsDebug.svelte +43 -56
- package/package/components/apps/editor/component/Component.svelte +26 -926
- package/package/components/apps/editor/component/Component.svelte.d.ts +2 -3
- package/package/components/apps/editor/component/ComponentInner.svelte +775 -0
- package/package/components/apps/editor/component/ComponentInner.svelte.d.ts +22 -0
- package/package/components/apps/editor/component/ComponentRendered.svelte +195 -0
- package/package/components/apps/editor/component/ComponentRendered.svelte.d.ts +28 -0
- package/package/components/apps/editor/component/components.d.ts +154 -83
- package/package/components/apps/editor/component/components.js +59 -5
- package/package/components/apps/editor/component/sets.js +2 -1
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +8 -4
- package/package/components/apps/editor/componentsPanel/CustomComponentRow.svelte +12 -22
- package/package/components/apps/editor/componentsPanel/CustomComponentRow.svelte.d.ts +0 -1
- package/package/components/apps/editor/componentsPanel/CustomComponentsList.svelte +0 -2
- package/package/components/apps/editor/componentsPanel/GroupRow.svelte +12 -22
- package/package/components/apps/editor/componentsPanel/GroupRow.svelte.d.ts +0 -1
- package/package/components/apps/editor/componentsPanel/NameEditor.svelte +21 -20
- package/package/components/apps/editor/componentsPanel/ThemeNameEditor.svelte +9 -9
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +32 -52
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte.d.ts +0 -1
- package/package/components/apps/editor/componentsPanel/cssUtils.js +7 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +3 -0
- package/package/components/apps/editor/contextPanel/LazyModePanel.svelte +46 -0
- package/package/components/apps/editor/contextPanel/LazyModePanel.svelte.d.ts +14 -0
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +19 -13
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +10 -7
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +11 -7
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +8 -6
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +7 -0
- package/package/components/apps/editor/settingsPanel/ComponentPanelDataSource.svelte +5 -2
- package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +17 -7
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +3 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +10 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +53 -51
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
- package/package/components/apps/rx.d.ts +3 -3
- package/package/components/apps/rx.js +5 -5
- package/package/components/apps/svelte-grid/Grid.svelte +121 -99
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +0 -1
- package/package/components/apps/svelte-grid/MoveResize.svelte +2 -1
- package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +8 -8
- package/package/components/apps/types.d.ts +2 -0
- package/package/components/apps/utils.js +1 -1
- package/package/components/auditLogs/AuditLogMobileFilters.svelte +7 -6
- package/package/components/auditLogs/AuditLogsFilters.svelte +75 -37
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +2 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -1
- package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
- package/package/components/common/alert/Alert.svelte +2 -27
- package/package/components/common/alert/Alert.svelte.d.ts +1 -1
- package/package/components/common/alert/model.d.ts +1 -0
- package/package/components/common/alert/model.js +26 -1
- package/package/components/common/button/Button.svelte +25 -39
- package/package/components/common/button/Button.svelte.d.ts +0 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +30 -25
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +12 -10
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +2 -3
- package/package/components/common/confirmationModal/unsavedTypes.d.ts +6 -0
- package/package/components/common/confirmationModal/unsavedTypes.js +1 -0
- package/package/components/common/drawer/Disposable.svelte +3 -1
- package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
- package/package/components/common/drawer/Drawer.svelte +2 -0
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/fileInput/FileInput.svelte +63 -20
- package/package/components/common/fileInput/FileInput.svelte.d.ts +4 -1
- package/package/components/common/fileUpload/FileUpload.svelte +102 -20
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +7 -0
- package/package/components/common/index.d.ts +0 -1
- package/package/components/common/index.js +0 -1
- package/package/components/common/layout/List.svelte.d.ts +1 -1
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +42 -39
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +3 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +28 -29
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +23 -7
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +17 -18
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +2 -1
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +1 -1
- package/package/components/copilot/CodeCompletionStatus.svelte +1 -1
- package/package/components/copilot/CronGen.svelte +50 -50
- package/package/components/copilot/FlowCopilotDrawer.svelte +3 -2
- package/package/components/copilot/FlowCopilotStatus.svelte +16 -19
- package/package/components/copilot/PredicateGen.svelte +9 -10
- package/package/components/copilot/RegexGen.svelte +67 -66
- package/package/components/copilot/ScriptFix.svelte +122 -105
- package/package/components/copilot/ScriptGen.svelte +177 -135
- package/package/components/copilot/StepInputsGen.svelte +31 -28
- package/package/components/copilot/{TestAiKey.svelte → TestAIKey.svelte} +13 -2
- package/package/components/copilot/{TestAiKey.svelte.d.ts → TestAIKey.svelte.d.ts} +4 -2
- package/package/components/copilot/completion.d.ts +2 -2
- package/package/components/copilot/completion.js +1 -1
- package/package/components/copilot/flow.d.ts +3 -4
- package/package/components/copilot/flow.js +1 -1
- package/package/components/copilot/lib.d.ts +46 -54
- package/package/components/copilot/lib.js +278 -209
- package/package/components/copilot/prompts/edit.yaml +19 -0
- package/package/components/copilot/prompts/editPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/editPrompt.js +3 -0
- package/package/components/copilot/prompts/fix.yaml +19 -0
- package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/fixPrompt.js +3 -0
- package/package/components/copilot/prompts/gen.yaml +12 -0
- package/package/components/copilot/prompts/genPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/genPrompt.js +3 -0
- package/package/components/custom_ui.d.ts +37 -0
- package/package/components/details/DetailPageDetailPanel.svelte +3 -1
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +7 -1
- package/package/components/details/DetailPageHeader.svelte +12 -27
- package/package/components/details/DetailPageLayout.svelte +4 -0
- package/package/components/details/DetailPageLayout.svelte.d.ts +6 -0
- package/package/components/details/DetailPageTriggerPanel.svelte +20 -8
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +4 -2
- package/package/components/details/EmailTriggerConfigSection.svelte +3 -3
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +3 -1
- package/package/components/details/EmailTriggerPanel.svelte +1 -0
- package/package/components/flows/content/FlowInput.svelte +35 -44
- package/package/components/flows/content/FlowInputs.svelte +4 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +10 -5
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowModuleMock.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -2
- package/package/components/flows/content/FlowRetries.svelte +4 -3
- package/package/components/flows/content/ScriptEditorDrawer.svelte +0 -1
- package/package/components/flows/flowStateUtils.js +1 -1
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/header/FlowPreviewButtons.svelte +25 -16
- package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +60 -47
- package/package/components/flows/previousResults.js +1 -1
- package/package/components/flows/propPicker/FlowPropPicker.svelte +28 -25
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -0
- package/package/components/flows/scheduleUtils.d.ts +2 -2
- package/package/components/flows/scheduleUtils.js +17 -13
- package/package/components/graph/FlowGraphV2.svelte +3 -2
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +9 -4
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
- package/package/components/home/FlowIcon.svelte +4 -1
- package/package/components/home/FlowIcon.svelte.d.ts +1 -0
- package/package/components/home/ItemsList.svelte +32 -24
- package/package/components/icons/Auth0Icon.svelte +17 -0
- package/package/components/icons/Auth0Icon.svelte.d.ts +23 -0
- package/package/components/icons/AwsIcon.svelte +25 -6
- package/package/components/icons/AwsIcon.svelte.d.ts +3 -2
- package/package/components/icons/brands/Auth0.svelte +24 -0
- package/package/components/icons/brands/Auth0.svelte.d.ts +18 -0
- package/package/components/icons/index.d.ts +3 -1
- package/package/components/icons/index.js +3 -1
- package/package/components/instanceSettings.d.ts +5 -0
- package/package/components/instanceSettings.js +34 -3
- package/package/components/meltComponents/MeltButton.svelte +10 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +23 -0
- package/package/components/meltComponents/Menu.svelte +70 -0
- package/package/components/meltComponents/Menu.svelte.d.ts +51 -0
- package/package/components/meltComponents/MenuItem.svelte +42 -0
- package/package/components/meltComponents/MenuItem.svelte.d.ts +27 -0
- package/package/components/meltComponents/MenuSingleItem.svelte +12 -0
- package/package/components/meltComponents/MenuSingleItem.svelte.d.ts +36 -0
- package/package/components/meltComponents/Menubar.svelte +7 -0
- package/package/components/meltComponents/Menubar.svelte.d.ts +255 -0
- package/package/components/meltComponents/Popover.svelte +78 -24
- package/package/components/meltComponents/Popover.svelte.d.ts +23 -4
- package/package/components/meltComponents/SideBarTab.svelte +18 -6
- package/package/components/meltComponents/SideBarTab.svelte.d.ts +2 -0
- package/package/components/meltComponents/Tooltip.svelte +66 -0
- package/package/components/meltComponents/Tooltip.svelte.d.ts +29 -0
- package/package/components/meltComponents/index.d.ts +5 -0
- package/package/components/meltComponents/index.js +5 -0
- package/package/components/preview/FlowPreviewStatus.svelte +2 -1
- package/package/components/propertyPicker/ObjectViewer.svelte +15 -3
- package/package/components/propertyPicker/PropPicker.svelte +0 -1
- package/package/components/runs/JobLoader.svelte +18 -18
- package/package/components/runs/JobLoader.svelte.d.ts +1 -1
- package/package/components/runs/MobileFilters.svelte +12 -11
- package/package/components/runs/PreprocessedArgsDisplay.svelte +2 -3
- package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +1 -1
- package/package/components/runs/RunsFilter.svelte +350 -320
- package/package/components/schema/AddPropertyFormV2.svelte +7 -7
- package/package/components/schema/AddPropertyFormV2.svelte.d.ts +3 -1
- package/package/components/schema/EditableSchemaDrawer.svelte +0 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +1 -2
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
- package/package/components/schema/FlowPropertyEditor.svelte +51 -67
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +0 -1
- package/package/components/schema/InputSelectedBadge.svelte +28 -0
- package/package/components/schema/InputSelectedBadge.svelte.d.ts +18 -0
- package/package/components/schema/PropertyEditor.svelte +7 -3
- package/package/components/schema/SchemaFormDND.svelte +4 -2
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -1
- package/package/components/schema/SchemaPickerRow.svelte +11 -3
- package/package/components/schema/SchemaPickerRow.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +8 -2
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
- package/package/components/settings/ChangeWorkspaceId.svelte +24 -12
- package/package/components/settings/PremiumInfo.svelte +4 -4
- package/package/components/settings/WorkspaceOperatorSettings.svelte +159 -0
- package/package/components/settings/WorkspaceOperatorSettings.svelte.d.ts +14 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +108 -96
- package/package/components/sidebar/CriticalAlertModal.svelte +66 -60
- package/package/components/sidebar/FavoriteMenu.svelte +30 -21
- package/package/components/sidebar/FavoriteMenu.svelte.d.ts +2 -0
- package/package/components/sidebar/MenuButton.svelte +20 -5
- package/package/components/sidebar/MenuButton.svelte.d.ts +3 -0
- package/package/components/sidebar/MenuLink.svelte +8 -5
- package/package/components/sidebar/MenuLink.svelte.d.ts +2 -0
- package/package/components/sidebar/OperatorMenu.svelte +219 -126
- package/package/components/sidebar/SidebarContent.svelte +107 -127
- package/package/components/sidebar/SidebarContent.svelte.d.ts +0 -1
- package/package/components/sidebar/UserMenu.svelte +91 -111
- package/package/components/sidebar/UserMenu.svelte.d.ts +2 -0
- package/package/components/sidebar/WorkspaceMenu.svelte +59 -54
- package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +2 -0
- package/package/components/sidebar/changelogs.js +55 -0
- package/package/components/table/DataTable.svelte +6 -14
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/CaptureButton.svelte +51 -68
- package/package/components/triggers/CaptureSection.svelte +5 -2
- package/package/components/triggers/CaptureSection.svelte.d.ts +3 -1
- package/package/components/triggers/CaptureTable.svelte +61 -23
- package/package/components/triggers/CaptureWrapper.svelte +87 -46
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +8 -4
- package/package/components/triggers/TestTriggerConnection.svelte +82 -0
- package/package/components/triggers/TestTriggerConnection.svelte.d.ts +21 -0
- package/package/components/triggers/TriggersEditor.svelte +46 -14
- package/package/components/triggers/TriggersEditorSection.svelte +53 -46
- package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
- package/package/components/triggers/TriggersWrapper.svelte +26 -8
- package/package/components/triggers/{RouteEditorConfigSection.svelte → http/RouteEditorConfigSection.svelte} +57 -57
- package/package/components/triggers/{RouteEditorConfigSection.svelte.d.ts → http/RouteEditorConfigSection.svelte.d.ts} +8 -9
- package/package/components/triggers/{RouteEditorInner.svelte → http/RouteEditorInner.svelte} +190 -147
- package/package/components/triggers/{RoutesPanel.svelte → http/RoutesPanel.svelte} +44 -47
- package/package/components/triggers/{KafkaTriggerEditorInner.svelte → kafka/KafkaTriggerEditorInner.svelte} +23 -23
- package/package/components/triggers/{KafkaTriggersConfigSection.svelte → kafka/KafkaTriggersConfigSection.svelte} +29 -17
- package/package/components/triggers/{KafkaTriggersConfigSection.svelte.d.ts → kafka/KafkaTriggersConfigSection.svelte.d.ts} +5 -3
- package/package/components/triggers/{KafkaTriggersPanel.svelte → kafka/KafkaTriggersPanel.svelte} +40 -45
- package/package/components/triggers/{NatsTriggerEditorInner.svelte → nats/NatsTriggerEditorInner.svelte} +19 -20
- package/package/components/triggers/{NatsTriggersConfigSection.svelte → nats/NatsTriggersConfigSection.svelte} +25 -18
- package/package/components/triggers/{NatsTriggersConfigSection.svelte.d.ts → nats/NatsTriggersConfigSection.svelte.d.ts} +5 -3
- package/package/components/triggers/{NatsTriggersPanel.svelte → nats/NatsTriggersPanel.svelte} +41 -44
- package/package/components/triggers/postgres/CheckPostgresRequirement.svelte +71 -0
- package/package/components/triggers/postgres/CheckPostgresRequirement.svelte.d.ts +18 -0
- package/package/components/triggers/postgres/PostgresEditorConfigSection.svelte +152 -0
- package/package/components/triggers/postgres/PostgresEditorConfigSection.svelte.d.ts +40 -0
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte +19 -0
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +21 -0
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +578 -0
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte.d.ts +21 -0
- package/package/components/triggers/postgres/PostgresTriggersPanel.svelte +112 -0
- package/package/components/triggers/postgres/PostgresTriggersPanel.svelte.d.ts +28 -0
- package/package/components/triggers/postgres/PublicationPicker.svelte +129 -0
- package/package/components/triggers/postgres/PublicationPicker.svelte.d.ts +23 -0
- package/package/components/triggers/postgres/RelationPicker.svelte +266 -0
- package/package/components/triggers/postgres/RelationPicker.svelte.d.ts +19 -0
- package/package/components/triggers/postgres/SlotPicker.svelte +92 -0
- package/package/components/triggers/postgres/SlotPicker.svelte.d.ts +18 -0
- package/package/components/triggers/postgres/utils.d.ts +5 -0
- package/package/components/triggers/postgres/utils.js +80 -0
- package/package/components/triggers/{ScheduledPollPanel.svelte → scheduled/ScheduledPollPanel.svelte} +3 -3
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte +19 -0
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +21 -0
- package/package/components/triggers/sqs/SqsTriggerEditorConfigSection.svelte +152 -0
- package/package/components/triggers/sqs/SqsTriggerEditorConfigSection.svelte.d.ts +40 -0
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +234 -0
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte.d.ts +21 -0
- package/package/components/triggers/sqs/SqsTriggerPanel.svelte +123 -0
- package/package/components/triggers/sqs/SqsTriggerPanel.svelte.d.ts +28 -0
- package/package/components/triggers/{WebhooksConfigSection.svelte → webhook/WebhooksConfigSection.svelte} +26 -21
- package/package/components/triggers/{WebhooksConfigSection.svelte.d.ts → webhook/WebhooksConfigSection.svelte.d.ts} +6 -4
- package/package/components/triggers/{WebhooksPanel.svelte → webhook/WebhooksPanel.svelte} +5 -4
- package/package/components/triggers/{WebsocketEditorConfigSection.svelte → websocket/WebsocketEditorConfigSection.svelte} +42 -34
- package/package/components/triggers/{WebsocketEditorConfigSection.svelte.d.ts → websocket/WebsocketEditorConfigSection.svelte.d.ts} +5 -3
- package/package/components/triggers/{WebsocketTriggerEditorInner.svelte → websocket/WebsocketTriggerEditorInner.svelte} +62 -43
- package/package/components/triggers/{WebsocketTriggersPanel.svelte → websocket/WebsocketTriggersPanel.svelte} +45 -49
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +4 -0
- package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +1 -1
- package/package/components/wizards/AgChartWizard.svelte +26 -24
- package/package/components/wizards/AgGridWizard.svelte +166 -161
- package/package/components/wizards/ChartJSWizard.svelte +32 -30
- package/package/components/wizards/DBExplorerWizard.svelte +21 -12
- package/package/components/wizards/NavbarWizard.svelte +108 -107
- package/package/components/wizards/PlotlyWizard.svelte +84 -75
- package/package/components/wizards/TableActionsWizard.svelte +69 -66
- package/package/components/wizards/TableColumnWizard.svelte +52 -47
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +456 -111
- package/package/gen/schemas.gen.js +470 -112
- package/package/gen/services.gen.d.ts +429 -2
- package/package/gen/services.gen.js +890 -17
- package/package/gen/types.gen.d.ts +1491 -158
- package/package/hub.d.ts +3 -0
- package/package/hubPaths.json +5 -1
- package/package/inferArgSig.js +11 -4
- package/package/script_helpers.d.ts +5 -3
- package/package/script_helpers.js +138 -98
- package/package/scripts.d.ts +1 -1
- package/package/stores.d.ts +6 -3
- package/package/stores.js +5 -3
- package/package/utils.d.ts +15 -0
- package/package/utils.js +17 -3
- package/package/zIndexes.d.ts +2 -0
- package/package/zIndexes.js +3 -1
- package/package.json +5 -5
- package/package/components/CapturesInputs.svelte +0 -16
- package/package/components/CapturesInputs.svelte.d.ts +0 -21
- package/package/components/LightweightArgInput.svelte +0 -622
- package/package/components/LightweightArgInput.svelte.d.ts +0 -70
- package/package/components/LightweightObjectResourceInput.svelte +0 -40
- package/package/components/LightweightObjectResourceInput.svelte.d.ts +0 -19
- package/package/components/LightweightSchemaForm.svelte +0 -100
- package/package/components/LightweightSchemaForm.svelte.d.ts +0 -43
- package/package/components/common/button/ButtonDropdown.svelte +0 -61
- package/package/components/common/button/ButtonDropdown.svelte.d.ts +0 -22
- package/package/components/common/menu/MenuV2.svelte +0 -51
- package/package/components/common/menu/MenuV2.svelte.d.ts +0 -26
- package/package/components/common/popup/Popup.svelte +0 -66
- package/package/components/common/popup/Popup.svelte.d.ts +0 -35
- package/package/components/common/toggleButton-v2/ToggleEnable.svelte +0 -34
- package/package/components/common/toggleButton-v2/ToggleEnable.svelte.d.ts +0 -23
- package/package/components/details/Menu.svelte +0 -58
- package/package/components/details/Menu.svelte.d.ts +0 -16
- package/package/components/flows/map/FlowCopilotButton.svelte +0 -54
- package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +0 -16
- package/package/components/meltComponents/ButtonDropDown.svelte +0 -32
- package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +0 -27
- package/package/components/tutorials/TutorialItem.svelte +0 -27
- package/package/components/tutorials/TutorialItem.svelte.d.ts +0 -22
- /package/package/components/triggers/{RouteEditor.svelte → http/RouteEditor.svelte} +0 -0
- /package/package/components/triggers/{RouteEditor.svelte.d.ts → http/RouteEditor.svelte.d.ts} +0 -0
- /package/package/components/triggers/{RouteEditorInner.svelte.d.ts → http/RouteEditorInner.svelte.d.ts} +0 -0
- /package/package/components/triggers/{RoutesPanel.svelte.d.ts → http/RoutesPanel.svelte.d.ts} +0 -0
- /package/package/components/triggers/{KafkaTriggerEditor.svelte → kafka/KafkaTriggerEditor.svelte} +0 -0
- /package/package/components/triggers/{KafkaTriggerEditor.svelte.d.ts → kafka/KafkaTriggerEditor.svelte.d.ts} +0 -0
- /package/package/components/triggers/{KafkaTriggerEditorInner.svelte.d.ts → kafka/KafkaTriggerEditorInner.svelte.d.ts} +0 -0
- /package/package/components/triggers/{KafkaTriggersPanel.svelte.d.ts → kafka/KafkaTriggersPanel.svelte.d.ts} +0 -0
- /package/package/components/triggers/{NatsTriggerEditor.svelte → nats/NatsTriggerEditor.svelte} +0 -0
- /package/package/components/triggers/{NatsTriggerEditor.svelte.d.ts → nats/NatsTriggerEditor.svelte.d.ts} +0 -0
- /package/package/components/triggers/{NatsTriggerEditorInner.svelte.d.ts → nats/NatsTriggerEditorInner.svelte.d.ts} +0 -0
- /package/package/components/triggers/{NatsTriggersPanel.svelte.d.ts → nats/NatsTriggersPanel.svelte.d.ts} +0 -0
- /package/package/components/triggers/{ScheduledPollPanel.svelte.d.ts → scheduled/ScheduledPollPanel.svelte.d.ts} +0 -0
- /package/package/components/triggers/{WebhooksPanel.svelte.d.ts → webhook/WebhooksPanel.svelte.d.ts} +0 -0
- /package/package/components/triggers/{WebsocketTriggerEditor.svelte → websocket/WebsocketTriggerEditor.svelte} +0 -0
- /package/package/components/triggers/{WebsocketTriggerEditor.svelte.d.ts → websocket/WebsocketTriggerEditor.svelte.d.ts} +0 -0
- /package/package/components/triggers/{WebsocketTriggerEditorInner.svelte.d.ts → websocket/WebsocketTriggerEditorInner.svelte.d.ts} +0 -0
- /package/package/components/triggers/{WebsocketTriggersPanel.svelte.d.ts → websocket/WebsocketTriggersPanel.svelte.d.ts} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script>import { isCloudHosted } from '../cloud';
|
|
2
2
|
import { enterpriseLicense, isCriticalAlertsUIOpen } from '../stores';
|
|
3
|
-
import { AlertCircle, AlertTriangle, BadgeCheck, BadgeX, Info, Plus, Slack, X } from 'lucide-svelte';
|
|
3
|
+
import { AlertCircle, AlertTriangle, BadgeCheck, BadgeX, Info, Plus, RefreshCcw, Slack, X } from 'lucide-svelte';
|
|
4
4
|
import Tooltip from './Tooltip.svelte';
|
|
5
5
|
import ObjectStoreConfigSettings from './ObjectStoreConfigSettings.svelte';
|
|
6
6
|
import { sendUserToast } from '../toast';
|
|
7
7
|
import ConfirmButton from './ConfirmButton.svelte';
|
|
8
|
-
import { IndexSearchService, SettingService } from '../gen';
|
|
8
|
+
import { IndexSearchService, SettingService, TeamsService } from '../gen';
|
|
9
9
|
import { Button, SecondsInput, Skeleton } from './common';
|
|
10
10
|
import Password from './Password.svelte';
|
|
11
11
|
import { classNames } from '../utils';
|
|
@@ -14,13 +14,19 @@ import Toggle from './Toggle.svelte';
|
|
|
14
14
|
import { createEventDispatcher } from 'svelte';
|
|
15
15
|
import { fade } from 'svelte/transition';
|
|
16
16
|
import { base } from '../base';
|
|
17
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
18
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
17
19
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
18
20
|
export let setting;
|
|
19
21
|
export let version;
|
|
20
22
|
export let values;
|
|
21
23
|
export let loading = true;
|
|
22
24
|
const dispatch = createEventDispatcher();
|
|
25
|
+
if (setting.fieldType == 'select' && $values[setting.key] == undefined) {
|
|
26
|
+
$values[setting.key] = 'default';
|
|
27
|
+
}
|
|
23
28
|
let latestKeyRenewalAttempt;
|
|
29
|
+
let isFetching = false;
|
|
24
30
|
function showSetting(setting, values) {
|
|
25
31
|
if (setting == 'dev_instance') {
|
|
26
32
|
if (values['license_key'] == undefined) {
|
|
@@ -32,6 +38,7 @@ function showSetting(setting, values) {
|
|
|
32
38
|
let licenseKeyChanged = false;
|
|
33
39
|
let renewing = false;
|
|
34
40
|
let opening = false;
|
|
41
|
+
let to = '';
|
|
35
42
|
async function reloadKeyrenewalAttemptInfo() {
|
|
36
43
|
latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt();
|
|
37
44
|
}
|
|
@@ -87,8 +94,50 @@ function parseLicenseKey(key) {
|
|
|
87
94
|
valid: false
|
|
88
95
|
};
|
|
89
96
|
}
|
|
97
|
+
async function fetchTeams() {
|
|
98
|
+
if (isFetching)
|
|
99
|
+
return;
|
|
100
|
+
isFetching = true;
|
|
101
|
+
try {
|
|
102
|
+
$values['teams'] = await TeamsService.syncTeams();
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('Error fetching teams:', error);
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
isFetching = false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function handleTeamChange(event, i) {
|
|
112
|
+
const teamId = event.target.value;
|
|
113
|
+
const team = $values['teams'].find((team) => team.team_id === teamId) || null;
|
|
114
|
+
$values['critical_error_channels'][i] = {
|
|
115
|
+
teams_channel: {
|
|
116
|
+
team_id: team?.team_id,
|
|
117
|
+
team_name: team?.team_name,
|
|
118
|
+
channel_id: team?.channels[0]?.channel_id,
|
|
119
|
+
channel_name: team?.channels[0]?.channel_name
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function handleChannelChange(event, setting, i) {
|
|
124
|
+
const channelId = event.target.value;
|
|
125
|
+
const team = $values['teams'].find((team) => team.team_id === $values['critical_error_channels'][i]?.teams_channel?.team_id);
|
|
126
|
+
const channel = team?.channels.find((channel) => channel.channel_id === channelId) || null;
|
|
127
|
+
if (channelId) {
|
|
128
|
+
$values['critical_error_channels'][i] = {
|
|
129
|
+
teams_channel: {
|
|
130
|
+
team_id: team?.team_id,
|
|
131
|
+
team_name: team?.team_name,
|
|
132
|
+
channel_id: channel?.channel_id,
|
|
133
|
+
channel_name: channel?.channel_name
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
90
138
|
</script>
|
|
91
139
|
|
|
140
|
+
<!-- {JSON.stringify($values, null, 2)} -->
|
|
92
141
|
{#if (!setting.cloudonly || isCloudHosted()) && showSetting(setting.key, $values) && !(setting.hiddenIfNull && $values[setting.key] == null)}
|
|
93
142
|
{#if setting.ee_only != undefined && !$enterpriseLicense}
|
|
94
143
|
<div class="flex text-xs items-center gap-1 text-yellow-500 whitespace-nowrap">
|
|
@@ -96,617 +145,732 @@ function parseLicenseKey(key) {
|
|
|
96
145
|
EE only {#if setting.ee_only != ''}<Tooltip>{setting.ee_only}</Tooltip>{/if}
|
|
97
146
|
</div>
|
|
98
147
|
{/if}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
{
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
<Tooltip>{setting.tooltip}</Tooltip>
|
|
109
|
-
{/if}
|
|
110
|
-
{#if $values}
|
|
111
|
-
{@const hasError = setting.isValid && !setting.isValid($values[setting.key])}
|
|
112
|
-
{#if loading}
|
|
113
|
-
<Skeleton layout={[[2.5]]} />
|
|
114
|
-
{:else if setting.fieldType == 'text'}
|
|
115
|
-
<input
|
|
116
|
-
disabled={setting.ee_only != undefined && !$enterpriseLicense}
|
|
117
|
-
type="text"
|
|
118
|
-
placeholder={setting.placeholder}
|
|
119
|
-
class={hasError
|
|
120
|
-
? 'border !border-red-700 !border-opacity-30 !focus:border-red-700 !focus:border-opacity-30'
|
|
121
|
-
: ''}
|
|
122
|
-
bind:value={$values[setting.key]}
|
|
123
|
-
/>
|
|
124
|
-
{#if setting.advancedToggle}
|
|
125
|
-
<div class="mt-1">
|
|
126
|
-
<Toggle
|
|
127
|
-
size="xs"
|
|
128
|
-
options={{ right: setting.advancedToggle.label }}
|
|
129
|
-
checked={setting.advancedToggle.checked($values)}
|
|
130
|
-
on:change={() => {
|
|
131
|
-
if (setting.advancedToggle) {
|
|
132
|
-
$values = setting.advancedToggle.onChange($values)
|
|
133
|
-
}
|
|
134
|
-
}}
|
|
135
|
-
/>
|
|
136
|
-
</div>
|
|
148
|
+
{#if setting.fieldType == 'select'}
|
|
149
|
+
<div>
|
|
150
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
151
|
+
<label class="block pb-2">
|
|
152
|
+
<span class="text-primary font-semibold text-sm">{setting.label}</span>
|
|
153
|
+
{#if setting.description}
|
|
154
|
+
<span class="text-secondary text-xs">
|
|
155
|
+
{@html setting.description}
|
|
156
|
+
</span>
|
|
137
157
|
{/if}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
{
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
<Password
|
|
171
|
-
small
|
|
158
|
+
</label>
|
|
159
|
+
<ToggleButtonGroup bind:selected={$values[setting.key]} let:item={toggleButton}>
|
|
160
|
+
{#each setting.select_items ?? [] as item}
|
|
161
|
+
<ToggleButton
|
|
162
|
+
value={item.value ?? item.label}
|
|
163
|
+
label={item.label}
|
|
164
|
+
tooltip={item.tooltip}
|
|
165
|
+
item={toggleButton}
|
|
166
|
+
/>
|
|
167
|
+
{/each}
|
|
168
|
+
</ToggleButtonGroup>
|
|
169
|
+
</div>
|
|
170
|
+
{:else}
|
|
171
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
172
|
+
<label class="block pb-2">
|
|
173
|
+
<span class="text-primary font-semibold text-sm">{setting.label}</span>
|
|
174
|
+
{#if setting.description}
|
|
175
|
+
<span class="text-secondary text-xs">
|
|
176
|
+
{@html setting.description}
|
|
177
|
+
</span>
|
|
178
|
+
{/if}
|
|
179
|
+
{#if setting.tooltip}
|
|
180
|
+
<Tooltip>{setting.tooltip}</Tooltip>
|
|
181
|
+
{/if}
|
|
182
|
+
{#if $values}
|
|
183
|
+
{@const hasError = setting.isValid && !setting.isValid($values[setting.key])}
|
|
184
|
+
{#if loading}
|
|
185
|
+
<Skeleton layout={[[2.5]]} />
|
|
186
|
+
{:else if setting.fieldType == 'text'}
|
|
187
|
+
<input
|
|
188
|
+
disabled={setting.ee_only != undefined && !$enterpriseLicense}
|
|
189
|
+
type="text"
|
|
172
190
|
placeholder={setting.placeholder}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
bind:
|
|
191
|
+
class={hasError
|
|
192
|
+
? 'border !border-red-700 !border-opacity-30 !focus:border-red-700 !focus:border-opacity-30'
|
|
193
|
+
: ''}
|
|
194
|
+
bind:value={$values[setting.key]}
|
|
177
195
|
/>
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
</div>
|
|
191
|
-
<div class="mt-1 flex flex-col gap-1 items-start">
|
|
192
|
-
{#if $values[setting.key]?.length > 0}
|
|
193
|
-
{#if valid}
|
|
194
|
-
<div class="flex flex-row gap-1 items-center">
|
|
195
|
-
<Info size={12} class="text-tertiary" />
|
|
196
|
-
<span class="text-tertiary text-xs">License key expires on {expiration ?? ''}</span>
|
|
197
|
-
</div>
|
|
198
|
-
{:else if expiration}
|
|
199
|
-
<div class="flex flex-row gap-1 items-center">
|
|
200
|
-
<AlertCircle size={12} class="text-red-600" />
|
|
201
|
-
<span class="text-red-600 dark:text-red-400 text-xs"
|
|
202
|
-
>License key expired on {expiration}</span
|
|
203
|
-
>
|
|
204
|
-
</div>
|
|
205
|
-
{:else}
|
|
206
|
-
<div class="flex flex-row gap-1 items-center">
|
|
207
|
-
<AlertCircle size={12} class="text-red-600" />
|
|
208
|
-
<span class="text-red-600 dark:text-red-400 text-xs"
|
|
209
|
-
>Invalid license key format</span
|
|
210
|
-
>
|
|
211
|
-
</div>
|
|
212
|
-
{/if}
|
|
213
|
-
{/if}
|
|
214
|
-
{#if latestKeyRenewalAttempt}
|
|
215
|
-
{@const attemptedAt = new Date(latestKeyRenewalAttempt.attempted_at).toLocaleString()}
|
|
216
|
-
{@const isTrial = latestKeyRenewalAttempt.result.startsWith('error: trial:')}
|
|
217
|
-
<div class="relative">
|
|
218
|
-
<Popover notClickable>
|
|
219
|
-
<div class="flex flex-row items-center gap-1">
|
|
220
|
-
{#if latestKeyRenewalAttempt.result === 'success'}
|
|
221
|
-
<BadgeCheck class="text-green-600" size={12} />
|
|
222
|
-
{:else}
|
|
223
|
-
<BadgeX class={isTrial ? 'text-yellow-600' : 'text-red-600'} size={12} />
|
|
224
|
-
{/if}
|
|
225
|
-
<span
|
|
226
|
-
class={classNames(
|
|
227
|
-
'text-xs',
|
|
228
|
-
latestKeyRenewalAttempt.result === 'success'
|
|
229
|
-
? 'text-green-600'
|
|
230
|
-
: isTrial
|
|
231
|
-
? 'text-yellow-600'
|
|
232
|
-
: 'text-red-600'
|
|
233
|
-
)}
|
|
234
|
-
>
|
|
235
|
-
{latestKeyRenewalAttempt.result === 'success'
|
|
236
|
-
? 'Latest key renewal succeeded'
|
|
237
|
-
: isTrial
|
|
238
|
-
? 'Latest key renewal ignored because in trial'
|
|
239
|
-
: 'Latest key renewal failed'}
|
|
240
|
-
on {attemptedAt}
|
|
241
|
-
</span>
|
|
242
|
-
</div>
|
|
243
|
-
<div slot="text">
|
|
244
|
-
{#if latestKeyRenewalAttempt.result === 'success'}
|
|
245
|
-
<span class="text-green-300">
|
|
246
|
-
Latest key renewal succeeded on {attemptedAt}
|
|
247
|
-
</span>
|
|
248
|
-
{:else if isTrial}
|
|
249
|
-
<span class="text-yellow-300">
|
|
250
|
-
License key cannot be renewed during trial ({attemptedAt})
|
|
251
|
-
</span>
|
|
252
|
-
{:else}
|
|
253
|
-
<span class="text-red-300">
|
|
254
|
-
Latest key renewal failed on {attemptedAt}: {latestKeyRenewalAttempt.result.replace(
|
|
255
|
-
'error: ',
|
|
256
|
-
''
|
|
257
|
-
)}
|
|
258
|
-
</span>
|
|
259
|
-
{/if}
|
|
260
|
-
<br />
|
|
261
|
-
As long as invoices are paid and usage corresponds to the subscription, the key is
|
|
262
|
-
renewed daily with a validity of 35 days (grace period).
|
|
263
|
-
</div>
|
|
264
|
-
</Popover>
|
|
196
|
+
{#if setting.advancedToggle}
|
|
197
|
+
<div class="mt-1">
|
|
198
|
+
<Toggle
|
|
199
|
+
size="xs"
|
|
200
|
+
options={{ right: setting.advancedToggle.label }}
|
|
201
|
+
checked={setting.advancedToggle.checked($values)}
|
|
202
|
+
on:change={() => {
|
|
203
|
+
if (setting.advancedToggle) {
|
|
204
|
+
$values = setting.advancedToggle.onChange($values)
|
|
205
|
+
}
|
|
206
|
+
}}
|
|
207
|
+
/>
|
|
265
208
|
</div>
|
|
266
209
|
{/if}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
210
|
+
{:else if setting.fieldType == 'textarea'}
|
|
211
|
+
<textarea
|
|
212
|
+
disabled={!$enterpriseLicense}
|
|
213
|
+
rows="2"
|
|
214
|
+
placeholder={setting.placeholder}
|
|
215
|
+
bind:value={$values[setting.key]}
|
|
216
|
+
/>
|
|
217
|
+
{#if setting.key == 'saml_metadata'}
|
|
218
|
+
<div class="flex mt-2">
|
|
219
|
+
<Button
|
|
220
|
+
disabled={!$enterpriseLicense}
|
|
221
|
+
on:click={async (e) => {
|
|
222
|
+
try {
|
|
223
|
+
const res = await SettingService.testMetadata({
|
|
224
|
+
requestBody: $values[setting.key]
|
|
225
|
+
})
|
|
226
|
+
sendUserToast(`Metadata valid: ${res}`)
|
|
227
|
+
} catch (error) {
|
|
228
|
+
sendUserToast(`Invalid metadata`, true, error.message)
|
|
229
|
+
}
|
|
230
|
+
}}>Test content/url</Button
|
|
272
231
|
>
|
|
273
|
-
{/if}
|
|
274
|
-
{/if}
|
|
275
|
-
|
|
276
|
-
{#if valid || expiration}
|
|
277
|
-
<div class="flex flex-row gap-2 mt-1">
|
|
278
|
-
<Button on:click={renewLicenseKey} loading={renewing} size="xs" color="dark"
|
|
279
|
-
>Renew key
|
|
280
|
-
</Button>
|
|
281
|
-
<Button color="dark" size="xs" loading={opening} on:click={openCustomerPortal}>
|
|
282
|
-
Open customer portal
|
|
283
|
-
</Button>
|
|
284
232
|
</div>
|
|
285
233
|
{/if}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
bind:checked={$values[setting.key]}
|
|
294
|
-
options={{ right: setting.description }}
|
|
234
|
+
{:else if setting.fieldType == 'codearea'}
|
|
235
|
+
<SimpleEditor
|
|
236
|
+
autoHeight
|
|
237
|
+
class="editor"
|
|
238
|
+
lang={setting.codeAreaLang ?? 'txt'}
|
|
239
|
+
bind:code={$values[setting.key]}
|
|
240
|
+
fixedOverflowWidgets={false}
|
|
295
241
|
/>
|
|
296
|
-
|
|
242
|
+
{:else if setting.fieldType == 'license_key'}
|
|
243
|
+
{@const { valid, expiration } = parseLicenseKey($values[setting.key] ?? '')}
|
|
244
|
+
<div class="flex gap-2">
|
|
245
|
+
<Password
|
|
246
|
+
small
|
|
247
|
+
placeholder={setting.placeholder}
|
|
248
|
+
on:keydown={() => {
|
|
249
|
+
licenseKeyChanged = true
|
|
250
|
+
}}
|
|
251
|
+
bind:password={$values[setting.key]}
|
|
252
|
+
/>
|
|
297
253
|
<Button
|
|
298
|
-
variant=
|
|
299
|
-
color="light"
|
|
300
|
-
disabled={!$enterpriseLicense}
|
|
254
|
+
variant={$values[setting.key] ? 'contained' : 'border'}
|
|
301
255
|
size="xs"
|
|
302
|
-
on:click={() => {
|
|
303
|
-
|
|
304
|
-
|
|
256
|
+
on:click={async () => {
|
|
257
|
+
await SettingService.testLicenseKey({
|
|
258
|
+
requestBody: { license_key: $values[setting.key] }
|
|
259
|
+
})
|
|
260
|
+
sendUserToast('Valid key')
|
|
305
261
|
}}
|
|
306
262
|
>
|
|
307
|
-
|
|
263
|
+
Test key
|
|
308
264
|
</Button>
|
|
309
265
|
</div>
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
<select
|
|
318
|
-
class="w-20"
|
|
319
|
-
on:change={(e) => {
|
|
320
|
-
if (e.target?.['value']) {
|
|
321
|
-
$values[setting.key][i] = {
|
|
322
|
-
[e.target['value']]: ''
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}}
|
|
326
|
-
value={v && 'slack_channel' in v ? 'slack_channel' : 'email'}
|
|
266
|
+
<div class="mt-1 flex flex-col gap-1 items-start">
|
|
267
|
+
{#if $values[setting.key]?.length > 0}
|
|
268
|
+
{#if valid}
|
|
269
|
+
<div class="flex flex-row gap-1 items-center">
|
|
270
|
+
<Info size={12} class="text-tertiary" />
|
|
271
|
+
<span class="text-tertiary text-xs"
|
|
272
|
+
>License key expires on {expiration ?? ''}</span
|
|
327
273
|
>
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
{
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
274
|
+
</div>
|
|
275
|
+
{:else if expiration}
|
|
276
|
+
<div class="flex flex-row gap-1 items-center">
|
|
277
|
+
<AlertCircle size={12} class="text-red-600" />
|
|
278
|
+
<span class="text-red-600 dark:text-red-400 text-xs"
|
|
279
|
+
>License key expired on {expiration}</span
|
|
280
|
+
>
|
|
281
|
+
</div>
|
|
282
|
+
{:else}
|
|
283
|
+
<div class="flex flex-row gap-1 items-center">
|
|
284
|
+
<AlertCircle size={12} class="text-red-600" />
|
|
285
|
+
<span class="text-red-600 dark:text-red-400 text-xs"
|
|
286
|
+
>Invalid license key format</span
|
|
287
|
+
>
|
|
288
|
+
</div>
|
|
289
|
+
{/if}
|
|
290
|
+
{/if}
|
|
291
|
+
{#if latestKeyRenewalAttempt}
|
|
292
|
+
{@const attemptedAt = new Date(latestKeyRenewalAttempt.attempted_at).toLocaleString()}
|
|
293
|
+
{@const isTrial = latestKeyRenewalAttempt.result.startsWith('error: trial:')}
|
|
294
|
+
<div class="relative">
|
|
295
|
+
<Popover notClickable>
|
|
296
|
+
<div class="flex flex-row items-center gap-1">
|
|
297
|
+
{#if latestKeyRenewalAttempt.result === 'success'}
|
|
298
|
+
<BadgeCheck class="text-green-600" size={12} />
|
|
299
|
+
{:else}
|
|
300
|
+
<BadgeX class={isTrial ? 'text-yellow-600' : 'text-red-600'} size={12} />
|
|
301
|
+
{/if}
|
|
302
|
+
<span
|
|
303
|
+
class={classNames(
|
|
304
|
+
'text-xs',
|
|
305
|
+
latestKeyRenewalAttempt.result === 'success'
|
|
306
|
+
? 'text-green-600'
|
|
307
|
+
: isTrial
|
|
308
|
+
? 'text-yellow-600'
|
|
309
|
+
: 'text-red-600'
|
|
310
|
+
)}
|
|
311
|
+
>
|
|
312
|
+
{latestKeyRenewalAttempt.result === 'success'
|
|
313
|
+
? 'Latest key renewal succeeded'
|
|
314
|
+
: isTrial
|
|
315
|
+
? 'Latest key renewal ignored because in trial'
|
|
316
|
+
: 'Latest key renewal failed'}
|
|
317
|
+
on {attemptedAt}
|
|
318
|
+
</span>
|
|
319
|
+
</div>
|
|
320
|
+
<div slot="text">
|
|
321
|
+
{#if latestKeyRenewalAttempt.result === 'success'}
|
|
322
|
+
<span class="text-green-300">
|
|
323
|
+
Latest key renewal succeeded on {attemptedAt}
|
|
324
|
+
</span>
|
|
325
|
+
{:else if isTrial}
|
|
326
|
+
<span class="text-yellow-300">
|
|
327
|
+
License key cannot be renewed during trial ({attemptedAt})
|
|
328
|
+
</span>
|
|
329
|
+
{:else}
|
|
330
|
+
<span class="text-red-300">
|
|
331
|
+
Latest key renewal failed on {attemptedAt}: {latestKeyRenewalAttempt.result.replace(
|
|
332
|
+
'error: ',
|
|
333
|
+
''
|
|
334
|
+
)}
|
|
335
|
+
</span>
|
|
336
|
+
{/if}
|
|
337
|
+
<br />
|
|
338
|
+
As long as invoices are paid and usage corresponds to the subscription, the key is
|
|
339
|
+
renewed daily with a validity of 35 days (grace period).
|
|
340
|
+
</div>
|
|
341
|
+
</Popover>
|
|
342
|
+
</div>
|
|
343
|
+
{/if}
|
|
344
|
+
{#if licenseKeyChanged && !$enterpriseLicense}
|
|
345
|
+
{#if version.startsWith('CE')}
|
|
346
|
+
<div class="text-red-400"
|
|
347
|
+
>License key is set but image used is the Community Edition {version}. Switch
|
|
348
|
+
image to EE.</div
|
|
349
|
+
>
|
|
350
|
+
{/if}
|
|
351
|
+
{/if}
|
|
352
|
+
|
|
353
|
+
{#if valid || expiration}
|
|
354
|
+
<div class="flex flex-row gap-2 mt-1">
|
|
355
|
+
<Button on:click={renewLicenseKey} loading={renewing} size="xs" color="dark"
|
|
356
|
+
>Renew key
|
|
357
|
+
</Button>
|
|
358
|
+
<Button color="dark" size="xs" loading={opening} on:click={openCustomerPortal}>
|
|
359
|
+
Open customer portal
|
|
360
|
+
</Button>
|
|
361
|
+
</div>
|
|
362
|
+
{/if}
|
|
363
|
+
</div>
|
|
364
|
+
{:else if setting.fieldType == 'email'}
|
|
365
|
+
<input type="email" placeholder={setting.placeholder} bind:value={$values[setting.key]} />
|
|
366
|
+
{:else if setting.key == 'critical_alert_mute_ui'}
|
|
367
|
+
<div class="flex flex-col gap-y-2 my-2 py-2">
|
|
368
|
+
<Toggle
|
|
369
|
+
disabled={!$enterpriseLicense}
|
|
370
|
+
bind:checked={$values[setting.key]}
|
|
371
|
+
options={{ right: setting.description }}
|
|
372
|
+
/>
|
|
373
|
+
<div class="flex flex-row">
|
|
374
|
+
<Button
|
|
375
|
+
variant="border"
|
|
376
|
+
color="light"
|
|
377
|
+
disabled={!$enterpriseLicense}
|
|
378
|
+
size="xs"
|
|
379
|
+
on:click={() => {
|
|
380
|
+
isCriticalAlertsUIOpen.set(true)
|
|
381
|
+
dispatch('closeDrawer')
|
|
382
|
+
}}
|
|
383
|
+
>
|
|
384
|
+
Show critical alerts
|
|
385
|
+
</Button>
|
|
386
|
+
</div>
|
|
387
|
+
</div>
|
|
388
|
+
{:else if setting.fieldType == 'critical_error_channels'}
|
|
389
|
+
<div class="w-full flex gap-x-16 flex-wrap">
|
|
390
|
+
<div class="w-full max-w-lg">
|
|
391
|
+
{#if $enterpriseLicense && Array.isArray($values[setting.key])}
|
|
392
|
+
{#each $values[setting.key] ?? [] as v, i}
|
|
393
|
+
<div class="flex w-full max-w-lg mt-1 gap-2 items-center">
|
|
394
|
+
<select
|
|
395
|
+
class="max-w-24"
|
|
396
|
+
on:change={(e) => {
|
|
336
397
|
if (e.target?.['value']) {
|
|
337
398
|
$values[setting.key][i] = {
|
|
338
|
-
|
|
399
|
+
[e.target['value']]: ''
|
|
339
400
|
}
|
|
340
401
|
}
|
|
402
|
+
if (e.target?.['value'] === 'teams_channel') {
|
|
403
|
+
fetchTeams()
|
|
404
|
+
}
|
|
341
405
|
}}
|
|
342
|
-
value={
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
406
|
+
value={(() => {
|
|
407
|
+
if (!v) return 'email'
|
|
408
|
+
return (
|
|
409
|
+
['slack_channel', 'teams_channel'].find((type) => type in v) || 'email'
|
|
410
|
+
)
|
|
411
|
+
})()}
|
|
412
|
+
>
|
|
413
|
+
<option value="email">Email</option>
|
|
414
|
+
<option value="slack_channel">Slack</option>
|
|
415
|
+
<option value="teams_channel">Teams</option>
|
|
416
|
+
</select>
|
|
417
|
+
{#if v && 'slack_channel' in v}
|
|
418
|
+
<input
|
|
419
|
+
type="text"
|
|
420
|
+
placeholder="Slack channel"
|
|
421
|
+
on:input={(e) => {
|
|
422
|
+
if (e.target?.['value']) {
|
|
423
|
+
$values[setting.key][i] = {
|
|
424
|
+
slack_channel: e.target['value']
|
|
425
|
+
}
|
|
352
426
|
}
|
|
353
|
-
}
|
|
427
|
+
}}
|
|
428
|
+
value={v?.slack_channel ?? ''}
|
|
429
|
+
/>
|
|
430
|
+
{:else if v && 'teams_channel' in v}
|
|
431
|
+
<div class="flex flex-row gap-2 w-full">
|
|
432
|
+
<select on:change={(e) => handleTeamChange(e, i)}>
|
|
433
|
+
<option
|
|
434
|
+
value=""
|
|
435
|
+
disabled
|
|
436
|
+
selected={!$values['critical_error_channels'][i]?.teams_channel
|
|
437
|
+
?.team_id}>Select team</option
|
|
438
|
+
>
|
|
439
|
+
{#if $values['teams']}
|
|
440
|
+
{#each $values['teams'] as team}
|
|
441
|
+
<option
|
|
442
|
+
value={team.team_id}
|
|
443
|
+
selected={$values['critical_error_channels'][i]?.teams_channel
|
|
444
|
+
?.team_id === team.team_id}
|
|
445
|
+
>
|
|
446
|
+
{team.team_name}
|
|
447
|
+
</option>
|
|
448
|
+
{/each}
|
|
449
|
+
{/if}
|
|
450
|
+
</select>
|
|
451
|
+
{#if $values['critical_error_channels'][i]?.teams_channel?.team_id}
|
|
452
|
+
<select
|
|
453
|
+
id="channel-select"
|
|
454
|
+
on:change={(e) => handleChannelChange(e, setting, i)}
|
|
455
|
+
>
|
|
456
|
+
<option
|
|
457
|
+
value=""
|
|
458
|
+
disabled
|
|
459
|
+
selected={!$values['critical_error_channels'][i]?.teams_channel
|
|
460
|
+
?.channel_id}>Select channel</option
|
|
461
|
+
>
|
|
462
|
+
{#each $values['teams'].find((team) => team.team_id === $values['critical_error_channels'][i]?.teams_channel?.team_id)?.channels ?? [] as channel}
|
|
463
|
+
<option
|
|
464
|
+
value={channel.channel_id}
|
|
465
|
+
selected={$values['critical_error_channels'][i]?.teams_channel
|
|
466
|
+
?.channel_id === channel.channel_id}
|
|
467
|
+
>
|
|
468
|
+
{channel.channel_name}
|
|
469
|
+
</option>
|
|
470
|
+
{/each}
|
|
471
|
+
</select>
|
|
472
|
+
{/if}
|
|
473
|
+
<div>
|
|
474
|
+
<button on:click={fetchTeams} class="flex items-center gap-1 mt-2">
|
|
475
|
+
<RefreshCcw size={16} class={isFetching ? 'animate-spin' : ''} />
|
|
476
|
+
</button>
|
|
477
|
+
</div>
|
|
478
|
+
</div>
|
|
479
|
+
{:else}
|
|
480
|
+
<input
|
|
481
|
+
type="email"
|
|
482
|
+
placeholder="Email address"
|
|
483
|
+
on:input={(e) => {
|
|
484
|
+
if (e.target?.['value']) {
|
|
485
|
+
$values[setting.key][i] = {
|
|
486
|
+
email: e.target['value']
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}}
|
|
490
|
+
value={v?.email ?? ''}
|
|
491
|
+
/>
|
|
492
|
+
{/if}
|
|
493
|
+
<button
|
|
494
|
+
transition:fade|local={{ duration: 100 }}
|
|
495
|
+
class="rounded-full p-1 bg-surface-secondary duration-200 hover:bg-surface-hover"
|
|
496
|
+
aria-label="Clear"
|
|
497
|
+
on:click={() => {
|
|
498
|
+
$values[setting.key] = $values[setting.key].filter(
|
|
499
|
+
(_, index) => index !== i
|
|
500
|
+
)
|
|
354
501
|
}}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
on:click={() => {
|
|
363
|
-
$values[setting.key] = $values[setting.key].filter((_, index) => index !== i)
|
|
364
|
-
}}
|
|
365
|
-
>
|
|
366
|
-
<X size={14} />
|
|
367
|
-
</button>
|
|
368
|
-
</div>
|
|
369
|
-
{/each}
|
|
370
|
-
{/if}
|
|
502
|
+
>
|
|
503
|
+
<X size={14} />
|
|
504
|
+
</button>
|
|
505
|
+
</div>
|
|
506
|
+
{/each}
|
|
507
|
+
{/if}
|
|
508
|
+
</div>
|
|
371
509
|
</div>
|
|
372
|
-
|
|
373
|
-
<div class="flex mt-2 gap-20 items-center">
|
|
374
|
-
<Button
|
|
375
|
-
variant="border"
|
|
376
|
-
color="light"
|
|
377
|
-
size="md"
|
|
378
|
-
btnClasses="mt-1"
|
|
379
|
-
on:click={() => {
|
|
380
|
-
if ($values[setting.key] == undefined || !Array.isArray($values[setting.key])) {
|
|
381
|
-
$values[setting.key] = []
|
|
382
|
-
}
|
|
383
|
-
$values[setting.key] = $values[setting.key].concat('')
|
|
384
|
-
}}
|
|
385
|
-
id="arg-input-add-item"
|
|
386
|
-
startIcon={{ icon: Plus }}
|
|
387
|
-
disabled={!$enterpriseLicense}
|
|
388
|
-
>
|
|
389
|
-
Add channel
|
|
390
|
-
</Button>
|
|
391
|
-
<div class="flex mt-1">
|
|
510
|
+
<div class="flex mt-2 gap-20 items-center">
|
|
392
511
|
<Button
|
|
393
|
-
disabled={!$enterpriseLicense}
|
|
394
512
|
variant="border"
|
|
395
513
|
color="light"
|
|
396
514
|
size="md"
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
})
|
|
402
|
-
sendUserToast('Test message sent successfully to critical channels', false)
|
|
403
|
-
} catch (error) {
|
|
404
|
-
sendUserToast('Failed to send test message: ' + error.message, true)
|
|
515
|
+
btnClasses="mt-1"
|
|
516
|
+
on:click={() => {
|
|
517
|
+
if ($values[setting.key] == undefined || !Array.isArray($values[setting.key])) {
|
|
518
|
+
$values[setting.key] = []
|
|
405
519
|
}
|
|
520
|
+
$values[setting.key] = $values[setting.key].concat('')
|
|
406
521
|
}}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
</Button>
|
|
410
|
-
</div>
|
|
411
|
-
</div>
|
|
412
|
-
{:else if setting.fieldType == 'slack_connect'}
|
|
413
|
-
<div class="flex flex-col items-start self-start">
|
|
414
|
-
{#if $values[setting.key] && 'team_name' in $values[setting.key]}
|
|
415
|
-
<div class="text-sm">
|
|
416
|
-
Connected to <code>{$values[setting.key]['team_name']}</code>
|
|
417
|
-
</div>
|
|
418
|
-
<Button
|
|
419
|
-
size="sm"
|
|
420
|
-
endIcon={{ icon: Slack }}
|
|
421
|
-
btnClasses="mt-2"
|
|
422
|
-
variant="border"
|
|
423
|
-
on:click={async () => {
|
|
424
|
-
$values[setting.key] = undefined
|
|
425
|
-
}}
|
|
426
|
-
>
|
|
427
|
-
Disconnect Slack
|
|
428
|
-
</Button>
|
|
429
|
-
{:else}
|
|
430
|
-
<Button
|
|
431
|
-
size="xs"
|
|
432
|
-
color="dark"
|
|
433
|
-
href="{base}/api/oauth/connect_slack?instance=true"
|
|
434
|
-
startIcon={{ icon: Slack }}
|
|
522
|
+
id="arg-input-add-item"
|
|
523
|
+
startIcon={{ icon: Plus }}
|
|
435
524
|
disabled={!$enterpriseLicense}
|
|
436
525
|
>
|
|
437
|
-
|
|
526
|
+
Add channel
|
|
438
527
|
</Button>
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
{:else if setting.fieldType == 'indexer_rates'}
|
|
442
|
-
<div class="flex flex-col gap-4 mt-4">
|
|
443
|
-
{#if $values[setting.key]}
|
|
444
|
-
<div>
|
|
445
|
-
<label for="writer_memory_budget" class="block text-sm font-medium">
|
|
446
|
-
Index writer memory budget (MB)
|
|
447
|
-
<Tooltip>
|
|
448
|
-
The allocated memory arena for the indexer. A bigger value means less writing to
|
|
449
|
-
disk and potentially higher indexing throughput
|
|
450
|
-
</Tooltip>
|
|
451
|
-
</label>
|
|
452
|
-
<input
|
|
528
|
+
<div class="flex mt-1">
|
|
529
|
+
<Button
|
|
453
530
|
disabled={!$enterpriseLicense}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
on:
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
$values[setting.key]
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
value={$values[setting.key].writer_memory_budget / (1024 * 1024)}
|
|
466
|
-
/>
|
|
467
|
-
</div>
|
|
468
|
-
<h3>Completed Job Index</h3>
|
|
469
|
-
<div>
|
|
470
|
-
<label for="commit_job_max_batch_size" class="block text-sm font-medium">
|
|
471
|
-
Commit max batch size <Tooltip>
|
|
472
|
-
The max amount of documents (here jobs) per commit. To optimize indexing
|
|
473
|
-
throughput, it is best to keep this as high as possible. However, especially when
|
|
474
|
-
reindexing the whole instance, it can be useful to have a limit on how many jobs
|
|
475
|
-
can be written without being commited. A commit will make the jobs available for
|
|
476
|
-
search, constitute a "checkpoint" state in the indexing and will be logged.
|
|
477
|
-
</Tooltip>
|
|
478
|
-
</label>
|
|
479
|
-
<input
|
|
480
|
-
disabled={!$enterpriseLicense}
|
|
481
|
-
type="number"
|
|
482
|
-
id="commit_job_max_batch_size"
|
|
483
|
-
placeholder="100000"
|
|
484
|
-
bind:value={$values[setting.key].commit_job_max_batch_size}
|
|
485
|
-
/>
|
|
486
|
-
</div>
|
|
487
|
-
<div>
|
|
488
|
-
<label for="refresh_index_period" class="block text-sm font-medium">
|
|
489
|
-
Refresh index period (s) <Tooltip>
|
|
490
|
-
The index will query new jobs periodically and write them on the index. This
|
|
491
|
-
setting sets that period.
|
|
492
|
-
</Tooltip></label
|
|
493
|
-
>
|
|
494
|
-
<input
|
|
495
|
-
disabled={!$enterpriseLicense}
|
|
496
|
-
type="number"
|
|
497
|
-
id="refresh_index_period"
|
|
498
|
-
placeholder="300"
|
|
499
|
-
bind:value={$values[setting.key].refresh_index_period}
|
|
500
|
-
/>
|
|
501
|
-
</div>
|
|
502
|
-
<div>
|
|
503
|
-
<label for="max_indexed_job_log_size" class="block text-sm font-medium">
|
|
504
|
-
Max indexed job log size (KB) <Tooltip>
|
|
505
|
-
Job logs are included when indexing, but to avoid the index size growing
|
|
506
|
-
artificially, the logs will be truncated after a size has been reached.
|
|
507
|
-
</Tooltip>
|
|
508
|
-
</label>
|
|
509
|
-
<input
|
|
510
|
-
disabled={!$enterpriseLicense}
|
|
511
|
-
type="number"
|
|
512
|
-
id="max_indexed_job_log_size"
|
|
513
|
-
placeholder="1024"
|
|
514
|
-
on:input={(e) => {
|
|
515
|
-
if (e.target instanceof HTMLInputElement) {
|
|
516
|
-
if (e.target.valueAsNumber) {
|
|
517
|
-
$values[setting.key].max_indexed_job_log_size = e.target.valueAsNumber * 1024
|
|
518
|
-
}
|
|
531
|
+
variant="border"
|
|
532
|
+
color="light"
|
|
533
|
+
size="md"
|
|
534
|
+
on:click={async () => {
|
|
535
|
+
try {
|
|
536
|
+
await SettingService.testCriticalChannels({
|
|
537
|
+
requestBody: $values[setting.key]
|
|
538
|
+
})
|
|
539
|
+
sendUserToast('Test message sent successfully to critical channels', false)
|
|
540
|
+
} catch (error) {
|
|
541
|
+
sendUserToast('Failed to send test message: ' + error.message, true)
|
|
519
542
|
}
|
|
520
543
|
}}
|
|
521
|
-
value={$values[setting.key].max_indexed_job_log_size / 1024}
|
|
522
|
-
/>
|
|
523
|
-
</div>
|
|
524
|
-
<h3>Service Logs Index</h3>
|
|
525
|
-
<div>
|
|
526
|
-
<label for="commit_log_max_batch_size" class="block text-sm font-medium"
|
|
527
|
-
>Commit max batch size <Tooltip>
|
|
528
|
-
The max amount of documents per commit. In this case 1 document is one log file
|
|
529
|
-
representing all logs during 1 minute for a specific host. To optimize indexing
|
|
530
|
-
throughput, it is best to keep this as high as possible. However, especially when
|
|
531
|
-
reindexing the whole instance, it can be useful to have a limit on how many logs
|
|
532
|
-
can be written without being commited. A commit will make the logs available for
|
|
533
|
-
search, appear as a log line, and be a "checkpoint" of the indexing progress.
|
|
534
|
-
</Tooltip>
|
|
535
|
-
</label>
|
|
536
|
-
<input
|
|
537
|
-
disabled={!$enterpriseLicense}
|
|
538
|
-
type="number"
|
|
539
|
-
id="commit_log_max_batch_size"
|
|
540
|
-
placeholder="10000"
|
|
541
|
-
bind:value={$values[setting.key].commit_log_max_batch_size}
|
|
542
|
-
/>
|
|
543
|
-
</div>
|
|
544
|
-
<div>
|
|
545
|
-
<label for="refresh_log_index_period" class="block text-sm font-medium">
|
|
546
|
-
Refresh index period (s) <Tooltip>
|
|
547
|
-
The index will query new service logs peridically and write them on the index.
|
|
548
|
-
This setting sets that period.
|
|
549
|
-
</Tooltip></label
|
|
550
544
|
>
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
type="number"
|
|
554
|
-
id="refresh_log_index_period"
|
|
555
|
-
placeholder="300"
|
|
556
|
-
bind:value={$values[setting.key].refresh_log_index_period}
|
|
557
|
-
/>
|
|
545
|
+
Test channels
|
|
546
|
+
</Button>
|
|
558
547
|
</div>
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
<
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
>
|
|
572
|
-
<ConfirmButton
|
|
548
|
+
</div>
|
|
549
|
+
{:else if setting.fieldType == 'slack_connect'}
|
|
550
|
+
<div class="flex flex-col items-start self-start">
|
|
551
|
+
{#if $values[setting.key] && 'team_name' in $values[setting.key]}
|
|
552
|
+
<div class="text-sm">
|
|
553
|
+
Connected to <code>{$values[setting.key]['team_name']}</code>
|
|
554
|
+
</div>
|
|
555
|
+
<Button
|
|
556
|
+
size="sm"
|
|
557
|
+
endIcon={{ icon: Slack }}
|
|
558
|
+
btnClasses="mt-2"
|
|
559
|
+
variant="border"
|
|
573
560
|
on:click={async () => {
|
|
574
|
-
|
|
575
|
-
idxName: 'ServiceLogIndex'
|
|
576
|
-
})
|
|
577
|
-
console.log('asasd')
|
|
578
|
-
sendUserToast(r)
|
|
579
|
-
}}>Clear <b>Service Logs</b> Index</ConfirmButton
|
|
580
|
-
>
|
|
581
|
-
</div>
|
|
582
|
-
{/if}
|
|
583
|
-
</div>
|
|
584
|
-
{:else if setting.fieldType == 'smtp_connect'}
|
|
585
|
-
<div class="flex flex-col gap-4 border rounded p-4">
|
|
586
|
-
{#if $values[setting.key]}
|
|
587
|
-
<div>
|
|
588
|
-
<label for="smtp_host" class="block text-sm font-medium">Host</label>
|
|
589
|
-
<input
|
|
590
|
-
type="text"
|
|
591
|
-
id="smtp_host"
|
|
592
|
-
placeholder="smtp.gmail.com"
|
|
593
|
-
bind:value={$values[setting.key].smtp_host}
|
|
594
|
-
/>
|
|
595
|
-
</div>
|
|
596
|
-
<div>
|
|
597
|
-
<label for="smtp_port" class="block text-sm font-medium">Port</label>
|
|
598
|
-
<input
|
|
599
|
-
type="number"
|
|
600
|
-
id="smtp_port"
|
|
601
|
-
placeholder="587"
|
|
602
|
-
bind:value={$values[setting.key].smtp_port}
|
|
603
|
-
/>
|
|
604
|
-
</div>
|
|
605
|
-
<div>
|
|
606
|
-
<label for="smtp_username" class="block text-sm font-medium">Username</label>
|
|
607
|
-
<input
|
|
608
|
-
type="text"
|
|
609
|
-
id="smtp_username"
|
|
610
|
-
placeholder="ruben@windmill.dev"
|
|
611
|
-
bind:value={$values[setting.key].smtp_username}
|
|
612
|
-
/>
|
|
613
|
-
</div>
|
|
614
|
-
<div>
|
|
615
|
-
<label for="smtp_password" class="block text-sm font-medium">Password</label>
|
|
616
|
-
<Password bind:password={$values[setting.key].smtp_password} />
|
|
617
|
-
</div>
|
|
618
|
-
<div>
|
|
619
|
-
<label for="smtp_from" class="block text-sm font-medium">From Address</label>
|
|
620
|
-
<input
|
|
621
|
-
type="email"
|
|
622
|
-
id="smtp_from"
|
|
623
|
-
placeholder="noreply@windmill.dev"
|
|
624
|
-
bind:value={$values[setting.key].smtp_from}
|
|
625
|
-
/>
|
|
626
|
-
</div>
|
|
627
|
-
<div>
|
|
628
|
-
<Toggle
|
|
629
|
-
disabled={$values[setting.key].smtp_disable_tls == true || !$enterpriseLicense}
|
|
630
|
-
id="smtp_tls_implicit"
|
|
631
|
-
bind:checked={$values[setting.key].smtp_tls_implicit}
|
|
632
|
-
options={{ right: 'Implicit TLS' }}
|
|
633
|
-
label="Implicit TLS"
|
|
634
|
-
/>
|
|
635
|
-
</div>
|
|
636
|
-
<div>
|
|
637
|
-
<Toggle
|
|
638
|
-
id="smtp_disable_tls"
|
|
639
|
-
disabled={!$enterpriseLicense}
|
|
640
|
-
bind:checked={$values[setting.key].smtp_disable_tls}
|
|
641
|
-
on:change={() => {
|
|
642
|
-
if ($values[setting.key].smtp_disable_tls) {
|
|
643
|
-
$values[setting.key].smtp_tls_implicit = false
|
|
644
|
-
}
|
|
561
|
+
$values[setting.key] = undefined
|
|
645
562
|
}}
|
|
646
|
-
options={{ right: 'Disable TLS' }}
|
|
647
|
-
label="Disable TLS"
|
|
648
|
-
/>
|
|
649
|
-
</div>
|
|
650
|
-
{/if}
|
|
651
|
-
</div>
|
|
652
|
-
{:else if setting.fieldType == 'otel'}
|
|
653
|
-
<div class="flex flex-col gap-4 border rounded p-4">
|
|
654
|
-
{#if $values[setting.key]}
|
|
655
|
-
<div class="flex gap-8">
|
|
656
|
-
<Toggle
|
|
657
|
-
disabled={!$enterpriseLicense}
|
|
658
|
-
id="tracing_enabled"
|
|
659
|
-
bind:checked={$values[setting.key].tracing_enabled}
|
|
660
|
-
options={{ right: 'Tracing' }}
|
|
661
|
-
label="Tracing"
|
|
662
|
-
/>
|
|
663
|
-
<Toggle
|
|
664
|
-
disabled={!$enterpriseLicense}
|
|
665
|
-
id="logs_enabled"
|
|
666
|
-
bind:checked={$values[setting.key].logs_enabled}
|
|
667
|
-
options={{ right: 'Logs' }}
|
|
668
|
-
label="logs"
|
|
669
|
-
/>
|
|
670
|
-
<Toggle
|
|
671
|
-
disabled
|
|
672
|
-
id="metrics_enabled"
|
|
673
|
-
bind:checked={$values[setting.key].logs_enabled}
|
|
674
|
-
options={{ right: 'Metrics (coming soon)' }}
|
|
675
|
-
label="metrics"
|
|
676
|
-
/>
|
|
677
|
-
</div>
|
|
678
|
-
|
|
679
|
-
<div>
|
|
680
|
-
<label for="OTEL_EXPORTER_OTLP_ENDPOINT" class="block text-sm font-medium"
|
|
681
|
-
>Endpoint</label
|
|
682
563
|
>
|
|
683
|
-
|
|
564
|
+
Disconnect Slack
|
|
565
|
+
</Button>
|
|
566
|
+
{:else}
|
|
567
|
+
<Button
|
|
568
|
+
size="xs"
|
|
569
|
+
color="dark"
|
|
570
|
+
href="{base}/api/oauth/connect_slack?instance=true"
|
|
571
|
+
startIcon={{ icon: Slack }}
|
|
684
572
|
disabled={!$enterpriseLicense}
|
|
685
|
-
type="text"
|
|
686
|
-
id="OTEL_EXPORTER_OTLP_ENDPOINT"
|
|
687
|
-
placeholder="http://otel-collector.example.com:4317"
|
|
688
|
-
bind:value={$values[setting.key].otel_exporter_otlp_endpoint}
|
|
689
|
-
/>
|
|
690
|
-
</div>
|
|
691
|
-
<div>
|
|
692
|
-
<label for="OTEL_EXPORTER_OTLP_HEADERS" class="block text-sm font-medium"
|
|
693
|
-
>Headers</label
|
|
694
573
|
>
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
574
|
+
Connect to Slack
|
|
575
|
+
</Button>
|
|
576
|
+
{/if}
|
|
577
|
+
</div>
|
|
578
|
+
{:else if setting.fieldType == 'indexer_rates'}
|
|
579
|
+
<div class="flex flex-col gap-4 mt-4">
|
|
580
|
+
{#if $values[setting.key]}
|
|
581
|
+
<div>
|
|
582
|
+
<label for="writer_memory_budget" class="block text-sm font-medium">
|
|
583
|
+
Index writer memory budget (MB)
|
|
584
|
+
<Tooltip>
|
|
585
|
+
The allocated memory arena for the indexer. A bigger value means less writing to
|
|
586
|
+
disk and potentially higher indexing throughput
|
|
587
|
+
</Tooltip>
|
|
588
|
+
</label>
|
|
589
|
+
<input
|
|
590
|
+
disabled={!$enterpriseLicense}
|
|
591
|
+
type="number"
|
|
592
|
+
id="writer_memory_budget"
|
|
593
|
+
placeholder="300"
|
|
594
|
+
on:input={(e) => {
|
|
595
|
+
if (e.target instanceof HTMLInputElement) {
|
|
596
|
+
if (e.target.valueAsNumber) {
|
|
597
|
+
$values[setting.key].writer_memory_budget =
|
|
598
|
+
e.target.valueAsNumber * (1024 * 1024)
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}}
|
|
602
|
+
value={$values[setting.key].writer_memory_budget / (1024 * 1024)}
|
|
603
|
+
/>
|
|
604
|
+
</div>
|
|
605
|
+
<h3>Completed Job Index</h3>
|
|
606
|
+
<div>
|
|
607
|
+
<label for="commit_job_max_batch_size" class="block text-sm font-medium">
|
|
608
|
+
Commit max batch size <Tooltip>
|
|
609
|
+
The max amount of documents (here jobs) per commit. To optimize indexing
|
|
610
|
+
throughput, it is best to keep this as high as possible. However, especially
|
|
611
|
+
when reindexing the whole instance, it can be useful to have a limit on how many
|
|
612
|
+
jobs can be written without being commited. A commit will make the jobs
|
|
613
|
+
available for search, constitute a "checkpoint" state in the indexing and will
|
|
614
|
+
be logged.
|
|
615
|
+
</Tooltip>
|
|
616
|
+
</label>
|
|
617
|
+
<input
|
|
618
|
+
disabled={!$enterpriseLicense}
|
|
619
|
+
type="number"
|
|
620
|
+
id="commit_job_max_batch_size"
|
|
621
|
+
placeholder="100000"
|
|
622
|
+
bind:value={$values[setting.key].commit_job_max_batch_size}
|
|
623
|
+
/>
|
|
624
|
+
</div>
|
|
625
|
+
<div>
|
|
626
|
+
<label for="refresh_index_period" class="block text-sm font-medium">
|
|
627
|
+
Refresh index period (s) <Tooltip>
|
|
628
|
+
The index will query new jobs periodically and write them on the index. This
|
|
629
|
+
setting sets that period.
|
|
630
|
+
</Tooltip></label
|
|
631
|
+
>
|
|
632
|
+
<input
|
|
633
|
+
disabled={!$enterpriseLicense}
|
|
634
|
+
type="number"
|
|
635
|
+
id="refresh_index_period"
|
|
636
|
+
placeholder="300"
|
|
637
|
+
bind:value={$values[setting.key].refresh_index_period}
|
|
638
|
+
/>
|
|
639
|
+
</div>
|
|
640
|
+
<div>
|
|
641
|
+
<label for="max_indexed_job_log_size" class="block text-sm font-medium">
|
|
642
|
+
Max indexed job log size (KB) <Tooltip>
|
|
643
|
+
Job logs are included when indexing, but to avoid the index size growing
|
|
644
|
+
artificially, the logs will be truncated after a size has been reached.
|
|
645
|
+
</Tooltip>
|
|
646
|
+
</label>
|
|
647
|
+
<input
|
|
648
|
+
disabled={!$enterpriseLicense}
|
|
649
|
+
type="number"
|
|
650
|
+
id="max_indexed_job_log_size"
|
|
651
|
+
placeholder="1024"
|
|
652
|
+
on:input={(e) => {
|
|
653
|
+
if (e.target instanceof HTMLInputElement) {
|
|
654
|
+
if (e.target.valueAsNumber) {
|
|
655
|
+
$values[setting.key].max_indexed_job_log_size =
|
|
656
|
+
e.target.valueAsNumber * 1024
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
}}
|
|
660
|
+
value={$values[setting.key].max_indexed_job_log_size / 1024}
|
|
661
|
+
/>
|
|
662
|
+
</div>
|
|
663
|
+
<h3>Service Logs Index</h3>
|
|
664
|
+
<div>
|
|
665
|
+
<label for="commit_log_max_batch_size" class="block text-sm font-medium"
|
|
666
|
+
>Commit max batch size <Tooltip>
|
|
667
|
+
The max amount of documents per commit. In this case 1 document is one log file
|
|
668
|
+
representing all logs during 1 minute for a specific host. To optimize indexing
|
|
669
|
+
throughput, it is best to keep this as high as possible. However, especially
|
|
670
|
+
when reindexing the whole instance, it can be useful to have a limit on how many
|
|
671
|
+
logs can be written without being commited. A commit will make the logs
|
|
672
|
+
available for search, appear as a log line, and be a "checkpoint" of the
|
|
673
|
+
indexing progress.
|
|
674
|
+
</Tooltip>
|
|
675
|
+
</label>
|
|
676
|
+
<input
|
|
677
|
+
disabled={!$enterpriseLicense}
|
|
678
|
+
type="number"
|
|
679
|
+
id="commit_log_max_batch_size"
|
|
680
|
+
placeholder="10000"
|
|
681
|
+
bind:value={$values[setting.key].commit_log_max_batch_size}
|
|
682
|
+
/>
|
|
683
|
+
</div>
|
|
684
|
+
<div>
|
|
685
|
+
<label for="refresh_log_index_period" class="block text-sm font-medium">
|
|
686
|
+
Refresh index period (s) <Tooltip>
|
|
687
|
+
The index will query new service logs peridically and write them on the index.
|
|
688
|
+
This setting sets that period.
|
|
689
|
+
</Tooltip></label
|
|
690
|
+
>
|
|
691
|
+
<input
|
|
692
|
+
disabled={!$enterpriseLicense}
|
|
693
|
+
type="number"
|
|
694
|
+
id="refresh_log_index_period"
|
|
695
|
+
placeholder="300"
|
|
696
|
+
bind:value={$values[setting.key].refresh_log_index_period}
|
|
697
|
+
/>
|
|
698
|
+
</div>
|
|
699
|
+
<h3>Reset Index</h3>
|
|
700
|
+
This buttons will clear the whole index, and the service will start reindexing from scratch.
|
|
701
|
+
Full text search might be down during this time.
|
|
702
|
+
<div>
|
|
703
|
+
<ConfirmButton
|
|
704
|
+
on:click={async () => {
|
|
705
|
+
let r = await IndexSearchService.clearIndex({
|
|
706
|
+
idxName: 'JobIndex'
|
|
707
|
+
})
|
|
708
|
+
console.log('asasd')
|
|
709
|
+
sendUserToast(r)
|
|
710
|
+
}}>Clear <b>Jobs</b> Index</ConfirmButton
|
|
711
|
+
>
|
|
712
|
+
<ConfirmButton
|
|
713
|
+
on:click={async () => {
|
|
714
|
+
let r = await IndexSearchService.clearIndex({
|
|
715
|
+
idxName: 'ServiceLogIndex'
|
|
716
|
+
})
|
|
717
|
+
console.log('asasd')
|
|
718
|
+
sendUserToast(r)
|
|
719
|
+
}}>Clear <b>Service Logs</b> Index</ConfirmButton
|
|
720
|
+
>
|
|
721
|
+
</div>
|
|
722
|
+
{/if}
|
|
723
|
+
</div>
|
|
724
|
+
{:else if setting.fieldType == 'smtp_connect'}
|
|
725
|
+
<div class="flex flex-col gap-4 border rounded p-4">
|
|
726
|
+
{#if $values[setting.key]}
|
|
727
|
+
<div class="flex gap-4"
|
|
728
|
+
><input type="email" bind:value={to} placeholder="contact@windmill.dev" />
|
|
729
|
+
<Button
|
|
730
|
+
disabled={to == ''}
|
|
731
|
+
on:click={async () => {
|
|
732
|
+
let smtp = $values[setting.key]
|
|
733
|
+
await SettingService.testSmtp({
|
|
734
|
+
requestBody: {
|
|
735
|
+
to,
|
|
736
|
+
smtp: {
|
|
737
|
+
host: smtp['smtp_host'],
|
|
738
|
+
username: smtp['smtp_username'],
|
|
739
|
+
password: smtp['smtp_password'],
|
|
740
|
+
port: smtp['smtp_port'],
|
|
741
|
+
from: smtp['smtp_from'],
|
|
742
|
+
tls_implicit: smtp['smtp_tls_implicit'],
|
|
743
|
+
disable_tls: smtp['smtp_disable_tls']
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
})
|
|
747
|
+
sendUserToast('Test email sent')
|
|
748
|
+
}}>Test SMTP settings</Button
|
|
749
|
+
></div
|
|
706
750
|
>
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
751
|
+
<div>
|
|
752
|
+
<label for="smtp_host" class="block text-sm font-medium">Host</label>
|
|
753
|
+
<input
|
|
754
|
+
type="text"
|
|
755
|
+
id="smtp_host"
|
|
756
|
+
placeholder="smtp.gmail.com"
|
|
757
|
+
bind:value={$values[setting.key].smtp_host}
|
|
758
|
+
/>
|
|
759
|
+
</div>
|
|
760
|
+
<div>
|
|
761
|
+
<label for="smtp_port" class="block text-sm font-medium">Port</label>
|
|
762
|
+
<input
|
|
763
|
+
type="number"
|
|
764
|
+
id="smtp_port"
|
|
765
|
+
placeholder="587"
|
|
766
|
+
bind:value={$values[setting.key].smtp_port}
|
|
767
|
+
/>
|
|
768
|
+
</div>
|
|
769
|
+
<div>
|
|
770
|
+
<label for="smtp_username" class="block text-sm font-medium">Username</label>
|
|
771
|
+
<input
|
|
772
|
+
type="text"
|
|
773
|
+
id="smtp_username"
|
|
774
|
+
placeholder="ruben@windmill.dev"
|
|
775
|
+
bind:value={$values[setting.key].smtp_username}
|
|
776
|
+
/>
|
|
777
|
+
</div>
|
|
778
|
+
<div>
|
|
779
|
+
<label for="smtp_password" class="block text-sm font-medium">Password</label>
|
|
780
|
+
<Password bind:password={$values[setting.key].smtp_password} />
|
|
781
|
+
</div>
|
|
782
|
+
<div>
|
|
783
|
+
<label for="smtp_from" class="block text-sm font-medium">From Address</label>
|
|
784
|
+
<input
|
|
785
|
+
type="email"
|
|
786
|
+
id="smtp_from"
|
|
787
|
+
placeholder="noreply@windmill.dev"
|
|
788
|
+
bind:value={$values[setting.key].smtp_from}
|
|
789
|
+
/>
|
|
790
|
+
</div>
|
|
791
|
+
<div>
|
|
792
|
+
<Toggle
|
|
793
|
+
disabled={$values[setting.key].smtp_disable_tls == true || !$enterpriseLicense}
|
|
794
|
+
id="smtp_tls_implicit"
|
|
795
|
+
bind:checked={$values[setting.key].smtp_tls_implicit}
|
|
796
|
+
options={{ right: 'Implicit TLS' }}
|
|
797
|
+
label="Implicit TLS"
|
|
798
|
+
/>
|
|
799
|
+
</div>
|
|
800
|
+
<div>
|
|
801
|
+
<Toggle
|
|
802
|
+
id="smtp_disable_tls"
|
|
803
|
+
disabled={!$enterpriseLicense}
|
|
804
|
+
bind:checked={$values[setting.key].smtp_disable_tls}
|
|
805
|
+
on:change={() => {
|
|
806
|
+
if ($values[setting.key].smtp_disable_tls) {
|
|
807
|
+
$values[setting.key].smtp_tls_implicit = false
|
|
808
|
+
}
|
|
809
|
+
}}
|
|
810
|
+
options={{ right: 'Disable TLS' }}
|
|
811
|
+
label="Disable TLS"
|
|
812
|
+
/>
|
|
813
|
+
</div>
|
|
814
|
+
{/if}
|
|
815
|
+
</div>
|
|
816
|
+
{:else if setting.fieldType == 'otel'}
|
|
817
|
+
<div class="flex flex-col gap-4 border rounded p-4">
|
|
818
|
+
{#if $values[setting.key]}
|
|
819
|
+
<div class="flex gap-8">
|
|
820
|
+
<Toggle
|
|
821
|
+
disabled={!$enterpriseLicense}
|
|
822
|
+
id="tracing_enabled"
|
|
823
|
+
bind:checked={$values[setting.key].tracing_enabled}
|
|
824
|
+
options={{ right: 'Tracing' }}
|
|
825
|
+
label="Tracing"
|
|
826
|
+
/>
|
|
827
|
+
<Toggle
|
|
828
|
+
disabled={!$enterpriseLicense}
|
|
829
|
+
id="logs_enabled"
|
|
830
|
+
bind:checked={$values[setting.key].logs_enabled}
|
|
831
|
+
options={{ right: 'Logs' }}
|
|
832
|
+
label="logs"
|
|
833
|
+
/>
|
|
834
|
+
<Toggle
|
|
835
|
+
disabled
|
|
836
|
+
id="metrics_enabled"
|
|
837
|
+
bind:checked={$values[setting.key].logs_enabled}
|
|
838
|
+
options={{ right: 'Metrics (coming soon)' }}
|
|
839
|
+
label="metrics"
|
|
840
|
+
/>
|
|
841
|
+
</div>
|
|
842
|
+
|
|
843
|
+
<div>
|
|
844
|
+
<label for="OTEL_EXPORTER_OTLP_ENDPOINT" class="block text-sm font-medium"
|
|
845
|
+
>Endpoint</label
|
|
846
|
+
>
|
|
847
|
+
<input
|
|
848
|
+
disabled={!$enterpriseLicense}
|
|
849
|
+
type="text"
|
|
850
|
+
id="OTEL_EXPORTER_OTLP_ENDPOINT"
|
|
851
|
+
placeholder="http://otel-collector.example.com:4317"
|
|
852
|
+
bind:value={$values[setting.key].otel_exporter_otlp_endpoint}
|
|
853
|
+
/>
|
|
854
|
+
</div>
|
|
855
|
+
<div>
|
|
856
|
+
<label for="OTEL_EXPORTER_OTLP_HEADERS" class="block text-sm font-medium"
|
|
857
|
+
>Headers</label
|
|
858
|
+
>
|
|
859
|
+
<input
|
|
860
|
+
disabled={!$enterpriseLicense}
|
|
861
|
+
type="text"
|
|
862
|
+
id="OTEL_EXPORTER_OTLP_HEADERS"
|
|
863
|
+
placeholder="Authorization=Bearer my-secret-token,Env=production"
|
|
864
|
+
bind:value={$values[setting.key].otel_exporter_otlp_headers}
|
|
865
|
+
/>
|
|
866
|
+
</div>
|
|
867
|
+
<div>
|
|
868
|
+
<label for="OTEL_EXPORTER_OTLP_PROTOCOL" class="block text-sm font-medium"
|
|
869
|
+
>Protocol</label
|
|
870
|
+
>
|
|
871
|
+
gRPC
|
|
872
|
+
</div>
|
|
873
|
+
<!-- <div>
|
|
710
874
|
<label for="OTEL_EXPORTER_OTLP_PROTOCOL" class="block text-sm font-medium"
|
|
711
875
|
>Protocol<span class="text-2xs text-tertiary ml-4"
|
|
712
876
|
>grpc, http/protobuf, http/json</span
|
|
@@ -730,45 +894,51 @@ function parseLicenseKey(key) {
|
|
|
730
894
|
bind:value={$values[setting.key].otel_exporter_otlp_compression}
|
|
731
895
|
/>
|
|
732
896
|
</div> -->
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
type="password"
|
|
744
|
-
placeholder={setting.placeholder}
|
|
745
|
-
bind:value={$values[setting.key]}
|
|
746
|
-
/>
|
|
747
|
-
{:else if setting.fieldType == 'boolean'}
|
|
748
|
-
<div class="mt-0.5">
|
|
749
|
-
<Toggle
|
|
750
|
-
disabled={setting.ee_only != undefined && !$enterpriseLicense}
|
|
751
|
-
bind:checked={$values[setting.key]}
|
|
897
|
+
{/if}
|
|
898
|
+
</div>
|
|
899
|
+
{:else if setting.fieldType == 'object_store_config'}
|
|
900
|
+
<ObjectStoreConfigSettings bind:bucket_config={$values[setting.key]} />
|
|
901
|
+
<div class="mb-6" />
|
|
902
|
+
{:else if setting.fieldType == 'number'}
|
|
903
|
+
<input
|
|
904
|
+
type="number"
|
|
905
|
+
placeholder={setting.placeholder}
|
|
906
|
+
bind:value={$values[setting.key]}
|
|
752
907
|
/>
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
: undefined}
|
|
760
|
-
bind:seconds={$values[setting.key]}
|
|
908
|
+
{:else if setting.fieldType == 'password'}
|
|
909
|
+
<input
|
|
910
|
+
autocomplete="new-password"
|
|
911
|
+
type="password"
|
|
912
|
+
placeholder={setting.placeholder}
|
|
913
|
+
bind:value={$values[setting.key]}
|
|
761
914
|
/>
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
915
|
+
{:else if setting.fieldType == 'boolean'}
|
|
916
|
+
<div class="mt-0.5">
|
|
917
|
+
<Toggle
|
|
918
|
+
disabled={setting.ee_only != undefined && !$enterpriseLicense}
|
|
919
|
+
bind:checked={$values[setting.key]}
|
|
920
|
+
/>
|
|
921
|
+
</div>
|
|
922
|
+
{:else if setting.fieldType == 'seconds'}
|
|
923
|
+
<div>
|
|
924
|
+
<SecondsInput
|
|
925
|
+
max={setting.ee_only != undefined && !$enterpriseLicense
|
|
926
|
+
? 60 * 60 * 24 * 30
|
|
927
|
+
: undefined}
|
|
928
|
+
bind:seconds={$values[setting.key]}
|
|
929
|
+
/>
|
|
930
|
+
</div>
|
|
931
|
+
{:else if setting.fieldType == 'select'}
|
|
932
|
+
TODO
|
|
933
|
+
{/if}
|
|
934
|
+
{#if hasError}
|
|
935
|
+
<span class="text-red-500 dark:text-red-400 text-sm">
|
|
936
|
+
{setting.error ?? ''}
|
|
937
|
+
</span>
|
|
938
|
+
{/if}
|
|
939
|
+
{:else}
|
|
940
|
+
<input disabled placeholder="Loading..." />
|
|
769
941
|
{/if}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
{/if}
|
|
773
|
-
</label>
|
|
942
|
+
</label>
|
|
943
|
+
{/if}
|
|
774
944
|
{/if}
|