windmill-components 1.60.3 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/assets/app.css +3 -0
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +24 -9
  5. package/components/ArgInput.svelte +1 -1
  6. package/components/CliHelpBox.svelte +49 -0
  7. package/components/CliHelpBox.svelte.d.ts +14 -0
  8. package/components/DisplayResult.svelte +51 -1
  9. package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/components/Editor.svelte +17 -7
  11. package/components/EditorBar.svelte +129 -111
  12. package/components/FlowBuilder.svelte +2 -2
  13. package/components/FlowJobResult.svelte +10 -2
  14. package/components/FlowJobResult.svelte.d.ts +1 -0
  15. package/components/FlowMetadata.svelte +24 -8
  16. package/components/FlowPreviewContent.svelte +3 -4
  17. package/components/FlowStatusViewer.svelte +41 -9
  18. package/components/FolderEditor.svelte +4 -3
  19. package/components/HighlightCode.svelte +7 -1
  20. package/components/InlineCodeCopy.svelte +11 -0
  21. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  22. package/components/InputTransformForm.svelte +9 -5
  23. package/components/LogViewer.svelte +6 -0
  24. package/components/LogViewer.svelte.d.ts +1 -0
  25. package/components/ModulePreview.svelte +11 -2
  26. package/components/MoveDrawer.svelte +1 -1
  27. package/components/Multiselect.svelte.d.ts +2 -2
  28. package/components/ObjectResourceInput.svelte +6 -1
  29. package/components/Path.svelte +14 -5
  30. package/components/Popover.svelte +8 -2
  31. package/components/Popover.svelte.d.ts +1 -0
  32. package/components/Range.svelte.d.ts +2 -2
  33. package/components/ResourceEditor.svelte +39 -16
  34. package/components/ResourcePicker.svelte +0 -1
  35. package/components/RunForm.svelte +26 -2
  36. package/components/RunForm.svelte.d.ts +1 -0
  37. package/components/ScheduleEditor.svelte +1 -1
  38. package/components/SchemaEditor.svelte +2 -2
  39. package/components/SchemaForm.svelte +14 -4
  40. package/components/SchemaForm.svelte.d.ts +1 -0
  41. package/components/ScriptBuilder.svelte +45 -22
  42. package/components/ScriptBuilder.svelte.d.ts +1 -0
  43. package/components/ScriptEditor.svelte +1 -0
  44. package/components/SharedBadge.svelte +5 -5
  45. package/components/Slider.svelte +14 -0
  46. package/components/Slider.svelte.d.ts +19 -0
  47. package/components/StringTypeNarrowing.svelte +0 -1
  48. package/components/SuperadminSettings.svelte +11 -3
  49. package/components/SuperadminSettings.svelte.d.ts +2 -0
  50. package/components/TemplateEditor.svelte.d.ts +204 -0
  51. package/components/TestJobLoader.svelte +3 -3
  52. package/components/Toggle.svelte +1 -2
  53. package/components/UserSettings.svelte +25 -28
  54. package/components/UserSettings.svelte.d.ts +2 -0
  55. package/components/VariableEditor.svelte +1 -1
  56. package/components/WhitelistIp.svelte +23 -0
  57. package/components/WhitelistIp.svelte.d.ts +14 -0
  58. package/components/apps/components/buttons/AppButton.svelte +52 -6
  59. package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
  60. package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
  61. package/components/apps/components/buttons/AppFormButton.svelte +137 -0
  62. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
  63. package/components/apps/components/buttons/index.d.ts +3 -0
  64. package/components/apps/components/buttons/index.js +3 -0
  65. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
  66. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
  67. package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
  68. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
  69. package/components/apps/components/display/AppHtml.svelte +32 -0
  70. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -3
  71. package/components/apps/components/display/AppIcon.svelte +35 -0
  72. package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
  73. package/components/apps/components/display/AppImage.svelte +27 -0
  74. package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
  75. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
  76. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
  77. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
  78. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
  79. package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
  80. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
  81. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
  82. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
  83. package/components/apps/components/display/PlotlyHtml.svelte +38 -0
  84. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  85. package/components/apps/components/display/VegaLiteHtml.svelte +52 -0
  86. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +3 -2
  87. package/components/apps/components/display/index.d.ts +12 -0
  88. package/components/apps/components/display/index.js +12 -0
  89. package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
  90. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
  91. package/components/apps/components/{table → display/table}/AppTable.svelte +44 -23
  92. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
  93. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
  94. package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
  95. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
  96. package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
  97. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  98. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  99. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  100. package/components/apps/components/helpers/InputValue.svelte +5 -7
  101. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  102. package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
  103. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  104. package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
  105. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
  106. package/components/apps/components/helpers/index.d.ts +10 -0
  107. package/components/apps/components/helpers/index.js +10 -0
  108. package/components/apps/components/icon.d.ts +1 -0
  109. package/components/apps/components/icon.js +18 -0
  110. package/components/apps/components/index.d.ts +5 -0
  111. package/components/apps/components/index.js +5 -0
  112. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
  113. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
  114. package/components/apps/components/inputs/AppFileInput.svelte +34 -0
  115. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
  116. package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
  117. package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
  118. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
  119. package/components/apps/components/inputs/AppSelect.svelte +90 -0
  120. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
  121. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
  122. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
  123. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
  124. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
  125. package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
  126. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
  127. package/components/apps/components/inputs/index.d.ts +9 -0
  128. package/components/apps/components/inputs/index.js +9 -0
  129. package/components/apps/components/layout/AppContainer.svelte +32 -0
  130. package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
  131. package/components/apps/components/layout/AppDivider.svelte +20 -0
  132. package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
  133. package/components/apps/components/layout/AppTabs.svelte +58 -0
  134. package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
  135. package/components/apps/components/layout/index.d.ts +3 -0
  136. package/components/apps/components/layout/index.js +3 -0
  137. package/components/apps/editor/AppComponentInput.svelte +33 -0
  138. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  139. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  140. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  141. package/components/apps/editor/AppEditor.svelte +66 -31
  142. package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  143. package/components/apps/editor/AppEditorHeader.svelte +74 -18
  144. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  145. package/components/apps/editor/AppInputs.svelte +60 -0
  146. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  147. package/components/apps/editor/AppPreview.svelte +32 -5
  148. package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
  149. package/components/apps/editor/ComponentHeader.svelte +40 -2
  150. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  151. package/components/apps/editor/GridEditor.svelte +75 -32
  152. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  153. package/components/apps/editor/SettingsPanel.svelte +31 -3
  154. package/components/apps/editor/SubGridEditor.svelte +111 -0
  155. package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
  156. package/components/apps/editor/TablePanel.svelte +2 -0
  157. package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
  158. package/components/apps/editor/appUtils.d.ts +9 -0
  159. package/components/apps/editor/appUtils.js +141 -0
  160. package/components/apps/editor/component/Component.svelte +209 -0
  161. package/components/apps/editor/component/Component.svelte.d.ts +23 -0
  162. package/components/apps/editor/component/README.md +15 -0
  163. package/components/apps/editor/component/components.d.ts +65 -0
  164. package/components/apps/editor/component/components.js +1102 -0
  165. package/components/apps/editor/component/default-codes.d.ts +3 -0
  166. package/components/apps/editor/component/default-codes.js +322 -0
  167. package/components/apps/editor/component/index.d.ts +4 -0
  168. package/components/apps/editor/component/index.js +4 -0
  169. package/components/apps/editor/component/sets.d.ts +2 -0
  170. package/components/apps/editor/component/sets.js +47 -0
  171. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -105
  172. package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
  173. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
  174. package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
  175. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  176. package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
  177. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  178. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
  179. package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
  180. package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
  181. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
  182. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
  183. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
  184. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
  185. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
  186. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
  187. package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
  188. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  189. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  190. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
  191. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
  192. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
  193. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
  194. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  195. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
  196. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
  197. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  198. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
  199. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  200. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
  201. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  202. package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
  203. package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
  204. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  205. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
  206. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
  207. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
  208. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
  209. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
  210. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
  211. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  212. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
  213. package/components/apps/gridUtils.d.ts +3 -1
  214. package/components/apps/gridUtils.js +5 -3
  215. package/components/apps/inputType.d.ts +33 -6
  216. package/components/apps/types.d.ts +35 -39
  217. package/components/apps/types.js +1 -1
  218. package/components/apps/utils.d.ts +6 -5
  219. package/components/apps/utils.js +90 -90
  220. package/components/common/button/Button.svelte +12 -5
  221. package/components/common/button/Button.svelte.d.ts +3 -1
  222. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  223. package/components/common/button/model.d.ts +2 -2
  224. package/components/common/button/model.js +21 -6
  225. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  226. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  227. package/components/common/drawer/Drawer.svelte +3 -1
  228. package/components/common/fileInput/FileInput.svelte +112 -0
  229. package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
  230. package/components/common/index.d.ts +1 -0
  231. package/components/common/index.js +1 -0
  232. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  233. package/components/common/modal/Modal.svelte +74 -0
  234. package/components/common/modal/Modal.svelte.d.ts +22 -0
  235. package/components/common/popup/Popup.svelte +34 -17
  236. package/components/common/popup/Popup.svelte.d.ts +11 -4
  237. package/components/common/table/FlowRow.svelte +22 -3
  238. package/components/common/table/LanguageBadge.svelte +10 -4
  239. package/components/common/table/Row.svelte +1 -1
  240. package/components/common/table/ScriptRow.svelte +2 -2
  241. package/components/common/tabs/Tabs.svelte +9 -7
  242. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  243. package/components/flows/CreateActionsFlow.svelte +2 -3
  244. package/components/flows/content/BranchPredicateEditor.svelte +10 -8
  245. package/components/flows/content/CapturePayload.svelte +3 -3
  246. package/components/flows/content/FlowInputs.svelte +109 -99
  247. package/components/flows/content/FlowLoop.svelte +1 -1
  248. package/components/flows/content/FlowModuleComponent.svelte +3 -2
  249. package/components/flows/content/FlowRetries.svelte +8 -6
  250. package/components/flows/content/FlowSettings.svelte +72 -26
  251. package/components/flows/flowState.d.ts +1 -0
  252. package/components/flows/flowState.js +1 -0
  253. package/components/flows/flowStateUtils.js +4 -2
  254. package/components/flows/flowStore.d.ts +1 -0
  255. package/components/flows/flowStore.js +1 -0
  256. package/components/flows/map/FlowBranchAllMap.svelte +1 -1
  257. package/components/flows/map/FlowBranchOneMap.svelte +2 -2
  258. package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
  259. package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
  260. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
  261. package/components/flows/map/InsertModuleButton.svelte +24 -10
  262. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  263. package/components/flows/map/MapItem.svelte +3 -1
  264. package/components/flows/utils.js +16 -10
  265. package/components/graph/FlowGraph.svelte +38 -15
  266. package/components/graph/FlowGraph.svelte.d.ts +1 -0
  267. package/components/icons/SquareIcon.svelte +9 -0
  268. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  269. package/components/icons/index.d.ts +2 -0
  270. package/components/icons/index.js +2 -0
  271. package/components/jobs/JobDetail.svelte +29 -5
  272. package/components/propertyPicker/ObjectViewer.svelte +8 -5
  273. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  274. package/components/propertyPicker/PropPicker.svelte +8 -1
  275. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  276. package/components/random_positive_adjetive.d.ts +1 -0
  277. package/components/random_positive_adjetive.js +961 -0
  278. package/components/scriptEditor/LogPanel.svelte +2 -1
  279. package/components/sidebar/SidebarContent.svelte +1 -1
  280. package/components/sidebar/UserMenu.svelte +46 -16
  281. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  282. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  283. package/components/sidebar/settings.d.ts +2 -0
  284. package/components/sidebar/settings.js +2 -0
  285. package/gen/core/OpenAPI.js +1 -1
  286. package/gen/models/CompletedJob.d.ts +1 -0
  287. package/gen/models/FlowModule.d.ts +0 -1
  288. package/gen/models/QueuedJob.d.ts +1 -0
  289. package/gen/models/WorkerPing.d.ts +1 -1
  290. package/gen/services/FlowService.d.ts +9 -0
  291. package/gen/services/FlowService.js +15 -0
  292. package/gen/services/JobService.d.ts +97 -15
  293. package/gen/services/JobService.js +74 -15
  294. package/gen/services/ScriptService.d.ts +10 -1
  295. package/gen/services/ScriptService.js +16 -1
  296. package/gen/services/VariableService.d.ts +4 -2
  297. package/gen/services/VariableService.js +8 -2
  298. package/gen/services/WorkspaceService.d.ts +17 -0
  299. package/gen/services/WorkspaceService.js +16 -0
  300. package/infer.js +3 -0
  301. package/init_scripts/python_failure_module.py +10 -0
  302. package/init_scripts/python_init_code.py +37 -0
  303. package/init_scripts/python_init_code_clear.py +5 -0
  304. package/init_scripts/python_init_code_trigger.py +14 -0
  305. package/logout.js +2 -1
  306. package/package.json +577 -522
  307. package/script_helpers.d.ts +6 -5
  308. package/script_helpers.js +7 -73
  309. package/stores.d.ts +5 -1
  310. package/stores.js +8 -1
  311. package/user.d.ts +1 -1
  312. package/user.js +14 -8
  313. package/utils.d.ts +1 -1
  314. package/utils.js +8 -7
  315. package/components/apps/components/DisplayComponent.svelte +0 -16
  316. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  317. package/components/apps/components/dataDisplay/AppHtml.svelte +0 -35
  318. package/components/apps/components/dataDisplay/VegaLiteHtml.svelte +0 -28
  319. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  320. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  321. package/components/apps/editor/ComponentEditor.svelte +0 -138
  322. package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
  323. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  324. package/components/apps/editor/componentsPanel/data.js +0 -465
  325. package/components/apps/editorUtils.d.ts +0 -1
  326. package/components/apps/editorUtils.js +0 -253
  327. /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
  328. /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
  329. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  330. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
  331. /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
  332. /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
  333. /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
  334. /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
  335. /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
