windmill-components 1.613.5 → 1.623.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 (429) hide show
  1. package/package/assets/tokens/tokens.json +1 -11
  2. package/package/ata/apis.js +5 -78
  3. package/package/components/AddUser.svelte +1 -1
  4. package/package/components/CenteredModal.svelte +24 -32
  5. package/package/components/CenteredModal.svelte.d.ts +27 -7
  6. package/package/components/CenteredPage.svelte +2 -5
  7. package/package/components/CenteredPage.svelte.d.ts +0 -2
  8. package/package/components/ConcurrentJobsChart.svelte +2 -3
  9. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  10. package/package/components/CustomPopover.svelte +23 -20
  11. package/package/components/CustomPopover.svelte.d.ts +39 -14
  12. package/package/components/DBManager.svelte +17 -105
  13. package/package/components/DBManager.svelte.d.ts +1 -2
  14. package/package/components/DBManagerContent.svelte +3 -4
  15. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  16. package/package/components/DBTableEditor.svelte +171 -210
  17. package/package/components/DBTableEditor.svelte.d.ts +3 -22
  18. package/package/components/Description.svelte +2 -3
  19. package/package/components/Dev.svelte +2 -36
  20. package/package/components/DiffDrawer.svelte +29 -8
  21. package/package/components/DiffEditor.svelte +2 -32
  22. package/package/components/DisplayResult.svelte +24 -32
  23. package/package/components/Editor.svelte +16 -70
  24. package/package/components/Editor.svelte.d.ts +0 -3
  25. package/package/components/EditorBar.svelte +1 -1
  26. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  27. package/package/components/FlowBuilder.svelte +11 -17
  28. package/package/components/FlowPreviewContent.svelte +2 -3
  29. package/package/components/FlowPreviewResult.svelte +4 -0
  30. package/package/components/FlowRestartButton.svelte +3 -2
  31. package/package/components/FlowRestartButton.svelte.d.ts +0 -3
  32. package/package/components/FlowStatusViewerInner.svelte +33 -50
  33. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  34. package/package/components/FlowStatusWaitingForEvents.svelte +23 -27
  35. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +18 -4
  36. package/package/components/FlowViewer.svelte +2 -103
  37. package/package/components/FlowViewer.svelte.d.ts +3 -9
  38. package/package/components/ForkWorkspaceBanner.svelte +13 -16
  39. package/package/components/GraphqlSchemaViewer.svelte +1 -8
  40. package/package/components/HistoricInputs.svelte +27 -25
  41. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  42. package/package/components/InstanceSetting.svelte +0 -38
  43. package/package/components/InviteUser.svelte +42 -16
  44. package/package/components/InviteUser.svelte.d.ts +18 -4
  45. package/package/components/JsonInputs.svelte +8 -6
  46. package/package/components/JsonInputs.svelte.d.ts +8 -7
  47. package/package/components/LogViewer.svelte +33 -91
  48. package/package/components/Login.svelte +0 -21
  49. package/package/components/ManualPopover.svelte +6 -5
  50. package/package/components/ManualPopover.svelte.d.ts +35 -9
  51. package/package/components/MemoryFootprintViewer.svelte +6 -2
  52. package/package/components/ModulePreview.svelte +21 -23
  53. package/package/components/ModulePreview.svelte.d.ts +0 -1
  54. package/package/components/OAuthSetting.svelte +11 -23
  55. package/package/components/Path.svelte +2 -2
  56. package/package/components/Path.svelte.d.ts +1 -1
  57. package/package/components/ResourcePicker.svelte +0 -3
  58. package/package/components/ResourcePicker.svelte.d.ts +0 -1
  59. package/package/components/RunButton.svelte +15 -5
  60. package/package/components/RunButton.svelte.d.ts +19 -7
  61. package/package/components/RunChart.svelte +4 -8
  62. package/package/components/RunChart.svelte.d.ts +2 -2
  63. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  64. package/package/components/RunsPage.svelte +539 -170
  65. package/package/components/RunsPage.svelte.d.ts +5 -5
  66. package/package/components/S3FilePicker.svelte +11 -7
  67. package/package/components/S3FilePickerInner.svelte +3 -2
  68. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  69. package/package/components/SavedInputs.svelte +416 -0
  70. package/package/components/{tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts → SavedInputs.svelte.d.ts} +11 -8
  71. package/package/components/SchemaForm.svelte +19 -26
  72. package/package/components/SchemaFormWithArgPicker.svelte +3 -4
  73. package/package/components/ScriptBuilder.svelte +1 -1
  74. package/package/components/ScriptEditor.svelte +101 -575
  75. package/package/components/Section.svelte +1 -3
  76. package/package/components/ServiceLogsInner.svelte +4 -4
  77. package/package/components/ShareModal.svelte.d.ts +1 -1
  78. package/package/components/SimpleEditor.svelte +2 -46
  79. package/package/components/SuperadminSettingsInner.svelte +1 -1
  80. package/package/components/TemplateEditor.svelte +29 -54
  81. package/package/components/TemplateEditor.svelte.d.ts +102 -13
  82. package/package/components/UserSettings.svelte +1 -1
  83. package/package/components/WorkerTagPicker.svelte +1 -1
  84. package/package/components/WorkerTagSelect.svelte +2 -5
  85. package/package/components/WorkspaceTutorials.svelte +0 -5
  86. package/package/components/apps/components/buttons/AppButton.svelte +6 -21
  87. package/package/components/apps/components/buttons/AppForm.svelte +1 -2
  88. package/package/components/apps/components/buttons/AppFormButton.svelte +1 -2
  89. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +4 -0
  90. package/package/components/apps/components/display/dbtable/metadata.js +30 -69
  91. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +24 -2
  92. package/package/components/apps/components/display/dbtable/queries/createTable.js +25 -11
  93. package/package/components/apps/components/display/dbtable/queries/select.d.ts +0 -2
  94. package/package/components/apps/components/display/dbtable/queries/select.js +6 -37
  95. package/package/components/apps/components/display/dbtable/utils.d.ts +1 -10
  96. package/package/components/apps/components/display/dbtable/utils.js +20 -52
  97. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  98. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  99. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  100. package/package/components/apps/components/helpers/RunnableComponent.svelte +2 -3
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  102. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  103. package/package/components/apps/editor/AppEditorHeader.svelte +1 -8
  104. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +29 -32
  105. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  106. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  107. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  108. package/package/components/apps/editor/PublicApp.svelte +30 -49
  109. package/package/components/apps/editor/PublicApp.svelte.d.ts +0 -1
  110. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +7 -77
  111. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  112. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  113. package/package/components/apps/editor/inlineScriptsPanel/utils.js +1 -10
  114. package/package/components/apps/inputType.d.ts +1 -6
  115. package/package/components/auditLogs/AuditLogsFilters.svelte +17 -9
  116. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  117. package/package/components/common/button/model.js +1 -1
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  119. package/package/components/common/languageIcons/TypeScript.svelte +3 -5
  120. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +0 -1
  121. package/package/components/common/modal/Modal.svelte +3 -3
  122. package/package/components/copilot/autocomplete/Autocompletor.js +2 -3
  123. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  124. package/package/components/copilot/chat/AIButtonStyle.js +1 -2
  125. package/package/components/copilot/chat/AIChat.svelte +1 -3
  126. package/package/components/copilot/chat/AIChatDisplay.svelte +4 -89
  127. package/package/components/copilot/chat/AIChatInput.svelte +0 -275
  128. package/package/components/copilot/chat/AIChatManager.svelte.js +1 -107
  129. package/package/components/copilot/chat/AiChatLayout.svelte +30 -15
  130. package/package/components/copilot/chat/ContextElementBadge.svelte +0 -44
  131. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +33 -32
  132. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  133. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -3
  134. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -4
  135. package/package/components/copilot/chat/app/core.d.ts +15 -56
  136. package/package/components/copilot/chat/app/core.js +22 -141
  137. package/package/components/copilot/chat/context.d.ts +2 -59
  138. package/package/components/copilot/chat/context.js +2 -6
  139. package/package/components/copilot/chat/flow/FlowAIChat.svelte +0 -22
  140. package/package/components/copilot/chat/flow/core.d.ts +1 -3
  141. package/package/components/copilot/chat/flow/core.js +2 -29
  142. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  143. package/package/components/copilot/chat/flow/openFlowZod.d.ts +0 -1
  144. package/package/components/copilot/chat/flow/openFlowZod.js +2 -14
  145. package/package/components/copilot/chat/script/core.d.ts +1 -4
  146. package/package/components/copilot/chat/script/core.js +2 -38
  147. package/package/components/copilot/chat/shared.d.ts +0 -10
  148. package/package/components/copilot/chat/shared.js +0 -24
  149. package/package/components/copilot/lib.d.ts +1 -1
  150. package/package/components/custom_ui.d.ts +0 -2
  151. package/package/components/dbOps.d.ts +4 -18
  152. package/package/components/dbOps.js +3 -25
  153. package/package/components/flows/CreateActionsApp.svelte +4 -6
  154. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  155. package/package/components/flows/FlowHistoryInner.svelte +4 -15
  156. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  157. package/package/components/flows/content/FlowInput.svelte +37 -211
  158. package/package/components/flows/content/FlowModuleComponent.svelte +67 -553
  159. package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -8
  160. package/package/components/flows/content/FlowModuleHeader.svelte +4 -7
  161. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  162. package/package/components/flows/content/McpToolEditor.svelte +37 -50
  163. package/package/components/flows/content/McpToolEditor.svelte.d.ts +1 -0
  164. package/package/components/flows/conversations/FlowChat.svelte +2 -16
  165. package/package/components/flows/conversations/FlowChat.svelte.d.ts +1 -2
  166. package/package/components/flows/conversations/FlowChatInterface.svelte +6 -103
  167. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +0 -2
  168. package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -53
  169. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  170. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -3
  171. package/package/components/flows/types.d.ts +0 -2
  172. package/package/components/git_sync/GitSyncRepositoryCard.svelte +8 -16
  173. package/package/components/home/ItemsList.svelte +5 -5
  174. package/package/components/home/TutorialBanner.svelte +18 -34
  175. package/package/components/icons/CssIcon.svelte +0 -20
  176. package/package/components/icons/CssIcon.svelte.d.ts +25 -7
  177. package/package/components/icons/JavaScriptIcon.svelte +2 -10
  178. package/package/components/icons/JavaScriptIcon.svelte.d.ts +0 -1
  179. package/package/components/icons/JsonIcon.svelte +2 -8
  180. package/package/components/icons/JsonIcon.svelte.d.ts +0 -1
  181. package/package/components/icons/ReactIcon.svelte +2 -10
  182. package/package/components/icons/ReactIcon.svelte.d.ts +0 -1
  183. package/package/components/icons/SvelteIcon.svelte +2 -10
  184. package/package/components/icons/SvelteIcon.svelte.d.ts +0 -1
  185. package/package/components/icons/VueIcon.svelte +2 -10
  186. package/package/components/icons/VueIcon.svelte.d.ts +0 -1
  187. package/package/components/instanceSettings.d.ts +1 -2
  188. package/package/components/instanceSettings.js +1 -32
  189. package/package/components/jobs/JobPreview.svelte +39 -46
  190. package/package/components/jobs/JobPreview.svelte.d.ts +0 -1
  191. package/package/components/monacoLanguagesOptions.js +15 -16
  192. package/package/components/propertyPicker/PropPicker.svelte +2 -16
  193. package/package/components/propertyPicker/PropPicker.svelte.d.ts +0 -2
  194. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +5 -9
  195. package/package/components/raw_apps/FileEditorIcon.svelte +7 -12
  196. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +0 -2
  197. package/package/components/raw_apps/FileTreeNode.svelte +83 -119
  198. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +8 -88
  199. package/package/components/raw_apps/RawAppDataTableList.svelte +9 -12
  200. package/package/components/raw_apps/RawAppEditor.svelte +68 -218
  201. package/package/components/raw_apps/RawAppEditorHeader.svelte +16 -33
  202. package/package/components/raw_apps/RawAppHistoryList.svelte +80 -264
  203. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +0 -1
  204. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +1 -15
  205. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +12 -46
  206. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +47 -549
  207. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +5 -31
  208. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +18 -25
  209. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +0 -1
  210. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +10 -141
  211. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +0 -8
  212. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +1 -2
  213. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +1 -9
  214. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +3 -47
  215. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  216. package/package/components/raw_apps/RawAppModules.svelte +7 -13
  217. package/package/components/raw_apps/RawAppPreview.svelte +6 -48
  218. package/package/components/raw_apps/RawAppSidebar.svelte +125 -194
  219. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +0 -1
  220. package/package/components/raw_apps/utils.d.ts +1 -1
  221. package/package/components/raw_apps/utils.js +18 -76
  222. package/package/components/runs/JobsLoader.svelte +468 -0
  223. package/package/components/runs/JobsLoader.svelte.d.ts +49 -0
  224. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  225. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  226. package/package/components/runs/NoWorkerWithTagWarning.svelte +1 -5
  227. package/package/components/runs/RunsFilter.svelte +63 -75
  228. package/package/components/runs/RunsFilter.svelte.d.ts +4 -35
  229. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  230. package/package/components/runs/RunsTable.svelte +1 -1
  231. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  232. package/package/components/schema/SchemaPicker.svelte +92 -0
  233. package/package/components/{tutorials/RunsTutorial.svelte.d.ts → schema/SchemaPicker.svelte.d.ts} +12 -11
  234. package/package/components/scriptEditor/LogPanel.svelte +2 -17
  235. package/package/components/scriptEditor/LogPanel.svelte.d.ts +0 -2
  236. package/package/components/select/SelectDropdown.svelte +2 -2
  237. package/package/components/settings/ChangeWorkspaceColor.svelte +3 -4
  238. package/package/components/settings/ChangeWorkspaceId.svelte +10 -14
  239. package/package/components/settings/ChangeWorkspaceName.svelte +6 -7
  240. package/package/components/settings/CreateToken.svelte +1 -1
  241. package/package/components/settings/UserAIPromptsSettings.svelte +15 -56
  242. package/package/components/settings/WorkspaceOperatorSettings.svelte +85 -68
  243. package/package/components/settings/WorkspaceUserSettings.svelte +406 -531
  244. package/package/components/sidebar/MenuButton.svelte +24 -46
  245. package/package/components/sidebar/MenuButton.svelte.d.ts +0 -2
  246. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  247. package/package/components/sidebar/OperatorMenu.svelte +88 -63
  248. package/package/components/sidebar/SidebarContent.svelte +2 -7
  249. package/package/components/sidebar/UserMenu.svelte +1 -1
  250. package/package/components/sidebar/WorkspaceMenu.svelte +85 -35
  251. package/package/components/sqlTypeService.js +3 -4
  252. package/package/components/table/DataTable.svelte +2 -3
  253. package/package/components/table/DataTable.svelte.d.ts +0 -1
  254. package/package/components/text_input/TextInput.svelte +0 -3
  255. package/package/components/text_input/TextInput.svelte.d.ts +0 -2
  256. package/package/components/triggers/utils.js +1 -0
  257. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +35 -6
  258. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +20 -5
  259. package/package/components/tutorials/utils.d.ts +0 -16
  260. package/package/components/tutorials/utils.js +0 -96
  261. package/package/components/vscode.js +6 -6
  262. package/package/components/workspaceSettings/AISettings.svelte +108 -146
  263. package/package/components/workspaceSettings/CreateWorkspace.svelte +12 -26
  264. package/package/components/workspaceSettings/DucklakeSettings.svelte +23 -46
  265. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +1 -2
  266. package/package/components/workspaceSettings/ModelTokenLimits.svelte +18 -14
  267. package/package/components/workspaceSettings/StorageSettings.svelte +241 -280
  268. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +0 -1
  269. package/package/consts.js +1 -4
  270. package/package/gen/core/OpenAPI.js +1 -1
  271. package/package/gen/schemas.gen.d.ts +1 -133
  272. package/package/gen/schemas.gen.js +1 -133
  273. package/package/gen/services.gen.d.ts +10 -160
  274. package/package/gen/services.gen.js +20 -319
  275. package/package/gen/types.gen.d.ts +19 -609
  276. package/package/hubPaths.json +2 -3
  277. package/package/infer.js +0 -2
  278. package/package/logout.d.ts +2 -0
  279. package/package/logout.js +23 -2
  280. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  281. package/package/navigation.d.ts +1 -1
  282. package/package/rawAppWmillTs.d.ts +0 -11
  283. package/package/rawAppWmillTs.js +1 -38
  284. package/package/svelte5Utils.svelte.d.ts +1 -7
  285. package/package/svelte5Utils.svelte.js +2 -23
  286. package/package/tutorialUtils.js +4 -0
  287. package/package/tutorials/config.js +3 -31
  288. package/package/tutorials/roleUtils.d.ts +1 -1
  289. package/package/tutorials/roleUtils.js +2 -6
  290. package/package/utils.js +1 -159
  291. package/package.json +4 -6
  292. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  293. package/dist/sharedUtils/base.d.ts +0 -1
  294. package/dist/sharedUtils/cloud.d.ts +0 -1
  295. package/dist/sharedUtils/common.d.ts +0 -111
  296. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  297. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  298. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  299. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  300. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  301. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  302. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  303. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  304. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  305. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  306. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  307. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  308. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  309. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  310. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  311. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  312. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  313. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  314. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  315. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  316. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  317. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  318. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  319. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  320. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  321. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  322. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  323. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  324. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  325. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  326. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  327. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  328. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  329. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  330. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  331. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  332. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  333. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  334. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
  335. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  336. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  337. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  338. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  339. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  340. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  341. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  342. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  343. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  344. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  345. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  346. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  347. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  348. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  349. package/dist/sharedUtils/gen/index.d.ts +0 -6
  350. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  351. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  352. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  353. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  354. package/dist/sharedUtils/hub.d.ts +0 -49
  355. package/dist/sharedUtils/jsr.json +0 -6
  356. package/dist/sharedUtils/lib.d.ts +0 -5
  357. package/dist/sharedUtils/lib.es.js +0 -1588
  358. package/dist/sharedUtils/package.json +0 -12
  359. package/dist/sharedUtils/schema.d.ts +0 -3
  360. package/dist/sharedUtils/stores.d.ts +0 -97
  361. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  362. package/dist/sharedUtils/toast.d.ts +0 -8
  363. package/dist/sharedUtils/utils.d.ts +0 -265
  364. package/package/components/FlowDiffViewer.svelte +0 -37
  365. package/package/components/FlowDiffViewer.svelte.d.ts +0 -7
  366. package/package/components/JobOtelTraces.svelte +0 -287
  367. package/package/components/JobOtelTraces.svelte.d.ts +0 -6
  368. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +0 -46
  369. package/package/components/apps/components/display/dbtable/queries/alterTable.js +0 -314
  370. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +0 -1
  371. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +0 -867
  372. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +0 -9
  373. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +0 -45
  374. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +0 -47
  375. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +0 -402
  376. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +0 -35
  377. package/package/components/apps/components/display/dbtable/tableEditor.js +0 -49
  378. package/package/components/copilot/chat/AppAvailableContextList.svelte +0 -263
  379. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +0 -13
  380. package/package/components/debug/DebugConsole.svelte +0 -277
  381. package/package/components/debug/DebugConsole.svelte.d.ts +0 -13
  382. package/package/components/debug/DebugPanel.svelte +0 -97
  383. package/package/components/debug/DebugPanel.svelte.d.ts +0 -11
  384. package/package/components/debug/DebugToolbar.svelte +0 -148
  385. package/package/components/debug/DebugToolbar.svelte.d.ts +0 -17
  386. package/package/components/debug/DebugVariableViewer.svelte +0 -115
  387. package/package/components/debug/DebugVariableViewer.svelte.d.ts +0 -11
  388. package/package/components/debug/MonacoDebugger.svelte +0 -384
  389. package/package/components/debug/MonacoDebugger.svelte.d.ts +0 -15
  390. package/package/components/debug/dapClient.d.ts +0 -192
  391. package/package/components/debug/dapClient.js +0 -426
  392. package/package/components/debug/debugUtils.d.ts +0 -30
  393. package/package/components/debug/debugUtils.js +0 -131
  394. package/package/components/debug/index.d.ts +0 -75
  395. package/package/components/debug/index.js +0 -82
  396. package/package/components/flows/content/FlowEditorDrawer.svelte +0 -124
  397. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +0 -22
  398. package/package/components/flows/content/McpOAuthConnect.svelte +0 -217
  399. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +0 -7
  400. package/package/components/icons/HtmlIcon.svelte +0 -20
  401. package/package/components/icons/HtmlIcon.svelte.d.ts +0 -8
  402. package/package/components/icons/LessIcon.svelte +0 -16
  403. package/package/components/icons/LessIcon.svelte.d.ts +0 -8
  404. package/package/components/icons/MarkdownIcon.svelte +0 -20
  405. package/package/components/icons/MarkdownIcon.svelte.d.ts +0 -8
  406. package/package/components/icons/SassIcon.svelte +0 -28
  407. package/package/components/icons/SassIcon.svelte.d.ts +0 -8
  408. package/package/components/icons/YamlIcon.svelte +0 -20
  409. package/package/components/icons/YamlIcon.svelte.d.ts +0 -8
  410. package/package/components/instanceSettings/SecretBackendConfig.svelte +0 -514
  411. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +0 -8
  412. package/package/components/raw_apps/RunnableRow.svelte +0 -41
  413. package/package/components/raw_apps/RunnableRow.svelte.d.ts +0 -11
  414. package/package/components/runs/useJobsLoader.svelte.d.ts +0 -34
  415. package/package/components/runs/useJobsLoader.svelte.js +0 -507
  416. package/package/components/settings/AIPromptsModal.svelte +0 -88
  417. package/package/components/settings/AIPromptsModal.svelte.d.ts +0 -11
  418. package/package/components/tutorials/RunsTutorial.svelte +0 -399
  419. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +0 -133
  420. package/package/components/workspace/WorkspaceCard.svelte +0 -184
  421. package/package/components/workspace/WorkspaceCard.svelte.d.ts +0 -24
  422. package/package/components/workspace/WorkspaceIcon.svelte +0 -21
  423. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +0 -9
  424. package/package/components/workspace/WorkspaceTreeView.svelte +0 -331
  425. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +0 -15
  426. package/package/logoutKit.d.ts +0 -2
  427. package/package/logoutKit.js +0 -26
  428. package/package/svelte5UtilsKit.svelte.d.ts +0 -3
  429. package/package/svelte5UtilsKit.svelte.js +0 -30
