windmill-components 1.309.6 → 1.339.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/package/assets/app.css +22 -1
  2. package/package/autosize.js +1 -1
  3. package/package/common.d.ts +8 -0
  4. package/package/common.js +5 -1
  5. package/package/components/AllFlowLogs.svelte +30 -0
  6. package/package/components/AllFlowLogs.svelte.d.ts +18 -0
  7. package/package/components/ApiConnectForm.svelte +10 -4
  8. package/package/components/AppConnectDrawer.svelte +74 -0
  9. package/package/components/AppConnectDrawer.svelte.d.ts +20 -0
  10. package/package/components/AppConnectInner.svelte +513 -0
  11. package/package/components/AppConnectInner.svelte.d.ts +28 -0
  12. package/package/components/ArgInfo.svelte +19 -3
  13. package/package/components/ArgInput.svelte +73 -16
  14. package/package/components/ArgInput.svelte.d.ts +4 -0
  15. package/package/components/ConcurrentJobsChart.svelte +212 -0
  16. package/package/components/ConcurrentJobsChart.svelte.d.ts +23 -0
  17. package/package/components/CustomOauth.svelte +2 -2
  18. package/package/components/DateInput.svelte +47 -0
  19. package/package/components/DateInput.svelte.d.ts +24 -0
  20. package/package/components/DateTimeInput.svelte +25 -3
  21. package/package/components/DefaultScripts.svelte +5 -8
  22. package/package/components/DefaultTags.svelte +3 -2
  23. package/package/components/DefaultTags.svelte.d.ts +3 -1
  24. package/package/components/DefaultTagsInner.svelte +1 -10
  25. package/package/components/DefaultTagsInner.svelte.d.ts +3 -1
  26. package/package/components/Dev.svelte +70 -9
  27. package/package/components/DiffEditor.svelte +3 -0
  28. package/package/components/DisplayResult.svelte +186 -123
  29. package/package/components/DisplayResult.svelte.d.ts +1 -0
  30. package/package/components/DropdownV2.svelte.d.ts +2 -2
  31. package/package/components/EditableSchemaForm.svelte +3 -0
  32. package/package/components/Editor.svelte +110 -93
  33. package/package/components/Editor.svelte.d.ts +4 -2
  34. package/package/components/EditorBar.svelte +99 -8
  35. package/package/components/EditorBar.svelte.d.ts +0 -1
  36. package/package/components/ErrorOrRecoveryHandler.svelte +0 -1
  37. package/package/components/FlowGraphViewer.svelte +1 -0
  38. package/package/components/FlowGraphViewerStep.svelte +19 -1
  39. package/package/components/FlowJobResult.svelte +13 -0
  40. package/package/components/FlowJobResult.svelte.d.ts +3 -0
  41. package/package/components/FlowMetadata.svelte +40 -35
  42. package/package/components/FlowMetadata.svelte.d.ts +3 -1
  43. package/package/components/FlowPreviewContent.svelte +13 -6
  44. package/package/components/FlowStatusViewerInner.svelte +46 -2
  45. package/package/components/HighlightCode.svelte +3 -0
  46. package/package/components/InputTransformForm.svelte +3 -0
  47. package/package/components/InstanceSettings.svelte +163 -16
  48. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  49. package/package/components/JobLogs.svelte +12 -0
  50. package/package/components/JobLogs.svelte.d.ts +16 -0
  51. package/package/components/JobStatus.svelte +1 -1
  52. package/package/components/Label.svelte +1 -1
  53. package/package/components/Label.svelte.d.ts +1 -0
  54. package/package/components/LightweightArgInput.svelte +294 -268
  55. package/package/components/LightweightArgInput.svelte.d.ts +3 -0
  56. package/package/components/LightweightResourcePicker.svelte +74 -26
  57. package/package/components/LightweightSchemaForm.svelte +25 -24
  58. package/package/components/LogViewer.svelte +52 -15
  59. package/package/components/LogViewer.svelte.d.ts +1 -0
  60. package/package/components/Login.svelte +288 -0
  61. package/package/components/Login.svelte.d.ts +19 -0
  62. package/package/components/ModulePreviewForm.svelte +3 -0
  63. package/package/components/NoMainFuncBadge.svelte +8 -0
  64. package/package/components/NoMainFuncBadge.svelte.d.ts +14 -0
  65. package/package/components/OauthExtraParams.svelte +1 -1
  66. package/package/components/OauthScopes.svelte +1 -1
  67. package/package/components/ObjectStoreConfigSettings.svelte +12 -1
  68. package/package/components/ObjectStoreConfigSettings.svelte.d.ts +1 -0
  69. package/package/components/ParqetTableRenderer.svelte +12 -16
  70. package/package/components/Password.svelte +1 -0
  71. package/package/components/Password.svelte.d.ts +2 -0
  72. package/package/components/PasswordArgInput.svelte +49 -0
  73. package/package/components/PasswordArgInput.svelte.d.ts +17 -0
  74. package/package/components/PropertyRow.svelte +10 -2
  75. package/package/components/QueueMetricsDrawer.svelte +225 -0
  76. package/package/components/QueueMetricsDrawer.svelte.d.ts +18 -0
  77. package/package/components/ResourceEditor.svelte +1 -0
  78. package/package/components/ResourcePicker.svelte +3 -7
  79. package/package/components/ResultJobLoader.svelte +2 -2
  80. package/package/components/ResultJobLoader.svelte.d.ts +9 -9
  81. package/package/components/S3FilePicker.svelte +1 -1
  82. package/package/components/SavedInputs.svelte +49 -13
  83. package/package/components/ScheduleEditorInner.svelte +255 -228
  84. package/package/components/SchemaEditor.svelte +5 -3
  85. package/package/components/SchemaEditor.svelte.d.ts +2 -0
  86. package/package/components/SchemaForm.svelte +5 -0
  87. package/package/components/SchemaForm.svelte.d.ts +1 -0
  88. package/package/components/SchemaModal.svelte +101 -8
  89. package/package/components/SchemaModal.svelte.d.ts +2 -0
  90. package/package/components/ScriptBuilder.svelte +15 -8
  91. package/package/components/ScriptBuilder.svelte.d.ts +1 -0
  92. package/package/components/ScriptEditor.svelte +1 -2
  93. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  94. package/package/components/SimpleEditor.svelte +4 -1
  95. package/package/components/StringTypeNarrowing.svelte +43 -24
  96. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -0
  97. package/package/components/TemplateEditor.svelte +1 -0
  98. package/package/components/TestJobLoader.svelte +14 -5
  99. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  100. package/package/components/Toggle.svelte +1 -1
  101. package/package/components/Tooltip.svelte +8 -2
  102. package/package/components/Tooltip.svelte.d.ts +1 -0
  103. package/package/components/WorkspaceGroup.svelte +74 -9
  104. package/package/components/WorkspaceGroup.svelte.d.ts +1 -0
  105. package/package/components/app_connect.d.ts +7 -0
  106. package/package/components/app_connect.js +78 -0
  107. package/package/components/apps/components/buttons/AppButton.svelte +0 -1
  108. package/package/components/apps/components/display/AppAlert.svelte +1 -1
  109. package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
  110. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -2
  111. package/package/components/apps/components/display/AppDownload.svelte +1 -1
  112. package/package/components/apps/components/display/AppIcon.svelte +1 -1
  113. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +2 -2
  114. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +3 -3
  115. package/package/components/apps/components/display/AppMap.svelte +3 -2
  116. package/package/components/apps/components/display/AppMenu.svelte +1 -1
  117. package/package/components/apps/components/display/AppPdf.svelte +3 -11
  118. package/package/components/apps/components/display/AppText.svelte +7 -2
  119. package/package/components/apps/components/display/charts/AppAgCharts.svelte +6 -3
  120. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +32 -30
  121. package/package/components/apps/components/display/dbtable/InsertRow.svelte +3 -6
  122. package/package/components/apps/components/display/dbtable/queries/delete.js +1 -1
  123. package/package/components/apps/components/display/dbtable/queries/insert.js +1 -12
  124. package/package/components/apps/components/display/dbtable/queries/select.js +1 -1
  125. package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
  126. package/package/components/apps/components/display/dbtable/utils.d.ts +0 -1
  127. package/package/components/apps/components/display/dbtable/utils.js +0 -83
  128. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +75 -44
  129. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +5 -1
  130. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +172 -0
  131. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +27 -0
  132. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +38 -0
  133. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +28 -0
  134. package/package/components/apps/components/display/table/AppAggridTable.svelte +189 -56
  135. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
  136. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +11 -2
  137. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -0
  138. package/package/components/apps/components/display/table/AppCell.svelte +1 -3
  139. package/package/components/apps/components/display/table/AppTable.svelte +320 -281
  140. package/package/components/apps/components/display/table/AppTableFooter.svelte +42 -23
  141. package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -2
  142. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +119 -0
  143. package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +21 -0
  144. package/package/components/apps/components/display/table/theme/windmill-theme.css +656 -0
  145. package/package/components/apps/components/display/table/utils.js +22 -0
  146. package/package/components/apps/components/helpers/DebouncedInput.svelte +3 -2
  147. package/package/components/apps/components/helpers/NonRunnableComponent.svelte +35 -0
  148. package/package/components/apps/components/helpers/RefreshButton.svelte +30 -12
  149. package/package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -3
  150. package/package/components/apps/components/helpers/RefreshIndicator.svelte +19 -0
  151. package/package/components/apps/components/helpers/RefreshIndicator.svelte.d.ts +16 -0
  152. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  153. package/package/components/apps/components/helpers/RunnableComponent.svelte +86 -35
  154. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +8 -5
  155. package/package/components/apps/components/helpers/RunnableWrapper.svelte +7 -1
  156. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +5 -0
  157. package/package/components/apps/components/inputs/AppDateInput.svelte +5 -1
  158. package/package/components/apps/components/inputs/AppFileInput.svelte +11 -2
  159. package/package/components/apps/components/inputs/AppMultiSelect.svelte +56 -50
  160. package/package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +1 -0
  161. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +178 -0
  162. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte.d.ts +24 -0
  163. package/package/components/apps/components/inputs/AppNumberInput.svelte +1 -1
  164. package/package/components/apps/components/inputs/AppQuillEditor.svelte +26 -0
  165. package/package/components/apps/components/inputs/AppRangeInput.svelte +38 -37
  166. package/package/components/apps/components/inputs/AppSelect.svelte +21 -10
  167. package/package/components/apps/components/inputs/AppSliderInputs.svelte +26 -31
  168. package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
  169. package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
  170. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +7 -2
  171. package/package/components/apps/components/layout/AppContainer.svelte +1 -1
  172. package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
  173. package/package/components/apps/components/layout/AppDrawer.svelte +16 -3
  174. package/package/components/apps/components/layout/AppDrawer.svelte.d.ts +2 -0
  175. package/package/components/apps/components/layout/AppModal.svelte +85 -79
  176. package/package/components/apps/components/layout/AppModal.svelte.d.ts +2 -0
  177. package/package/components/apps/components/layout/AppStepper.svelte +2 -1
  178. package/package/components/apps/components/layout/AppTabs.svelte +1 -1
  179. package/package/components/apps/editor/AppEditor.svelte +3 -2
  180. package/package/components/apps/editor/AppEditorHeader.svelte +62 -31
  181. package/package/components/apps/editor/AppInputs.svelte +1 -1
  182. package/package/components/apps/editor/AppPreview.svelte +18 -7
  183. package/package/components/apps/editor/ComponentHeader.svelte +37 -1
  184. package/package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
  185. package/package/components/apps/editor/GridEditor.svelte +15 -6
  186. package/package/components/apps/editor/GridEditorMenu.svelte +120 -49
  187. package/package/components/apps/editor/GridViewer.svelte +14 -5
  188. package/package/components/apps/editor/GridViewer.svelte.d.ts +5 -1
  189. package/package/components/apps/editor/RecomputeAllComponents.svelte +17 -3
  190. package/package/components/apps/editor/RunnableJobPanel.svelte +9 -5
  191. package/package/components/apps/editor/SettingsPanel.svelte +6 -2
  192. package/package/components/apps/editor/SubGridEditor.svelte +44 -27
  193. package/package/components/apps/editor/appUtils.d.ts +6 -1
  194. package/package/components/apps/editor/appUtils.js +85 -7
  195. package/package/components/apps/editor/component/Component.svelte +78 -2
  196. package/package/components/apps/editor/component/Component.svelte.d.ts +3 -0
  197. package/package/components/apps/editor/component/components.d.ts +274 -21
  198. package/package/components/apps/editor/component/components.js +176 -12
  199. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  200. package/package/components/apps/editor/component/default-codes.js +241 -9
  201. package/package/components/apps/editor/component/sets.d.ts +3 -0
  202. package/package/components/apps/editor/component/sets.js +12 -2
  203. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +15 -2
  204. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +4 -2
  205. package/package/components/apps/editor/componentsPanel/cssUtils.js +1 -1
  206. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +5 -0
  207. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -5
  208. package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -1
  209. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +46 -6
  210. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +1 -1
  211. package/package/components/apps/editor/inlineScriptsPanel/utils.js +3 -1
  212. package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  213. package/package/components/apps/editor/settingsPanel/ComponentControl.svelte +1 -1
  214. package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +8 -5
  215. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +54 -4
  216. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +61 -0
  217. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +16 -0
  218. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +12 -10
  219. package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte +29 -32
  220. package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte.d.ts +0 -5
  221. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +27 -25
  222. package/package/components/apps/editor/settingsPanel/GridTab.svelte +1 -1
  223. package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte +2 -1
  224. package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte.d.ts +1 -0
  225. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +24 -3
  226. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +27 -1
  227. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  228. package/package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  229. package/package/components/apps/editor/settingsPanel/StylePanel.svelte +4 -3
  230. package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +3 -2
  231. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +1 -0
  232. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -4
  233. package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +6 -3
  234. package/package/components/apps/inputType.d.ts +4 -0
  235. package/package/components/apps/rx.d.ts +1 -1
  236. package/package/components/apps/rx.js +7 -0
  237. package/package/components/apps/svelte-grid/Grid.svelte +13 -4
  238. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +2 -1
  239. package/package/components/apps/svelte-grid/types.d.ts +1 -0
  240. package/package/components/apps/svelte-grid/utils/helper.js +1 -0
  241. package/package/components/apps/svelte-grid/utils/overlap.d.ts +3 -0
  242. package/package/components/apps/svelte-grid/utils/overlap.js +21 -0
  243. package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
  244. package/package/components/apps/svelte-select/lib/tailwind.css +1 -1
  245. package/package/components/apps/types.d.ts +1 -0
  246. package/package/components/apps/utils.js +13 -3
  247. package/package/components/auditLogs/AuditLogsTable.svelte +5 -2
  248. package/package/components/build_workers.js +1 -0
  249. package/package/components/common/alert/Alert.svelte +17 -17
  250. package/package/components/common/badge/Badge.svelte +6 -3
  251. package/package/components/common/badge/model.d.ts +1 -1
  252. package/package/components/common/button/Button.svelte +22 -14
  253. package/package/components/common/calendarPicker/CalendarPicker.svelte +2 -0
  254. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -0
  255. package/package/components/common/drawer/ConditionalPortal.svelte +9 -0
  256. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +18 -0
  257. package/package/components/common/drawer/Disposable.svelte +66 -0
  258. package/package/components/common/drawer/Disposable.svelte.d.ts +36 -0
  259. package/package/components/common/drawer/Drawer.svelte +29 -55
  260. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -1
  261. package/package/components/common/fileInput/FileInput.svelte +3 -3
  262. package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
  263. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  264. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  265. package/package/components/common/table/RowIcon.svelte +4 -4
  266. package/package/components/common/table/ScriptRow.svelte +12 -1
  267. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  268. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +45 -0
  269. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +24 -0
  270. package/package/components/copilot/CronGen.svelte +2 -2
  271. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  272. package/package/components/copilot/RegexGen.svelte +17 -39
  273. package/package/components/copilot/ScriptGen.svelte +14 -5
  274. package/package/components/copilot/StepInputGen.svelte +2 -1
  275. package/package/components/copilot/StepInputsGen.svelte +2 -1
  276. package/package/components/copilot/completion.js +60 -9
  277. package/package/components/copilot/lib.js +5 -3
  278. package/package/components/copilot/prompts/edit.yaml +24 -0
  279. package/package/components/copilot/prompts/editPrompt.d.ts +3 -0
  280. package/package/components/copilot/prompts/editPrompt.js +3 -0
  281. package/package/components/copilot/prompts/fix.yaml +25 -0
  282. package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
  283. package/package/components/copilot/prompts/fixPrompt.js +3 -0
  284. package/package/components/copilot/prompts/gen.yaml +20 -0
  285. package/package/components/copilot/prompts/genPrompt.d.ts +3 -0
  286. package/package/components/copilot/prompts/genPrompt.js +3 -0
  287. package/package/components/copilot/utils.d.ts +2 -1
  288. package/package/components/copilot/utils.js +38 -0
  289. package/package/components/details/createAppFromScript.d.ts +26 -0
  290. package/package/components/details/createAppFromScript.js +50 -24
  291. package/package/components/flows/CreateActionsApp.svelte +1 -0
  292. package/package/components/flows/CreateActionsFlow.svelte +1 -0
  293. package/package/components/flows/content/FlowInputs.svelte +2 -2
  294. package/package/components/flows/content/FlowModuleComponent.svelte +15 -6
  295. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  296. package/package/components/flows/flowExplorer.js +4 -1
  297. package/package/components/flows/map/FlowConstantsItem.svelte +1 -1
  298. package/package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
  299. package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -0
  300. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  301. package/package/components/flows/map/FlowSettingsItem.svelte +1 -1
  302. package/package/components/flows/map/MapItem.svelte +2 -0
  303. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  304. package/package/components/graph/FlowGraph.svelte +1 -0
  305. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +41 -16
  306. package/package/components/home/ItemsList.svelte +44 -9
  307. package/package/components/home/TreeView.svelte +2 -0
  308. package/package/components/icons/AzureIcon.svelte +25 -1
  309. package/package/components/icons/PHPIcon.svelte +117 -0
  310. package/package/components/icons/PHPIcon.svelte.d.ts +17 -0
  311. package/package/components/instanceSettings.d.ts +1 -1
  312. package/package/components/instanceSettings.js +18 -2
  313. package/package/components/jobs/JobPreview.svelte +5 -0
  314. package/package/components/multiselect/MultiSelect.svelte +782 -0
  315. package/package/components/multiselect/MultiSelect.svelte.d.ts +97 -0
  316. package/package/components/multiselect/types.d.ts +56 -0
  317. package/package/components/multiselect/types.js +1 -0
  318. package/package/components/multiselect/utils.d.ts +7 -0
  319. package/package/components/multiselect/utils.js +54 -0
  320. package/package/components/propertyPicker/ObjectViewer.svelte +14 -1
  321. package/package/components/runs/JobLoader.svelte +135 -17
  322. package/package/components/runs/JobLoader.svelte.d.ts +7 -2
  323. package/package/components/runs/JobPreview.svelte +39 -3
  324. package/package/components/runs/JobPreview.svelte.d.ts +2 -0
  325. package/package/components/runs/RunRow.svelte +78 -31
  326. package/package/components/runs/RunRow.svelte.d.ts +3 -0
  327. package/package/components/runs/RunsFilter.svelte +125 -9
  328. package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
  329. package/package/components/runs/RunsTable.svelte +53 -5
  330. package/package/components/runs/RunsTable.svelte.d.ts +6 -0
  331. package/package/components/scriptEditor/LogPanel.svelte +46 -33
  332. package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -0
  333. package/package/components/scripts/CreateActionsScript.svelte +1 -1
  334. package/package/components/settings/WorkspaceUserSettings.svelte +246 -226
  335. package/package/components/sidebar/MenuButton.svelte +1 -1
  336. package/package/components/sidebar/MenuLink.svelte +1 -1
  337. package/package/components/sidebar/changelogs.js +40 -0
  338. package/package/components/table/AutoDataTable.svelte +77 -102
  339. package/package/components/table/DataTable.svelte +13 -5
  340. package/package/components/table/DataTable.svelte.d.ts +1 -0
  341. package/package/components/vscode.js +1 -1
  342. package/package/components/wizards/AgGridWizard.svelte +27 -2
  343. package/package/components/wizards/AgGridWizard.svelte.d.ts +1 -0
  344. package/package/consts.js +5 -1
  345. package/package/defaults.d.ts +2 -2
  346. package/package/defaults.js +2 -2
  347. package/package/deno_fetch.d.ts.txt +30 -0
  348. package/package/editorUtils.js +2 -0
  349. package/package/gen/core/OpenAPI.js +5 -6
  350. package/package/gen/core/request.js +4 -1
  351. package/package/gen/index.d.ts +0 -1
  352. package/package/gen/index.js +0 -1
  353. package/package/gen/schemas.gen.d.ts +97 -428
  354. package/package/gen/schemas.gen.js +97 -433
  355. package/package/gen/services.gen.d.ts +3087 -1840
  356. package/package/gen/services.gen.js +3442 -2358
  357. package/package/gen/types.gen.d.ts +5048 -1505
  358. package/package/infer.d.ts +1 -1
  359. package/package/infer.js +6 -2
  360. package/package/inferArgSig.js +5 -2
  361. package/package/init_scripts/python_init_code.d.ts +1 -1
  362. package/package/init_scripts/python_init_code.js +1 -1
  363. package/package/process.d.ts.txt +1770 -0
  364. package/package/script_helpers.d.ts +3 -2
  365. package/package/script_helpers.js +28 -3
  366. package/package/scripts.d.ts +1 -1
  367. package/package/scripts.js +4 -0
  368. package/package/utils.d.ts +3 -0
  369. package/package/utils.js +46 -3
  370. package/package/windmill_fetch.d.ts.txt +16966 -0
  371. package/package/zIndexes.d.ts +12 -0
  372. package/package/zIndexes.js +12 -0
  373. package/package.json +5 -5
  374. package/package/components/AppConnect.svelte +0 -566
  375. package/package/components/AppConnect.svelte.d.ts +0 -23
  376. package/package/components/ContextMenu.svelte +0 -89
  377. package/package/components/ContextMenu.svelte.d.ts +0 -28
  378. package/package/components/apps/components/display/index.d.ts +0 -17
  379. package/package/components/apps/components/display/index.js +0 -17
  380. package/package/components/apps/components/helpers/index.d.ts +0 -10
  381. package/package/components/apps/components/helpers/index.js +0 -10
  382. package/package/components/apps/components/index.d.ts +0 -5
  383. package/package/components/apps/components/index.js +0 -5
