windmill-components 1.434.1 → 1.444.1

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.
Files changed (285) hide show
  1. package/package/components/ArgInput.svelte +12 -16
  2. package/package/components/ArgInput.svelte.d.ts +1 -0
  3. package/package/components/AssignableTags.svelte +3 -1
  4. package/package/components/AssignableTags.svelte.d.ts +1 -0
  5. package/package/components/AuthSettings.svelte +248 -0
  6. package/package/components/AuthSettings.svelte.d.ts +19 -0
  7. package/package/components/AutoscalingConfigEditor.svelte +2 -2
  8. package/package/components/CronInput.svelte +2 -2
  9. package/package/components/DeployWorkspace.svelte +1 -1
  10. package/package/components/Description.svelte +9 -0
  11. package/package/components/Description.svelte.d.ts +18 -0
  12. package/package/components/Dev.svelte +18 -3
  13. package/package/components/DisplayResult.svelte +7 -4
  14. package/package/components/DisplayResult.svelte.d.ts +1 -0
  15. package/package/components/DropdownV2.svelte +2 -1
  16. package/package/components/DropdownV2.svelte.d.ts +1 -0
  17. package/package/components/EditableSchemaForm.svelte +2 -2
  18. package/package/components/Editor.svelte +9 -6
  19. package/package/components/Editor.svelte.d.ts +4 -2
  20. package/package/components/EditorBar.svelte +51 -6
  21. package/package/components/ErrorOrRecoveryHandler.svelte +4 -3
  22. package/package/components/ExecutionDuration.svelte +2 -1
  23. package/package/components/FieldHeader.svelte +9 -1
  24. package/package/components/FieldHeader.svelte.d.ts +1 -0
  25. package/package/components/FlowBuilder.svelte +16 -3
  26. package/package/components/FlowGraphViewer.svelte +2 -0
  27. package/package/components/FlowPreviewContent.svelte +6 -15
  28. package/package/components/FlowStatusViewerInner.svelte +14 -10
  29. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InputTransformSchemaForm.svelte +1 -1
  32. package/package/components/InstanceSetting.svelte +774 -0
  33. package/package/components/InstanceSetting.svelte.d.ts +27 -0
  34. package/package/components/InstanceSettings.svelte +68 -1005
  35. package/package/components/InstanceSettings.svelte.d.ts +0 -4
  36. package/package/components/Label.svelte +16 -6
  37. package/package/components/Label.svelte.d.ts +3 -0
  38. package/package/components/Login.svelte +17 -9
  39. package/package/components/OAuthSetting.svelte +4 -3
  40. package/package/components/OauthExtraParams.svelte +1 -1
  41. package/package/components/OauthScopes.svelte +2 -2
  42. package/package/components/ObjectStoreConfigSettings.svelte +141 -128
  43. package/package/components/QueueMetricsDrawer.svelte +5 -5
  44. package/package/components/ResourceEditor.svelte +4 -0
  45. package/package/components/ResourceEditor.svelte.d.ts +1 -0
  46. package/package/components/ResourceEditorDrawer.svelte +15 -3
  47. package/package/components/ResourceEditorDrawer.svelte.d.ts +2 -2
  48. package/package/components/ResourcePicker.svelte +16 -5
  49. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  50. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  51. package/package/components/RunPageSchedules.svelte +15 -10
  52. package/package/components/SavedInputs.svelte +1 -1
  53. package/package/components/ScheduleEditorInner.svelte +58 -27
  54. package/package/components/SchemaForm.svelte +7 -5
  55. package/package/components/SchemaForm.svelte.d.ts +1 -0
  56. package/package/components/ScriptBuilder.svelte +58 -5
  57. package/package/components/ScriptEditor.svelte +78 -40
  58. package/package/components/ScriptEditor.svelte.d.ts +17 -2
  59. package/package/components/ScriptPicker.svelte +41 -34
  60. package/package/components/ScriptPicker.svelte.d.ts +1 -0
  61. package/package/components/ScriptVersionHistory.svelte +1 -1
  62. package/package/components/Section.svelte +38 -35
  63. package/package/components/Section.svelte.d.ts +2 -0
  64. package/package/components/ServiceLogsInner.svelte +1 -1
  65. package/package/components/SimpleEditor.svelte +2 -0
  66. package/package/components/Subsection.svelte +52 -0
  67. package/package/components/Subsection.svelte.d.ts +27 -0
  68. package/package/components/SuperadminSettings.svelte +23 -13
  69. package/package/components/TemplateEditor.svelte +4 -3
  70. package/package/components/TestConnection.svelte +5 -0
  71. package/package/components/TestJobLoader.svelte +2 -1
  72. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  73. package/package/components/Toggle.svelte +2 -4
  74. package/package/components/UserSettings.svelte +1 -1
  75. package/package/components/WorkerGroup.svelte +4 -4
  76. package/package/components/WorkerTagPicker.svelte +4 -2
  77. package/package/components/WorkerTagPicker.svelte.d.ts +1 -0
  78. package/package/components/WorkerTagSelect.svelte +2 -0
  79. package/package/components/WorkerTagSelect.svelte.d.ts +1 -0
  80. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
  81. package/package/components/apps/components/display/dbtable/utils.js +26 -1
  82. package/package/components/apps/components/helpers/RunnableComponent.svelte +8 -2
  83. package/package/components/apps/components/inputs/AppDateInput.svelte +7 -1
  84. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -1
  85. package/package/components/apps/editor/AppEditor.svelte +5 -34
  86. package/package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  87. package/package/components/apps/editor/AppEditorBottomPanel.svelte +4 -7
  88. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +1 -3
  89. package/package/components/apps/editor/AppEditorHeader.svelte +148 -58
  90. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  92. package/package/components/apps/editor/RunnableJobPanel.svelte +6 -2
  93. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +1 -0
  94. package/package/components/apps/editor/appUtils.d.ts +1 -0
  95. package/package/components/apps/editor/appUtils.js +17 -0
  96. package/package/components/apps/editor/component/components.d.ts +82 -81
  97. package/package/components/apps/editor/component/components.js +4 -3
  98. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  99. package/package/components/apps/editor/componentsPanel/GroupList.svelte +12 -2
  100. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -1
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  102. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -56
  103. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  104. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +3 -2
  105. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
  106. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +16 -9
  107. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
  108. package/package/components/apps/inputType.d.ts +2 -2
  109. package/package/components/apps/types.d.ts +2 -0
  110. package/package/components/common/alert/ConnectionIndicator.svelte +30 -0
  111. package/package/components/common/alert/ConnectionIndicator.svelte.d.ts +20 -0
  112. package/package/components/common/alert/Notification.svelte +15 -0
  113. package/package/components/common/alert/Notification.svelte.d.ts +17 -0
  114. package/package/components/common/button/AnimatedButton.svelte +1 -1
  115. package/package/components/common/button/RefreshButton.svelte +30 -0
  116. package/package/components/common/button/RefreshButton.svelte.d.ts +18 -0
  117. package/package/components/common/fileDownload/FileDownload.svelte +4 -3
  118. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +1 -0
  119. package/package/components/common/fileUpload/FileUpload.svelte +3 -3
  120. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  121. package/package/components/common/layout/List.svelte +35 -0
  122. package/package/components/common/layout/List.svelte.d.ts +21 -0
  123. package/package/components/common/layout/ListElement.svelte +3 -0
  124. package/package/components/common/layout/ListElement.svelte.d.ts +27 -0
  125. package/package/components/common/menu/MenuV2.svelte +3 -2
  126. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  127. package/package/components/common/modal/Modal.svelte +6 -4
  128. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  129. package/package/components/common/modal/Modal2.svelte +101 -0
  130. package/package/components/common/modal/Modal2.svelte.d.ts +28 -0
  131. package/package/components/common/popup/Popup.svelte +5 -1
  132. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  133. package/package/components/common/toggleButton-v2/ToggleButton.svelte +1 -1
  134. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  135. package/package/components/details/ClipboardPanel.svelte +12 -2
  136. package/package/components/details/ClipboardPanel.svelte.d.ts +2 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +24 -0
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +19 -0
  139. package/package/components/details/DetailPageLayout.svelte +3 -1
  140. package/package/components/details/EmailTriggerConfigSection.svelte +119 -0
  141. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +38 -0
  142. package/package/components/details/EmailTriggerPanel.svelte +27 -74
  143. package/package/components/details/EmailTriggerPanel.svelte.d.ts +7 -1
  144. package/package/components/flows/FlowEditor.svelte +1 -1
  145. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  146. package/package/components/flows/FlowHistoryInner.svelte +1 -1
  147. package/package/components/flows/content/BranchPredicateEditor.svelte +1 -1
  148. package/package/components/flows/content/FlowEditorPanel.svelte +30 -1
  149. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -0
  150. package/package/components/flows/content/FlowInput.svelte +2 -15
  151. package/package/components/flows/content/FlowInputs.svelte +1 -1
  152. package/package/components/flows/content/FlowInputsQuick.svelte +2 -2
  153. package/package/components/flows/content/FlowModuleComponent.svelte +9 -5
  154. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  155. package/package/components/flows/content/FlowModuleHeader.svelte +4 -1
  156. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  157. package/package/components/flows/content/FlowPathViewer.svelte +3 -1
  158. package/package/components/flows/content/FlowRetries.svelte +32 -5
  159. package/package/components/flows/content/FlowSettings.svelte +56 -48
  160. package/package/components/flows/flowStateUtils.d.ts +10 -1
  161. package/package/components/flows/flowStateUtils.js +23 -0
  162. package/package/components/flows/map/FlowModuleSchemaMap.svelte +9 -19
  163. package/package/components/flows/map/InsertModuleButton.svelte +3 -3
  164. package/package/components/flows/map/VirtualItem.svelte +29 -1
  165. package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -0
  166. package/package/components/flows/pickers/TopLevelNode.svelte +2 -2
  167. package/package/components/flows/previousResults.js +8 -2
  168. package/package/components/flows/types.d.ts +1 -0
  169. package/package/components/graph/FlowGraphV2.svelte +5 -1
  170. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  171. package/package/components/graph/renderers/nodes/InputNode.svelte +2 -0
  172. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +2 -0
  173. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
  174. package/package/components/icons/CSharpIcon.svelte +14 -0
  175. package/package/components/icons/CSharpIcon.svelte.d.ts +25 -0
  176. package/package/components/icons/GitIcon.svelte +5 -2
  177. package/package/components/icons/XeroIcon.svelte +24 -0
  178. package/package/components/icons/XeroIcon.svelte.d.ts +17 -0
  179. package/package/components/icons/index.d.ts +3 -1
  180. package/package/components/icons/index.js +4 -2
  181. package/package/components/instanceSettings.d.ts +3 -1
  182. package/package/components/instanceSettings.js +77 -69
  183. package/package/components/meltComponents/Popover.svelte +82 -0
  184. package/package/components/meltComponents/Popover.svelte.d.ts +21 -0
  185. package/package/components/propertyPicker/PropPicker.svelte +5 -3
  186. package/package/components/runs/JobLoader.svelte +5 -2
  187. package/package/components/runs/JobPreview.svelte +5 -5
  188. package/package/components/runs/RunRow.svelte +3 -4
  189. package/package/components/runs/RunsFilter.svelte +4 -4
  190. package/package/components/schema/EditableSchemaDrawer.svelte +4 -4
  191. package/package/components/schema/PropertyEditor.svelte +1 -1
  192. package/package/components/schema/SchemaFormDND.svelte +2 -0
  193. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  194. package/package/components/scriptEditor/LogPanel.svelte +176 -164
  195. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  196. package/package/components/search/GlobalSearchModal.svelte +3 -3
  197. package/package/components/sidebar/CriticalAlertModal.svelte +155 -9
  198. package/package/components/sidebar/CriticalAlertModalInner.svelte +65 -212
  199. package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +2 -4
  200. package/package/components/sidebar/CriticalAlertTable.svelte +142 -0
  201. package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +25 -0
  202. package/package/components/sidebar/OperatorMenu.svelte +30 -8
  203. package/package/components/sidebar/SideBarNotification.svelte +3 -6
  204. package/package/components/sidebar/SidebarContent.svelte +5 -5
  205. package/package/components/sidebar/WorkspaceMenu.svelte +9 -5
  206. package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +1 -0
  207. package/package/components/sidebar/changelogs.js +82 -17
  208. package/package/components/splitPanes/SplitPanesOrColumnOnMobile.svelte +21 -21
  209. package/package/components/table/AutoDataTable.svelte +1 -1
  210. package/package/components/table/Cell.svelte +5 -3
  211. package/package/components/table/Cell.svelte.d.ts +1 -0
  212. package/package/components/table/DataTable.svelte +65 -58
  213. package/package/components/table/DataTable.svelte.d.ts +2 -0
  214. package/package/components/table/Head.svelte +1 -1
  215. package/package/components/table/Row.svelte +3 -1
  216. package/package/components/table/Row.svelte.d.ts +1 -0
  217. package/package/components/toast.js +3 -1
  218. package/package/components/triggers/CaptureButton.svelte +77 -0
  219. package/package/components/triggers/CaptureButton.svelte.d.ts +16 -0
  220. package/package/components/triggers/CaptureIcon.svelte +17 -0
  221. package/package/components/triggers/CaptureIcon.svelte.d.ts +23 -0
  222. package/package/components/triggers/CaptureSection.svelte +76 -0
  223. package/package/components/triggers/CaptureSection.svelte.d.ts +42 -0
  224. package/package/components/triggers/CaptureTable.svelte +224 -0
  225. package/package/components/triggers/CaptureTable.svelte.d.ts +43 -0
  226. package/package/components/triggers/CaptureWrapper.svelte +237 -0
  227. package/package/components/triggers/CaptureWrapper.svelte.d.ts +35 -0
  228. package/package/components/triggers/KafkaTriggerEditor.svelte +2 -2
  229. package/package/components/triggers/KafkaTriggerEditor.svelte.d.ts +2 -2
  230. package/package/components/triggers/KafkaTriggerEditorInner.svelte +47 -119
  231. package/package/components/triggers/KafkaTriggerEditorInner.svelte.d.ts +2 -2
  232. package/package/components/triggers/KafkaTriggersConfigSection.svelte +215 -0
  233. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +36 -0
  234. package/package/components/triggers/KafkaTriggersPanel.svelte +73 -45
  235. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +6 -0
  236. package/package/components/triggers/RouteEditor.svelte +2 -2
  237. package/package/components/triggers/RouteEditor.svelte.d.ts +2 -2
  238. package/package/components/triggers/RouteEditorConfigSection.svelte +162 -0
  239. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +43 -0
  240. package/package/components/triggers/RouteEditorInner.svelte +98 -163
  241. package/package/components/triggers/RouteEditorInner.svelte.d.ts +2 -2
  242. package/package/components/triggers/RoutesPanel.svelte +69 -54
  243. package/package/components/triggers/RoutesPanel.svelte.d.ts +5 -0
  244. package/package/components/triggers/ScheduledPollPanel.svelte +5 -9
  245. package/package/components/triggers/TriggersEditor.svelte +119 -89
  246. package/package/components/triggers/TriggersEditor.svelte.d.ts +7 -0
  247. package/package/components/triggers/TriggersEditorSection.svelte +109 -0
  248. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +29 -0
  249. package/package/components/triggers/TriggersWrapper.svelte +60 -0
  250. package/package/components/triggers/TriggersWrapper.svelte.d.ts +21 -0
  251. package/package/components/triggers/WebhooksConfigSection.svelte +382 -0
  252. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +39 -0
  253. package/package/components/triggers/WebhooksPanel.svelte +32 -331
  254. package/package/components/triggers/WebhooksPanel.svelte.d.ts +7 -1
  255. package/package/components/triggers/WebsocketEditorConfigSection.svelte +176 -0
  256. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +37 -0
  257. package/package/components/triggers/WebsocketTriggerEditor.svelte +2 -2
  258. package/package/components/triggers/WebsocketTriggerEditor.svelte.d.ts +2 -2
  259. package/package/components/triggers/WebsocketTriggerEditorInner.svelte +29 -150
  260. package/package/components/triggers/WebsocketTriggerEditorInner.svelte.d.ts +2 -2
  261. package/package/components/triggers/WebsocketTriggersPanel.svelte +70 -45
  262. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +6 -0
  263. package/package/components/triggers.d.ts +6 -2
  264. package/package/components/triggers.js +16 -0
  265. package/package/components/wizards/AgGridWizard.svelte +4 -4
  266. package/package/editorUtils.d.ts +2 -0
  267. package/package/editorUtils.js +6 -3
  268. package/package/gen/core/OpenAPI.js +1 -1
  269. package/package/gen/schemas.gen.d.ts +17 -8
  270. package/package/gen/schemas.gen.js +17 -8
  271. package/package/gen/services.gen.d.ts +55 -5
  272. package/package/gen/services.gen.js +108 -5
  273. package/package/gen/types.gen.d.ts +180 -13
  274. package/package/hubPaths.json +6 -3
  275. package/package/infer.js +9 -0
  276. package/package/script_helpers.d.ts +5 -0
  277. package/package/script_helpers.js +68 -8
  278. package/package/scripts.d.ts +1 -1
  279. package/package/scripts.js +5 -1
  280. package/package/stores.d.ts +1 -0
  281. package/package/utils.d.ts +3 -1
  282. package/package/utils.js +20 -4
  283. package/package.json +11 -8
  284. package/package/components/flows/content/CapturePayload.svelte +0 -114
  285. package/package/components/flows/content/CapturePayload.svelte.d.ts +0 -17