@@ -1,3 +1,6 @@
1
+ <script module lang="ts">export let DEFAULT_RUNS_PER_PAGE = 1000;
2
+ </script>
3
+
1
4
  <script lang="ts">import { JobService, UserService, FolderService, ScriptService, FlowService, OpenAPI } from '../gen';
2
5
  import { sendUserToast } from '../toast';
3
6
  import { userStore, workspaceStore, userWorkspaces } from '../stores';
@@ -8,15 +11,17 @@ import Tooltip from './Tooltip.svelte';
8
11
  import CalendarPicker from './common/calendarPicker/CalendarPicker.svelte';
9
12
  import RunsTable from './runs/RunsTable.svelte';
10
13
  import { Pane, Splitpanes } from 'svelte-splitpanes';
11
- import RunsFilter, { runsFiltersSchema } from './runs/RunsFilter.svelte';
14
+ import RunsFilter from './runs/RunsFilter.svelte';
12
15
  import Toggle from './Toggle.svelte';
13
16
  import ConfirmationModal from './common/confirmationModal/ConfirmationModal.svelte';
14
17
  import RunsQueue from './runs/RunsQueue.svelte';
15
18
  import { twMerge } from 'tailwind-merge';
16
19
  import ManuelDatePicker from './runs/ManuelDatePicker.svelte';