@@ -0,0 +1,97 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { MultiSelectEvents, Option as T } from './types';
3
+ declare class __sveltets_Render<Option extends T> {
4
+ props(): {
5
+ activeIndex?: number | null | undefined;
6
+ activeOption?: Option | null | undefined;
7
+ createOptionMsg?: string | null | undefined;
8
+ allowUserOptions?: boolean | "append" | undefined;
9
+ autocomplete?: string | undefined;
10
+ autoScroll?: boolean | undefined;
11
+ breakpoint?: number | undefined;
12
+ defaultDisabledTitle?: string | undefined;
13
+ disabled?: boolean | undefined;
14
+ disabledInputTitle?: string | undefined;
15
+ duplicateOptionMsg?: string | undefined;
16
+ duplicates?: boolean | undefined;
17
+ key?: ((opt: T) => unknown) | undefined;
18
+ filterFunc?: ((opt: Option, searchText: string) => boolean) | undefined;
19
+ closeDropdownOnSelect?: boolean | "desktop" | undefined;
20
+ form_input?: HTMLInputElement | null | undefined;
21
+ highlightMatches?: boolean | undefined;
22
+ id?: string | null | undefined;
23
+ input?: HTMLInputElement | null | undefined;
24
+ inputClass?: string | undefined;
25
+ inputStyle?: string | null | undefined;
26
+ inputmode?: "email" | "text" | "numeric" | "decimal" | "none" | "search" | "tel" | "url" | null | undefined;
27
+ invalid?: boolean | undefined;
28
+ liSelectedClass?: string | undefined;
29
+ liSelectedStyle?: string | null | undefined;
30
+ loading?: boolean | undefined;
31
+ matchingOptions?: Option[] | undefined;
32
+ maxSelect?: number | null | undefined;
33
+ name?: string | null | undefined;
34
+ noMatchingOptionsMsg?: string | undefined;
35
+ open?: boolean | undefined;
36
+ options: Option[];
37
+ outerDiv?: HTMLDivElement | null | undefined;
38
+ outerDivClass?: string | undefined;
39
+ parseLabelsAsHtml?: boolean | undefined;
40
+ pattern?: string | null | undefined;
41
+ placeholder?: string | null | undefined;
42
+ removeAllTitle?: string | undefined;
43
+ removeBtnTitle?: string | undefined;
44
+ minSelect?: number | null | undefined;
45
+ required?: boolean | undefined;
46
+ resetFilterOnAdd?: boolean | undefined;
47
+ searchText?: string | undefined;
48
+ selected?: Option[] | undefined;
49
+ sortSelected?: boolean | ((op1: Option, op2: Option) => number) | undefined;
50
+ selectedOptionsDraggable?: boolean | undefined;
51
+ style?: string | null | undefined;
52
+ ulSelectedClass?: string | undefined;
53
+ ulSelectedStyle?: string | null | undefined;
54
+ value?: Option | Option[] | null | undefined;
55
+ };
56
+ events(): MultiSelectEvents;
57
+ slots(): {
58
+ 'expand-icon': {
59
+ open: boolean;
60
+ };
61
+ selected: {
62
+ option: Option;
63
+ idx: any;
64
+ };
65
+ default: {
66
+ option: any;
67
+ index: number;
68
+ };
69
+ 'remove-icon': {};
70
+ 'after-input': {
71
+ selected: Option[];
72
+ disabled: boolean;
73
+ invalid: boolean;
74
+ id: string | null;
75
+ placeholder: string | null;
76
+ open: boolean;
77
+ required: boolean;
78
+ };
79
+ spinner: {};
80
+ 'disabled-icon': {};
81
+ option: {
82
+ option: any;
83
+ index: number;
84
+ };
85
+ 'user-msg': {
86
+ searchText: string;
87
+ msgType: any;
88
+ msg: any;
89
+ };
90
+ };
91
+ }
92
+ export type MultiSelectProps<Option extends T> = ReturnType<__sveltets_Render<Option>['props']>;
93
+ export type MultiSelectEvents<Option extends T> = ReturnType<__sveltets_Render<Option>['events']>;
94
+ export type MultiSelectSlots<Option extends T> = ReturnType<__sveltets_Render<Option>['slots']>;
95
+ export default class MultiSelect<Option extends T> extends SvelteComponent<MultiSelectProps<Option>, MultiSelectEvents<Option>, MultiSelectSlots<Option>> {
96
+ }
97
+ export {};
@@ -0,0 +1,56 @@
1
+ export type Option = string | number | ObjectOption;
2
+ export type OptionStyle = string | {
3
+ option: string;
4
+ selected: string;
5
+ };
6
+ export type ObjectOption = {
7
+ label: string | number;
8
+ value?: unknown;
9
+ title?: string;
10
+ disabled?: boolean;
11
+ preselected?: boolean;
12
+ disabledTitle?: string;
13
+ selectedTitle?: string;
14
+ style?: OptionStyle;
15
+ [key: string]: unknown;
16
+ };
17
+ export type DispatchEvents<T = Option> = {
18
+ add: {
19
+ option: T;
20
+ };
21
+ create: {
22
+ option: T;
23
+ };
24
+ remove: {
25
+ option: T;
26
+ };
27
+ removeAll: {
28
+ options: T[];
29
+ };
30
+ change: {
31
+ option?: T;
32
+ options?: T[];
33
+ type: 'add' | 'remove' | 'removeAll';
34
+ };
35
+ open: {
36
+ event: Event;
37
+ };
38
+ close: {
39
+ event: Event;
40
+ };
41
+ };
42
+ export type MultiSelectEvents = {
43
+ [key in keyof DispatchEvents]: CustomEvent<DispatchEvents[key]>;
44
+ } & {
45
+ blur: FocusEvent;
46
+ click: MouseEvent;
47
+ focus: FocusEvent;
48
+ keydown: KeyboardEvent;
49
+ keyup: KeyboardEvent;
50
+ mouseenter: MouseEvent;
51
+ mouseleave: MouseEvent;
52
+ touchcancel: TouchEvent;
53
+ touchend: TouchEvent;
54
+ touchmove: TouchEvent;
55
+ touchstart: TouchEvent;
56
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Option, OptionStyle } from './types';
2
+ export declare const get_label: (opt: Option) => string | number;
3
+ export declare function get_style(option: {
4
+ style?: OptionStyle;
5
+ [key: string]: unknown;
6
+ } | string | number, key?: 'selected' | 'option' | null): string;
7
+ export declare function scroll_into_view_if_needed_polyfill(elem: Element, centerIfNeeded?: boolean): IntersectionObserver;
@@ -0,0 +1,54 @@
1
+ // get the label key from an option object or the option itself if it's a string or number
2
+ export const get_label = (opt) => {
3
+ if (opt instanceof Object) {
4
+ if (opt.label === undefined) {
5
+ console.error(`MultiSelect option ${JSON.stringify(opt)} is an object but has no label key`);
6
+ }
7
+ return opt.label;
8
+ }
9
+ return `${opt}`;
10
+ };
11
+ // this function is used extract CSS strings from a {selected, option} style object to be used in the style attribute of the option
12
+ // if the style is a string, it will be returned as is
13
+ export function get_style(option, key = null) {
14
+ let css_str = ``;
15
+ if (![`selected`, `option`, null].includes(key)) {
16
+ console.error(`MultiSelect: Invalid key=${key} for get_style`);
17
+ }
18
+ if (typeof option == `object` && option.style) {
19
+ if (typeof option.style == `string`) {
20
+ css_str = option.style;
21
+ }
22
+ if (typeof option.style == `object`) {
23
+ if (key && key in option.style)
24
+ return option.style[key] ?? ``;
25
+ else {
26
+ console.error(`Invalid style object for option=${JSON.stringify(option)}`);
27
+ }
28
+ }
29
+ }
30
+ // ensure css_str ends with a semicolon
31
+ if (css_str.trim() && !css_str.trim().endsWith(`;`))
32
+ css_str += `;`;
33
+ return css_str;
34
+ }
35
+ // Firefox lacks support for scrollIntoViewIfNeeded (https://caniuse.com/scrollintoviewifneeded).
36
+ // See https://github.com/janosh/svelte-multiselect/issues/87
37
+ // Polyfill copied from
38
+ // https://github.com/nuxodin/lazyfill/blob/a8e63/polyfills/Element/prototype/scrollIntoViewIfNeeded.js
39
+ // exported for testing
40
+ export function scroll_into_view_if_needed_polyfill(elem, centerIfNeeded = true) {
41
+ const observer = new IntersectionObserver(function ([entry]) {
42
+ const ratio = entry.intersectionRatio;
43
+ if (ratio < 1) {
44
+ const place = ratio <= 0 && centerIfNeeded ? `center` : `nearest`;
45
+ elem.scrollIntoView({
46
+ block: place,
47
+ inline: place
48
+ });
49
+ }
50
+ observer.disconnect();
51
+ });
52
+ observer.observe(elem);
53
+ return observer; // return for testing
54
+ }
@@ -98,7 +98,7 @@ $: fullyCollapsed = keys.length > 1 && collapsed;
98
98
  <button