@@ -1,64 +1,29 @@
1
- <script>import Button from '../common/button/Button.svelte';
2
- import Toggle from '../Toggle.svelte';
1
+ <script>import Toggle from '../Toggle.svelte';
3
2
  import { SettingService } from '../../gen';
4
- import { CheckCircle2, AlertCircle, RefreshCw, CheckSquare2, AlertTriangle } from 'lucide-svelte';
5
- import { onMount } from 'svelte';
6
- import { devopsRole, workspaceStore, instanceSettingsSelectedTab, superadmin, userStore } from '../../stores';
3
+ import { devopsRole, instanceSettingsSelectedTab, superadmin } from '../../stores';
7
4
  import { goto } from '$app/navigation';
8
- import { sendUserToast } from '../../toast';
9
- import Section from '../Section.svelte';
5
+ import List from '../common/layout/List.svelte';
6
+ import RefreshButton from '../common/button/RefreshButton.svelte';
7
+ import CriticalAlertTable from './CriticalAlertTable.svelte';
8
+ import Alert from '../common/alert/Alert.svelte';
10
9
  export let updateHasUnacknowledgedCriticalAlerts;
11
10
  export let getCriticalAlerts;
12
11
  export let acknowledgeCriticalAlert;
13
12
  export let acknowledgeAllCriticalAlerts;