17
- import { computeJobKinds, useJobsLoader } from './runs/useJobsLoader.svelte';
20
+ import JobsLoader from './runs/JobsLoader.svelte';
18
21
  import { Calendar, Clock, TriangleAlert } from 'lucide-svelte';
19
22
  import ConcurrentJobsChart from './ConcurrentJobsChart.svelte';
23
+ import { goto } from '$app/navigation';
24
+ import { base } from '$app/paths';
20
25
  import { isJobSelectable } from '../utils';
21
26
  import BatchReRunOptionsPane, {} from './runs/BatchReRunOptionsPane.svelte';
22
27
  import { untrack } from 'svelte';
@@ -30,22 +35,102 @@ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte
30
35
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
31
36
  import Select from './select/Select.svelte';
32
37
  import AnimatedPane from './splitPanes/AnimatedPane.svelte';
33
- import { useSearchParams } from '../svelte5UtilsKit.svelte';
34
- import { StaleWhileLoading } from '../svelte5Utils.svelte';
35
- let { initialPath } = $props();
36
- let filters = useSearchParams(runsFiltersSchema);
37
- // Initialize path filter from route param if provided and not already set via query params
38
- if (initialPath && !filters.path) {
39
- filters.path = initialPath;
40
- }
38
+ let { perPage = $bindable() } = $props();
39
+ let jobs = $state();
41
40
  let selectedIds = $state([]);