99
99
  class="val text-left {pureViewer
100
100
  ? 'cursor-auto'
101
- : ''} rounded px-1 hover:bg-blue-100 {getTypeAsString(json[key])}"
101
+ : ''} rounded px-1 hover:bg-blue-100 dark:hover:bg-blue-100/10 {getTypeAsString(json[key])}"
102
102
  on:click={() => selectProp(key, json[key])}
103
103
  >
104
104
  {#if json[key] === NEVER_TESTED_THIS_FAR}
@@ -190,13 +190,26 @@ $: fullyCollapsed = keys.length > 1 && collapsed;
190
190
  --tw-text-opacity: 1;
191
191
  color: rgb(22 163 74 / var(--tw-text-opacity));
192
192
  }
193
+ :is(.dark .val.string) {
194
+ color: rgb(74 222 128 / 0.8);
195
+ }
193
196
 
194
197
  .val.number {
195
198
  --tw-text-opacity: 1;
196
199
  color: rgb(234 88 12 / var(--tw-text-opacity));
200
+ }
201
+
202
+ :is(.dark .val.number) {
203
+ color: rgb(251 146 60 / 0.9);
204
+ }
205
+
206
+ .val.number {
197
207
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
198
208
  }
199
209
  .val.boolean {
200
210
  --tw-text-opacity: 1;
201
211
  color: rgb(37 99 235 / var(--tw-text-opacity));
212
+ }
213
+ :is(.dark .val.boolean) {
214
+ color: rgb(96 165 250 / 0.9);
202
215
  }</style>