14
13
  export let numUnacknowledgedCriticalAlerts;
15
- let alerts = [];
14
+ let filteredAlerts = [];
16
15
  let isRefreshing = false;
17
16
  let hasCriticalAlertChannels = true;
18
- export let muteSettings = {
19
- workspace: true,
20
- global: true
21
- };
22
- $: muteSettings;
23
- $: {
24
- if (initialMuteSettings.workspace !== muteSettings.workspace ||
25
- initialMuteSettings.global !== muteSettings.global) {
26
- saveMuteSettings();
27
- }
28
- }
29
- $: numUnacknowledgedCriticalAlerts >= 0 && getAlerts(true);
30
- let initialMuteSettings = muteSettings;
31
- async function saveMuteSettings() {
32
- if (initialMuteSettings.workspace !== muteSettings.workspace) {
33
- // Workspace
34
- await SettingService.workspaceMuteCriticalAlertsUi({
35
- workspace: $workspaceStore,
36
- requestBody: {
37
- mute_critical_alerts: muteSettings.workspace
38
- }
39
- });
40
- }
41
- if ($superadmin && initialMuteSettings.global !== muteSettings.global) {
42
- // Global
43
- await SettingService.setGlobal({
44
- key: 'critical_alert_mute_ui',
45
- requestBody: { value: muteSettings.global }
46
- });
47
- }
48
- sendUserToast(`Critical alert UI mute settings changed.\nPlease reload page for UI changes to take effect.`);
49
- getAlerts(true);
50
- initialMuteSettings = { ...muteSettings };
51
- }
52
17
  $: loading = isRefreshing;
