windmill-components 1.433.0 → 1.444.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/package/components/ArgInput.svelte +12 -16
- package/package/components/ArgInput.svelte.d.ts +1 -0
- package/package/components/AssignableTags.svelte +3 -1
- package/package/components/AssignableTags.svelte.d.ts +1 -0
- package/package/components/AuthSettings.svelte +248 -0
- package/package/components/AuthSettings.svelte.d.ts +19 -0
- package/package/components/AutoscalingConfigEditor.svelte +2 -2
- package/package/components/CronInput.svelte +2 -2
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/Description.svelte +9 -0
- package/package/components/Description.svelte.d.ts +18 -0
- package/package/components/Dev.svelte +18 -3
- package/package/components/DisplayResult.svelte +7 -4
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DropdownV2.svelte +2 -1
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/EditableSchemaForm.svelte +2 -2
- package/package/components/Editor.svelte +9 -6
- package/package/components/Editor.svelte.d.ts +4 -2
- package/package/components/EditorBar.svelte +51 -6
- package/package/components/ErrorOrRecoveryHandler.svelte +4 -3
- package/package/components/ExecutionDuration.svelte +2 -1
- package/package/components/FieldHeader.svelte +9 -1
- package/package/components/FieldHeader.svelte.d.ts +1 -0
- package/package/components/FlowBuilder.svelte +16 -3
- package/package/components/FlowGraphViewer.svelte +2 -0
- package/package/components/FlowPreviewContent.svelte +6 -15
- package/package/components/FlowStatusViewerInner.svelte +80 -55
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/InstanceSetting.svelte +774 -0
- package/package/components/InstanceSetting.svelte.d.ts +27 -0
- package/package/components/InstanceSettings.svelte +68 -1005
- package/package/components/InstanceSettings.svelte.d.ts +0 -4
- package/package/components/Label.svelte +16 -6
- package/package/components/Label.svelte.d.ts +3 -0
- package/package/components/Login.svelte +17 -9
- package/package/components/OAuthSetting.svelte +4 -3
- package/package/components/OauthExtraParams.svelte +1 -1
- package/package/components/OauthScopes.svelte +2 -2
- package/package/components/ObjectStoreConfigSettings.svelte +141 -128
- package/package/components/QueueMetricsDrawer.svelte +5 -5
- package/package/components/ResourceEditor.svelte +4 -0
- package/package/components/ResourceEditor.svelte.d.ts +1 -0
- package/package/components/ResourceEditorDrawer.svelte +15 -3
- package/package/components/ResourceEditorDrawer.svelte.d.ts +2 -2
- package/package/components/ResourcePicker.svelte +16 -5
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/RunPageSchedules.svelte +15 -10
- package/package/components/SavedInputs.svelte +1 -1
- package/package/components/ScheduleEditorInner.svelte +58 -27
- package/package/components/SchemaForm.svelte +7 -5
- package/package/components/SchemaForm.svelte.d.ts +1 -0
- package/package/components/ScriptBuilder.svelte +58 -5
- package/package/components/ScriptEditor.svelte +78 -40
- package/package/components/ScriptEditor.svelte.d.ts +17 -2
- package/package/components/ScriptPicker.svelte +41 -34
- package/package/components/ScriptPicker.svelte.d.ts +1 -0
- package/package/components/ScriptVersionHistory.svelte +1 -1
- package/package/components/Section.svelte +38 -35
- package/package/components/Section.svelte.d.ts +2 -0
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/SimpleEditor.svelte +2 -0
- package/package/components/Subsection.svelte +52 -0
- package/package/components/Subsection.svelte.d.ts +27 -0
- package/package/components/SuperadminSettings.svelte +23 -13
- package/package/components/TemplateEditor.svelte +4 -3
- package/package/components/TestConnection.svelte +5 -0
- package/package/components/TestJobLoader.svelte +2 -1
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/Toggle.svelte +2 -4
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +4 -4
- package/package/components/WorkerTagPicker.svelte +4 -2
- package/package/components/WorkerTagPicker.svelte.d.ts +1 -0
- package/package/components/WorkerTagSelect.svelte +2 -0
- package/package/components/WorkerTagSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
- package/package/components/apps/components/display/dbtable/utils.js +26 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +8 -2
- package/package/components/apps/components/inputs/AppDateInput.svelte +7 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -1
- package/package/components/apps/editor/AppEditor.svelte +5 -34
- package/package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditorBottomPanel.svelte +4 -7
- package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +1 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +148 -58
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
- package/package/components/apps/editor/RunnableJobPanel.svelte +6 -2
- package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +1 -0
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/components.d.ts +82 -81
- package/package/components/apps/editor/component/components.js +4 -3
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/GroupList.svelte +12 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -56
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +16 -9
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/types.d.ts +2 -0
- package/package/components/common/alert/ConnectionIndicator.svelte +30 -0
- package/package/components/common/alert/ConnectionIndicator.svelte.d.ts +20 -0
- package/package/components/common/alert/Notification.svelte +15 -0
- package/package/components/common/alert/Notification.svelte.d.ts +17 -0
- package/package/components/common/button/AnimatedButton.svelte +1 -1
- package/package/components/common/button/RefreshButton.svelte +30 -0
- package/package/components/common/button/RefreshButton.svelte.d.ts +18 -0
- package/package/components/common/fileDownload/FileDownload.svelte +4 -3
- package/package/components/common/fileDownload/FileDownload.svelte.d.ts +1 -0
- package/package/components/common/fileUpload/FileUpload.svelte +3 -3
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/common/layout/List.svelte +35 -0
- package/package/components/common/layout/List.svelte.d.ts +21 -0
- package/package/components/common/layout/ListElement.svelte +3 -0
- package/package/components/common/layout/ListElement.svelte.d.ts +27 -0
- package/package/components/common/menu/MenuV2.svelte +3 -2
- package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
- package/package/components/common/modal/Modal.svelte +6 -4
- package/package/components/common/modal/Modal.svelte.d.ts +1 -0
- package/package/components/common/modal/Modal2.svelte +101 -0
- package/package/components/common/modal/Modal2.svelte.d.ts +28 -0
- package/package/components/common/popup/Popup.svelte +5 -1
- package/package/components/common/popup/Popup.svelte.d.ts +2 -0
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +1 -1
- package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
- package/package/components/details/ClipboardPanel.svelte +12 -2
- package/package/components/details/ClipboardPanel.svelte.d.ts +2 -0
- package/package/components/details/CopyableCodeBlock.svelte +24 -0
- package/package/components/details/CopyableCodeBlock.svelte.d.ts +19 -0
- package/package/components/details/DetailPageLayout.svelte +3 -1
- package/package/components/details/EmailTriggerConfigSection.svelte +119 -0
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +38 -0
- package/package/components/details/EmailTriggerPanel.svelte +27 -74
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +7 -1
- package/package/components/flows/FlowEditor.svelte +1 -1
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowHistoryInner.svelte +1 -1
- package/package/components/flows/content/BranchPredicateEditor.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +30 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowInput.svelte +2 -15
- package/package/components/flows/content/FlowInputs.svelte +1 -1
- package/package/components/flows/content/FlowInputsQuick.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +9 -5
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
- package/package/components/flows/content/FlowModuleHeader.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/FlowPathViewer.svelte +3 -1
- package/package/components/flows/content/FlowRetries.svelte +32 -5
- package/package/components/flows/content/FlowSettings.svelte +56 -48
- package/package/components/flows/flowStateUtils.d.ts +10 -1
- package/package/components/flows/flowStateUtils.js +23 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +9 -19
- package/package/components/flows/map/InsertModuleButton.svelte +3 -3
- package/package/components/flows/map/VirtualItem.svelte +29 -1
- package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -0
- package/package/components/flows/pickers/TopLevelNode.svelte +2 -2
- package/package/components/flows/previousResults.js +8 -2
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/graph/FlowGraphV2.svelte +16 -2
- package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
- package/package/components/graph/graphBuilder.js +1 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +2 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +2 -0
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
- package/package/components/icons/CSharpIcon.svelte +14 -0
- package/package/components/icons/CSharpIcon.svelte.d.ts +25 -0
- package/package/components/icons/GitIcon.svelte +5 -2
- package/package/components/icons/XeroIcon.svelte +24 -0
- package/package/components/icons/XeroIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +3 -1
- package/package/components/icons/index.js +4 -2
- package/package/components/instanceSettings.d.ts +3 -1
- package/package/components/instanceSettings.js +77 -69
- package/package/components/meltComponents/Popover.svelte +82 -0
- package/package/components/meltComponents/Popover.svelte.d.ts +21 -0
- package/package/components/propertyPicker/PropPicker.svelte +5 -3
- package/package/components/runs/JobLoader.svelte +5 -2
- package/package/components/runs/JobPreview.svelte +5 -5
- package/package/components/runs/RunRow.svelte +3 -4
- package/package/components/runs/RunsFilter.svelte +4 -4
- package/package/components/schema/EditableSchemaDrawer.svelte +4 -4
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -0
- package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
- package/package/components/scriptEditor/LogPanel.svelte +176 -164
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
- package/package/components/search/GlobalSearchModal.svelte +3 -3
- package/package/components/sidebar/CriticalAlertModal.svelte +155 -9
- package/package/components/sidebar/CriticalAlertModalInner.svelte +65 -212
- package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +2 -4
- package/package/components/sidebar/CriticalAlertTable.svelte +142 -0
- package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +25 -0
- package/package/components/sidebar/OperatorMenu.svelte +30 -8
- package/package/components/sidebar/SideBarNotification.svelte +3 -6
- package/package/components/sidebar/SidebarContent.svelte +5 -5
- package/package/components/sidebar/WorkspaceMenu.svelte +9 -5
- package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +1 -0
- package/package/components/sidebar/changelogs.js +82 -17
- package/package/components/splitPanes/SplitPanesOrColumnOnMobile.svelte +21 -21
- package/package/components/table/AutoDataTable.svelte +1 -1
- package/package/components/table/Cell.svelte +5 -3
- package/package/components/table/Cell.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +65 -58
- package/package/components/table/DataTable.svelte.d.ts +2 -0
- package/package/components/table/Head.svelte +1 -1
- package/package/components/table/Row.svelte +3 -1
- package/package/components/table/Row.svelte.d.ts +1 -0
- package/package/components/toast.js +3 -1
- package/package/components/triggers/CaptureButton.svelte +77 -0
- package/package/components/triggers/CaptureButton.svelte.d.ts +16 -0
- package/package/components/triggers/CaptureIcon.svelte +17 -0
- package/package/components/triggers/CaptureIcon.svelte.d.ts +23 -0
- package/package/components/triggers/CaptureSection.svelte +76 -0
- package/package/components/triggers/CaptureSection.svelte.d.ts +42 -0
- package/package/components/triggers/CaptureTable.svelte +224 -0
- package/package/components/triggers/CaptureTable.svelte.d.ts +43 -0
- package/package/components/triggers/CaptureWrapper.svelte +237 -0
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +35 -0
- package/package/components/triggers/KafkaTriggerEditor.svelte +2 -2
- package/package/components/triggers/KafkaTriggerEditor.svelte.d.ts +2 -2
- package/package/components/triggers/KafkaTriggerEditorInner.svelte +47 -119
- package/package/components/triggers/KafkaTriggerEditorInner.svelte.d.ts +2 -2
- package/package/components/triggers/KafkaTriggersConfigSection.svelte +215 -0
- package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +36 -0
- package/package/components/triggers/KafkaTriggersPanel.svelte +73 -45
- package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +6 -0
- package/package/components/triggers/RouteEditor.svelte +2 -2
- package/package/components/triggers/RouteEditor.svelte.d.ts +2 -2
- package/package/components/triggers/RouteEditorConfigSection.svelte +162 -0
- package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +43 -0
- package/package/components/triggers/RouteEditorInner.svelte +98 -163
- package/package/components/triggers/RouteEditorInner.svelte.d.ts +2 -2
- package/package/components/triggers/RoutesPanel.svelte +69 -54
- package/package/components/triggers/RoutesPanel.svelte.d.ts +5 -0
- package/package/components/triggers/ScheduledPollPanel.svelte +5 -9
- package/package/components/triggers/TriggersEditor.svelte +119 -89
- package/package/components/triggers/TriggersEditor.svelte.d.ts +7 -0
- package/package/components/triggers/TriggersEditorSection.svelte +109 -0
- package/package/components/triggers/TriggersEditorSection.svelte.d.ts +29 -0
- package/package/components/triggers/TriggersWrapper.svelte +60 -0
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +21 -0
- package/package/components/triggers/WebhooksConfigSection.svelte +382 -0
- package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +39 -0
- package/package/components/triggers/WebhooksPanel.svelte +32 -331
- package/package/components/triggers/WebhooksPanel.svelte.d.ts +7 -1
- package/package/components/triggers/WebsocketEditorConfigSection.svelte +176 -0
- package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +37 -0
- package/package/components/triggers/WebsocketTriggerEditor.svelte +2 -2
- package/package/components/triggers/WebsocketTriggerEditor.svelte.d.ts +2 -2
- package/package/components/triggers/WebsocketTriggerEditorInner.svelte +29 -150
- package/package/components/triggers/WebsocketTriggerEditorInner.svelte.d.ts +2 -2
- package/package/components/triggers/WebsocketTriggersPanel.svelte +70 -45
- package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +6 -0
- package/package/components/triggers.d.ts +6 -2
- package/package/components/triggers.js +16 -0
- package/package/components/wizards/AgGridWizard.svelte +4 -4
- package/package/editorUtils.d.ts +2 -0
- package/package/editorUtils.js +6 -3
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +17 -8
- package/package/gen/schemas.gen.js +17 -8
- package/package/gen/services.gen.d.ts +55 -5
- package/package/gen/services.gen.js +108 -5
- package/package/gen/types.gen.d.ts +180 -13
- package/package/hubPaths.json +6 -3
- package/package/infer.js +9 -0
- package/package/script_helpers.d.ts +5 -0
- package/package/script_helpers.js +68 -8
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +5 -1
- package/package/stores.d.ts +1 -0
- package/package/utils.d.ts +3 -1
- package/package/utils.js +20 -4
- package/package.json +11 -8
- package/package/components/flows/content/CapturePayload.svelte +0 -114
- package/package/components/flows/content/CapturePayload.svelte.d.ts +0 -17
|
@@ -0,0 +1,774 @@
|
|
|
1
|
+
<script>import { isCloudHosted } from '../cloud';
|
|
2
|
+
import { enterpriseLicense, isCriticalAlertsUIOpen } from '../stores';
|
|
3
|
+
import { AlertCircle, AlertTriangle, BadgeCheck, BadgeX, Info, Plus, Slack, X } from 'lucide-svelte';
|
|
4
|
+
import Tooltip from './Tooltip.svelte';
|
|
5
|
+
import ObjectStoreConfigSettings from './ObjectStoreConfigSettings.svelte';
|
|
6
|
+
import { sendUserToast } from '../toast';
|
|
7
|
+
import ConfirmButton from './ConfirmButton.svelte';
|
|
8
|
+
import { IndexSearchService, SettingService } from '../gen';
|
|
9
|
+
import { Button, SecondsInput, Skeleton } from './common';
|
|
10
|
+
import Password from './Password.svelte';
|
|
11
|
+
import { classNames } from '../utils';
|
|
12
|
+
import Popover from './Popover.svelte';
|
|
13
|
+
import Toggle from './Toggle.svelte';
|
|
14
|
+
import { createEventDispatcher } from 'svelte';
|
|
15
|
+
import { fade } from 'svelte/transition';
|
|
16
|
+
import { base } from '../base';
|
|
17
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
18
|
+
export let setting;
|
|
19
|
+
export let version;
|
|
20
|
+
export let values;
|
|
21
|
+
export let loading = true;
|
|
22
|
+
const dispatch = createEventDispatcher();
|
|
23
|
+
let latestKeyRenewalAttempt;
|
|
24
|
+
function showSetting(setting, values) {
|
|
25
|
+
if (setting == 'dev_instance') {
|
|
26
|
+
if (values['license_key'] == undefined) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
let licenseKeyChanged = false;
|
|
33
|
+
let renewing = false;
|
|
34
|
+
let opening = false;
|
|
35
|
+
async function reloadKeyrenewalAttemptInfo() {
|
|
36
|
+
latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt();
|
|
37
|
+
}
|
|
38
|
+
if (setting.key == 'license_key') {
|
|
39
|
+
reloadKeyrenewalAttemptInfo();
|
|
40
|
+
}
|
|
41
|
+
export async function renewLicenseKey() {
|
|
42
|
+
renewing = true;
|
|
43
|
+
try {
|
|
44
|
+
await SettingService.renewLicenseKey({
|
|
45
|
+
licenseKey: $values['license_key'] || undefined
|
|
46
|
+
});
|
|
47
|
+
sendUserToast('Key renewal successful');
|
|
48
|
+
reloadKeyrenewalAttemptInfo();
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt();
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
renewing = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export async function openCustomerPortal() {
|
|
59
|
+
opening = true;
|
|
60
|
+
try {
|
|
61
|
+
const url = await SettingService.createCustomerPortalSession({
|
|
62
|
+
licenseKey: $values['license_key'] || undefined
|
|
63
|
+
});
|
|
64
|
+
window.open(url, '_blank');
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
opening = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function parseLicenseKey(key) {
|
|
71
|
+
let splitted = key.split('.');
|
|
72
|
+
if (splitted.length >= 3) {
|
|
73
|
+
try {
|
|
74
|
+
let i = parseInt(splitted[1]);
|
|
75
|
+
let date = new Date(i * 1000);
|
|
76
|
+
const stringDate = date.toLocaleDateString();
|
|
77
|
+
if (stringDate !== 'Invalid Date') {
|
|
78
|
+
return {
|
|
79
|
+
valid: date.getTime() > Date.now(),
|
|
80
|
+
expiration: date.toLocaleDateString()
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch { }
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
valid: false
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
{#if (!setting.cloudonly || isCloudHosted()) && showSetting(setting.key, $values) && !(setting.hiddenIfNull && $values[setting.key] == null)}
|
|
93
|
+
{#if setting.ee_only != undefined && !$enterpriseLicense}
|
|
94
|
+
<div class="flex text-xs items-center gap-1 text-yellow-500 whitespace-nowrap">
|
|
95
|
+
<AlertTriangle size={16} />
|
|
96
|
+
EE only {#if setting.ee_only != ''}<Tooltip>{setting.ee_only}</Tooltip>{/if}
|
|
97
|
+
</div>
|
|
98
|
+
{/if}
|
|
99
|
+
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
100
|
+
<label class="block pb-2">
|
|
101
|
+
<span class="text-primary font-semibold text-sm">{setting.label}</span>
|
|
102
|
+
{#if setting.description}
|
|
103
|
+
<span class="text-secondary text-xs">
|
|
104
|
+
{@html setting.description}
|
|
105
|
+
</span>
|
|
106
|
+
{/if}
|
|
107
|
+
{#if setting.tooltip}
|
|
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>
|
|
137
|
+
{/if}
|
|
138
|
+
{:else if setting.fieldType == 'textarea'}
|
|
139
|
+
<textarea
|
|
140
|
+
disabled={!$enterpriseLicense}
|
|
141
|
+
rows="2"
|
|
142
|
+
placeholder={setting.placeholder}
|
|
143
|
+
bind:value={$values[setting.key]}
|
|
144
|
+
/>
|
|
145
|
+
{#if setting.key == 'saml_metadata'}
|
|
146
|
+
<div class="flex mt-2">
|
|
147
|
+
<Button
|
|
148
|
+
disabled={!$enterpriseLicense}
|
|
149
|
+
on:click={async (e) => {
|
|
150
|
+
const res = await SettingService.testMetadata({
|
|
151
|
+
requestBody: $values[setting.key]
|
|
152
|
+
})
|
|
153
|
+
sendUserToast(`Metadata valid, see console for full content`)
|
|
154
|
+
console.log(`Metadata content:`, res)
|
|
155
|
+
}}>Test content/url</Button
|
|
156
|
+
>
|
|
157
|
+
</div>
|
|
158
|
+
{/if}
|
|
159
|
+
{:else if setting.fieldType == 'codearea'}
|
|
160
|
+
<SimpleEditor
|
|
161
|
+
autoHeight
|
|
162
|
+
class="editor"
|
|
163
|
+
lang={setting.codeAreaLang ?? 'txt'}
|
|
164
|
+
bind:code={$values[setting.key]}
|
|
165
|
+
fixedOverflowWidgets={false}
|
|
166
|
+
/>
|
|
167
|
+
{:else if setting.fieldType == 'license_key'}
|
|
168
|
+
{@const { valid, expiration } = parseLicenseKey($values[setting.key] ?? '')}
|
|
169
|
+
<div class="flex gap-2">
|
|
170
|
+
<Password
|
|
171
|
+
small
|
|
172
|
+
placeholder={setting.placeholder}
|
|
173
|
+
on:keydown={() => {
|
|
174
|
+
licenseKeyChanged = true
|
|
175
|
+
}}
|
|
176
|
+
bind:password={$values[setting.key]}
|
|
177
|
+
/>
|
|
178
|
+
<Button
|
|
179
|
+
variant={$values[setting.key] ? 'contained' : 'border'}
|
|
180
|
+
size="xs"
|
|
181
|
+
on:click={async () => {
|
|
182
|
+
await SettingService.testLicenseKey({
|
|
183
|
+
requestBody: { license_key: $values[setting.key] }
|
|
184
|
+
})
|
|
185
|
+
sendUserToast('Valid key')
|
|
186
|
+
}}
|
|
187
|
+
>
|
|
188
|
+
Test key
|
|
189
|
+
</Button>
|
|
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>
|
|
265
|
+
</div>
|
|
266
|
+
{/if}
|
|
267
|
+
{#if licenseKeyChanged && !$enterpriseLicense}
|
|
268
|
+
{#if version.startsWith('CE')}
|
|
269
|
+
<div class="text-red-400"
|
|
270
|
+
>License key is set but image used is the Community Edition {version}. Switch image
|
|
271
|
+
to EE.</div
|
|
272
|
+
>
|
|
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
|
+
</div>
|
|
285
|
+
{/if}
|
|
286
|
+
</div>
|
|
287
|
+
{:else if setting.fieldType == 'email'}
|
|
288
|
+
<input type="email" placeholder={setting.placeholder} bind:value={$values[setting.key]} />
|
|
289
|
+
{:else if setting.key == 'critical_alert_mute_ui'}
|
|
290
|
+
<div class="flex flex-col gap-y-2 my-2 py-2">
|
|
291
|
+
<Toggle
|
|
292
|
+
disabled={!$enterpriseLicense}
|
|
293
|
+
bind:checked={$values[setting.key]}
|
|
294
|
+
options={{ right: setting.description }}
|
|
295
|
+
/>
|
|
296
|
+
<div class="flex flex-row">
|
|
297
|
+
<Button
|
|
298
|
+
variant="border"
|
|
299
|
+
color="light"
|
|
300
|
+
disabled={!$enterpriseLicense}
|
|
301
|
+
size="xs"
|
|
302
|
+
on:click={() => {
|
|
303
|
+
isCriticalAlertsUIOpen.set(true)
|
|
304
|
+
dispatch('closeDrawer')
|
|
305
|
+
}}
|
|
306
|
+
>
|
|
307
|
+
Show critical alerts
|
|
308
|
+
</Button>
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
{:else if setting.fieldType == 'critical_error_channels'}
|
|
312
|
+
<div class="w-full flex gap-x-16 flex-wrap">
|
|
313
|
+
<div class="w-full max-w-lg">
|
|
314
|
+
{#if $enterpriseLicense && Array.isArray($values[setting.key])}
|
|
315
|
+
{#each $values[setting.key] ?? [] as v, i}
|
|
316
|
+
<div class="flex w-full max-w-lg mt-1 gap-2 items-center">
|
|
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'}
|
|
327
|
+
>
|
|
328
|
+
<option value="email">Email</option>
|
|
329
|
+
<option value="slack_channel">Slack</option>
|
|
330
|
+
</select>
|
|
331
|
+
{#if v && 'slack_channel' in v}
|
|
332
|
+
<input
|
|
333
|
+
type="text"
|
|
334
|
+
placeholder="Slack channel"
|
|
335
|
+
on:input={(e) => {
|
|
336
|
+
if (e.target?.['value']) {
|
|
337
|
+
$values[setting.key][i] = {
|
|
338
|
+
slack_channel: e.target['value']
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}}
|
|
342
|
+
value={v?.slack_channel ?? ''}
|
|
343
|
+
/>
|
|
344
|
+
{:else}
|
|
345
|
+
<input
|
|
346
|
+
type="email"
|
|
347
|
+
placeholder="Email address"
|
|
348
|
+
on:input={(e) => {
|
|
349
|
+
if (e.target?.['value']) {
|
|
350
|
+
$values[setting.key][i] = {
|
|
351
|
+
email: e.target['value']
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}}
|
|
355
|
+
value={v?.email ?? ''}
|
|
356
|
+
/>
|
|
357
|
+
{/if}
|
|
358
|
+
<button
|
|
359
|
+
transition:fade|local={{ duration: 100 }}
|
|
360
|
+
class="rounded-full p-1 bg-surface-secondary duration-200 hover:bg-surface-hover"
|
|
361
|
+
aria-label="Clear"
|
|
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}
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
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">
|
|
392
|
+
<Button
|
|
393
|
+
disabled={!$enterpriseLicense}
|
|
394
|
+
variant="border"
|
|
395
|
+
color="light"
|
|
396
|
+
size="md"
|
|
397
|
+
on:click={async () => {
|
|
398
|
+
try {
|
|
399
|
+
await SettingService.testCriticalChannels({
|
|
400
|
+
requestBody: $values[setting.key]
|
|
401
|
+
})
|
|
402
|
+
sendUserToast('Test message sent successfully to critical channels', false)
|
|
403
|
+
} catch (error) {
|
|
404
|
+
sendUserToast('Failed to send test message: ' + error.message, true)
|
|
405
|
+
}
|
|
406
|
+
}}
|
|
407
|
+
>
|
|
408
|
+
Test channels
|
|
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 }}
|
|
435
|
+
disabled={!$enterpriseLicense}
|
|
436
|
+
>
|
|
437
|
+
Connect to Slack
|
|
438
|
+
</Button>
|
|
439
|
+
{/if}
|
|
440
|
+
</div>
|
|
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
|
|
453
|
+
disabled={!$enterpriseLicense}
|
|
454
|
+
type="number"
|
|
455
|
+
id="writer_memory_budget"
|
|
456
|
+
placeholder="300"
|
|
457
|
+
on:input={(e) => {
|
|
458
|
+
if (e.target instanceof HTMLInputElement) {
|
|
459
|
+
if (e.target.valueAsNumber) {
|
|
460
|
+
$values[setting.key].writer_memory_budget =
|
|
461
|
+
e.target.valueAsNumber * (1024 * 1024)
|
|
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
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}}
|
|
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
|
+
>
|
|
551
|
+
<input
|
|
552
|
+
disabled={!$enterpriseLicense}
|
|
553
|
+
type="number"
|
|
554
|
+
id="refresh_log_index_period"
|
|
555
|
+
placeholder="300"
|
|
556
|
+
bind:value={$values[setting.key].refresh_log_index_period}
|
|
557
|
+
/>
|
|
558
|
+
</div>
|
|
559
|
+
<h3>Reset Index</h3>
|
|
560
|
+
This buttons will clear the whole index, and the service will start reindexing from scratch.
|
|
561
|
+
Full text search might be down during this time.
|
|
562
|
+
<div>
|
|
563
|
+
<ConfirmButton
|
|
564
|
+
on:click={async () => {
|
|
565
|
+
let r = await IndexSearchService.clearIndex({
|
|
566
|
+
idxName: 'JobIndex'
|
|
567
|
+
})
|
|
568
|
+
console.log('asasd')
|
|
569
|
+
sendUserToast(r)
|
|
570
|
+
}}>Clear <b>Jobs</b> Index</ConfirmButton
|
|
571
|
+
>
|
|
572
|
+
<ConfirmButton
|
|
573
|
+
on:click={async () => {
|
|
574
|
+
let r = await IndexSearchService.clearIndex({
|
|
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
|
+
}
|
|
645
|
+
}}
|
|
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
|
+
>
|
|
683
|
+
<input
|
|
684
|
+
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
|
+
>
|
|
695
|
+
<input
|
|
696
|
+
disabled={!$enterpriseLicense}
|
|
697
|
+
type="text"
|
|
698
|
+
id="OTEL_EXPORTER_OTLP_HEADERS"
|
|
699
|
+
placeholder="Authorization=Bearer my-secret-token,Env=production"
|
|
700
|
+
bind:value={$values[setting.key].otel_exporter_otlp_headers}
|
|
701
|
+
/>
|
|
702
|
+
</div>
|
|
703
|
+
<div>
|
|
704
|
+
<label for="OTEL_EXPORTER_OTLP_PROTOCOL" class="block text-sm font-medium"
|
|
705
|
+
>Protocol</label
|
|
706
|
+
>
|
|
707
|
+
gRPC
|
|
708
|
+
</div>
|
|
709
|
+
<!-- <div>
|
|
710
|
+
<label for="OTEL_EXPORTER_OTLP_PROTOCOL" class="block text-sm font-medium"
|
|
711
|
+
>Protocol<span class="text-2xs text-tertiary ml-4"
|
|
712
|
+
>grpc, http/protobuf, http/json</span
|
|
713
|
+
></label
|
|
714
|
+
>
|
|
715
|
+
<input
|
|
716
|
+
type="text"
|
|
717
|
+
id="OTEL_EXPORTER_OTLP_PROTOCOL"
|
|
718
|
+
placeholder="grpc"
|
|
719
|
+
bind:value={$values[setting.key].otel_exporter_otlp_protocol}
|
|
720
|
+
/>
|
|
721
|
+
</div>
|
|
722
|
+
<div>
|
|
723
|
+
<label for="OTEL_EXPORTER_OTLP_COMPRESSION" class="block text-sm font-medium"
|
|
724
|
+
>Compression <span class="text-2xs text-tertiary ml-4">none, gzip</span></label
|
|
725
|
+
>
|
|
726
|
+
<input
|
|
727
|
+
type="text"
|
|
728
|
+
id="OTEL_EXPORTER_OTLP_COMPRESSION"
|
|
729
|
+
placeholder="none"
|
|
730
|
+
bind:value={$values[setting.key].otel_exporter_otlp_compression}
|
|
731
|
+
/>
|
|
732
|
+
</div> -->
|
|
733
|
+
{/if}
|
|
734
|
+
</div>
|
|
735
|
+
{:else if setting.fieldType == 'object_store_config'}
|
|
736
|
+
<ObjectStoreConfigSettings bind:bucket_config={$values[setting.key]} />
|
|
737
|
+
<div class="mb-6" />
|
|
738
|
+
{:else if setting.fieldType == 'number'}
|
|
739
|
+
<input type="number" placeholder={setting.placeholder} bind:value={$values[setting.key]} />
|
|
740
|
+
{:else if setting.fieldType == 'password'}
|
|
741
|
+
<input
|
|
742
|
+
autocomplete="new-password"
|
|
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]}
|
|
752
|
+
/>
|
|
753
|
+
</div>
|
|
754
|
+
{:else if setting.fieldType == 'seconds'}
|
|
755
|
+
<div>
|
|
756
|
+
<SecondsInput
|
|
757
|
+
max={setting.ee_only != undefined && !$enterpriseLicense
|
|
758
|
+
? 60 * 60 * 24 * 30
|
|
759
|
+
: undefined}
|
|
760
|
+
bind:seconds={$values[setting.key]}
|
|
761
|
+
/>
|
|
762
|
+
</div>
|
|
763
|
+
{/if}
|
|
764
|
+
|
|
765
|
+
{#if hasError}
|
|
766
|
+
<span class="text-red-500 dark:text-red-400 text-sm">
|
|
767
|
+
{setting.error ?? ''}
|
|
768
|
+
</span>
|
|
769
|
+
{/if}
|
|
770
|
+
{:else}
|
|
771
|
+
<input disabled placeholder="Loading..." />
|
|
772
|
+
{/if}
|
|
773
|
+
</label>
|
|
774
|
+
{/if}
|