windmill-components 1.394.8 → 1.405.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 (219) hide show
  1. package/package/ata/edgeCases.d.ts +0 -1
  2. package/package/ata/edgeCases.js +2 -8
  3. package/package/ata/index.js +4 -3
  4. package/package/common.d.ts +1 -1
  5. package/package/common.js +2 -2
  6. package/package/components/ApiConnectForm.svelte +33 -7
  7. package/package/components/ArgInput.svelte +4 -2
  8. package/package/components/CenteredModal.svelte +4 -1
  9. package/package/components/CenteredModal.svelte.d.ts +1 -0
  10. package/package/components/DateInput.svelte +2 -0
  11. package/package/components/DateInput.svelte.d.ts +1 -0
  12. package/package/components/DefaultScripts.svelte +8 -3
  13. package/package/components/DefaultScripts.svelte.d.ts +5 -1
  14. package/package/components/DefaultScriptsInner.svelte +16 -7
  15. package/package/components/DefaultScriptsInner.svelte.d.ts +3 -1
  16. package/package/components/Dev.svelte +68 -11
  17. package/package/components/DropdownV2.svelte.d.ts +3 -3
  18. package/package/components/DropdownV2Inner.svelte.d.ts +3 -3
  19. package/package/components/EditableSchemaForm.svelte +1 -0
  20. package/package/components/Editor.svelte +3 -2
  21. package/package/components/Editor.svelte.d.ts +1 -1
  22. package/package/components/ExecutionDuration.svelte +44 -0
  23. package/package/components/ExecutionDuration.svelte.d.ts +24 -0
  24. package/package/components/FlowBuilder.svelte +20 -12
  25. package/package/components/FlowGraphViewer.svelte +9 -2
  26. package/package/components/FlowGraphViewerStep.svelte +23 -10
  27. package/package/components/FlowJobResult.svelte +0 -1
  28. package/package/components/FlowStatusViewerInner.svelte +17 -4
  29. package/package/components/FlowTimeline.svelte +3 -3
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/IconedResourceType.svelte +17 -10
  32. package/package/components/IconedResourceType.svelte.d.ts +2 -0
  33. package/package/components/IdEditorInput.svelte +0 -1
  34. package/package/components/InstanceSettings.svelte +247 -129
  35. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  36. package/package/components/JobArgs.svelte +3 -1
  37. package/package/components/LightweightArgInput.svelte +35 -10
  38. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  39. package/package/components/LightweightObjectResourceInput.svelte +2 -0
  40. package/package/components/LightweightObjectResourceInput.svelte.d.ts +1 -0
  41. package/package/components/LightweightSchemaForm.svelte +2 -0
  42. package/package/components/LightweightSchemaForm.svelte.d.ts +1 -0
  43. package/package/components/Login.svelte +10 -5
  44. package/package/components/Login.svelte.d.ts +1 -0
  45. package/package/components/ModulePreview.svelte +21 -2
  46. package/package/components/ModuleStatus.svelte +3 -0
  47. package/package/components/ModuleStatus.svelte.d.ts +1 -0
  48. package/package/components/OAuthSetting.svelte +40 -15
  49. package/package/components/ObjectStoreConfigSettings.svelte +78 -76
  50. package/package/components/ParqetCsvTableRenderer.svelte +25 -3
  51. package/package/components/Password.svelte.d.ts +1 -1
  52. package/package/components/Path.svelte +74 -54
  53. package/package/components/Path.svelte.d.ts +2 -1
  54. package/package/components/ResourceEditor.svelte +38 -9
  55. package/package/components/ResultJobLoader.svelte +6 -3
  56. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  57. package/package/components/ScheduleEditorInner.svelte +2 -2
  58. package/package/components/SchemaForm.svelte +6 -1
  59. package/package/components/ScriptBuilder.svelte +12 -5
  60. package/package/components/ScriptEditor.svelte +33 -3
  61. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  62. package/package/components/Scrollable.svelte +47 -0
  63. package/package/components/Scrollable.svelte.d.ts +21 -0
  64. package/package/components/ShareModal.svelte.d.ts +2 -2
  65. package/package/components/SuperadminSettings.svelte +5 -7
  66. package/package/components/TestJobLoader.svelte +46 -5
  67. package/package/components/TestJobLoader.svelte.d.ts +2 -1
  68. package/package/components/ToggleHubWorkspaceQuick.svelte +14 -0
  69. package/package/components/ToggleHubWorkspaceQuick.svelte.d.ts +16 -0
  70. package/package/components/WorkspaceGroup.svelte +3 -2
  71. package/package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
  72. package/package/components/apps/components/inputs/AppSelect.svelte +1 -1
  73. package/package/components/apps/editor/component/components.d.ts +79 -79
  74. package/package/components/apps/svelte-select/lib/Select.svelte +1 -1
  75. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  76. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  77. package/package/components/common/menu/Menu.svelte +2 -1
  78. package/package/components/common/menu/MenuV2.svelte +3 -1
  79. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  80. package/package/components/common/popup/Popup.svelte +22 -12
  81. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  82. package/package/components/common/popup/PopupV2.svelte +58 -0
  83. package/package/components/common/popup/PopupV2.svelte.d.ts +27 -0
  84. package/package/components/copilot/CronGen.svelte +1 -1
  85. package/package/components/copilot/RegexGen.svelte +4 -4
  86. package/package/components/copilot/StepGen.svelte +6 -6
  87. package/package/components/copilot/StepGenQuick.svelte +57 -0
  88. package/package/components/copilot/StepGenQuick.svelte.d.ts +23 -0
  89. package/package/components/copilot/flow.d.ts +2 -0
  90. package/package/components/copilot/flow.js +55 -0
  91. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  92. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  93. package/package/components/details/DetailPageLayout.svelte +2 -0
  94. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  95. package/package/components/details/utils.d.ts +0 -1
  96. package/package/components/details/utils.js +1 -12
  97. package/package/components/flows/FlowEditor.svelte +2 -1
  98. package/package/components/flows/FlowProgressBar.svelte +16 -1
  99. package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -0
  100. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -0
  101. package/package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +1 -0
  102. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -0
  103. package/package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +1 -0
  104. package/package/components/flows/content/FlowConstants.svelte +1 -1
  105. package/package/components/flows/content/FlowEditorPanel.svelte +3 -0
  106. package/package/components/flows/content/FlowInputs.svelte +7 -6
  107. package/package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
  108. package/package/components/flows/content/FlowInputsFlowQuick.svelte +65 -0
  109. package/package/components/flows/content/FlowInputsFlowQuick.svelte.d.ts +19 -0
  110. package/package/components/flows/content/FlowInputsQuick.svelte +419 -0
  111. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +33 -0
  112. package/package/components/flows/content/FlowLoop.svelte +7 -1
  113. package/package/components/flows/content/FlowModuleComponent.svelte +12 -3
  114. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  115. package/package/components/flows/content/FlowModuleSkip.svelte +69 -0
  116. package/package/components/flows/content/FlowModuleSkip.svelte.d.ts +20 -0
  117. package/package/components/flows/content/FlowModuleWrapper.svelte +17 -4
  118. package/package/components/flows/content/FlowPreprocessorModule.svelte +16 -0
  119. package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +16 -0
  120. package/package/components/flows/content/FlowWhileLoop.svelte +9 -0
  121. package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -0
  122. package/package/components/flows/content/GenAiQuick.svelte +30 -0
  123. package/package/components/flows/content/GenAiQuick.svelte.d.ts +20 -0
  124. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  125. package/package/components/flows/flowInfers.js +1 -1
  126. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -0
  127. package/package/components/flows/idUtils.js +3 -1
  128. package/package/components/flows/map/FlowCopilotButton.svelte +55 -0
  129. package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +16 -0
  130. package/package/components/flows/map/FlowErrorHandlerItem.svelte +77 -47
  131. package/package/components/flows/map/FlowJobsMenu.svelte +1 -1
  132. package/package/components/flows/map/FlowModuleSchemaItem.svelte +25 -12
  133. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  134. package/package/components/flows/map/FlowModuleSchemaMap.svelte +61 -18
  135. package/package/components/flows/map/InsertModuleButton.svelte +161 -138
  136. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +7 -4
  137. package/package/components/flows/map/MapItem.svelte +11 -0
  138. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  139. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +48 -0
  140. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +23 -0
  141. package/package/components/flows/pickers/FlowToplevelNode.svelte +19 -0
  142. package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +19 -0
  143. package/package/components/flows/pickers/PickHubScriptQuick.svelte +138 -0
  144. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +33 -0
  145. package/package/components/flows/pickers/TopLevelNode.svelte +58 -0
  146. package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +21 -0
  147. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +120 -0
  148. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +35 -0
  149. package/package/components/flows/types.d.ts +1 -0
  150. package/package/components/graph/FlowGraphV2.svelte +93 -58
  151. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -1
  152. package/package/components/graph/graphBuilder.d.ts +2 -1
  153. package/package/components/graph/graphBuilder.js +345 -280
  154. package/package/components/graph/model.d.ts +1 -0
  155. package/package/components/graph/renderers/edges/BaseEdge.svelte +36 -14
  156. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  157. package/package/components/graph/renderers/nodes/InputNode.svelte +31 -51
  158. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +6 -1
  159. package/package/components/graph/renderers/nodes/ModuleNode.svelte +2 -1
  160. package/package/components/graph/util.d.ts +1 -1
  161. package/package/components/graph/util.js +7 -2
  162. package/package/components/home/ListFiltersQuick.svelte +51 -0
  163. package/package/components/home/ListFiltersQuick.svelte.d.ts +23 -0
  164. package/package/components/icons/AnsibleIcon.svelte +42 -0
  165. package/package/components/icons/AnsibleIcon.svelte.d.ts +25 -0
  166. package/package/components/icons/WindmillIcon2.svelte +141 -0
  167. package/package/components/icons/WindmillIcon2.svelte.d.ts +20 -0
  168. package/package/components/icons/index.d.ts +2 -1
  169. package/package/components/icons/index.js +2 -1
  170. package/package/components/instanceSettings.d.ts +2 -2
  171. package/package/components/instanceSettings.js +25 -58
  172. package/package/components/jobs/JobProgressBar.svelte +52 -0
  173. package/package/components/jobs/JobProgressBar.svelte.d.ts +23 -0
  174. package/package/components/progressBar/ProgressBar.svelte +18 -1
  175. package/package/components/progressBar/ProgressBar.svelte.d.ts +3 -0
  176. package/package/components/runs/JobPreview.svelte +1 -0
  177. package/package/components/runs/PreprocessedArgsDisplay.svelte +71 -0
  178. package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +16 -0
  179. package/package/components/schema/AddProperty.svelte +1 -0
  180. package/package/components/schema/EditableSchemaWrapper.svelte +142 -19
  181. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -0
  182. package/package/components/schema/FlowPropertyEditor.svelte +12 -0
  183. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -0
  184. package/package/components/scriptEditor/LogPanel.svelte +1 -0
  185. package/package/components/scriptEditor/LogPanel.svelte.d.ts +3 -1
  186. package/package/components/search/GlobalSearchModal.svelte +2 -1
  187. package/package/components/sidebar/SidebarContent.svelte +69 -8
  188. package/package/components/sidebar/changelogs.js +10 -0
  189. package/package/components/triggers/RouteEditor.svelte +19 -0
  190. package/package/components/triggers/RouteEditor.svelte.d.ts +21 -0
  191. package/package/components/triggers/RouteEditorInner.svelte +327 -0
  192. package/package/components/triggers/RouteEditorInner.svelte.d.ts +21 -0
  193. package/package/components/triggers/RoutesPanel.svelte +74 -0
  194. package/package/components/triggers/RoutesPanel.svelte.d.ts +17 -0
  195. package/package/editorUtils.js +2 -0
  196. package/package/gen/core/OpenAPI.js +1 -1
  197. package/package/gen/schemas.gen.d.ts +159 -8
  198. package/package/gen/schemas.gen.js +161 -8
  199. package/package/gen/services.gen.d.ts +139 -1
  200. package/package/gen/services.gen.js +282 -1
  201. package/package/gen/types.gen.d.ts +455 -12
  202. package/package/hubPaths.json +6 -8
  203. package/package/infer.d.ts +4 -2
  204. package/package/infer.js +25 -23
  205. package/package/inferArgSig.js +8 -2
  206. package/package/monaco_workers/graphql.worker.bundle.js +45440 -174
  207. package/package/relative_imports.d.ts +3 -0
  208. package/package/relative_imports.js +25 -0
  209. package/package/script_helpers.d.ts +7 -2
  210. package/package/script_helpers.js +151 -3
  211. package/package/scripts.d.ts +1 -1
  212. package/package/scripts.js +5 -1
  213. package/package/stores.d.ts +1 -0
  214. package/package/stores.js +1 -0
  215. package/package/utils.d.ts +1 -0
  216. package/package/utils.js +4 -0
  217. package/package.json +16 -7
  218. package/package/components/flows/map/InsertTriggerButton.svelte +0 -48
  219. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +0 -24