42
41
  let loadingSelectedIds = $state(false);
43
42
  let selectedWorkspace = $state(undefined);
44
43
  let batchReRunOptions = $state({ flow: {}, script: {} });
45
- let jobKinds = $derived(computeJobKinds(filters.job_kinds));
44
+ // All Filters
45
+ // Filter by
46
+ let path = $state(page.params.path ?? null);
47
+ let worker = $state(page.url.searchParams.get('worker'));
48
+ let user = $state(page.url.searchParams.get('user'));
49
+ let folder = $state(page.url.searchParams.get('folder'));
50
+ let label = $state(page.url.searchParams.get('label'));
51
+ let allowWildcards = $state(page.url.searchParams.get('allow_wildcards') == 'true');
52
+ let concurrencyKey = $state(page.url.searchParams.get('concurrency_key'));
53
+ let tag = $state(page.url.searchParams.get('tag'));
54
+ // Rest of filters handled by RunsFilter
55
+ let success = $state((page.url.searchParams.get('success') ?? undefined));
56
+ let showSkipped = $state(page.url.searchParams.get('show_skipped') != undefined
57
+ ? page.url.searchParams.get('show_skipped') == 'true'
58
+ : false);
59
+ let showSchedules = $state(page.url.searchParams.get('show_schedules') != undefined
60
+ ? page.url.searchParams.get('show_schedules') == 'true'
61
+ : localStorage.getItem('show_schedules_in_run') == 'false'
62
+ ? false
63
+ : true);
64
+ let showFutureJobs = $state(page.url.searchParams.get('show_future_jobs') != undefined
65
+ ? page.url.searchParams.get('show_future_jobs') == 'true'
66
+ : localStorage.getItem('show_future_jobs') == 'false'
67
+ ? false
68
+ : true);
69
+ let argFilter = $state(page.url.searchParams.get('arg')
70
+ ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}'))
71
+ : undefined);
72
+ let resultFilter = $state(page.url.searchParams.get('result')
73
+ ? JSON.parse(decodeURIComponent(page.url.searchParams.get('result') ?? '{}'))
74
+ : undefined);
75
+ let jobTriggerKind = $state(page.url.searchParams.get('job_trigger_kind') ?? undefined);
76
+ // Handled on the main page
77
+ let minTs = $state(page.url.searchParams.get('min_ts') ?? undefined);
78
+ let maxTs = $state(page.url.searchParams.get('max_ts') ?? undefined);
79
+ let schedulePath = $state(page.url.searchParams.get('schedule_path') ?? undefined);
80
+ let jobKindsCat = $state(page.url.searchParams.get('job_kinds') ?? 'runs');
81
+ let allWorkspaces = $state(page.url.searchParams.get('all_workspaces') == 'true');
82
+ let lastFetchWentToEnd = $state(false);
83
+ function loadFromQuery() {
84
+ path = page.params.path ?? null;
85
+ user = page.url.searchParams.get('user');
86
+ folder = page.url.searchParams.get('folder');
87
+ label = page.url.searchParams.get('label');
88
+ concurrencyKey = page.url.searchParams.get('concurrency_key');
89
+ tag = page.url.searchParams.get('tag');
90
+ worker = page.url.searchParams.get('worker');
91
+ allowWildcards = page.url.searchParams.get('allow_wildcards') == 'true';
92
+ // Rest of filters handled by RunsFilter
93
+ success = (page.url.searchParams.get('success') ?? undefined);
94
+ showSkipped =
95
+ page.url.searchParams.get('show_skipped') != undefined
96
+ ? page.url.searchParams.get('show_skipped') == 'true'
97
+ : false;
98
+ showSchedules =
99
+ page.url.searchParams.get('show_schedules') != undefined
100
+ ? page.url.searchParams.get('show_schedules') == 'true'
101
+ : localStorage.getItem('show_schedules_in_run') == 'false'
102
+ ? false
103
+ : true;
104
+ showFutureJobs =
105
+ page.url.searchParams.get('show_future_jobs') != undefined
106
+ ? page.url.searchParams.get('show_future_jobs') == 'true'
107
+ : localStorage.getItem('show_future_jobs') == 'false'
108
+ ? false
109
+ : true;
110
+ argFilter = page.url.searchParams.get('arg')
111
+ ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}'))
112
+ : undefined;
113
+ resultFilter = page.url.searchParams.get('result')
114
+ ? JSON.parse(decodeURIComponent(page.url.searchParams.get('result') ?? '{}'))
115
+ : undefined;
116
+ jobTriggerKind = page.url.searchParams.get('job_trigger_kind') ?? undefined;
117
+ // Handled on the main page
118
+ minTs = page.url.searchParams.get('min_ts') ?? undefined;
119
+ maxTs = page.url.searchParams.get('max_ts') ?? undefined;
120
+ schedulePath = page.url.searchParams.get('schedule_path') ?? undefined;
121
+ perPage = parseInt(page.url.searchParams.get('per_page') ?? DEFAULT_RUNS_PER_PAGE.toString());
122
+ jobKindsCat = page.url.searchParams.get('job_kinds') ?? 'runs';
123
+ allWorkspaces = page.url.searchParams.get('all_workspaces') == 'true';
124
+ }
125
+ let queue_count = $state(undefined);
126
+ let suspended_count = $state(undefined);
127
+ let jobKinds = $state(undefined);
128
+ let loading = $state(false);
46
129
  let paths = $state([]);
47
130
  let usernames = $state([]);
48
131
  let folders = $state([]);
132
+ let completedJobs = $state(undefined);
133
+ let extendedJobs = $state(undefined);
49
134
  let argError = $state('');
50
135
  let resultError = $state('');
51
136
  let filterTimeout = undefined;
@@ -63,52 +148,173 @@ function getAutoRefresh() {
63
148
  return true;
64
149
  }
65
150
  }
66
- let manualDatePicker = $state(undefined);
151
+ let innerWidth = $state(window.innerWidth);
152
+ let jobsLoader = $state(undefined);
153
+ let externalJobs = $state(undefined);
67
154
  let graph = $state(typeOfChart(page.url.searchParams.get('graph')));
68
155
  let graphIsRunsChart = $state(untrack(() => graph) === 'RunChart');
69
- let innerWidth = $state(window.innerWidth);
70
- let jobsLoader = useJobsLoader(() => ({
71
- filters,
72
- computeMinAndMax: manualDatePicker?.computeMinMax,
73
- jobKinds,
74
- autoRefresh,
75
- argError,
76
- resultError,
77
- lookback: graphIsRunsChart ? 0 : lookback,
78
- onSetPerPage: (p) => (filters.per_page = p),
79
- onSetMinMaxTs: (minTs, maxTs) => ((filters.min_ts = minTs), (filters.max_ts = maxTs)),
80
- currentWorkspace: $workspaceStore ?? ''
81
- }));
82
- let lastFetchWentToEnd = $derived(jobsLoader.lastFetchWentToEnd);
83
- let queue_count = $derived(jobsLoader.queue_count);
84
- let suspended_count = $derived(jobsLoader.suspended_count);
85
- let loading = $derived(jobsLoader.loading);
86
- let externalJobs = $derived(jobsLoader.externalJobs);
87
- let extendedJobs = $derived(jobsLoader.extendedJobs);
88
- // Avoid flicker, but still show empty if loading takes too long
89
- let debouncedCompletedJobs = new StaleWhileLoading(() => jobsLoader.completedJobs);
90
- let debouncedJobs = new StaleWhileLoading(() => jobsLoader.jobs);
91
- let completedJobs = $derived(jobsLoader.completedJobs ?? debouncedCompletedJobs.current);
92
- let jobs = $derived(jobsLoader.jobs ?? debouncedJobs.current);
156
+ let manualDatePicker = $state(undefined);
93
157
  let runsTable = $state(undefined);