@@ -1,16 +1,17 @@
1
1
  <script>import { onDestroy, onMount } from 'svelte';
2
- import { JobService } from '../../gen';
2
+ import { JobService, ConcurrencyGroupsService } from '../../gen';
3
3
  import { sendUserToast } from '../../toast';
4
4
  import { workspaceStore } from '../../stores';
5
5
  import { tweened } from 'svelte/motion';
6
- import { forLater } from '../../forLater';
7
6
  export let jobs;
8
7
  export let user;
8
+ export let label = null;
9
9
  export let folder;
10
10
  export let path;
11
11
  export let success = undefined;
12
12
  export let isSkipped = false;
13
- export let hideSchedules = false;
13
+ export let showSchedules = true;
14
+ export let showFutureJobs = true;
14
15
  export let argFilter;
15
16
  export let resultFilter = undefined;
16
17
  export let schedulePath = undefined;
@@ -21,6 +22,9 @@ export let jobKinds = '';
21
22
  export let queue_count = undefined;
22
23
  export let autoRefresh = true;
23
24
  export let completedJobs = undefined;
25
+ export let externalJobs = undefined;
26
+ export let concurrencyKey;
27
+ export let extendedJobs = undefined;
24
28
  export let argError = '';
25
29
  export let resultError = '';