@@ -40,7 +40,7 @@ const dispatch = createEventDispatcher();
40
40
  {#if retry}
41
41
  <Popover notClickable>
42
42
  <div
43
- transition:fade={{duration: 200}}
43
+ transition:fade={{ duration: 200 }}
44
44
  class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
45
45
  >
46
46
  <Repeat size={14} />
@@ -51,7 +51,7 @@ const dispatch = createEventDispatcher();
51
51
  {#if earlyStop}
52
52
  <Popover notClickable>
53
53
  <div
54
- transition:fade={{duration: 200}}
54
+ transition:fade={{ duration: 200 }}
55
55
  class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
56
56
  >
57
57
  <Square size={14} />
@@ -62,7 +62,7 @@ const dispatch = createEventDispatcher();
62
62
  {#if suspend}
63
63
  <Popover notClickable>
64
64
  <div
65
- transition:fade={{duration: 200}}
65
+ transition:fade={{ duration: 200 }}
66
66
  class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
67
67
  >
68
68
  <PhoneIncoming size={14} />
@@ -73,7 +73,7 @@ const dispatch = createEventDispatcher();
73
73
  {#if sleep}
74
74
  <Popover notClickable>
75
75
  <div
76
- transition:fade={{duration: 200}}
76
+ transition:fade={{ duration: 200 }}
77
77
  class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
78
78
  >
79
79
  <Bed size={14} />
@@ -100,7 +100,7 @@ const dispatch = createEventDispatcher();
100
100
  class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
101
101
  border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
102
102
  hover:border-red-700 {selected ? '' : '!hidden'}"
103
- on:click={(event) => dispatch('delete', event)}
103
+ on:click|preventDefault|stopPropagation={(event) => dispatch('delete', event)}
104
104
  >
105
105
  <X size={12} strokeWidth={2} />
106
106
  </button>
@@ -9,12 +9,10 @@ import FlowSettingsItem from './FlowSettingsItem.svelte';
9
9
  import FlowInputsItem from './FlowInputsItem.svelte';
10
10
  import InsertModuleButton from './InsertModuleButton.svelte';
11
11
  import { slide } from 'svelte/transition';
12
- import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
13
- import { Icon } from 'svelte-awesome';
14
- import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
15
12
  import FlowConstantsItem from './FlowConstantsItem.svelte';
16
13
  export let root = false;
17
14
  export let modules;
15
+ export let parentType = undefined;
18
16
  let indexToRemove = undefined;
19
17
  const { select, selectedId } = getContext('FlowEditorContext');
20
18
  async function insertNewModuleAtIndex(index, kind) {
@@ -45,17 +43,21 @@ async function insertNewModuleAtIndex(index, kind) {
45
43
  else if (kind == 'approval') {
46
44
  flowModule.summary = 'Approval';
47
45
  }
46
+ else if (kind == 'end') {
47
+ flowModule.summary = 'Terminate flow';
48
+ flowModule.stop_after_if = { skip_if_stopped: false, expr: 'true' };
49
+ }
48
50
  select(flowModule.id);
49
51
  });
50
52
  }
51
53
  function removeAtIndex(index) {
52
- select('settings-graph');
53
54
  if (!modules)
54
55
  return;
55
56
  const [removedModule] = modules.splice(index, 1);
56
57
  modules = modules;
57
58
  const leaves = findLeaves(removedModule);
58
59
  leaves.forEach((leafId) => deleteFlowStateById(leafId));
60
+ select('settings-graph');
59
61
  }
60
62
  function findLeaves(flowModule) {
61
63
  const id = flowModule.id;
@@ -122,10 +124,15 @@ $: confirmationModalOpen = indexToRemove !== undefined;
122
124
  </div>
123
125
  {/each}
124
126
  {/if}
125
- <InsertModuleButton
126
- trigger={modules?.length == 0}
127
- on:new={(e) => insertNewModuleAtIndex(modules?.length ?? 0, e.detail)}
128
- />
127
+ {#if !modules || modules[modules?.length - 1]?.summary != 'Terminate flow'}
128
+ <InsertModuleButton
129
+ stop={!root && parentType == 'branchone'}
130
+ trigger={root && modules?.length == 0}
131
+ on:new={(e) => insertNewModuleAtIndex(modules?.length ?? 0, e.detail)}
132
+ />
133
+ {:else}
134
+ <div class="my-2" />
135
+ {/if}
129
136
  </ul>
130
137
  {#if root}
131
138
  <div class="sticky bottom-0 bg-gray-50 flex-none px-4 py-1 pb-2 border-t">
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  props: {
5
5
  root?: boolean | undefined;
6
6
  modules: FlowModule[] | undefined;
7
+ parentType?: 'flow' | 'forloop' | 'branchall' | 'branchone' | undefined;
7
8
  };
8
9
  events: {
9
10
  [evt: string]: CustomEvent<any>;
@@ -2,9 +2,10 @@
2
2
  import { faCode, faCodeBranch, faPlus, faBarsStaggered, faBolt, faCheck } from '@fortawesome/free-solid-svg-icons';
3
3
  import { createEventDispatcher } from 'svelte';
4
4
  import Icon from 'svelte-awesome';
5
- import { Repeat } from 'lucide-svelte';
5
+ import { Repeat, Square } from 'lucide-svelte';
6
6
  const dispatch = createEventDispatcher();
7
7
  export let trigger = false;
8
+ export let stop = false;
8
9
  </script>
9
10
 
10
11
  <Menu noMinW placement="bottom-start" let:close>
@@ -25,7 +26,7 @@ export let trigger = false;
25
26
  role="menuitem"
26
27
  tabindex="-1"
27
28
  >
28
- <Icon data={faCode} scale={0.8} class="mr-1" />
29
+ <Icon data={faCode} scale={0.8} class="mr-2" />
29
30
  Action (Script)
30
31
  </button>
31
32
  {#if trigger}
@@ -38,12 +39,12 @@ export let trigger = false;
38
39
  role="menuitem"
39
40
  tabindex="-1"
40
41
  >
41
- <Icon data={faBolt} scale={0.8} class="mr-1" />
42
+ <Icon data={faBolt} scale={0.8} class="mr-2" />
42
43
  Trigger (Script)
43
44
  </button>
44
45
  {/if}
45
46
  <button
46
- class="w-full text-left p-2 hover:bg-gray-100"
47
+ class="w-full text-left gap-1 p-2 hover:bg-gray-100"
47
48
  on:click={() => {
48
49
  close()
49
50
  dispatch('new', 'approval')
@@ -51,18 +52,18 @@ export let trigger = false;
51
52
  role="menuitem"
52
53
  tabindex="-1"
53
54
  >
54
- <Icon data={faCheck} scale={0.8} class="mr-1" />
55
+ <Icon data={faCheck} class="mr-1.5" scale={0.8} />
55
56
  Approval (Script)
56
57
  </button>
57
58
  <button
58
- class="w-full inline-flex gap-1 text-left p-2 hover:bg-gray-100"
59
+ class="w-full inline-flex text-left p-2 hover:bg-gray-100"
59
60
  on:click={() => {
60
61
  close()
61
62
  dispatch('new', 'forloop')
62
63
  }}
63
64
  role="menuitem"
64
65
  >
65
- <span>
66
+ <span class="mr-2">
66
67
  <Repeat size={14} />
67
68
  </span>
68
69
 
@@ -77,7 +78,7 @@ export let trigger = false;
77
78
  }}
78
79
  role="menuitem"
79
80
  >
80
- <Icon data={faCodeBranch} scale={0.8} class="mr-1" />
81
+ <Icon data={faCodeBranch} scale={0.8} class="mr-2" />
81
82
  Branch to one
82
83
  </button>
83
84
 
@@ -89,7 +90,7 @@ export let trigger = false;
89
90
  }}
90
91
  role="menuitem"
91
92
  >
92
- <Icon data={faCodeBranch} scale={0.8} class="mr-1" />
93
+ <Icon data={faCodeBranch} scale={0.8} class="mr-2" />
93
94
  Branch to all
94
95
  </button>
95
96
 
@@ -101,8 +102,21 @@ export let trigger = false;
101
102
  }}
102
103
  role="menuitem"
103
104
  >
104
- <Icon data={faBarsStaggered} scale={0.8} class="mr-1" />
105
+ <Icon data={faBarsStaggered} scale={0.8} class="mr-2" />
105
106
  Flow
106
107
  </button>
108
+ {#if stop}
109
+ <button
110
+ class="w-full text-left p-2 hover:bg-gray-100 inline-flex gap-2.5"
111
+ on:click={() => {
112
+ close()
113
+ dispatch('new', 'end')
114
+ }}
115
+ role="menuitem"
116
+ >
117
+ <Square size={14} />
118
+ End Flow
119
+ </button>
120
+ {/if}
107
121
  </div>
108
122
  </Menu>
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  trigger?: boolean | undefined;
5
+ stop?: boolean | undefined;
5
6
  };
6
7
  events: {
7
8
  new: CustomEvent<any>;
@@ -8,7 +8,7 @@ import { faCodeBranch, faLongArrowDown } from '@fortawesome/free-solid-svg-icons
8
8
  import Icon from 'svelte-awesome';
9
9
  import IconedResourceType from '../../IconedResourceType.svelte';
10
10
  import LanguageIcon from '../../common/languageIcons/LanguageIcon.svelte';
11
- import { Building, Repeat } from 'lucide-svelte';
11
+ import { Building, Repeat, Square } from 'lucide-svelte';
12
12
  export let mod;
13
13
  export let index;
14
14
  const { select, selectedId } = getContext('FlowEditorContext');
@@ -97,6 +97,8 @@ function onDelete(event) {
97
97
  <div slot="icon">
98
98
  {#if mod.value.type === 'rawscript'}
99
99
  <LanguageIcon lang={mod.value.language} width={16} height={16} />
100
+ {:else if mod.summary == 'Terminate flow'}
101
+ <Square size={16} />
100
102
  {:else if mod.value.type === 'identity'}
101
103
  <Icon data={faLongArrowDown} scale={1.1} />
102
104
  {:else if mod.value.type === 'script'}
@@ -71,10 +71,10 @@ export async function loadSchemaFromModule(module) {
71
71
  let input_transforms = mod.input_transforms ?? module.input_transforms ?? {};
72
72
  if (JSON.stringify(keys.sort()) !== JSON.stringify(Object.keys(input_transforms).sort())) {
73
73
  input_transforms = keys.reduce((accu, key) => {
74
- let nv = input_transforms[key] ?? (module.id == 'failure' && ['message', 'name'].includes(key)) ? { type: 'javascript', expr: `error.${key}` } : {
74
+ let nv = input_transforms[key] ?? ((module.id == 'failure' && ['message', 'name'].includes(key)) ? { type: 'javascript', expr: `error.${key}` } : {
75
75
  type: 'static',
76
76
  value: undefined
77
- };
77
+ });
78
78
  accu[key] = nv;
79
79
  return accu;
80
80
  }, {});
@@ -128,7 +128,7 @@ export function codeToStaticTemplate(code) {
128
128
  if (lines.length == 1) {
129
129
  const line = lines[0].trim();
130
130
  if (line[0] == '`' && line.charAt(line.length - 1) == '`') {
131
- return line.slice(1, line.length - 1);
131
+ return line.slice(1, line.length - 1).replaceAll('\\`', '`');
132
132
  }
133
133
  }
134
134
  return undefined;
@@ -142,30 +142,36 @@ export function emptyFlowModuleState() {
142
142
  }
143
143
  const aCharCode = 'a'.charCodeAt(0);
144
144
  export function numberToChars(n) {
145
+ if (n < 0) {
146
+ return "-" + numberToChars(-n);
147
+ }
145
148
  var b = [n], sp, out, i, div;
146
149
  sp = 0;
147
150
  while (sp < b.length) {
148
- if (b[sp] > 25) {
149
- div = Math.floor(b[sp] / 27);
151
+ if (b[sp] > (25)) {
152
+ div = Math.floor(b[sp] / (26));
150
153
  b[sp + 1] = div - 1;
151
- b[sp] %= 27;
154
+ b[sp] %= (26);
152
155
  }
153
156
  sp += 1;
154
157
  }
155
158
  out = '';
156
159
  for (i = 0; i < b.length; i += 1) {
157
160
  let charCode = aCharCode + b[i];
158
- out = (charCode == 26 ? '-' : String.fromCharCode(charCode)) + out;
161
+ out = String.fromCharCode(charCode) + out;
159
162
  }
160
163
  return out;
161
164
  }
162
165
  export function charsToNumber(n) {
163
- let b = Math.pow(27, n.length - 1);
166
+ if (n.charAt(0) == '-') {
167
+ return charsToNumber(n.slice(1)) * -1;
168
+ }
169
+ let b = Math.pow(26, n.length - 1);
164
170
  let res = 0;
165
171
  for (let c of n) {
166
- let charCode = c == '-' ? aCharCode + 26 : c.charCodeAt(0);
172
+ let charCode = (c == '-' || c == '_') ? aCharCode + 25 : c.charCodeAt(0);
167
173
  res += (charCode - aCharCode + 1) * b;
168
- b = b / 27;
174
+ b = b / 26;
169
175
  }
170
176
  return res - 1;
171
177
  }
@@ -5,6 +5,7 @@ import { NODE, createIdGenerator, isNode, isLoop, isBranch } from '.';
5
5
  import { defaultIfEmptyString, truncateRev } from '../../utils';
6
6
  import { createEventDispatcher } from 'svelte';
7
7
  import { charsToNumber, numberToChars } from '../flows/utils';
8
+ export let success = undefined;
8
9
  export let modules = [];
9
10
  export let failureModule = undefined;
10
11
  export let minHeight = 0;
@@ -72,11 +73,20 @@ function getConvertedFlowModule(module, parent = undefined, edgeLabel = undefine
72
73
  return flowModuleToLoop(module.value.modules, module, parent);
73
74
  }
74
75
  else if (type === 'branchone') {
75
- const branches = [module.value.default, ...module.value.branches.map((b) => b.modules)];
76
- return flowModuleToBranch(module, branches, ['Default', ...module.value.branches.map((x) => `If ${truncateRev(x.expr, 20)}`)], parent, insideLoop);
76
+ const branches = [
77
+ { summary: 'Default branch', modules: module.value.default },
78
+ ...module.value.branches.map((b, i) => ({
79
+ summary: defaultIfEmptyString(b.summary, 'Branch ' + (i + 1)),
80
+ modules: b.modules
81
+ }))
82
+ ];
83
+ return flowModuleToBranch(module, branches, ['Default', ...module.value.branches.map((x) => `${truncateRev(x.expr, 20)}`)], parent, insideLoop);
77
84
  }
78
85
  else if (type === 'branchall') {
79
- const branches = module.value.branches.map((b) => b.modules);
86
+ const branches = module.value.branches.map((b, i) => ({
87
+ summary: defaultIfEmptyString(b.summary, `Branch ${i + 1}`),
88
+ modules: b.modules
89
+ }));
80
90
  return flowModuleToBranch(module, branches, [], parent, insideLoop);
81
91
  }
82
92
  else if (type === 'flow') {
@@ -119,6 +129,16 @@ function getStateColor(state) {
119
129
  return '#fff';
120
130
  }
121
131
  }
132
+ function getResultColor() {
133
+ switch (success) {
134
+ case true:
135
+ return getStateColor(FlowStatusModule.type.SUCCESS);
136
+ case false:
137
+ return getStateColor(FlowStatusModule.type.FAILURE);
138
+ default:
139
+ return undefined;
140
+ }
141
+ }
122
142
  function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeLabel, header, insideLoop = false) {
123
143
  const langImg = {
124
144
  deno: '/icons/ts-lang.svg',
@@ -132,7 +152,9 @@ function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeL
132
152
  inline: ''
133
153
  };
134
154
  const wrapperWidth = lang ? 'w-[calc(100%-70px)]' : 'w-[calc(100%-50px)]';
135
- let nodeId = id ?? numberToChars(idGenerator.next().value - 1);
155
+ let generatedId = idGenerator.next().value;
156
+ let nodeId = id ?? numberToChars(generatedId - 1);
157
+ // console.log(id, generatedId, nodeId, charsToNumber(nodeId))
136
158
  return {
137
159
  id: charsToNumber(nodeId),
138
160
  position: { x: -1, y: -1 },
@@ -201,14 +223,12 @@ function flowModuleToBranch(module, branches, edgesLabel, parent = undefined, in
201
223
  if (branches.length == 0) {
202
224
  branch.items.push([createVirtualNode(branchParent, 'No branches')]);
203
225
  }
204
- branches.forEach((modules, i) => {
226
+ branches.forEach(({ summary, modules }, i) => {
205
227
  const items = [];
206
- if (!modules.length) {
207
- items.push(createVirtualNode(branchParent, 'Empty branch', edgesLabel[i]));
208
- }
209
- else {
210
- modules.forEach((module) => {
211
- const item = getConvertedFlowModule(module, items.length ? items : numberToChars(branch.node.id), edgesLabel[i], insideLoop);
228
+ items.push(createVirtualNode(branchParent, summary, edgesLabel[i]));
229
+ if (modules.length) {
230
+ modules.forEach((module, j) => {
231
+ const item = getConvertedFlowModule(module, items, undefined, insideLoop);
212
232
  item && items.push(item);
213
233
  });
214
234
  }
@@ -235,6 +255,7 @@ function flattenNestedNodes(nestedNodes, nodes = []) {
235
255
  return array;
236
256
  }
237
257
  function layoutNodes(nodes) {
258
+ // console.log('layoutNodes', nodes)
238
259
  const stratify = dagStratify().id(({ id }) => numberToChars(id));
239
260
  const dag = stratify(nodes);
240
261
  const layout = sugiyama()
@@ -300,9 +321,10 @@ function createEdges(nodes) {
300
321
  });
301
322
  return edges;
302
323
  }
303
- function createVirtualNode(parentIds, label, edgesLabel, offset) {
324
+ function createVirtualNode(parentIds, label, edgeLabel, offset) {
325
+ const id = -idGenerator.next().value - 1 + (offset ?? 0);
304
326
  return {
305
- id: -idGenerator.next().value - 1 + (offset ?? 0),
327
+ id,
306
328
  position: { x: -1, y: -1 },
307
329
  data: {
308
330
  html: `
@@ -314,14 +336,15 @@ function createVirtualNode(parentIds, label, edgesLabel, offset) {
314
336
  width: NODE.width,
315
337
  height: NODE.height,
316
338
  borderColor: selectedNode == label ? 'black' : '#999',
317
- bgColor: selectedNode == label ? '#f5f5f5' : '#d4e4ff',
339
+ bgColor: label == 'Result' ? getResultColor() : selectedNode == label ? '#f5f5f5' : '#d4e4ff',
318
340
  parentIds,
319
341
  clickCallback: (node) => {
320
342
  if (!notSelectable) {
321
343
  selectedNode = label;
322
344
  }
323
345
  dispatch('click', label);
324
- }
346
+ },
347
+ edgeLabel
325
348
  };
326
349
  }
327
350
  function createErrorHandler(mod, parent_module) {
@@ -3,6 +3,7 @@ import { type FlowModule } from '../../gen';
3
3
  import { type GraphModuleState } from '.';
4
4
  declare const __propDef: {
5
5
  props: {
6
+ success?: boolean | undefined;
6
7
  modules?: FlowModule[] | undefined;
7
8
  failureModule?: FlowModule | undefined;
8
9
  minHeight?: number | undefined;
@@ -0,0 +1,9 @@
1
+ <script>export let height = '24px';
2
+ export let width = '24px';
3
+ </script>
4
+
5
+ <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" {width} {height} viewBox="0 0 30 30">
6
+ <path
7
+ d="M 7 4 C 5.343 4 4 5.343 4 7 L 4 23 C 4 24.657 5.343 26 7 26 L 23 26 C 24.657 26 26 24.657 26 23 L 26 7 C 26 5.343 24.657 4 23 4 L 7 4 z M 8 8 L 22 8 L 22 22 L 8 22 L 8 8 z M 12 12 L 12 18 L 18 18 L 18 12 L 12 12 z"
8
+ />
9
+ </svg>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ height?: string | undefined;
5
+ width?: string | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type SquareIconProps = typeof __propDef.props;
13
+ export type SquareIconEvents = typeof __propDef.events;
14
+ export type SquareIconSlots = typeof __propDef.slots;
15
+ export default class SquareIcon extends SvelteComponentTyped<SquareIconProps, SquareIconEvents, SquareIconSlots> {
16
+ }
17
+ export {};
@@ -45,6 +45,7 @@ import SupabaseIcon from './SupabaseIcon.svelte';
45
45
  import WebdavIcon from './WebdavIcon.svelte';
46
46
  import ZammadIcon from './ZammadIcon.svelte';
47
47
  import SurrealdbIcon from './SurrealdbIcon.svelte';
48
+ import SquareIcon from './SquareIcon.svelte';
48
49
  export declare const APP_TO_ICON_COMPONENT: {
49
50
  readonly postgresql: typeof PostgresIcon;
50
51
  readonly mysql: typeof Mysql;
@@ -92,6 +93,7 @@ export declare const APP_TO_ICON_COMPONENT: {
92
93
  readonly mongodb: typeof MongodbIcon;
93
94
  readonly reddit: typeof RedditIcon;
94
95
  readonly supabase: typeof SupabaseIcon;
96
+ readonly square: typeof SquareIcon;
95
97
  readonly webdav: typeof WebdavIcon;
96
98
  readonly zammad: typeof ZammadIcon;
97
99
  readonly nextcloud: typeof NextcloudIcon;
@@ -45,6 +45,7 @@ import SupabaseIcon from './SupabaseIcon.svelte';
45
45
  import WebdavIcon from './WebdavIcon.svelte';
46
46
  import ZammadIcon from './ZammadIcon.svelte';
47
47
  import SurrealdbIcon from './SurrealdbIcon.svelte';
48
+ import SquareIcon from './SquareIcon.svelte';
48
49
  export const APP_TO_ICON_COMPONENT = {
49
50
  postgresql: PostgresIcon,
50
51
  mysql: Mysql,
@@ -92,6 +93,7 @@ export const APP_TO_ICON_COMPONENT = {
92
93
  mongodb: MongodbIcon,
93
94
  reddit: RedditIcon,
94
95
  supabase: SupabaseIcon,
96
+ square: SquareIcon,
95
97
  webdav: WebdavIcon,
96
98
  zammad: ZammadIcon,
97
99
  nextcloud: NextcloudIcon,
@@ -3,6 +3,7 @@ import { page } from '$app/stores';
3
3
  import { displayDate, displayDaysAgo, forLater, msToSec, truncateHash, truncateRev } from '../../utils';
4
4
  import { faCalendar, faCircle, faClock, faFastForward, faHourglassHalf, faRobot, faSearch, faTimes, faUser, faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
5
5
  import { CalendarClock } from 'lucide-svelte';
6
+ import { onDestroy, onMount } from 'svelte';
6
7
  import Icon from 'svelte-awesome';
7
8
  import { check } from 'svelte-awesome/icons';
8
9
  import { Badge } from '../common';
@@ -10,13 +11,28 @@ import ScheduleEditor from '../ScheduleEditor.svelte';
10
11
  const SMALL_ICON_SCALE = 0.7;
11
12
  export let job;
12
13
  let scheduleEditor;
14
+ let time = Date.now();
15
+ let interval;
16
+ onMount(() => {
17
+ interval = setInterval(() => {
18
+ time = Date.now();
19
+ }, 1000);
20
+ });
21
+ onDestroy(() => {
22
+ interval && clearInterval(interval);
23
+ });
24
+ function endedDate(started_at, duration_ms) {
25
+ const started = new Date(started_at);
26
+ started.setMilliseconds(started.getMilliseconds() + duration_ms);
27
+ return displayDaysAgo(started.toString());
28
+ }
13
29
  </script>
14
30
 
15
31
  <ScheduleEditor on:update={() => goto('/schedules')} bind:this={scheduleEditor} />
16
32
 
17
33
  <div class="border border-gray-400 rounded py-4">
18
- <div class="grid grid-cols-1 lg:grid-cols-3 w-full gap-4">
19
- <div class="flex-col">
34
+ <div class="grid grid-cols-1 lg:grid-cols-4 w-full gap-4">
35
+ <div class="flex-col col-span-2">
20
36
  <div class="flex flex-row text-sm">
21
37
  {#if job === undefined}
22
38
  No job found
@@ -130,9 +146,17 @@ let scheduleEditor;
130
146
  <Icon class="text-gray-700" data={faClock} scale={SMALL_ICON_SCALE} /><span
131
147
  class="mx-1.5"
132
148
  >
133
- Started {displayDaysAgo(job.started_at ?? '')}</span
134
- >
135
- </div>
149
+ <span>
150
+ {#if job?.['duration_ms']}
151
+ Ended {#key time}
152
+ {endedDate(job.started_at, job?.['duration_ms'])}{/key}
153
+ {:else}
154
+ Started {#key time}
155
+ {displayDaysAgo(job.started_at ?? '')}{/key}
156
+ {/if}</span
157
+ >
158
+ </span></div
159
+ >
136
160
  {/if}
137
161
  {#if 'scheduled_for' in job && !job.running && job.scheduled_for && forLater(job.scheduled_for)}
138
162
  <div class="inline-flex gap-1">
@@ -1,9 +1,8 @@
1
- <script>import { pluralize, truncate } from '../../utils';
1
+ <script>import { copyToClipboard, pluralize, truncate } from '../../utils';
2
2
  import { createEventDispatcher } from 'svelte';
3
3
  import { Badge } from '../common';
4
4
  import { NEVER_TESTED_THIS_FAR } from '../flows/utils';
5
5
  import { getTypeAsString } from '../flows/utils';
6
- import Popover from '../Popover.svelte';
7
6
  import { computeKey } from './utils';
8
7
  import WarningMessage from './WarningMessage.svelte';
9
8
  export let json;
@@ -15,6 +14,7 @@ export let collapsed = level == 3 || Array.isArray(json);
15
14
  export let rawKey = false;
16
15
  export let topBrackets = false;
17
16
  export let topLevelNode = false;
17
+ export let allowCopy = true;
18
18
  const collapsedSymbol = '...';
19
19
  let keys;
20
20
  let isArray;
@@ -30,7 +30,10 @@ function collapse() {
30
30
  collapsed = !collapsed;
31
31
  }
32
32
  const dispatch = createEventDispatcher();
33
- function selectProp(key) {
33
+ function selectProp(key, value) {
34
+ if (pureViewer && allowCopy) {
35
+ copyToClipboard(value);
36
+ }
34
37
  dispatch('select', rawKey ? key : computeKey(key, isArray, currentPath));
35
38
  }
36
39
  </script>
@@ -50,7 +53,7 @@ function selectProp(key) {
50
53
  <ul class="w-full">
51
54
  {#each keys as key, index}
52
55
  <li class="pt-1">
53
- <button on:click={() => selectProp(key)} class="whitespace-nowrap">
56
+ <button on:click={() => selectProp(key, key)} class="whitespace-nowrap">
54
57
  {#if topLevelNode}
55
58
  <Badge baseClass="border border-blue-600" color="indigo">{key}</Badge>
56
59
  {:else}
@@ -78,7 +81,7 @@ function selectProp(key) {
78
81
  class="val {pureViewer
79
82
  ? 'cursor-auto'
80
83
  : ''} rounded hover:bg-blue-100 {getTypeAsString(json[key])}"
81
- on:click={() => selectProp(key)}
84
+ on:click={() => selectProp(key, json[key])}
82
85
  >
83
86
  {#if json[key] === NEVER_TESTED_THIS_FAR}
84
87
  <WarningMessage />
@@ -10,6 +10,7 @@ declare const __propDef: {
10
10
  rawKey?: boolean | undefined;
11
11
  topBrackets?: boolean | undefined;
12
12
  topLevelNode?: boolean | undefined;
13
+ allowCopy?: boolean | undefined;
13
14
  };
14
15
  events: {
15
16
  select: CustomEvent<any>;
@@ -17,7 +17,7 @@ let displayResources = false;
17
17
  const dispatch = createEventDispatcher();
18
18
  const EMPTY_STRING = '';
19
19
  let search = '';
20
- const { propPickerConfig, clearFocus } = getContext('PropPickerWrapper');
20
+ const { propPickerConfig } = getContext('PropPickerWrapper');
21
21
  $: flowInputsFiltered =
22
22
  search === EMPTY_STRING
23
23
  ? pickableProperties.flow_input
@@ -68,6 +68,7 @@ async function loadResources() {
68
68
  </div>
69
69
  <div class="overflow-y-auto mb-2">
70
70
  <ObjectViewer
71
+ allowCopy={false}
71
72
  pureViewer={!$propPickerConfig}
72
73
  json={flowInputsFiltered}
73
74
  on:select={(e) => {
@@ -79,6 +80,7 @@ async function loadResources() {
79
80
  <span class="font-bold text-sm">Error</span>
80
81
  <div class="overflow-y-auto mb-2">
81
82
  <ObjectViewer
83
+ allowCopy={false}
82
84
  pureViewer={!$propPickerConfig}
83
85
  json={{
84
86
  error: {
@@ -95,6 +97,7 @@ async function loadResources() {
95
97
  <span class="font-bold text-sm">Previous Result</span>
96
98
  <div class="overflow-y-auto mb-2">
97
99
  <ObjectViewer
100
+ allowCopy={false}
98
101
  topLevelNode
99
102
  pureViewer={!$propPickerConfig}
100
103
  json={Object.fromEntries(
@@ -110,6 +113,7 @@ async function loadResources() {
110
113
  <span class="font-bold text-sm">Resume payloads</span>
111
114
  <div class="overflow-y-auto mb-2">
112
115
  <ObjectViewer
116
+ allowCopy={false}
113
117
  topLevelNode
114
118
  pureViewer={!$propPickerConfig}
115
119
  json={{
@@ -127,6 +131,7 @@ async function loadResources() {
127
131
  <span class="font-bold text-sm">All Results</span>
128
132
  <div class="overflow-y-auto mb-2">
129
133
  <ObjectViewer
134
+ allowCopy={false}
130
135
  topLevelNode
131
136
  pureViewer={!$propPickerConfig}
132
137
  collapsed={true}
@@ -152,6 +157,7 @@ async function loadResources() {
152
157
  }}>-</Button
153
158
  >
154
159
  <ObjectViewer
160
+ allowCopy={false}
155
161
  pureViewer={!$propPickerConfig}
156
162
  rawKey={true}
157
163
  json={variables}
@@ -179,6 +185,7 @@ async function loadResources() {
179
185
  }}>-</Button
180
186
  >
181
187
  <ObjectViewer
188
+ allowCopy={false}
182
189
  pureViewer={!$propPickerConfig}
183
190
  rawKey={true}
184
191
  json={resources}