@@ -49,7 +49,7 @@ async function testConnection() {
49
49
  />
50
50
  </div>
51
51
  {#if bucket_config}
52
- <div class="flex gap-2">
52
+ <div class="flex gap-2 py-1">
53
53
  <Button
54
54
  spacingSize="sm"
55
55
  size="xs"
@@ -100,81 +100,83 @@ async function testConnection() {
100
100
  <Tab size="sm" value="S3">S3</Tab>
101
101
  <Tab size="sm" value="Azure">Azure Blob</Tab>
102
102
  </Tabs>
103
- {#if bucket_config.type === 'S3'}
104
- <label class="block pb-2">
105
- <span class="text-primary font-semibold text-sm">Bucket</span>
106
- <input type="text" placeholder="bucket-name" bind:value={bucket_config.bucket} />
107
- </label>
103
+ <div class="flex flex-col gap-2 mt-2 p-2 border rounded-md">
104
+ {#if bucket_config.type === 'S3'}
105
+ <label class="block pb-2">
106
+ <span class="text-primary font-semibold text-sm">Bucket</span>
107
+ <input type="text" placeholder="bucket-name" bind:value={bucket_config.bucket} />
108
+ </label>
108
109
 
109
- <label class="block pb-2">
110
- <span class="text-primary font-semibold text-sm">Region</span>
111
- <span class="text-tertiary text-2xs"
112
- >If left empty, will be derived automatically from $AWS_REGION</span
113
- >
114
- <input type="text" bind:value={bucket_config.region} />
115
- </label>
116
- <label class="block pb-2">
117
- <span class="text-primary font-semibold text-sm">Access key ID</span>
118
- <span class="text-tertiary text-2xs"
119
- >If left empty, will be derived automatically from $AWS_ACCESS_KEY_ID, pod or ec2 profile</span
120
- >
121
- <input type="text" bind:value={bucket_config.access_key} />
122
- </label>
123
- <label class="block pb-2">
124
- <span class="text-primary font-semibold text-sm">Secret key</span>
125
- <span class="text-tertiary text-2xs"
126
- >If left empty, will be derived automatically from $AWS_SECRET_KEY, pod or ec2 profile</span
127
- >
128
- <input type="password" autocomplete="new-password" bind:value={bucket_config.secret_key} />
129
- </label>
130
- <label class="block pb-2">
131
- <span class="text-primary font-semibold text-sm">Endpoint</span>
132
- <span class="text-tertiary text-2xs"
133
- >Only needed for non AWS S3 providers like R2 or MinIo</span
134
- >
135
- <input type="text" bind:value={bucket_config.endpoint} />
136
- </label>
137
- <div class="block pb-2">
138
- <span class="text-tertiary text-2xs">Disable if using https only policy</span>
139
- <div>
140
- <Toggle bind:checked={bucket_config.allow_http} options={{ right: 'Allow http' }} />
110
+ <label class="block pb-2">
111
+ <span class="text-primary font-semibold text-sm">Region</span>
112
+ <span class="text-tertiary text-2xs"
113
+ >If left empty, will be derived automatically from $AWS_REGION</span
114
+ >
115
+ <input type="text" bind:value={bucket_config.region} />
116
+ </label>
117
+ <label class="block pb-2">
118
+ <span class="text-primary font-semibold text-sm">Access key ID</span>
119
+ <span class="text-tertiary text-2xs"
120
+ >If left empty, will be derived automatically from $AWS_ACCESS_KEY_ID, pod or ec2 profile</span
121
+ >
122
+ <input type="text" bind:value={bucket_config.access_key} />
123
+ </label>
124
+ <label class="block pb-2">
125
+ <span class="text-primary font-semibold text-sm">Secret key</span>
126
+ <span class="text-tertiary text-2xs"
127
+ >If left empty, will be derived automatically from $AWS_SECRET_KEY, pod or ec2 profile</span
128
+ >
129
+ <input type="password" autocomplete="new-password" bind:value={bucket_config.secret_key} />
130
+ </label>
131
+ <label class="block pb-2">
132
+ <span class="text-primary font-semibold text-sm">Endpoint</span>
133
+ <span class="text-tertiary text-2xs"
134
+ >Only needed for non AWS S3 providers like R2 or MinIo</span
135
+ >
136
+ <input type="text" bind:value={bucket_config.endpoint} />
137
+ </label>
138
+ <div class="block pb-2">
139
+ <span class="text-tertiary text-2xs">Disable if using https only policy</span>
140
+ <div>
141
+ <Toggle bind:checked={bucket_config.allow_http} options={{ right: 'Allow http' }} />
142
+ </div>
141
143
  </div>
142
- </div>
143
- {:else if bucket_config.type === 'Azure'}
144
- <label class="block pb-2">
145
- <span class="text-primary font-semibold text-sm">Account name</span>
146
- <input type="text" placeholder="account-name" bind:value={bucket_config.accountName} />
147
- </label>
148
- <label class="block pb-2">
149
- <span class="text-primary font-semibold text-sm">Container name</span>
150
- <input type="text" placeholder="container-name" bind:value={bucket_config.containerName} />
151
- </label>
152
- <label class="block pb-2">
153
- <span class="text-primary font-semibold text-sm">Access key</span>
154
- <input type="password" autocomplete="new-password" bind:value={bucket_config.accessKey} />
155
- </label>
156
- <label class="block pb-2">
157
- <span class="text-primary font-semibold text-sm"
158
- >Tenant ID <span class="text-2xs text-tertiary">(optional)</span></span
159
- >
160
- <input type="text" bind:value={bucket_config.tenantId} />
161
- </label>
162
- <label class="block pb-2">
163
- <span class="text-primary font-semibold text-sm"
164
- >Client ID <span class="text-2xs text-tertiary">(optional)</span></span
165
- >
166
- <input type="text" bind:value={bucket_config.clientId} />
167
- </label>
168
- <label class="block pb-2">
169
- <span class="text-primary font-semibold text-sm"
170
- >Endpoint <span class="text-2xs text-tertiary">(optional)</span></span
171
- >
172
- <span class="text-tertiary text-2xs"
173
- >Only needed for non Azure Blob providers like Azurite</span
174
- >
175
- <input type="text" bind:value={bucket_config.endpoint} />
176
- </label>
177
- {:else}
178
- <div>Unknown bucket type {bucket_config['type']}</div>
179
- {/if}
144
+ {:else if bucket_config.type === 'Azure'}
145
+ <label class="block pb-2">
146
+ <span class="text-primary font-semibold text-sm">Account name</span>
147
+ <input type="text" placeholder="account-name" bind:value={bucket_config.accountName} />
148
+ </label>
149
+ <label class="block pb-2">
150
+ <span class="text-primary font-semibold text-sm">Container name</span>
151
+ <input type="text" placeholder="container-name" bind:value={bucket_config.containerName} />
152
+ </label>
153
+ <label class="block pb-2">
154
+ <span class="text-primary font-semibold text-sm">Access key</span>
155
+ <input type="password" autocomplete="new-password" bind:value={bucket_config.accessKey} />
156
+ </label>
157
+ <label class="block pb-2">
158
+ <span class="text-primary font-semibold text-sm"
159
+ >Tenant ID <span class="text-2xs text-tertiary">(optional)</span></span
160
+ >
161
+ <input type="text" bind:value={bucket_config.tenantId} />
162
+ </label>
163
+ <label class="block pb-2">
164
+ <span class="text-primary font-semibold text-sm"
165
+ >Client ID <span class="text-2xs text-tertiary">(optional)</span></span
166
+ >
167
+ <input type="text" bind:value={bucket_config.clientId} />
168
+ </label>
169
+ <label class="block pb-2">
170
+ <span class="text-primary font-semibold text-sm"
171
+ >Endpoint <span class="text-2xs text-tertiary">(optional)</span></span
172
+ >
173
+ <span class="text-tertiary text-2xs"
174
+ >Only needed for non Azure Blob providers like Azurite</span
175
+ >
176
+ <input type="text" bind:value={bucket_config.endpoint} />
177
+ </label>
178
+ {:else}
179
+ <div>Unknown bucket type {bucket_config['type']}</div>
180
+ {/if}
181
+ </div>
180
182
  {/if}
@@ -7,19 +7,36 @@ import { HelpersService } from '../gen';
7
7
  import { base } from '../base';
8
8
  import { enterpriseLicense, workspaceStore } from '../stores';
9
9
  import { Download } from 'lucide-svelte';
10
+ import { Loader2 } from 'lucide-svelte';
10
11
  // import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
11
12
  let selectedRowIndex = -1;
12
13
  export let s3resource;
13
14
  export let storage;
14
15
  export let workspaceId;
15
16
  export let disable_download = false;
17
+ let lastSearch = undefined;
18
+ let nbRows = undefined;
16
19
  let csvSeparatorChar = ',';
17
20
  let datasource = {
18
21
  rowCount: 0,
19
22
  getRows: async function (params) {
20
23
  try {
21
24
  const searchCol = params.filterModel ? Object.keys(params.filterModel)?.[0] : undefined;
25
+ const searchTerm = searchCol ? params.filterModel?.[searchCol]?.filter : undefined;
22
26
  const csv = s3resource.endsWith('.csv');
27
+ const newSearch = searchCol ? searchCol + searchTerm : undefined;
28
+ if (!nbRows || lastSearch != newSearch) {
29
+ nbRows = undefined;
30
+ const res = await HelpersService.loadTableRowCount({
31
+ workspace: workspaceId ?? $workspaceStore,
32
+ path: s3resource,
33
+ searchCol: searchCol,
34
+ storage,
35
+ searchTerm
36
+ });
37
+ nbRows = res.count;
38
+ lastSearch = newSearch;
39
+ }
23
40
  const requestBody = {
24
41
  workspace: workspaceId ?? $workspaceStore,
25
42
  path: s3resource,
@@ -27,8 +44,8 @@ let datasource = {
27
44
  limit: params.endRow - params.startRow,
28
45
  sortCol: params.sortModel?.[0]?.colId,
29
46
  sortDesc: params.sortModel?.[0]?.sort == 'desc',
30
- searchCol: searchCol,
31
- searchTerm: searchCol ? params.filterModel?.[searchCol]?.filter : undefined,
47
+ searchCol,
48
+ searchTerm,
32
49
  storage: storage,
33
50
  csvSeparator: csv ? csvSeparatorChar : undefined
34
51
  };
@@ -45,7 +62,7 @@ let datasource = {
45
62
  });
46
63
  }
47
64
  }
48
- params.successCallback(res.rows);
65
+ params.successCallback(res.rows, nbRows);
49
66
  }
50
67
  catch (e) {
51
68
  console.error(e);
@@ -164,6 +181,11 @@ let darkMode = false;
164
181
  >
165
182
  {/if}
166
183
 
184
+ {#if nbRows != undefined}
185
+ <div class="text-secondary ml-0.5 text-2xs">{nbRows} rows</div>
186
+ {:else}
187
+ <Loader2 class="animate-spin ml-0.5" size={12} />
188
+ {/if}
167
189
  <div
168
190
  class="ag-theme-alpine shadow-sm h-full"
169
191
  class:ag-theme-alpine-dark={darkMode}
@@ -1,7 +1,7 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- password: string;
4
+ password: string | undefined;
5
5
  placeholder?: string | undefined;
6
6
  disabled?: boolean | undefined;
7
7
  required?: boolean | undefined;
@@ -3,7 +3,7 @@ const lastMetaUsed = writable(undefined);
3
3
  </script>
4
4
 
5
5
  <script>import { pathToMeta } from '../common';
6
- import { AppService, FlowService, FolderService, ResourceService, ScheduleService, ScriptService, VariableService } from '../gen';
6
+ import { AppService, FlowService, FolderService, ResourceService, ScheduleService, ScriptService, HttpTriggerService, VariableService } from '../gen';
7
7
  import { superadmin, userStore, workspaceStore } from '../stores';
8
8
  import { createEventDispatcher, getContext } from 'svelte';
9
9
  import { writable } from 'svelte/store';
@@ -27,6 +27,7 @@ export let checkInitialPathExistence = false;
27
27
  export let autofocus = true;
28
28
  export let dirty = false;
29
29
  export let kind;
30
+ export let hideUser = false;
30
31
  let inputP = undefined;
31
32
  const dispatch = createEventDispatcher();
32
33
  let folders = [];
@@ -65,22 +66,33 @@ export async function reset() {
65
66
  if (path == '' || path == 'u//') {
66
67
  if ($lastMetaUsed == undefined || $lastMetaUsed.owner != $userStore?.username) {
67
68
  meta = {
68
- ownerKind: 'user',
69
+ ownerKind: hideUser ? 'folder' : 'user',
69
70
  name: fullNamePlaceholder ?? random_adj() + '_' + namePlaceholder,
70
71
  owner: ''
71
72
  };
72
- if ($userStore?.username?.includes('@')) {
73
- meta.owner = $userStore.username.split('@')[0].replace(/[^a-zA-Z0-9_]/g, '');
74
- }
75
- else {
76
- meta.owner = $userStore.username;
73
+ if (!hideUser) {
74
+ if ($userStore?.username?.includes('@')) {
75
+ meta.owner = $userStore.username.split('@')[0].replace(/[^a-zA-Z0-9_]/g, '');
76
+ }
77
+ else {
78
+ meta.owner = $userStore.username;
79
+ }
77
80
  }
78
81
  }
79
82
  else {
80
- meta = {
81
- ...$lastMetaUsed,
82
- name: fullNamePlaceholder ?? random_adj() + '_' + namePlaceholder
83
- };
83
+ if ($lastMetaUsed.ownerKind == 'user' && hideUser) {
84
+ meta = {
85
+ ownerKind: 'folder',
86
+ owner: '',
87
+ name: fullNamePlaceholder ?? random_adj() + '_' + namePlaceholder
88
+ };
89
+ }
90
+ else {
91
+ meta = {
92
+ ...$lastMetaUsed,
93
+ name: fullNamePlaceholder ?? random_adj() + '_' + namePlaceholder
94
+ };
95
+ }
84
96
  }
85
97
  let newMeta = { ...meta };
86
98
  while (await pathExists(metaToPath(newMeta), kind)) {
@@ -94,7 +106,7 @@ export async function reset() {
94
106
  path = metaToPath(meta);
95
107
  }
96
108
  else {
97
- meta = pathToMeta(path);
109
+ meta = pathToMeta(path, hideUser);
98
110
  }
99
111
  }
100
112
  async function loadFolders() {
@@ -167,6 +179,12 @@ async function pathExists(path, kind) {
167
179
  else if (kind == 'app') {
168
180
  return await AppService.existsApp({ workspace: $workspaceStore, path: path });
169
181
  }
182
+ else if (kind == 'http_trigger') {
183
+ return await HttpTriggerService.existsHttpTrigger({
184
+ workspace: $workspaceStore,
185
+ path: path
186
+ });
187
+ }
170
188
  else {
171
189
  return false;
172
190
  }
@@ -200,7 +218,7 @@ $: {
200
218
  }
201
219
  function initPath() {
202
220
  if (path != undefined && path != '') {
203
- meta = pathToMeta(path);
221
+ meta = pathToMeta(path, hideUser);
204
222
  onMetaChange();
205
223
  return;
206
224
  }
@@ -208,7 +226,7 @@ function initPath() {
208
226
  reset();
209
227
  }
210
228
  else {
211
- meta = pathToMeta(initialPath);
229
+ meta = pathToMeta(initialPath, hideUser);
212
230
  onMetaChange();
213
231
  path = initialPath;
214
232
  }
@@ -267,47 +285,49 @@ const openSearchWithPrefilledText = getContext('openSearchWithPrefilledText');
267
285
  {#if meta != undefined}
268
286
  <div class="flex gap-x-4 shrink">
269
287
  <!-- svelte-ignore a11y-label-has-associated-control -->
270
- <div class="block">
271
- <span class="text-secondary text-sm whitespace-nowrap">&nbsp;</span>
288
+ {#if !hideUser}
289
+ <div class="block">
290
+ <span class="text-secondary text-sm whitespace-nowrap">&nbsp;</span>
272
291
 
273
- <ToggleButtonGroup
274
- class="mt-0.5"
275
- bind:selected={meta.ownerKind}
276
- on:selected={(e) => {
277
- setDirty()
278
- const kind = e.detail
279
- if (meta) {
280
- if (kind === 'folder') {
281
- meta.owner = folders?.[0]?.name ?? ''
282
- } else if (kind === 'group') {
283
- meta.owner = 'all'
284
- } else {
285
- meta.owner = $userStore?.username?.split('@')[0] ?? ''
292
+ <ToggleButtonGroup
293
+ class="mt-0.5"
294
+ bind:selected={meta.ownerKind}
295
+ on:selected={(e) => {
296
+ setDirty()
297
+ const kind = e.detail
298
+ if (meta) {
299
+ if (kind === 'folder') {
300
+ meta.owner = folders?.[0]?.name ?? ''
301
+ } else if (kind === 'group') {
302
+ meta.owner = 'all'
303
+ } else {
304
+ meta.owner = $userStore?.username?.split('@')[0] ?? ''
305
+ }
286
306
  }
287
- }
288
- }}
289
- >
290
- <ToggleButton
291
- icon={User}
292
- {disabled}
293
- light
294
- size="xs"
295
- value="user"
296
- position="left"
297
- label="User"
298
- />
299
- <!-- <ToggleButton light size="xs" value="group" position="center">Group</ToggleButton> -->
300
- <ToggleButton
301
- icon={Folder}
302
- {disabled}
303
- light
304
- size="xs"
305
- value="folder"
306
- position="right"
307
- label="Folder"
308
- />
309
- </ToggleButtonGroup>
310
- </div>
307
+ }}
308
+ >
309
+ <ToggleButton
310
+ icon={User}
311
+ {disabled}
312
+ light
313
+ size="xs"
314
+ value="user"
315
+ position="left"
316
+ label="User"
317
+ />
318
+ <!-- <ToggleButton light size="xs" value="group" position="center">Group</ToggleButton> -->
319
+ <ToggleButton
320
+ icon={Folder}
321
+ {disabled}
322
+ light
323
+ size="xs"
324
+ value="folder"
325
+ position="right"
326
+ label="Folder"
327
+ />
328
+ </ToggleButtonGroup>
329
+ </div>
330
+ {/if}
311
331
  {#if meta.ownerKind === 'user'}
312
332
  <label class="block shrink min-w-0">
313
333
  <span class="text-secondary text-sm">User</span>
@@ -417,7 +437,7 @@ const openSearchWithPrefilledText = getContext('openSearchWithPrefilledText');
417
437
  <div class="text-red-600 dark:text-red-400 text-2xs">{error}</div>
418
438
  </div>
419
439
 
420
- {#if kind != 'app' && kind != 'schedule' && initialPath != '' && initialPath != undefined && initialPath != path}
440
+ {#if kind != 'app' && kind != 'schedule' && kind != 'http_trigger' && initialPath != '' && initialPath != undefined && initialPath != path}
421
441
  <Alert type="warning" class="mt-4" title="Moving may break other items relying on it">
422
442
  You are renaming an item that may be depended upon by other items. This may break apps, flows
423
443
  or resources. Find if it used elsewhere using the content search. Note that linked variables
@@ -10,7 +10,8 @@ declare const __propDef: {
10
10
  checkInitialPathExistence?: boolean | undefined;
11
11
  autofocus?: boolean | undefined;
12
12
  dirty?: boolean | undefined;
13
- kind: "script" | "flow" | "resource" | "schedule" | "app" | "variable" | "raw_app";
13
+ kind: "script" | "flow" | "resource" | "schedule" | "app" | "variable" | "raw_app" | "http_trigger";
14
+ hideUser?: boolean | undefined;
14
15
  focus?: (() => void) | undefined;
15
16
  setName?: ((x: string) => void) | undefined;
16
17
  reset?: (() => Promise<void>) | undefined;
@@ -95,6 +95,9 @@ async function loadResourceType() {
95
95
  if (resourceType.schema) {
96
96
  resourceSchema = resourceType.schema;
97
97
  }
98
+ if (resourceTypeInfo?.format_extension) {
99
+ textFileContent = args.content;
100
+ }
98
101
  }
99
102
  catch (err) {
100
103
  resourceSchema = undefined;
@@ -121,6 +124,8 @@ function updateArgsFromLinkedVars() {
121
124
  args[k] = `$var:${path}`;
122
125
  });
123
126
  }
127
+ let textFileContent = '';
128
+ $: textFileContent && parseTextFileContent();
124
129
  function switchTab(asJson) {
125
130
  viewJsonSchema = asJson;
126
131
  if (asJson) {
@@ -128,8 +133,16 @@ function switchTab(asJson) {
128
133
  }
129
134
  else {
130
135
  parseJson();
136
+ if (resourceTypeInfo?.format_extension) {
137
+ textFileContent = args.content;
138
+ }
131
139
  }
132
140
  }
141
+ function parseTextFileContent() {
142
+ args = {
143
+ content: textFileContent
144
+ };
145
+ }
133
146
  </script>
134
147
 
135
148
  <div>
@@ -200,15 +213,31 @@ function switchTab(asJson) {
200
213
  {#if loadingSchema}
201
214
  <Skeleton layout={[[4]]} />
202
215
  {:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
203
- <SchemaForm
204
- onlyMaskPassword
205
- noDelete
206
- disabled={!can_write}
207
- compact
208
- schema={resourceSchema}
209
- bind:args
210
- bind:isValid
211
- />
216
+ {#if resourceTypeInfo?.format_extension}
217
+ <h5 class="mt-4 inline-flex items-center gap-4 pb-2">
218
+ File content ({resourceTypeInfo.format_extension})
219
+ </h5>
220
+ <div class="h-full w-full border p-1 rounded">
221
+
222
+ <SimpleEditor
223
+ autoHeight
224
+ class="editor"
225
+ lang={resourceTypeInfo.format_extension}
226
+ bind:code={textFileContent}
227
+ fixedOverflowWidgets={false}
228
+ />
229
+ </div>
230
+ {:else}
231
+ <SchemaForm
232
+ onlyMaskPassword
233
+ noDelete
234
+ disabled={!can_write}
235
+ compact
236
+ schema={resourceSchema}
237
+ bind:args
238
+ bind:isValid
239
+ />
240
+ {/if}
212
241
  {:else if !can_write}
213
242
  <input type="text" disabled value={rawCode} />
214
243
  {:else}
@@ -59,21 +59,24 @@ export async function runScriptByPath(path, args, callbacks) {
59
59
  return abstractRun(() => JobService.runScriptByPath({
60
60
  workspace: $workspaceStore,
61
61
  path: path,
62
- requestBody: args
62
+ requestBody: args,
63
+ skipPreprocessor: true
63
64
  }), callbacks);
64
65
  }
65
66
  export async function runScriptByHash(hash, args, callbacks) {
66
67
  return abstractRun(() => JobService.runScriptByHash({
67
68
  workspace: $workspaceStore,
68
69
  hash: hash,
69
- requestBody: args
70
+ requestBody: args,
71
+ skipPreprocessor: true
70
72
  }), callbacks);
71
73
  }
72
74
  export async function runFlowByPath(path, args, callbacks) {
73
75
  return abstractRun(() => JobService.runFlowByPath({
74
76
  workspace: $workspaceStore,
75
77
  path: path ?? '',
76
- requestBody: args
78
+ requestBody: args,
79
+ skipPreprocessor: true
77
80
  }), callbacks);
78
81
  }
79
82
  export async function runPreview(path, code, lang, args, tag, callbacks) {
@@ -81,7 +81,7 @@ export default class ResultJobLoader extends SvelteComponent<ResultJobLoaderProp
81
81
  cancel: () => void;
82
82
  error: (err: Error) => void;
83
83
  } | undefined) => Promise<string>;
84
- get runPreview(): (path: string | undefined, code: string, lang: "python3" | "deno" | "go" | "bash" | "powershell" | "postgresql" | "mysql" | "bigquery" | "snowflake" | "mssql" | "graphql" | "nativets" | "bun" | "php" | "rust", args: Record<string, any>, tag: string | undefined, callbacks?: {
84
+ get runPreview(): (path: string | undefined, code: string, lang: "python3" | "deno" | "go" | "bash" | "powershell" | "postgresql" | "mysql" | "bigquery" | "snowflake" | "mssql" | "graphql" | "nativets" | "bun" | "php" | "rust" | "ansible", args: Record<string, any>, tag: string | undefined, callbacks?: {
85
85
  done: (x: any) => void;
86
86
  cancel: () => void;
87
87
  error: (err: Error) => void;
@@ -737,7 +737,7 @@ $: !showPauseUntil && (paused_until = undefined);
737
737
  bind:handlerPath={errorHandlerPath}
738
738
  customInitialScriptPath={errorHandlerCustomInitialPath}
739
739
  slackToggleText="Alert channel on error"
740
- customScriptTemplate="/scripts/add?hub=hub%2F2420%2Fwindmill%2Fschedule_error_handler_template"
740
+ customScriptTemplate="/scripts/add?hub=hub%2F9081%2Fwindmill%2Fschedule_error_handler_template"
741
741
  bind:customHandlerKind={errorHandleritemKind}
742
742
  bind:handlerExtraArgs={errorHandlerExtraArgs}
743
743
  >
@@ -830,7 +830,7 @@ $: !showPauseUntil && (paused_until = undefined);
830
830
  bind:handlerPath={recoveryHandlerPath}
831
831
  customInitialScriptPath={recoveryHandlerCustomInitialPath}
832
832
  slackToggleText="Alert channel when error recovered"
833
- customScriptTemplate="/scripts/add?hub=hub%2F2794%2Fwindmill%2Fschedule_recovery_handler_template"
833
+ customScriptTemplate="/scripts/add?hub=hub%2F9082%2Fwindmill%2Fschedule_recovery_handler_template"
834
834
  bind:customHandlerKind={recoveryHandlerItemKind}
835
835
  bind:handlerExtraArgs={recoveryHandlerExtraArgs}
836
836
  >
@@ -157,6 +157,9 @@ $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
157
157
  extra={schema.properties[argName]}
158
158
  title={schema.properties[argName].title}
159
159
  placeholder={schema.properties[argName].placeholder}
160
+ disabled={disabledArgs.includes(argName) ||
161
+ disabled ||
162
+ schema.properties[argName].disabled}
160
163
  >
161
164
  <svelte:fragment slot="actions">
162
165
  <slot name="actions" />
@@ -213,7 +216,9 @@ $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
213
216
  bind:order={schema.properties[argName].order}
214
217
  nestedRequired={schema.properties[argName]?.required}
215
218
  itemsType={schema.properties[argName].items}
216
- disabled={disabledArgs.includes(argName) || disabled}
219
+ disabled={disabledArgs.includes(argName) ||
220
+ disabled ||
221
+ schema.properties[argName].disabled}
217
222
  {compact}
218
223
  {variableEditor}
219
224
  {itemPicker}