26
30
  export let loading = false;
@@ -33,12 +37,15 @@ let sync = true;
33
37
  $: jobKinds = computeJobKinds(jobKindsCat);
34
38
  $: ($workspaceStore && loadJobsIntern(true)) ||
35
39
  (path &&
40
+ label &&
36
41
  success &&
37
42
  isSkipped != undefined &&
38
43
  jobKinds &&
44
+ concurrencyKey &&
39
45
  user &&
40
46
  folder &&
41
- hideSchedules != undefined &&
47
+ showFutureJobs != undefined &&
48
+ showSchedules != undefined &&
42
49
  allWorkspaces != undefined &&
43
50
  argFilter != undefined &&
44
51
  resultFilter != undefined);
@@ -98,6 +105,35 @@ async function fetchJobs(startedBefore, startedAfter) {
98
105
  running: success == 'running' ? true : undefined,
99
106
  isSkipped: isSkipped ? undefined : false,
100
107
  isFlowStep: jobKindsCat != 'all' ? false : undefined,
108
+ label: label === null || label === '' ? undefined : label,
109
+ isNotSchedule: showSchedules == false ? true : undefined,
110
+ scheduledForBeforeNow: showFutureJobs == false ? true : undefined,
111
+ args: argFilter && argFilter != '{}' && argFilter != '' && argError == '' ? argFilter : undefined,
112
+ result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
113
+ ? resultFilter
114
+ : undefined,
115
+ allWorkspaces: allWorkspaces ? true : undefined
116
+ });
117
+ }
118
+ async function fetchExtendedJobs(concurrencyKey, startedBefore, startedAfter) {
119
+ return ConcurrencyGroupsService.listExtendedJobs({
120
+ rowLimit: 1000,
121
+ concurrencyKey: concurrencyKey == null || concurrencyKey == '' ? undefined : concurrencyKey,
122
+ workspace: $workspaceStore,
123
+ createdOrStartedBefore: startedBefore,
124
+ createdOrStartedAfter: startedAfter,
125
+ schedulePath,
126
+ scriptPathExact: path === null || path === '' ? undefined : path,
127
+ createdBy: user === null || user === '' ? undefined : user,
128
+ scriptPathStart: folder === null || folder === '' ? undefined : `f/${folder}/`,
129
+ jobKinds,
130
+ success: success == 'success' ? true : success == 'failure' ? false : undefined,
131
+ running: success == 'running' ? true : undefined,
132
+ isSkipped: isSkipped ? undefined : false,
133
+ isFlowStep: jobKindsCat != 'all' ? false : undefined,
134
+ label: label === null || label === '' ? undefined : label,
135
+ isNotSchedule: showSchedules == false ? true : undefined,
136
+ scheduledForBeforeNow: showFutureJobs == false ? true : undefined,
101
137
  args: argFilter && argFilter != '{}' && argFilter != '' && argError == '' ? argFilter : undefined,
102
138
  result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
103
139
  ? resultFilter
@@ -111,6 +147,8 @@ export async function loadJobs(nMinTs, nMaxTs, reset, shouldGetCount) {
111
147
  if (reset) {
112
148
  jobs = undefined;
113
149
  completedJobs = undefined;
150
+ externalJobs = undefined;
151
+ extendedJobs = undefined;
114
152
  intervalId && clearInterval(intervalId);
115
153
  intervalId = setInterval(syncer, refreshRate);
116
154
  }
@@ -122,11 +160,35 @@ async function loadJobsIntern(shouldGetCount) {
122
160
  }
123
161
  loading = true;
124
162
  try {
125
- jobs = await fetchJobs(maxTs, minTs);
126
- computeCompletedJobs();
127
- if (hideSchedules && !schedulePath) {
128
- jobs = jobs.filter((job) => !(job && 'running' in job && job.scheduled_for && forLater(job.scheduled_for)));
163
+ if (concurrencyKey == null || concurrencyKey === '') {
164
+ let newJobs = await fetchJobs(maxTs, undefined);
165
+ extendedJobs = { jobs: newJobs, obscured_jobs: [] };
166
+ // Filter on minTs here and not in the backend
167
+ // to get enough data for the concurrency graph
168
+ jobs = sortMinDate(minTs, newJobs);
169
+ externalJobs = [];
170
+ }
171
+ else {
172
+ extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined);
173
+ const newJobs = extendedJobs.jobs;
174
+ const newExternalJobs = extendedJobs.obscured_jobs;
175
+ // Filter on minTs here and not in the backend
176
+ // to get enough data for the concurrency graph
177
+ if (minTs != undefined) {
178
+ const minDate = new Date(minTs);
179
+ jobs = newJobs.filter((x) => x.started_at
180
+ ? new Date(x.started_at) > minDate
181
+ : x.created_at
182
+ ? new Date(x.created_at) > minDate
183
+ : false);
184
+ externalJobs = computeExternalJobs(newExternalJobs.filter((x) => x.started_at && new Date(x.started_at) > minDate));
185
+ }
186
+ else {
187
+ jobs = newJobs;
188
+ externalJobs = computeExternalJobs(newExternalJobs);
189
+ }
129
190
  }
191
+ computeCompletedJobs();
130
192
  }
131
193
  catch (err) {
132
194
  sendUserToast(`There was a problem fetching jobs: ${err}`, true);
@@ -181,24 +243,59 @@ async function syncer() {
181
243
  cursor++;
182
244
  }
183
245
  loading = true;
184
- const newJobs = await fetchJobs(maxTs, minTs ?? ts);
246
+ let newJobs;
247
+ if (concurrencyKey == null || concurrencyKey === '') {
248
+ newJobs = await fetchJobs(maxTs, minTs ?? ts);
249
+ }
250
+ else {
251
+ // Obscured jobs have no ids, so we have to do the full request
252
+ extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined);
253
+ externalJobs = computeExternalJobs(extendedJobs.obscured_jobs);
254
+ // Filter on minTs here and not in the backend
255
+ // to get enough data for the concurrency graph
256
+ newJobs = sortMinDate(minTs ?? ts, extendedJobs.jobs);
257
+ }
185
258
  if (newJobs && newJobs.length > 0 && jobs) {
186
- const oldJobs = jobs?.map((x) => x.id);
187
- jobs = newJobs.filter((x) => !oldJobs.includes(x.id)).concat(jobs);
188
- newJobs
189
- .filter((x) => oldJobs.includes(x.id))
190
- .forEach((x) => (jobs[jobs?.findIndex((y) => y.id == x.id)] = x));
259
+ jobs = updateWithNewJobs(jobs, newJobs);
191
260
  jobs = jobs;
192
- computeCompletedJobs();
193
- if (hideSchedules && !schedulePath) {
194
- jobs = jobs.filter((job) => !(job && 'running' in job && job.scheduled_for && forLater(job.scheduled_for)));
261
+ if (concurrencyKey == null || concurrencyKey === '') {
262
+ if (!extendedJobs) {
263
+ extendedJobs = { jobs: jobs, obscured_jobs: [] };
264
+ }
265
+ else {
266
+ extendedJobs.jobs = updateWithNewJobs(extendedJobs.jobs, newJobs);
267
+ extendedJobs = extendedJobs;
268
+ }
269
+ externalJobs = [];
195
270
  }
271
+ computeCompletedJobs();
196
272
  }
197
273
  loading = false;
198
274
  }
199
275
  }
200
276
  }
201
277
  }
278
+ function updateWithNewJobs(jobs, newJobs) {
279
+ const oldJobs = jobs?.map((x) => x.id);
280
+ let ret = newJobs.filter((x) => !oldJobs.includes(x.id)).concat(jobs);
281
+ newJobs
282
+ .filter((x) => oldJobs.includes(x.id))
283
+ .forEach((x) => (ret[ret?.findIndex((y) => y.id == x.id)] = x));
284
+ return ret;
285
+ }
286
+ function sortMinDate(minTs, jobs) {
287
+ if (minTs != undefined) {
288
+ const minDate = new Date(minTs);
289
+ return jobs.filter((x) => x.started_at
290
+ ? new Date(x.started_at) > minDate
291
+ : x.created_at
292
+ ? new Date(x.created_at) > minDate
293
+ : false);
294
+ }
295
+ else {
296
+ return jobs;
297
+ }
298
+ }
202
299
  function computeCompletedJobs() {
203
300
  completedJobs =
204
301
  jobs?.filter((x) => x.type == 'CompletedJob').map((x) => x) ?? [];
@@ -211,6 +308,27 @@ function onVisibilityChange() {
211
308
  sync = true;
212
309
  }
213
310
  }
311
+ function computeExternalJobs(obscuredJobs) {
312
+ return obscuredJobs.map((x) => ({
313
+ type: x.typ,
314
+ started_at: x.started_at,
315
+ running: x.started_at != undefined,
316
+ id: '-',
317
+ script_path: '-',
318
+ created_by: '-',
319
+ created_at: '-',
320
+ success: false,
321
+ canceled: false,
322
+ is_flow_step: false,
323
+ is_skipped: false,
324
+ visible_to_owner: false,
325
+ email: '-',
326
+ permissioned_as: '-',
327
+ tag: '-',
328
+ job_kind: 'script',
329
+ duration_ms: x.duration_ms
330
+ }));
331
+ }
214
332
  onMount(() => {
215
333
  document.addEventListener('visibilitychange', onVisibilityChange);
216
334
  return () => {
@@ -1,15 +1,17 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import { type Job, type CompletedJob } from '../../gen';
2
+ import { type Job, type CompletedJob, type ExtendedJobs } from '../../gen';
3
3
  import { type Tweened } from 'svelte/motion';
4
4
  declare const __propDef: {
5
5
  props: {
6
6
  jobs: Job[] | undefined;
7
7
  user: string | null;
8
+ label?: string | null | undefined;
8
9
  folder: string | null;
9
10
  path: string | null;
10
11
  success?: 'success' | 'failure' | 'running' | undefined;
11
12
  isSkipped?: boolean | undefined;
12
- hideSchedules?: boolean | undefined;
13
+ showSchedules?: boolean | undefined;
14
+ showFutureJobs?: boolean | undefined;
13
15
  argFilter: string | undefined;
14
16
  resultFilter?: string | undefined;
15
17
  schedulePath?: string | undefined;
@@ -20,6 +22,9 @@ declare const __propDef: {
20
22
  queue_count?: Tweened<number> | undefined;
21
23
  autoRefresh?: boolean | undefined;
22
24
  completedJobs?: CompletedJob[] | undefined;
25
+ externalJobs?: Job[] | undefined;
26
+ concurrencyKey: string | null;
27
+ extendedJobs?: ExtendedJobs | undefined;
23
28
  argError?: string | undefined;
24
29
  resultError?: string | undefined;
25
30
  loading?: boolean | undefined;
@@ -1,9 +1,9 @@
1
- <script>import {} from '../../gen';
1
+ <script>import { ConcurrencyGroupsService } from '../../gen';
2
2
  import TestJobLoader from '../TestJobLoader.svelte';
3
3
  import DisplayResult from '../DisplayResult.svelte';
4
4
  import JobArgs from '../JobArgs.svelte';
5
5
  import LogViewer from '../LogViewer.svelte';
6
- import { Badge, Skeleton, Tab, Tabs } from '../common';
6
+ import { Badge, Button, Skeleton, Tab, Tabs } from '../common';
7
7
  import HighlightCode from '../HighlightCode.svelte';
8
8
  import { forLater } from '../../forLater';
9
9
  import FlowProgressBar from '../flows/FlowProgressBar.svelte';
@@ -11,6 +11,10 @@ import FlowStatusViewer from '../FlowStatusViewer.svelte';
11
11
  import DurationMs from '../DurationMs.svelte';
12
12
  import { workspaceStore } from '../../stores';
13
13
  import WorkflowTimeline from '../WorkflowTimeline.svelte';
14
+ import Popover from '../Popover.svelte';
15
+ import { truncateRev } from '../../utils';
16
+ import { createEventDispatcher } from 'svelte';
17
+ import { ListFilter } from 'lucide-svelte';
14
18
  export let id;
15
19
  export let blankLink = false;
16
20
  export let workspace;
@@ -28,10 +32,18 @@ $: if (currentJob?.id == id) {
28
32
  }
29
33
  $: id && watchJob && watchJob(id);
30
34
  $: job?.logs == undefined && job && viewTab == 'logs' && getLogs?.();
35
+ let lastJobId = undefined;
36
+ let concurrencyKey = undefined;
37
+ $: job?.id && lastJobId !== job.id && getConcurrencyKey(job);
38
+ async function getConcurrencyKey(job) {
39
+ lastJobId = job.id;
40
+ concurrencyKey = await ConcurrencyGroupsService.getConcurrencyKey({ id: job.id });
41
+ }
31
42
  let viewTab = 'result';
32
43
  function asWorkflowStatus(x) {
33
44
  return x;
34
45
  }
46
+ const dispatch = createEventDispatcher();
35
47
  </script>
36
48
 
37
49
  <TestJobLoader
@@ -44,7 +56,7 @@ function asWorkflowStatus(x) {
44
56
  />
45
57
  <div class="p-4 flex flex-col gap-2 items-start h-full">
46
58
  {#if job}
47
- <div class="flex gap-2">
59
+ <div class="flex gap-2 flex-wrap">
48
60
  {#if job?.['priority']}
49
61
  <Badge color="red">
50
62
  priority: {job?.['priority']}
@@ -68,6 +80,30 @@ function asWorkflowStatus(x) {
68
80
  Tag: {job.tag}
69
81
  </Badge>
70
82
  {/if}
83
+ {#if job?.['labels'] && Array.isArray(job?.['labels']) && job?.['labels'].length > 0}
84
+ {#each job?.['labels'] as label}
85
+ <Badge baseClass="text-2xs">Label: {label}</Badge>
86
+ {/each}
87
+ {/if}
88
+ {#if concurrencyKey}
89
+ <Popover notClickable>
90
+ <svelte:fragment slot="text">
91
+ This jobs has concurrency limits enabled with the key:
92
+ <Button
93
+ class="inline-text"
94
+ size="xs2"
95
+ color="light"
96
+ on:click={() => {
97
+ dispatch('filterByConcurrencyKey', concurrencyKey)
98
+ }}
99
+ >
100
+ {concurrencyKey}
101
+ <ListFilter class="inline-block" size={10} />
102
+ </Button>
103
+ </svelte:fragment>
104
+ <Badge large>Concurrency: {truncateRev(concurrencyKey, 20)}</Badge>
105
+ </Popover>
106
+ {/if}
71
107
  </div>
72
108
  <a
73
109
  href="/run/{job?.id}?workspace={job?.workspace_id}"
@@ -6,6 +6,8 @@ declare const __propDef: {
6
6
  workspace: string | undefined;
7
7
  };
8
8
  events: {
9
+ filterByConcurrencyKey: CustomEvent<any>;
10
+ } & {
9
11
  [evt: string]: CustomEvent<any>;
10
12
  };
11
13
  slots: {};