158
+ function setQuery(replaceState) {
159
+ let searchParams = new URLSearchParams();
160
+ if (user) {
161
+ searchParams.set('user', user);
162
+ }
163
+ else {
164
+ searchParams.delete('user');
165
+ }
166
+ if (worker) {
167
+ searchParams.set('worker', worker);
168
+ }
169
+ else {
170
+ searchParams.delete('worker');
171
+ }
172
+ if (folder) {
173
+ searchParams.set('folder', folder);
174
+ }
175
+ else {
176
+ searchParams.delete('folder');
177
+ }
178
+ if (success !== undefined) {
179
+ searchParams.set('success', success.toString());
180
+ }
181
+ else {
182
+ searchParams.delete('success');
183
+ }
184
+ if (showSkipped) {
185
+ searchParams.set('show_skipped', showSkipped.toString());
186
+ }
187
+ else {
188
+ searchParams.delete('show_skipped');
189
+ }
190
+ if (showSchedules) {
191
+ searchParams.set('show_schedules', showSchedules.toString());
192
+ }
193
+ else {
194
+ searchParams.delete('show_schedules');
195
+ }
196
+ if (showFutureJobs) {
197
+ searchParams.set('show_future_jobs', showFutureJobs.toString());
198
+ }
199
+ else {
200
+ searchParams.delete('show_future_jobs');
201
+ }
202
+ if (allWorkspaces && $workspaceStore == 'admins') {
203
+ searchParams.set('all_workspaces', allWorkspaces.toString());
204
+ searchParams.set('workspace', 'admins');
205
+ }
206
+ else {
207
+ searchParams.delete('all_workspaces');
208
+ }
209
+ // ArgFilter is an object. Encode it to a string
210
+ if (argFilter) {
211
+ searchParams.set('arg', encodeURIComponent(JSON.stringify(argFilter)));
212
+ }
213
+ else {
214
+ searchParams.delete('arg');
215
+ }
216
+ if (resultFilter) {
217
+ searchParams.set('result', encodeURIComponent(JSON.stringify(resultFilter)));
218
+ }
219
+ else {
220
+ searchParams.delete('result');
221
+ }
222
+ if (jobTriggerKind) {
223
+ searchParams.set('job_trigger_kind', jobTriggerKind);
224
+ }
225
+ else {
226
+ searchParams.delete('job_trigger_kind');
227
+ }
228
+ if (schedulePath) {
229
+ searchParams.set('schedule_path', schedulePath);
230
+ }
231
+ else {
232
+ searchParams.delete('schedule_path');
233
+ }
234
+ if (jobKindsCat != 'runs') {
235
+ searchParams.set('job_kinds', jobKindsCat);
236
+ }
237
+ else {
238
+ searchParams.delete('job_kinds');
239
+ }
240
+ if (minTs) {
241
+ searchParams.set('min_ts', minTs);
242
+ }
243
+ else {
244
+ searchParams.delete('min_ts');
245
+ }
246
+ if (maxTs) {
247
+ searchParams.set('max_ts', maxTs);
248
+ }
249
+ else {
250
+ searchParams.delete('max_ts');
251
+ }
252
+ if (concurrencyKey) {
253
+ searchParams.set('concurrency_key', concurrencyKey);
254
+ }
255
+ else {
256
+ searchParams.delete('concurrency_key');
257
+ }
258
+ if (tag) {
259
+ searchParams.set('tag', tag);
260
+ }
261
+ else {
262
+ searchParams.delete('tag');
263
+ }
264
+ if (label) {
265
+ searchParams.set('label', label);
266
+ }
267
+ else {
268
+ searchParams.delete('label');
269
+ }
270
+ if (allowWildcards) {
271
+ searchParams.set('allow_wildcards', allowWildcards.toString());
272
+ }
273
+ else {
274
+ searchParams.delete('allow_wildcards');
275
+ }
276
+ if (graph != 'RunChart') {
277
+ searchParams.set('graph', graph);
278
+ }
279
+ else {
280
+ searchParams.delete('graph');
281
+ }
282
+ if (perPage != DEFAULT_RUNS_PER_PAGE) {
283
+ searchParams.set('per_page', perPage.toString());
284
+ }
285
+ else {
286
+ searchParams.delete('per_page');
287
+ }
288
+ let newPath = path ? `/${path}` : '';
289
+ let newUrl = `${base}/runs${newPath}?${searchParams.toString()}`;
290
+ if (page.url.searchParams.toString() != searchParams.toString() ||
291
+ page.url.pathname != newUrl.split('?')[0]) {
292
+ // replaceState(newUrl.toString(), $page.state)
293
+ goto(newUrl.toString(), { replaceState: replaceState, keepFocus: true });
294
+ }
295
+ }
94
296
  function reloadJobsWithoutFilterError() {
95
297
  if (resultError == '' && argError == '') {
96
298
  filterTimeout && clearTimeout(filterTimeout);
97
299
  filterTimeout = setTimeout(() => {
98
- jobsLoader?.loadJobs(true);
300
+ jobsLoader?.loadJobs(minTs, maxTs, true);
99
301
  }, 2000);
100
302
  }
101
303
  }
102
304
  function reset() {
103
- filters.min_ts = null;
104
- filters.max_ts = null;
305
+ path = page.params.path ?? null;
306
+ minTs = undefined;
307
+ maxTs = undefined;
308
+ jobs = undefined;
309
+ completedJobs = undefined;
310
+ lastFetchWentToEnd = false;
105
311
  selectedManualDate = 0;
106
312
  selectedIds = [];
107
- filters.schedule_path = null;
313
+ schedulePath = undefined;
108
314
  batchReRunOptions = { flow: {}, script: {} };
109
315
  selectionMode = false;
110
316
  selectedWorkspace = undefined;
111
- jobsLoader?.loadJobs(true);
317
+ jobsLoader?.loadJobs(minTs, maxTs, true);
112
318
  }