53
- onMount(() => {
18
+ $: if (numUnacknowledgedCriticalAlerts) {
54
19
  refreshAlerts();
55
- initialMuteSettings = { ...muteSettings };
56
- });
20
+ }
57
21
  // Pagination
58
22
  let page = 1;
59
23
  let pageSize = 10;
60
24
  let hasMore = true;
61
25
  let hideAcknowledged = false;
26
+ export let workspaceContext = false;
62
27
  async function acknowledgeAll() {
63
28
  await acknowledgeAllCriticalAlerts();
64
29
  getAlerts(false);
@@ -66,14 +31,14 @@ async function acknowledgeAll() {
66
31
  async function fetchAlerts(pageNumber) {
67
32
  isRefreshing = true;
68
33
  try {
69
- const newAlerts = await getCriticalAlerts({
34
+ const res = await getCriticalAlerts({
70
35
  page: pageNumber,
71
36
  pageSize: pageSize,
72
37
  acknowledged: hideAcknowledged ? false : undefined
73
38
  });
74
- alerts = newAlerts;
75
- hasMore = newAlerts.length === pageSize;
76
- page = pageNumber;
39
+ hasMore = pageNumber < res.total_pages;
40
+ totalNumberOfAlerts = res.total_rows;
41
+ filteredAlerts = res.alerts;
77
42
  updateHasUnacknowledgedCriticalAlerts();
78
43
  }
79
44
  finally {
@@ -83,9 +48,9 @@ async function fetchAlerts(pageNumber) {
83
48
  }
84
49
  }
85
50
  async function getAlerts(reset) {
86
- if (reset)
51
+ if (reset) {
87
52
  page = 1;
88
- updateHasUnacknowledgedCriticalAlerts();
53
+ }
89
54
  await fetchAlerts(page);
90
55
  }
91
56
  async function checkCriticalAlertChannels() {
@@ -96,193 +61,81 @@ async function acknowledgeAlert(id) {
96
61
  await acknowledgeCriticalAlert({ id });
97
62
  getAlerts(false);
98
63
  }
99
- function formatDate(dateString) {
100
- if (!dateString)
101
- return '';
102
- const date = new Date(dateString);
103
- return new Intl.DateTimeFormat('en-US', {
104
- year: 'numeric',
105
- month: 'short',
106
- day: 'numeric',
107
- hour: '2-digit',
108
- minute: '2-digit',
109
- second: '2-digit'
110
- }).format(date);
111
- }
112
- async function refreshAlerts() {
64
+ export async function refreshAlerts() {
113
65
  if ($superadmin)
114
66
  checkCriticalAlertChannels();
115
67
  await getAlerts(true);
116
68
  }
117
69
  function goToPreviousPage() {
118
70
  if (page > 1) {
119
- fetchAlerts(page - 1);
71
+ page -= 1;
72
+ fetchAlerts(page);
120
73
  }
121
74
  }
122
75
  function goToNextPage() {
123
76
  if (hasMore) {
124
- fetchAlerts(page + 1);
77
+ page += 1;
78
+ fetchAlerts(page);
125
79
  }
126
80
  }
127
81
  function goToCoreTab() {
128
82
  goto('/#superadmin-settings');
129
83
  instanceSettingsSelectedTab.set('Core');
130
84
  }
131
- export let workspaceContext = false;
132
- $: {
133
- workspaceContextChanged(workspaceContext);
134
- }
135
- async function workspaceContextChanged(_ctx) {
136
- await getAlerts(true);
85
+ function onFiltersChange() {
86
+ getAlerts(true);
137
87
  }
88
+ // Update filter change handlers
89
+ $: hideAcknowledged, workspaceContext, onFiltersChange();
90
+ let totalNumberOfAlerts = 0;
138
91
  </script>
139
92
 
140
- <div>
141
- <div class="grid grid-cols-3 gap-4 col-start-3">
142
- <div class="pt-1 col-span-2">
143
- {#if !hasCriticalAlertChannels && $superadmin}
144
- <div class="flex flex-row pb-4">
145
- <AlertTriangle color="orange" class="w-6 h-6 mr-2" />
146
- <p>
147
- No critical alert channels are set up. Go to the
148
- <a href="/#superadmin-settings" on:click|preventDefault={goToCoreTab}
149
- >Instance Settings</a
150
- >
151
- page to configure critical alert channels.
152
- </p>
153
- </div>
154
- {/if}
93
+ <List gap="sm">
94
+ {#if !hasCriticalAlertChannels && $superadmin}
95
+ <div class="w-full">
96
+ <Alert title="No critical alert channels are set up" type="warning" size="xs">
97
+ Go to the
98
+ <a href="/#superadmin-settings" on:click|preventDefault={goToCoreTab}>Instance settings</a>
99
+ page to configure critical alert channels.
100
+ </Alert>
155
101
  </div>
102
+ {/if}
156
103
 
157
- <div class="flex flex-col justify-between col-start-3">
158
- <div class="flex flex-row justify-end mt-[-38px] pb-3">
159
- <Button
160
- color="green"
161
- startIcon={{ icon: CheckSquare2 }}
162
- size="xs"
163
- disabled={numUnacknowledgedCriticalAlerts === 0}
164
- on:click={acknowledgeAll}
165
- >
166
- Acknowledge All</Button
167
- >
168
- </div>
169
-
170
- {#if $devopsRole}
171
- <div class="flex flex-row py-2 pb-3">
172
- <Toggle
173
- bind:checked={workspaceContext}
174
- options={{ right: `Workspace: '${$workspaceStore}'`, left: "Context: 'Global'" }}
175
- size="xs"
176
- />
177
- </div>
178
- {/if}
179
-
180
- {#if $superadmin || $userStore?.is_admin}
181
- <Section label="Mute Settings" collapsable={true} small={true}>
182
- {#if $superadmin}
183
- <div class="flex flex-row pb-1">
184
- <Toggle
185
- bind:checked={muteSettings.global}
186
- options={{ right: 'Mute critical alerts instance wide' }}
187
- size="xs"
188
- />
189
- </div>
190
- {/if}
191
-
192
- <div class="flex flex-row pb-1">
104
+ <div class="w-full">
105
+ <List horizontal justify="between">
106
+ <div class="w-full">
107
+ <List horizontal justify="start" gap="md">
108
+ {#if $devopsRole}
193
109
  <Toggle
194
- bind:checked={muteSettings.workspace}
195
- options={{ right: 'Mute critical alerts for current workspace' }}
110
+ bind:checked={workspaceContext}
111
+ options={{ right: `Workspace only` }}
196
112
  size="xs"
197
113
  />
198
- </div>
199
- </Section>
200
- {/if}
114
+ {/if}
201
115
 
202
- <div class="pt-2 flex justify-between items-center">
203
- <div class="pr-2">
204
- <Toggle
205
- bind:checked={hideAcknowledged}
206
- on:change={refreshAlerts}
207
- options={{ right: 'Hide Acknowledged' }}
208
- size="xs"
209
- />
210
- </div>
211
- <button
212
- class="mb-1 p-2 rounded-full hover:bg-gray-200"
213
- on:click={refreshAlerts}
214
- disabled={loading}
215
- >
216
- <RefreshCw class={loading ? 'animate-spin ' : ''} size="20" />
217
- </button>
116
+ <Toggle bind:checked={hideAcknowledged} options={{ right: 'Non-Acked only' }} size="xs" />
117
+ </List>
218
118
  </div>
219
- </div>
220
- </div>
221
119
 
222
- <!-- Table of alerts with scrollable body -->
223
- <div class="overflow-y-auto max-h-1/2">
224
- <table class="min-w-full w-full">
225
- <thead class="bg-gray-600 text-white sticky top-0 z-10">
226
- <tr>
227
- <th class="w-[60px] px-4 py-2 text-center">Type</th>
228
- <th class="px-4 py-2 text-center">Message</th>
229
- <th class="w-[150px] px-4 py-2 text-center">Created At</th>
230
- {#if $devopsRole}
231
- <th class="w-[80px] px-4 py-2 text-center">Workspace</th>
232
- {/if}
233
- <th class="w-[180px] px-4 py-2 text-center">Acknowledge</th>
234
- </tr>
235
- </thead>
236
- <tbody>
237
- {#each alerts as { id, alert_type, message, created_at, acknowledged, workspace_id }}
238
- {#if !hideAcknowledged || !acknowledged}
239
- <tr class="bg-gray-100 dark:bg-gray-700 dark:text-white text-center">
240
- <td class="border px-4 py-2 w-[100px]">
241
- {#if alert_type === 'recovered_critical_error'}
242
- <span title="Recovered Critical Alert">
243
- <CheckCircle2 size="20" color="green" />
244
- </span>
245
- {:else}
246
- <span title="Critical Alert">
247
- <AlertCircle size="20" color="red" />
248
- </span>
249
- {/if}
250
- </td>
251
- <td class="border px-4 py-2">{message}</td>
252
- <!-- Flexible width -->
253
- <td class="border px-4 py-2 w-[150px]">{formatDate(created_at)}</td>
254
- {#if $devopsRole}
255
- <td class="border px-4 py-2 w-[150px]">{workspace_id ? workspace_id : 'global'}</td>
256
- {/if}
257
- <td class="border px-4 py-2 w-[180px]">
258
- <div class="flex justify-center items-center">
259
- {#if !acknowledged}
260
- <Button
261
- color="green"
262
- startIcon={{ icon: CheckSquare2 }}
263
- size="xs2"
264
- on:click={() => {
265
- if (id) acknowledgeAlert(id)
266
- }}>Acknowledge</Button
267
- >
268
- {:else}
269
- <CheckCircle2 size="20" color="green" />
270
- {/if}
271
- </div>
272
- </td>
273
- </tr>
274
- {/if}
275
- {/each}
276
- </tbody>
277
- </table>
278
- </div>
279
- <div class="flex flex-1 pt-2 gap-x-4 justify-end">
280
- <Button size="xs2" on:click={goToPreviousPage} disabled={page <= 1}>Previous</Button>
281
- <span>Page {page}</span>
282
- <Button size="xs2" on:click={goToNextPage} disabled={!hasMore}>Next</Button>
120
+ <List wFull={false} horizontal gap="md" justify="end">
121
+ <div class="text-xs text-tertiary whitespace-nowrap"
122
+ >{`${totalNumberOfAlerts === 1000 ? '1000+' : totalNumberOfAlerts ?? '?'} items`}
123
+ </div>
124
+ <RefreshButton {loading} on:click={refreshAlerts} />
125
+ </List>
126
+ </List>
283
127
  </div>
284
128
 
285
- {#if alerts.length === 0}
286
- <p class="text-center text-gray-500 mt-4">No critical alerts available.</p>
287
- {/if}
288
- </div>
129
+ <CriticalAlertTable
130
+ alerts={filteredAlerts}
131
+ {acknowledgeAlert}
132
+ {hideAcknowledged}
133
+ {goToNextPage}
134
+ {goToPreviousPage}
135
+ bind:page
136
+ {hasMore}
137
+ {acknowledgeAll}
138
+ {numUnacknowledgedCriticalAlerts}
139
+ {pageSize}
140
+ />
141
+ </List>
@@ -6,11 +6,8 @@ declare const __propDef: {
6
6
  acknowledgeCriticalAlert: any;
7
7
  acknowledgeAllCriticalAlerts: any;
8
8
  numUnacknowledgedCriticalAlerts: any;
9
- muteSettings?: {
10
- workspace: boolean;
11
- global: boolean;
12
- } | undefined;
13
9
  workspaceContext?: boolean | undefined;
10
+ refreshAlerts?: (() => Promise<void>) | undefined;
14
11
  };
15
12
  events: {
16
13
  [evt: string]: CustomEvent<any>;
@@ -21,5 +18,6 @@ export type CriticalAlertModalInnerProps = typeof __propDef.props;
21
18
  export type CriticalAlertModalInnerEvents = typeof __propDef.events;
22
19
  export type CriticalAlertModalInnerSlots = typeof __propDef.slots;
23
20
  export default class CriticalAlertModalInner extends SvelteComponent<CriticalAlertModalInnerProps, CriticalAlertModalInnerEvents, CriticalAlertModalInnerSlots> {
21
+ get refreshAlerts(): () => Promise<void>;
24
22
  }
25
23
  export {};
@@ -0,0 +1,142 @@
1
+ <script>import Cell from '../table/Cell.svelte';
2
+ import DataTable from '../table/DataTable.svelte';
3
+ import Head from '../table/Head.svelte';
4
+ import Row from '../table/Row.svelte';
5
+ import Button from '../common/button/Button.svelte';
6
+ import { AlertCircle, CheckCircle2 } from 'lucide-svelte';
7
+ import { devopsRole } from '../../stores';
8
+ import List from '../common/layout/List.svelte';
9
+ import { Skeleton } from '../common';
10
+ export let alerts;
11
+ export let hideAcknowledged = false;
12
+ export let goToNextPage;
13
+ export let goToPreviousPage;
14
+ export let acknowledgeAlert;
15
+ export let acknowledgeAll;
16
+ export let numUnacknowledgedCriticalAlerts;
17
+ export let page = 1;
18
+ export let hasMore = true;
19
+ export let pageSize = 0;
20
+ let headerHeight = 0;
21
+ let contentHeight = 0;
22
+ function formatDate(dateString) {
23
+ if (!dateString)
24
+ return '';
25
+ const date = new Date(dateString);
26
+ return new Intl.DateTimeFormat('en-US', {
27
+ year: 'numeric',
28
+ month: 'short',
29
+ day: 'numeric',
30
+ hour: '2-digit',
31
+ minute: '2-digit',
32
+ second: '2-digit'
33
+ }).format(date);
34
+ }
35
+ $: availableHeight = (contentHeight - headerHeight - pageSize - 1) / pageSize;
36
+ </script>
37
+
38
+ <div class="relative grow min-h-0 w-full">
39
+ <DataTable
40
+ size="xs"
41
+ paginated
42
+ on:next={goToNextPage}
43
+ on:previous={goToPreviousPage}
44
+ bind:currentPage={page}
45
+ {hasMore}
46
+ bind:contentHeight
47
+ >
48
+ <Head>
49
+ <tr bind:clientHeight={headerHeight}>
50
+ <Cell head first class="min-w-12">&nbsp;</Cell>
51
+ <Cell head class="min-w-24 w-full">Message</Cell>
52
+ <Cell head class="min-w-28">Created At</Cell>
53
+ {#if $devopsRole}
54
+ <Cell head class="min-w-24">Context</Cell>
55
+ {/if}
56
+ <Cell head last class="min-w-36">
57
+ <List horizontal gap="sm">
58
+ <span>Acked</span>
59
+
60
+ <Button
61
+ color="green"
62
+ startIcon={{ icon: CheckCircle2 }}
63
+ size="xs2"
64
+ disabled={numUnacknowledgedCriticalAlerts === 0}
65
+ on:click={acknowledgeAll}
66
+ title="Acknowledge all"
67
+ >
68
+ All</Button
69
+ >
70
+ </List>
71
+ </Cell>
72
+ </tr>
73
+ </Head>
74
+ {#if alerts == undefined}
75
+ <tbody>
76
+ {#each new Array(3) as _}
77
+ <Row>
78
+ {#each new Array(5) as _}
79
+ <Cell>
80
+ <Skeleton layout={[[5]]} />
81
+ </Cell>
82
+ {/each}
83
+ </Row>
84
+ {/each}
85
+ </tbody>
86
+ {:else if alerts.length === 0}
87
+ <div class="absolute top-0 left-0 w-full h-full center-center">
88
+ <p class="text-center text-gray-500 mt-4">No critical alerts.</p>
89
+ </div>
90
+ {:else}
91
+ <tbody class="divide-y border-b w-full overflow-y-auto">
92
+ {#each alerts as { id, alert_type, message, created_at, acknowledged, workspace_id }}
93
+ {#if !hideAcknowledged || !acknowledged}
94
+ <Row disabled={acknowledged}>
95
+ <Cell class="py-0">
96
+ <div class="flex items-center justify-center" style="height: {availableHeight}px">
97
+ {#if alert_type === 'recovered_critical_error'}
98
+ <span title="Recovered Critical Alert">
99
+ <CheckCircle2 size="20" color="green" />
100
+ </span>
101
+ {:else}
102
+ <span title="Critical Alert">
103
+ <AlertCircle size="20" color="red" />
104
+ </span>
105
+ {/if}
106
+ </div>
107
+ </Cell>
108
+
109
+ <Cell wrap>
110
+ <div class="flex-shrink min-w-0 break-words">{message}</div>
111
+ </Cell>
112
+ <!-- Flexible width -->
113
+ <Cell wrap>{formatDate(created_at)}</Cell>
114
+ {#if $devopsRole}
115
+ <Cell>{workspace_id ? workspace_id : 'global'}</Cell>
116
+ {/if}
117
+ <Cell>
118
+ <div class="w-full flex justify-center items-center">
119
+ {#if !acknowledged}
120
+ <Button
121
+ color="green"
122
+ startIcon={{ icon: CheckCircle2 }}
123
+ size="xs2"
124
+ on:click={() => {
125
+ if (id) acknowledgeAlert(id)
126
+ }}
127
+ title="Acknowledge"
128
+ >
129
+ Acknowledge
130
+ </Button>
131
+ {:else}
132
+ <CheckCircle2 size="20" />
133
+ {/if}
134
+ </div>
135
+ </Cell>
136
+ </Row>
137
+ {/if}
138
+ {/each}
139
+ </tbody>
140
+ {/if}
141
+ </DataTable>
142
+ </div>
@@ -0,0 +1,25 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ alerts: any[];
5
+ hideAcknowledged?: boolean | undefined;
6
+ goToNextPage: () => void;
7
+ goToPreviousPage: () => void;
8
+ acknowledgeAlert: (id: number) => void;
9
+ acknowledgeAll: () => void;
10
+ numUnacknowledgedCriticalAlerts: number;
11
+ page?: number | undefined;
12
+ hasMore?: boolean | undefined;
13
+ pageSize?: number | undefined;
14
+ };
15
+ events: {
16
+ [evt: string]: CustomEvent<any>;
17
+ };
18
+ slots: {};
19
+ };
20
+ export type CriticalAlertTableProps = typeof __propDef.props;
21
+ export type CriticalAlertTableEvents = typeof __propDef.events;
22
+ export type CriticalAlertTableSlots = typeof __propDef.slots;
23
+ export default class CriticalAlertTable extends SvelteComponent<CriticalAlertTableProps, CriticalAlertTableEvents, CriticalAlertTableSlots> {
24
+ }
25
+ export {};
@@ -1,8 +1,8 @@
1
- <script>import { Home, Menu as MenuIcon, Play, Settings, LogOut, Moon, Sun, Code2, LayoutDashboard, Building, Calendar } from 'lucide-svelte';
1
+ <script>import { Home, Menu as MenuIcon, Play, Settings, LogOut, Moon, Sun, Code2, LayoutDashboard, Building, Calendar, ServerCog } from 'lucide-svelte';
2
2
  import { base } from '../../base';
3
3
  import Menu from '../common/menu/MenuV2.svelte';
4
4
  import MultiplayerMenu from './MultiplayerMenu.svelte';
5
- import { enterpriseLicense } from '../../stores';
5
+ import { enterpriseLicense, superadmin } from '../../stores';
6
6
  import MenuButton from './MenuButton.svelte';
7
7
  import { MenuItem } from '@rgossiaux/svelte-headlessui';
8
8
  import MenuLink from './MenuLink.svelte';
@@ -20,10 +20,6 @@ const mainMenuLinks = [
20
20
  { label: 'Schedules', href: `${base}/schedules`, icon: Calendar }
21
21
  ];
22
22
  let secondMenuLinks = [
23
- {
24
- label: 'Schedules',
25
- href: `${base}/schedules`
26
- },
27
23
  {
28
24
  label: 'Resources',
29
25
  href: `${base}/resources`
@@ -33,7 +29,19 @@ let secondMenuLinks = [
33
29
  href: `${base}/variables`
34
30
  },
35
31
  {
36
- label: 'Audit Logs',
32
+ label: 'Custom HTTP Routes',
33
+ href: `${base}/routes`
34
+ },
35
+ {
36
+ label: 'Websocket Triggers',
37
+ href: `${base}/websockets`
38
+ },
39
+ {
40
+ label: 'Kafka Triggers',
41
+ href: `${base}/kafka`
42
+ },
43
+ {
44
+ label: 'Audit logs',
37
45
  href: `${base}/audit_logs`
38
46
  },
39
47
  {
@@ -131,9 +139,23 @@ let moreOpen = false;
131
139
  tabindex="-1"
132
140
  >
133
141
  <Building size={14} />
134
- All Workspaces
142
+ All workspaces
135
143
  </a>
136
144
 
145
+ {#if $superadmin}
146
+ <MenuItem
147
+ href="#superadmin-settings"
148
+ class={twMerge(
149
+ 'flex flex-row gap-3.5 items-center px-2 py-2 ',
150
+ 'text-secondary text-xs',
151
+ 'hover:bg-surface-hover hover:text-primary cursor-pointer'
152
+ )}
153
+ >
154
+ <ServerCog size={14} />
155
+ Instance settings
156
+ </MenuItem>
157
+ {/if}
158
+
137
159
  <MenuItem
138
160
  href="#"
139
161
  on:click={() => logout()}
@@ -1,13 +1,10 @@
1
- <script>export let notificationCount = 0;
1
+ <script>import Notification from '../common/alert/Notification.svelte';
2
+ export let notificationCount = 0;
2
3
  export let small = false;
3
4
  </script>
4
5
 
5
6
  {#if !small}
6
- <div
7
- class="bg-red-500 text-white text-[0.6rem] rounded-md w-5 h-5 flex items-center justify-center"
8
- >
9
- {notificationCount > 9 ? '9+' : notificationCount}
10
- </div>
7
+ <Notification {notificationCount} notificationLimit={9} />
11
8
  {:else}
12
9
  <div class="bg-red-500 rounded-md w-3 h-3 flex items-center justify-center" />
13
10
  {/if}
@@ -112,7 +112,7 @@ $: secondaryMenuLinks = [
112
112
  ...(!$superadmin && !$userStore?.is_admin
113
113
  ? [
114
114
  {
115
- label: 'Leave Workspace',
115
+ label: 'Leave workspace',
116
116
  action: () => {
117
117
  leaveWorkspaceModal = true;
118
118
  },
@@ -153,14 +153,14 @@ $: secondaryMenuLinks = [
153
153
  icon: Logs,
154
154
  subItems: [
155
155
  {
156
- label: 'Audit Logs',
156
+ label: 'Audit logs',
157
157
  href: `${base}/audit_logs`,
158
158
  icon: Eye
159
159
  },
160
160
  ...($devopsRole
161
161
  ? [
162
162
  {
163
- label: 'Service Logs',
163
+ label: 'Service logs',
164
164
  href: `${base}/service_logs`,
165
165
  icon: Logs
166
166
  }
@@ -169,7 +169,7 @@ $: secondaryMenuLinks = [
169
169
  ...($enterpriseLicense
170
170
  ? [
171
171
  {
172
- label: 'Critical Alerts',
172
+ label: 'Critical alerts',
173
173
  action: () => {
174
174
  isCriticalAlertsUIOpen.set(true);
175
175
  },
@@ -181,7 +181,7 @@ $: secondaryMenuLinks = [
181
181
  ]
182
182
  }
183
183
  : {
184
- label: 'Audit Logs',
184
+ label: 'Audit logs',
185
185
  href: `${base}/audit_logs`,
186
186
  icon: Eye,
187
187
  disabled: $userStore?.operator