113
319
  async function loadUsernames() {
114
320
  usernames = await UserService.listUsernames({ workspace: $workspaceStore });
@@ -123,27 +329,89 @@ async function loadPaths() {
123
329
  const npaths_flows = await FlowService.listFlowPaths({ workspace: $workspaceStore ?? '' });
124
330
  paths = npaths_scripts.concat(npaths_flows).sort();
125
331
  }
126
- function resetAndFilterBy(setter) {
127
- return (e) => {
128
- filters.path = null;
129
- filters.user = null;
130
- filters.folder = null;
131
- filters.label = null;
132
- filters.concurrency_key = null;
133
- filters.tag = null;
134
- filters.worker = null;
135
- filters.schedule_path = null;
136
- setter(e.detail);
137
- };
332
+ function filterByPath(e) {
333
+ path = e.detail;
334
+ user = null;
335
+ folder = null;
336
+ label = null;
337
+ concurrencyKey = null;
338
+ tag = null;
339
+ schedulePath = undefined;
340
+ worker = null;
341
+ }
342
+ function filterByUser(e) {
343
+ path = null;
344
+ folder = null;
345
+ user = e.detail;
346
+ label = null;
347
+ concurrencyKey = null;
348
+ tag = null;
349
+ schedulePath = undefined;
350
+ }
351
+ function filterByFolder(e) {
352
+ path = null;
353
+ user = null;
354
+ folder = e.detail;
355
+ label = null;
356
+ concurrencyKey = null;
357
+ tag = null;
358
+ schedulePath = undefined;
359
+ worker = null;
138
360
  }
139
- const filterByPath = resetAndFilterBy((s) => (filters.path = s));
140
- const filterByUser = resetAndFilterBy((s) => (filters.user = s));
141
- const filterByFolder = resetAndFilterBy((s) => (filters.folder = s));
142
- const filterByLabel = resetAndFilterBy((s) => (filters.label = s));
143
- const filterByConcurrencyKey = resetAndFilterBy((s) => (filters.concurrency_key = s));
144
- const filterByTag = resetAndFilterBy((s) => (filters.tag = s));
145
- const filterBySchedule = resetAndFilterBy((s) => (filters.schedule_path = s));
146
- const filterByWorker = resetAndFilterBy((s) => (filters.worker = s));
361
+ function filterByLabel(e) {
362
+ path = null;
363
+ user = null;
364
+ folder = null;
365
+ label = e.detail;
366
+ concurrencyKey = null;
367
+ tag = null;
368
+ schedulePath = undefined;
369
+ worker = null;
370
+ allowWildcards = false;
371
+ }
372
+ function filterByConcurrencyKey(e) {
373
+ path = null;
374
+ user = null;
375
+ folder = null;
376
+ label = null;
377
+ concurrencyKey = e.detail;
378
+ tag = null;
379
+ schedulePath = undefined;
380
+ worker = null;
381
+ }
382
+ function filterByTag(e) {
383
+ path = null;
384
+ user = null;
385
+ folder = null;
386
+ label = null;
387
+ concurrencyKey = null;
388
+ tag = e.detail;
389
+ schedulePath = undefined;
390
+ worker = null;
391
+ allowWildcards = false;
392
+ }
393
+ function filterBySchedule(e) {
394
+ path = null;
395
+ user = null;
396
+ folder = null;
397
+ label = null;
398
+ concurrencyKey = null;
399
+ tag = null;
400
+ schedulePath = e.detail;
401
+ worker = null;
402
+ }
403
+ function filterByWorker(e) {
404
+ path = null;
405
+ user = null;
406
+ folder = null;
407
+ label = null;
408
+ concurrencyKey = null;
409
+ tag = null;
410
+ schedulePath = undefined;
411
+ worker = e.detail;
412
+ allowWildcards = false;
413
+ }
414
+ let calendarChangeTimeout = $state(undefined);
147
415
  function typeOfChart(s) {
148
416
  switch (s) {
149
417
  case 'RunChart':
@@ -170,47 +438,43 @@ async function onSetSelectionMode(mode) {
170
438
  }
171
439
  }
172
440
  function getSelectedFilters() {
173
- const argFilter = filters.arg && JSON.parse(filters.arg);
174
- const resultFilter = filters.result && JSON.parse(filters.result);
175
441
  return {
176
442
  workspace: $workspaceStore ?? '',
177
- startedBefore: filters.max_ts ?? undefined,
178
- startedAfter: filters.min_ts ?? undefined,
179
- schedulePath: filters.schedule_path ?? undefined,
180
- scriptPathExact: filters.path === null || filters.path === '' ? undefined : filters.path,
181
- createdBy: filters.user || undefined,
182
- scriptPathStart: filters.folder ? `f/${filters.folder}/` : undefined,
443
+ startedBefore: maxTs,
444
+ startedAfter: minTs,
445
+ schedulePath,
446
+ scriptPathExact: path === null || path === '' ? undefined : path,
447
+ createdBy: user === null || user === '' ? undefined : user,
448
+ scriptPathStart: folder === null || folder === '' ? undefined : `f/${folder}/`,
183
449
  jobKinds: jobKinds == '' ? undefined : jobKinds,
184
- success: filters.success == 'success' ? true : filters.success == 'failure' ? false : undefined,
185
- running: filters.success == 'running' || filters.success == 'suspended'
450
+ success: success == 'success' ? true : success == 'failure' ? false : undefined,
451
+ running: success == 'running' || success == 'suspended'
186
452
  ? true
187
- : filters.success == 'waiting'
453
+ : success == 'waiting'
188
454
  ? false
189
455
  : undefined,
190
- isSkipped: filters.show_skipped ? undefined : false,
456
+ isSkipped: showSkipped ? undefined : false,
191
457
  // isFlowStep: jobKindsCat != 'all' ? false : undefined,
192
- hasNullParent: filters.path != undefined || filters.path != undefined || filters.job_kinds != 'all'
458
+ hasNullParent: path != undefined || path != undefined || jobKindsCat != 'all' ? true : undefined,
459
+ label: label === null || label === '' ? undefined : label,
460
+ tag: tag === null || tag === '' ? undefined : tag,
461
+ isNotSchedule: showSchedules == false ? true : undefined,
462
+ suspended: success == 'waiting' ? false : success == 'suspended' ? true : undefined,
463
+ scheduledForBeforeNow: showFutureJobs == false || success == 'waiting' || success == 'suspended'
193
464
  ? true
194
465
  : undefined,
195
- label: filters.label || undefined,
196
- tag: filters.tag || undefined,
197
- isNotSchedule: filters.show_schedules == false ? true : undefined,
198
- suspended: filters.success == 'waiting' ? false : filters.success == 'suspended' ? true : undefined,
199
- scheduledForBeforeNow: filters.show_future_jobs == false ||
200
- filters.success == 'waiting' ||
201
- filters.success == 'suspended'
202
- ? true
466
+ args: argFilter && argFilter != '{}' && argFilter != '' && argError == '' ? argFilter : undefined,
467
+ result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
468
+ ? resultFilter
203
469
  : undefined,
204
- args: argFilter && Object.keys(argFilter).length && !argError ? argFilter : undefined,
205
- result: resultFilter && Object.keys(resultFilter).length && !resultError ? resultFilter : undefined,
206
- jobTriggerKind: filters.job_trigger_kind || undefined,
207
- allWorkspaces: filters.all_workspaces || undefined,
208
- allowWildcards: filters.allow_wildcards || undefined
470
+ jobTriggerKind,
471
+ allWorkspaces: allWorkspaces ? true : undefined,
472
+ allowWildcards: allowWildcards ? true : undefined
209
473
  };
210
474
  }
211
475
  $effect(() => {
212
- if (filters.job_trigger_kind === 'schedule' && !filters.show_schedules) {
213
- filters.show_schedules = true;
476
+ if (jobTriggerKind === 'schedule' && !showSchedules) {
477
+ showSchedules = true;
214
478
  }
215
479
  });
216
480
  async function cancelJobs(uuidsToCancel, forceCancel = false) {
@@ -220,7 +484,7 @@ async function cancelJobs(uuidsToCancel, forceCancel = false) {
220
484
  forceCancel: forceCancel
221
485
  });
222
486
  selectedIds = [];
223
- jobsLoader?.loadJobs(true, true);
487
+ jobsLoader?.loadJobs(minTs, maxTs, true, true);
224
488
  sendUserToast(`Canceled ${uuids.length} jobs`);
225
489
  selectionMode = false;
226
490
  }
@@ -318,14 +582,14 @@ async function reRunJobs(jobIdsToReRun) {
318
582
  });
319
583
  selectedIds = [];
320
584
  batchReRunOptions = { flow: {}, script: {} };
321
- jobsLoader?.loadJobs(true, true);
585
+ jobsLoader?.loadJobs(minTs, maxTs, true, true);
322
586
  selectionMode = false;
323
587
  }
324
588
  async function onReRunFilteredJobs() {
325
589
  const selectedFilters = getSelectedFilters();
326
590
  selectedIds = [];
327
591
  loadingSelectedIds = true;
328
- if (filters.job_kinds !== 'runs') {
592
+ if (jobKindsCat !== 'runs') {
329
593
  sendUserToast('Batch re-run is only supported for scripts and flows', true);
330
594
  }
331
595
  selectedIds = await JobService.listFilteredJobsUuids({
@@ -349,28 +613,66 @@ function setLookback(lookbackInDays) {
349
613
  lookback = lookbackInDays;
350
614
  }
351
615
  async function loadExtra() {
352
- await jobsLoader?.loadExtraJobs();
616
+ if (jobsLoader) {
617
+ lastFetchWentToEnd = await jobsLoader.loadExtraJobs();
618
+ }
353
619
  }
354
620
  function jobsFilter(f) {
355
- filters.path = null;
356
- filters.user = null;
357
- filters.folder = null;
358
- filters.label = null;
359
- filters.concurrency_key = null;
360
- filters.tag = null;
361
- filters.worker = null;
362
- filters.schedule_path = null;
363
- if (filters.success == f) {
364
- filters.success = null;
621
+ path = null;
622
+ user = null;
623
+ folder = null;
624
+ label = null;
625
+ concurrencyKey = null;
626
+ schedulePath = undefined;
627
+ path = null;
628
+ tag = null;
629
+ worker = null;
630
+ if (success == f) {
631
+ success = undefined;
365
632
  }
366
633
  else {
367
- filters.success = f;
634
+ success = f;
368
635
  }
369
- filters.job_kinds = 'all';
636
+ jobKindsCat = 'all';
370
637
  }
371
638
  $effect(() => {
372
639
  loadingSelectedIds && selectedIds.length && setTimeout(() => (loadingSelectedIds = false), 250);
373
640
  });
641
+ $effect(() => {
642
+ ;
643
+ [
644
+ user,
645
+ worker,
646
+ label,
647
+ folder,
648
+ path,
649
+ success !== undefined,
650
+ showSkipped,
651
+ showSchedules,
652
+ showFutureJobs,
653
+ argFilter,
654
+ resultFilter,
655
+ jobTriggerKind,
656
+ schedulePath,
657
+ jobKindsCat,
658
+ concurrencyKey,
659
+ tag,
660
+ graph,
661
+ maxTs,
662
+ minTs,
663
+ allWorkspaces,
664
+ allowWildcards,
665
+ $workspaceStore,
666
+ perPage
667
+ ];
668
+ untrack(() => setQuery(false));
669
+ });
670
+ $effect(() => {
671
+ minTs || untrack(() => setQuery(true));
672
+ });
673
+ $effect(() => {
674
+ maxTs || untrack(() => setQuery(true));
675
+ });
374
676
  $effect(() => {
375
677
  if ($workspaceStore) {
376
678
  untrack(() => {
@@ -411,9 +713,47 @@ let tableTopBarWidth = $state(0);
411
713
  const smallScreenWidth = 1920;
412
714
  const verySmallScreenWidth = 1300;
413
715
  let forceCancelInPopup = $state(false);
414
- const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${filters.per_page} jobs are taken into account: a job that was started earlier than this limit will not be taken into account`);
716
+ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${perPage} jobs are taken into account: a job that was started earlier than this limit will not be taken into account`);
415
717
  </script>
416
718
 
719
+ <JobsLoader
720
+ {allowWildcards}
721
+ {allWorkspaces}
722
+ bind:jobs
723
+ {user}
724
+ {folder}
725
+ {path}
726
+ {worker}
727
+ {label}
728
+ {success}
729
+ {showSkipped}
730
+ {argFilter}
731
+ {resultFilter}
732
+ {jobTriggerKind}
733
+ {showSchedules}
734
+ {showFutureJobs}
735
+ {schedulePath}
736
+ {jobKindsCat}
737
+ computeMinAndMax={manualDatePicker?.computeMinMax}
738
+ bind:minTs
739
+ bind:maxTs
740
+ bind:jobKinds
741
+ bind:queue_count
742
+ bind:suspended_count
743
+ {autoRefresh}
744
+ bind:completedJobs
745
+ bind:externalJobs
746
+ bind:extendedJobs
747
+ {concurrencyKey}
748
+ {argError}
749
+ {resultError}
750
+ {tag}
751
+ bind:perPage
752
+ bind:loading
753
+ bind:this={jobsLoader}
754
+ lookback={graphIsRunsChart ? 0 : lookback}
755
+ />
756
+
417
757
  <ConfirmationModal
418
758
  title={askingForConfirmation?.title ?? ''}
419
759
  confirmationText={askingForConfirmation?.confirmBtnText ?? ''}
@@ -470,6 +810,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
470
810
  <svelte:window
471
811
  onpopstate={() => {
472
812
  reset()
813
+ loadFromQuery()
473
814
  }}
474
815
  />
475
816
 
@@ -503,7 +844,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
503
844
 
504
845
  <!-- Queue -->
505
846
  <RunsQueue
506
- success={filters.success}
847
+ {success}
507
848
  {queue_count}
508
849
  {suspended_count}
509
850
  onJobsWaiting={() => {
@@ -520,52 +861,70 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
520
861
  <!-- Dates -->
521
862
  <div class="flex flex-row gap-2">
522
863
  <RunOption label="From" for="min-datetimes">
523
- {#if filters.min_ts || filters.max_ts}
864
+ {#if minTs || maxTs}
524
865
  <input
525
866
  type="text"
526
867
  class="!text-sm text-primary !bg-surface-secondary h-9 !border-none"
527
- value={filters.min_ts
528
- ? new Date(filters.min_ts).toLocaleString()
529
- : 'zoom x axis to set min'}
868
+ value={minTs ? new Date(minTs).toLocaleString() : 'zoom x axis to set min'}
530
869
  disabled
531
870
  name="min-datetimes"
532
871
  />
533
872
  {/if}
534
873
  <CalendarPicker
535
874
  clearable={true}
536
- bind:date={filters.min_ts}
537
- on:clear={() => (filters.min_ts = null)}
875
+ date={minTs}
538
876
  label="From"
539
- class={filters.min_ts || filters.max_ts
540
- ? ''
541
- : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
877
+ class={minTs || maxTs ? '' : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
878
+ on:change={async ({ detail }) => {
879
+ minTs = new Date(detail).toISOString()
880
+ calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
881
+ calendarChangeTimeout = setTimeout(() => {
882
+ jobsLoader?.loadJobs(minTs, maxTs, true)
883
+ }, 1000)
884
+ }}
885
+ on:clear={async () => {
886
+ minTs = undefined
887
+ calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
888
+ calendarChangeTimeout = setTimeout(() => {
889
+ jobsLoader?.loadJobs(minTs, maxTs, true)
890
+ }, 1000)
891
+ }}
542
892
  />
543
893
  </RunOption>
544
894
 
545
895
  <RunOption label="To" for="max-datetimes">
546
- {#if filters.max_ts || filters.min_ts}
896
+ {#if maxTs || minTs}
547
897
  <input
548
898
  type="text"
549
899
  class="!text-sm text-primary !bg-surface-secondary h-9 !border-none"
550
- value={filters.max_ts
551
- ? new Date(filters.max_ts).toLocaleString()
552
- : 'zoom x axis to set max'}
900
+ value={maxTs ? new Date(maxTs).toLocaleString() : 'zoom x axis to set max'}
553
901
  name="max-datetimes"
554
902
  disabled
555
903
  />
556
904
  {/if}
557
905
  <CalendarPicker
558
906
  clearable={true}
559
- on:clear={() => (filters.max_ts = null)}
560
- bind:date={filters.max_ts}
907
+ date={maxTs}
561
908
  label="To"
562
- class={filters.min_ts || filters.max_ts
563
- ? ''
564
- : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
909
+ class={minTs || maxTs ? '' : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
910
+ on:change={async ({ detail }) => {
911
+ maxTs = new Date(detail).toISOString()
912
+ calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
913
+ calendarChangeTimeout = setTimeout(() => {
914
+ jobsLoader?.loadJobs(minTs, maxTs, true)
915
+ }, 1000)
916
+ }}
917
+ on:clear={async () => {
918
+ maxTs = undefined
919
+ calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
920
+ calendarChangeTimeout = setTimeout(() => {
921
+ jobsLoader?.loadJobs(minTs, maxTs, true)
922
+ }, 1000)
923
+ }}
565
924
  />
566
925
  </RunOption>
567
926
 
568
- {#if filters.min_ts || filters.max_ts}
927
+ {#if minTs || maxTs}
569
928
  <RunOption label="Reset" for="reset" noLabel>
570
929
  <Button variant="default" size="xs" onClick={reset} btnClasses="h-9">Reset</Button>
571
930
  </RunOption>
@@ -575,28 +934,28 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
575
934
  <!-- Filters 1 -->
576
935
  <div class="flex flex-row gap-2">
577
936
  <RunsFilter
578
- bind:allowWildcards={filters.allow_wildcards}
579
- bind:user={filters.user}
580
- bind:folder={filters.folder}
581
- bind:label={filters.label}
582
- bind:concurrencyKey={filters.concurrency_key}
583
- bind:tag={filters.tag}
584
- bind:worker={filters.worker}
585
- bind:showSkipped={filters.show_skipped}
586
- bind:path={filters.path}
587
- bind:success={filters.success}
588
- bind:jobTriggerKind={filters.job_trigger_kind}
937
+ bind:allowWildcards
938
+ bind:showSkipped
939
+ bind:user
940
+ bind:folder
941
+ bind:label
942
+ bind:concurrencyKey
943
+ bind:tag
944
+ bind:worker
945
+ bind:path
946
+ bind:success
947
+ bind:argFilter
948
+ bind:resultFilter
949
+ bind:jobTriggerKind
589
950
  bind:argError
590
951
  bind:resultError
591
- bind:jobKindsCat={filters.job_kinds}
592
- bind:allWorkspaces={filters.all_workspaces}
593
- bind:schedulePath={filters.schedule_path}
594
- bind:argFilter={filters.arg}
595
- bind:resultFilter={filters.result}
952
+ bind:jobKindsCat
953
+ bind:allWorkspaces
954
+ bind:schedulePath
596
955
  on:change={reloadJobsWithoutFilterError}
597
956
  on:successChange={(e) => {
598
- if (e.detail == 'running' && filters.max_ts != undefined) {
599
- filters.max_ts = null
957
+ if (e.detail == 'running' && maxTs != undefined) {
958
+ maxTs = undefined
600
959
  }
601
960
  }}
602
961
  {usernames}
@@ -604,7 +963,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
604
963
  {paths}
605
964
  mobile={innerWidth < verySmallScreenWidth}
606
965
  small={innerWidth < smallScreenWidth}
607
- calendarSmall={!filters.min_ts && !filters.max_ts}
966
+ calendarSmall={!minTs && !maxTs}
608
967
  />
609
968
  </div>
610
969
  </div>
@@ -678,17 +1037,17 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
678
1037
  {lastFetchWentToEnd}
679
1038
  bind:selectedIds
680
1039
  canSelect={!selectionMode}
681
- minTimeSet={filters.min_ts}
682
- maxTimeSet={filters.max_ts}
1040
+ minTimeSet={minTs}
1041
+ maxTimeSet={maxTs}
683
1042
  totalRowsFetched={jobs?.length ?? 0}
684
- maxIsNow={filters.max_ts == undefined}
1043
+ maxIsNow={maxTs == undefined}
685
1044
  onLoadExtra={loadExtra}
686
1045
  jobs={completedJobs}
687
1046
  onZoom={async (zoom) => {
688
- filters.min_ts = zoom.min.toISOString()
689
- filters.max_ts = zoom.max.toISOString()
1047
+ minTs = zoom.min.toISOString()
1048
+ maxTs = zoom.max.toISOString()
690
1049
  manualDatePicker?.resetChoice()
691
- jobsLoader?.loadJobs(true)
1050
+ jobsLoader?.loadJobs(minTs, maxTs, true)
692
1051
  }}
693
1052
  onPointClicked={(ids) => {
694
1053
  runsTable?.scrollToRun(ids)
@@ -696,14 +1055,14 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
696
1055
  />
697
1056
  {:else if graph === 'ConcurrencyChart'}
698
1057
  <ConcurrentJobsChart
699
- minTimeSet={filters.min_ts}
700
- maxTimeSet={filters.max_ts}
701
- maxIsNow={filters.max_ts == undefined}
1058
+ minTimeSet={minTs}
1059
+ maxTimeSet={maxTs}
1060
+ maxIsNow={maxTs == undefined}
702
1061
  {extendedJobs}
703
1062
  onZoom={async (zoom) => {
704
- filters.min_ts = zoom.min.toISOString()
705
- filters.max_ts = zoom.max.toISOString()
706
- jobsLoader?.loadJobs(true)
1063
+ minTs = zoom.min.toISOString()
1064
+ maxTs = zoom.max.toISOString()
1065
+ jobsLoader?.loadJobs(minTs, maxTs, true)
707
1066
  }}
708
1067
  />
709
1068
  {/if}
@@ -756,11 +1115,17 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
756
1115
  </div>
757
1116
 
758
1117
  <div class="flex flex-row gap-4 items-center">
759
- {#if !filters.job_trigger_kind}
1118
+ {#if !jobTriggerKind}
760
1119
  <div class="flex flex-row gap-1 items-center">
761
1120
  <Toggle
762
1121
  id="cron-schedules"
763
- bind:checked={filters.show_schedules}
1122
+ bind:checked={showSchedules}
1123
+ on:change={() => {
1124
+ localStorage.setItem(
1125
+ 'show_schedules_in_run',
1126
+ showSchedules ? 'true' : 'false'
1127
+ )
1128
+ }}
764
1129
  options={tableTopBarWidth < 800 || selectionMode
765
1130
  ? {}
766
1131
  : { right: 'Schedules' }}
@@ -774,7 +1139,10 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
774
1139
  <div class="flex flex-row gap-1 items-center">
775
1140
  <Toggle
776
1141
  size="sm"
777
- bind:checked={filters.show_future_jobs}
1142
+ bind:checked={showFutureJobs}
1143
+ on:change={() => {
1144
+ localStorage.setItem('show_future_jobs', showFutureJobs ? 'true' : 'false')
1145
+ }}
778
1146
  id="planned-later"
779
1147
  options={tableTopBarWidth < 800 || selectionMode
780
1148
  ? {}
@@ -787,14 +1155,15 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
787
1155
  <div class="flex flex-row gap-2 items-center">
788
1156
  <ManuelDatePicker
789
1157
  on:loadJobs={() => {
790
- jobsLoader?.loadJobs(true)
1158
+ lastFetchWentToEnd = false
1159
+ jobsLoader?.loadJobs(minTs, maxTs, true)
791
1160
  }}
792
- bind:minTs={filters.min_ts}
793
- bind:maxTs={filters.max_ts}
1161
+ bind:minTs
1162
+ bind:maxTs
794
1163
  bind:selectedManualDate
795
1164
  {loading}
796
1165
  bind:this={manualDatePicker}
797
- numberOfLastJobsToFetch={filters.per_page}
1166
+ numberOfLastJobsToFetch={perPage}
798
1167
  />
799
1168
  <Toggle
800
1169
  size="sm"
@@ -817,11 +1186,11 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
817
1186
  externalJobs={externalJobs ?? []}
818
1187
  omittedObscuredJobs={extendedJobs?.omitted_obscured_jobs ?? false}
819
1188
  showExternalJobs={!graphIsRunsChart}
820
- activeLabel={filters.label}
1189
+ activeLabel={label}
821
1190
  {selectionMode}
822
- {lastFetchWentToEnd}
823
1191
  bind:selectedIds
824
1192
  bind:selectedWorkspace
1193
+ bind:lastFetchWentToEnd
825
1194
  on:loadExtra={loadExtra}
826
1195
  on:filterByPath={filterByPath}
827
1196
  on:filterByUser={filterByUser}
@@ -832,7 +1201,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
832
1201
  on:filterBySchedule={filterBySchedule}
833
1202
  on:filterByWorker={filterByWorker}
834
1203
  bind:this={runsTable}
835
- perPage={filters.per_page}
1204
+ {perPage}
836
1205
  ></RunsTable>
837
1206
  {:else}
838
1207
  <div class="gap-1 flex flex-col">
@@ -849,13 +1218,13 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
849
1218
  <Select
850
1219
  class="w-20"
851
1220
  bind:value={
852
- () => filters.per_page,
1221
+ () => perPage,
853
1222
  (newPerPage) => {
854
- filters.per_page = newPerPage
1223
+ perPage = newPerPage
855
1224
  if (newPerPage > (jobs?.length ?? 1000)) loadExtra()
856
1225
  }
857
1226
  }
858
- onCreateItem={(v) => (filters.per_page = parseInt(v))}
1227
+ onCreateItem={(v) => (perPage = parseInt(v))}
859
1228
  items={[
860
1229
  { value: 25, label: '25' },
861
1230
  { value: 100, label: '100' },