windmill-components 1.339.2 → 1.352.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 (231) hide show
  1. package/package/assets/app.css +0 -12
  2. package/package/ata/index.js +1 -0
  3. package/package/autosize.js +1 -1
  4. package/package/common.d.ts +6 -2
  5. package/package/common.js +2 -1
  6. package/package/components/AppConnectDrawer.svelte +1 -1
  7. package/package/components/AppConnectInner.svelte +9 -15
  8. package/package/components/ArgEnum.svelte +4 -1
  9. package/package/components/ArgEnum.svelte.d.ts +3 -1
  10. package/package/components/ArgInput.svelte +184 -141
  11. package/package/components/ArgInput.svelte.d.ts +7 -7
  12. package/package/components/ArrayTypeNarrowing.svelte +29 -27
  13. package/package/components/CenteredPage.svelte +2 -2
  14. package/package/components/DefaultTagsInner.svelte +1 -1
  15. package/package/components/Dev.svelte +2 -1
  16. package/package/components/DiffDrawer.svelte +1 -2
  17. package/package/components/DisplayResult.svelte +293 -233
  18. package/package/components/DurationMs.svelte +11 -3
  19. package/package/components/DurationMs.svelte.d.ts +2 -0
  20. package/package/components/EditableSchemaForm.svelte +447 -103
  21. package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
  22. package/package/components/Editor.svelte +3 -1
  23. package/package/components/EditorBar.svelte +2 -2
  24. package/package/components/FlowBuilder.svelte +14 -6
  25. package/package/components/FlowGraphViewer.svelte +1 -1
  26. package/package/components/FlowGraphViewerStep.svelte +37 -9
  27. package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
  28. package/package/components/FlowJobResult.svelte +1 -3
  29. package/package/components/FlowMetadata.svelte +1 -1
  30. package/package/components/FlowPreviewContent.svelte +5 -3
  31. package/package/components/FlowStatusViewer.svelte +4 -0
  32. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  33. package/package/components/FlowStatusViewerInner.svelte +50 -17
  34. package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
  35. package/package/components/FlowTimeline.svelte +13 -0
  36. package/package/components/FlowTimeline.svelte.d.ts +2 -0
  37. package/package/components/FlowViewer.svelte +0 -5
  38. package/package/components/FolderEditor.svelte +25 -0
  39. package/package/components/FolderEditor.svelte.d.ts +2 -0
  40. package/package/components/GroupEditor.svelte +36 -91
  41. package/package/components/GroupInfo.svelte +1 -1
  42. package/package/components/InputTransformForm.svelte +16 -1
  43. package/package/components/InputTransformForm.svelte.d.ts +2 -0
  44. package/package/components/InputTransformSchemaForm.svelte +6 -0
  45. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
  46. package/package/components/InstanceSettings.svelte +36 -3
  47. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  48. package/package/components/JobStatus.svelte +2 -2
  49. package/package/components/LightweightArgInput.svelte +66 -14
  50. package/package/components/LightweightArgInput.svelte.d.ts +3 -2
  51. package/package/components/LightweightSchemaForm.svelte +24 -15
  52. package/package/components/ModulePreviewForm.svelte +1 -0
  53. package/package/components/NumberTypeNarrowing.svelte +71 -44
  54. package/package/components/ObjectResourceInput.svelte +2 -0
  55. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  56. package/package/components/ObjectTypeNarrowing.svelte +0 -1
  57. package/package/components/ParqetCsvTableRenderer.svelte +181 -0
  58. package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
  59. package/package/components/Path.svelte +2 -2
  60. package/package/components/PersistentScriptDrawer.svelte +6 -3
  61. package/package/components/Range.svelte +88 -286
  62. package/package/components/Range.svelte.d.ts +9 -23
  63. package/package/components/ResourceEditor.svelte +138 -141
  64. package/package/components/ResourceEditor.svelte.d.ts +9 -2
  65. package/package/components/ResourceEditorDrawer.svelte +45 -0
  66. package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
  67. package/package/components/ResourcePicker.svelte +5 -2
  68. package/package/components/ResourceTypePicker.svelte +88 -36
  69. package/package/components/RunChart.svelte +55 -5
  70. package/package/components/RunChart.svelte.d.ts +1 -0
  71. package/package/components/RunForm.svelte +1 -1
  72. package/package/components/S3FilePicker.svelte +20 -8
  73. package/package/components/S3FilePicker.svelte.d.ts +2 -0
  74. package/package/components/ScheduleEditorInner.svelte +40 -37
  75. package/package/components/SchemaForm.svelte +192 -103
  76. package/package/components/SchemaForm.svelte.d.ts +16 -2
  77. package/package/components/ScriptBuilder.svelte +13 -8
  78. package/package/components/ScriptSchedules.svelte +11 -8
  79. package/package/components/ScriptSchema.svelte +3 -21
  80. package/package/components/ScriptVersionHistory.svelte +1 -1
  81. package/package/components/StringTypeNarrowing.svelte +217 -174
  82. package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
  83. package/package/components/Toggle.svelte +6 -3
  84. package/package/components/Toggle.svelte.d.ts +1 -0
  85. package/package/components/UserSettings.svelte +24 -1
  86. package/package/components/WorkspaceGroup.svelte +11 -13
  87. package/package/components/apps/components/buttons/AppButton.svelte +2 -0
  88. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  89. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
  90. package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
  91. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
  92. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
  93. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
  94. package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
  95. package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
  96. package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
  97. package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
  98. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
  99. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
  100. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
  102. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
  103. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
  104. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  105. package/package/components/apps/components/helpers/eval.js +1 -36
  106. package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
  107. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  108. package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
  109. package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
  110. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
  111. package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
  112. package/package/components/apps/components/layout/AppStepper.svelte +5 -1
  113. package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
  114. package/package/components/apps/components/layout/AppTabs.svelte +3 -1
  115. package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
  116. package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
  117. package/package/components/apps/editor/SettingsPanel.svelte +13 -3
  118. package/package/components/apps/editor/component/Component.svelte +8 -16
  119. package/package/components/apps/editor/component/components.d.ts +11 -2
  120. package/package/components/apps/editor/component/components.js +2 -1
  121. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
  122. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
  123. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
  124. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
  125. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
  126. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
  127. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
  128. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
  129. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
  130. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
  131. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
  132. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  133. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
  135. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  136. package/package/components/common/button/ButtonDropdown.svelte +1 -0
  137. package/package/components/common/drawer/Disposable.svelte +3 -2
  138. package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
  139. package/package/components/common/drawer/Drawer.svelte +12 -2
  140. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  141. package/package/components/common/fileDownload/FileDownload.svelte +4 -2
  142. package/package/components/common/fileUpload/FileUpload.svelte +4 -3
  143. package/package/components/common/modal/Modal.svelte +4 -1
  144. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  145. package/package/components/common/popup/Popup.svelte +1 -1
  146. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
  147. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  148. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
  149. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
  150. package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
  151. package/package/components/flows/content/FlowInput.svelte +63 -53
  152. package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
  153. package/package/components/flows/content/FlowModuleScript.svelte +40 -1
  154. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  155. package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
  156. package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
  157. package/package/components/flows/content/FlowSchedules.svelte +11 -8
  158. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
  159. package/package/components/flows/flowStateUtils.js +4 -1
  160. package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
  161. package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
  162. package/package/components/flows/types.d.ts +4 -0
  163. package/package/components/flows/utils.d.ts +5 -1
  164. package/package/components/flows/utils.js +36 -0
  165. package/package/components/graph/FlowGraph.svelte +5 -2
  166. package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
  167. package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
  168. package/package/components/graph/svelvet/container/models/index.js +1 -1
  169. package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
  170. package/package/components/graph/util.d.ts +1 -37
  171. package/package/components/graph/util.js +0 -34
  172. package/package/components/instanceSettings.js +2 -1
  173. package/package/components/jobs/JobPreview.svelte +1 -1
  174. package/package/components/multiselect/MultiSelect.svelte +4 -3
  175. package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
  176. package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
  177. package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
  178. package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
  179. package/package/components/runs/JobPreview.svelte +5 -1
  180. package/package/components/runs/RunRow.svelte +22 -3
  181. package/package/components/runs/RunRow.svelte.d.ts +2 -1
  182. package/package/components/runs/RunsTable.svelte +22 -9
  183. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  184. package/package/components/schema/AddProperty.svelte +149 -0
  185. package/package/components/schema/AddProperty.svelte.d.ts +23 -0
  186. package/package/components/schema/AddPropertyForm.svelte +33 -0
  187. package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
  188. package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
  189. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
  190. package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
  191. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
  192. package/package/components/schema/FlowPropertyEditor.svelte +393 -0
  193. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
  194. package/package/components/schema/PropertyEditor.svelte +185 -0
  195. package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
  196. package/package/components/schema/SchemaFormDND.svelte +75 -0
  197. package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
  198. package/package/components/table/AutoDataTable.svelte +90 -104
  199. package/package/components/table/Cell.svelte +4 -1
  200. package/package/components/table/Cell.svelte.d.ts +1 -0
  201. package/package/components/table/DownloadCsv.svelte +30 -0
  202. package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
  203. package/package/components/table/tableUtils.d.ts +8 -0
  204. package/package/components/table/tableUtils.js +37 -0
  205. package/package/consts.js +3 -1
  206. package/package/deno_fetch.d.ts.txt +6 -0
  207. package/package/gen/core/OpenAPI.js +1 -1
  208. package/package/gen/schemas.gen.d.ts +76 -0
  209. package/package/gen/schemas.gen.js +76 -0
  210. package/package/gen/services.gen.d.ts +100 -5
  211. package/package/gen/services.gen.js +216 -16
  212. package/package/gen/types.gen.d.ts +378 -5
  213. package/package/inferArgSig.d.ts +10 -0
  214. package/package/inferArgSig.js +59 -2
  215. package/package/scripts.d.ts +2 -0
  216. package/package/scripts.js +6 -3
  217. package/package/utils.d.ts +4 -3
  218. package/package/utils.js +9 -4
  219. package/package/workspace_settings.d.ts +15 -0
  220. package/package/workspace_settings.js +81 -0
  221. package/package.json +16 -7
  222. package/package/components/ParqetTableRenderer.svelte +0 -117
  223. package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
  224. package/package/components/PropertyRow.svelte +0 -88
  225. package/package/components/PropertyRow.svelte.d.ts +0 -23
  226. package/package/components/SchemaEditor.svelte +0 -346
  227. package/package/components/SchemaEditor.svelte.d.ts +0 -25
  228. package/package/components/SchemaModal.svelte +0 -443
  229. package/package/components/SchemaModal.svelte.d.ts +0 -33
  230. package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
  231. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
@@ -0,0 +1,75 @@
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import { dragHandle } from '@windmill-labs/svelte-dnd-action';
3
+ import SchemaForm from '../SchemaForm.svelte';
4
+ import { GripVertical } from 'lucide-svelte';
5
+ import { deepEqual } from 'fast-equals';
6
+ export let dndType = undefined;
7
+ export let schema;
8
+ export let args = {};
9
+ export let prettifyHeader = false;
10
+ export let lightweightMode = false;
11
+ export let onlyMaskPassword = false;
12
+ export let disablePortal = false;
13
+ export let disabled = false;
14
+ const dispatch = createEventDispatcher();
15
+ const flipDurationMs = 200;
16
+ let items = computeItems();
17
+ let dragDisabled = true;
18
+ $: schema && dragDisabled && updateItems();
19
+ function computeItems() {
20
+ return ((schema?.order ?? Object.keys(schema?.properties ?? {}) ?? []).map((key) => ({
21
+ id: key,
22
+ value: key
23
+ })) ?? []);
24
+ }
25
+ function updateItems() {
26
+ const newItems = computeItems();
27
+ if (!deepEqual(newItems, items)) {
28
+ items = newItems;
29
+ }
30
+ }
31
+ function handleConsider(e) {
32
+ dragDisabled = false;
33
+ const { items: newItems } = e.detail;
34
+ items = newItems;
35
+ }
36
+ function handleFinalize(e) {
37
+ const { items: newItems } = e.detail;
38
+ dragDisabled = true;
39
+ items = newItems;
40
+ dispatch('reorder', items.map((item) => item.value));
41
+ }
42
+ </script>
43
+
44
+ <!-- {JSON.stringify(schema)}
45
+ {dragDisabled} -->
46
+ <!-- {JSON.stringify(items)} -->
47
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
48
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
49
+ <SchemaForm
50
+ on:click
51
+ on:change
52
+ on:reorder
53
+ on:consider={handleConsider}
54
+ on:finalize={handleFinalize}
55
+ {lightweightMode}
56
+ {args}
57
+ {prettifyHeader}
58
+ {onlyMaskPassword}
59
+ {disablePortal}
60
+ {disabled}
61
+ bind:schema
62
+ dndConfig={{
63
+ items,
64
+ flipDurationMs,
65
+ dropTargetStyle: {},
66
+ type: dndType ?? 'top-level'
67
+ }}
68
+ {items}
69
+ >
70
+ <svelte:fragment slot="actions">
71
+ <div class="w-4 h-8 cursor-move ml-2 handle" aria-label="drag-handle" use:dragHandle>
72
+ <GripVertical size={16} />
73
+ </div>
74
+ </svelte:fragment>
75
+ </SchemaForm>
@@ -0,0 +1,28 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { Schema } from '../../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ dndType?: string | undefined;
6
+ schema: Schema;
7
+ args?: Record<string, any> | undefined;
8
+ prettifyHeader?: boolean | undefined;
9
+ lightweightMode?: boolean | undefined;
10
+ onlyMaskPassword?: boolean | undefined;
11
+ disablePortal?: boolean | undefined;
12
+ disabled?: boolean | undefined;
13
+ };
14
+ events: {
15
+ click: CustomEvent<any>;
16
+ change: CustomEvent<any>;
17
+ reorder: CustomEvent<any>;
18
+ } & {
19
+ [evt: string]: CustomEvent<any>;
20
+ };
21
+ slots: {};
22
+ };
23
+ export type SchemaFormDndProps = typeof __propDef.props;
24
+ export type SchemaFormDndEvents = typeof __propDef.events;
25
+ export type SchemaFormDndSlots = typeof __propDef.slots;
26
+ export default class SchemaFormDnd extends SvelteComponent<SchemaFormDndProps, SchemaFormDndEvents, SchemaFormDndSlots> {
27
+ }
28
+ export {};
@@ -4,46 +4,22 @@ import Cell from './Cell.svelte';
4
4
  import DataTable from './DataTable.svelte';
5
5
  import Head from './Head.svelte';
6
6
  import Row from './Row.svelte';
7
- import { pluralize, sendUserToast } from '../../utils';
7
+ import { pluralize } from '../../utils';
8
8
  import Badge from '../common/badge/Badge.svelte';
9
- import { isEmail, isLink } from './tableUtils';
9
+ import { computeStructuredObjectsAndHeaders, convertJsonToCsv, isEmail, isLink } from './tableUtils';
10
10
  import Popover from '../Popover.svelte';
11
11
  import DarkModeObserver from '../DarkModeObserver.svelte';
12
- import Button from '../common/button/Button.svelte';
13
- import { Parser } from '@json2csv/plainjs';
12
+ import DownloadCsv from './DownloadCsv.svelte';
14
13
  export let objects = [];
15
14
  let currentPage = 1;
16
15
  let perPage = 25;
17
16
  let search = '';
18
- $: structuredObjects = computeStructuredObjects(objects);
17
+ let structuredObjects = [];
19
18
  let headers = [];
20
- function computeStructuredObjects(objects) {
21
- if (Array.isArray(objects)) {
22
- let nextId = 1;
23
- let hds = [];
24
- let objs = objects.map((obj) => {
25
- let rowData = obj && typeof obj == 'object' ? obj : {};
26
- if (Array.isArray(rowData)) {
27
- rowData = Object.fromEntries(rowData.map((x, i) => ['col' + i, x]));
28
- }
29
- let ks = Object.keys(rowData);
30
- ks.forEach((x) => {
31
- if (!hds.includes(x)) {
32
- hds.push(x);
33
- }
34
- });
35
- return {
36
- _id: nextId++,
37
- rowData
38
- };
39
- });
40
- headers = hds;
41
- return objs;
42
- }
43
- else {
44
- headers = [];
45
- return [];
46
- }
19
+ $: recomputeObjectsAndHeaders(objects);
20
+ function recomputeObjectsAndHeaders(objects) {
21
+ ;
22
+ [headers, structuredObjects] = computeStructuredObjectsAndHeaders(objects);
47
23
  }
48
24
  function adjustCurrentPage() {
49
25
  const totalItems = objects.length;
@@ -53,32 +29,39 @@ function adjustCurrentPage() {
53
29
  }
54
30
  }
55
31
  $: perPage && adjustCurrentPage();
56
- $: data = structuredObjects
57
- .filter(({ rowData }) => search == undefined ||
58
- search == '' ||
59
- Object.values(rowData).some((value) => JSON.stringify(value).toLowerCase().includes(search.toLowerCase())))
60
- .sort((a, b) => {
61
- if (!activeSorting)
62
- return 0;
63
- const valA = a.rowData[activeSorting.column];
64
- const valB = b.rowData[activeSorting.column];
65
- const isAsc = activeSorting.direction === 'asc';
66
- if (valA == undefined || valA == null) {
67
- return isAsc ? -1 : 1;
68
- }
69
- if (valB == undefined || valB == null) {
70
- return isAsc ? 1 : -1;
71
- }
72
- if (isAsc) {
73
- return valA > valB ? 1 : -1;
32
+ $: data = computeData(structuredObjects, activeSorting, search);
33
+ let activeSorting = undefined;
34
+ function computeData(structuredObjects, activeSorting, search) {
35
+ let objects = structuredObjects;
36
+ if (search != undefined && search != '') {
37
+ objects = objects.filter((obj) => Object.values(obj.rowData).some((value) => JSON.stringify(value).toLowerCase().includes(search.toLowerCase())));
74
38
  }
75
- else {
76
- return valA > valB ? -1 : 1;
39
+ if (activeSorting) {
40
+ objects = objects.sort((a, b) => {
41
+ if (!activeSorting)
42
+ return 0;
43
+ const valA = a.rowData[activeSorting.column];
44
+ const valB = b.rowData[activeSorting.column];
45
+ const isAsc = activeSorting.direction === 'asc';
46
+ if (valA == undefined || valA == null) {
47
+ return isAsc ? -1 : 1;
48
+ }
49
+ if (valB == undefined || valB == null) {
50
+ return isAsc ? 1 : -1;
51
+ }
52
+ if (isAsc) {
53
+ return valA > valB ? 1 : -1;
54
+ }
55
+ else {
56
+ return valA > valB ? -1 : 1;
57
+ }
58
+ });
77
59
  }
78
- });
60
+ return objects;
61
+ }
79
62
  $: slicedData = data.slice((currentPage - 1) * perPage, currentPage * perPage);
80
- let activeSorting = undefined;
81
63
  let selection = [];
64
+ let colSelection = [];
82
65
  // Function to handle individual row checkbox change
83
66
  function handleCheckboxChange(rowId) {
84
67
  if (selection.includes(rowId)) {
@@ -92,15 +75,18 @@ function handleCheckboxChange(rowId) {
92
75
  }
93
76
  // Function to handle select all checkbox change
94
77
  function handleSelectAllChange() {
95
- if (selection.length === 0 || selection.length < slicedData.length) {
78
+ if (selection.length === 0 ||
79
+ (selection.length < slicedData.length &&
80
+ (colSelection.length === 0 || colSelection.length < headers.length))) {
96
81
  // Select all rows
97
82
  selection = slicedData.map((row) => row._id);
83
+ colSelection = [...headers];
98
84
  }
99
85
  else {
100
86
  // Deselect all rows
101
87
  selection = [];
88
+ colSelection = [];
102
89
  }
103
- selection = [...selection];
104
90
  }
105
91
  let renderCount = 0;
106
92
  const badgeColors = ['gray', 'blue', 'green', 'yellow', 'indigo'];
@@ -118,14 +104,14 @@ let wrapperWidth = 0;
118
104
  // let typof = typeof value
119
105
  // return (value != undefined && typof === 'string') || typof === 'number' || typof === 'boolean'
120
106
  // }
121
- function convertJsonToCsv(arr) {
122
- try {
123
- const parser = new Parser({});
124
- const csv = parser.parse(arr);
125
- return csv;
107
+ function handleColumnSelected(key) {
108
+ if (colSelection.includes(key)) {
109
+ // Remove the id from the colSelection array
110
+ colSelection = colSelection.filter((id) => id !== key);
126
111
  }
127
- catch (err) {
128
- throw new Error('An error occured when generating CSV:' + err);
112
+ else {
113
+ // Add the id to the colSelection array
114
+ colSelection = [...colSelection, key];
129
115
  }
130
116
  }
131
117
  </script>
@@ -144,45 +130,34 @@ function convertJsonToCsv(arr) {
144
130
  {/if}
145
131
  </div>
146
132
  <div class="flex flex-row items-center gap-2">
147
- <Button
148
- size="xs"
149
- color="light"
150
- startIcon={{ icon: Download }}
151
- on:click={() => {
152
- try {
153
- const csvContent = convertJsonToCsv(
154
- structuredObjects
155
- .filter(({ _id }) => {
156
- if (selection.length > 0) {
157
- return selection.includes(_id)
158
- } else {
159
- return true
160
- }
161
- })
162
- .map((obj) => obj.rowData)
163
- )
164
-
165
- const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })
166
- const url = URL.createObjectURL(blob)
167
- const link = document.createElement('a')
168
- link.setAttribute('href', url)
169
- link.setAttribute('download', 'data.csv')
170
- link.style.visibility = 'hidden'
171
- document.body.appendChild(link)
172
- link.click()
173
-
174
- document.body.removeChild(link)
175
- } catch (err) {
176
- sendUserToast(err, true)
177
- }
133
+ <DownloadCsv
134
+ getContent={() => {
135
+ return convertJsonToCsv(
136
+ selection.length > 0
137
+ ? structuredObjects
138
+ .filter(({ _id }) => selection.includes(_id))
139
+ .map((obj) =>
140
+ colSelection.length == 0
141
+ ? obj.rowData
142
+ : Object.fromEntries(
143
+ Object.entries(obj.rowData).filter(([key, _]) =>
144
+ colSelection.includes(key)
145
+ )
146
+ )
147
+ )
148
+ : colSelection.length == 0
149
+ ? objects
150
+ : objects.map((obj) =>
151
+ Object.fromEntries(
152
+ Object.entries(obj).filter(([key, _]) => colSelection.includes(key))
153
+ )
154
+ )
155
+ )
178
156
  }}
179
- >
180
- {#if selection.length > 0}
181
- Download selected as CSV
182
- {:else}
183
- Download as CSV
184
- {/if}
185
- </Button>
157
+ customText={selection.length > 0 || colSelection.length > 0
158
+ ? 'Download selected as CSV'
159
+ : undefined}
160
+ />
186
161
  <Dropdown
187
162
  items={() => {
188
163
  const actions = [
@@ -211,6 +186,7 @@ function convertJsonToCsv(arr) {
211
186
  displayName: 'Clear selection',
212
187
  icon: Columns,
213
188
  action: () => {
189
+ colSelection = []
214
190
  selection = []
215
191
  renderCount++
216
192
  }
@@ -294,14 +270,20 @@ function convertJsonToCsv(arr) {
294
270
  <MoveVertical size="16" class=" hover:text-gray-600 text-gray-400" />
295
271
  </button>
296
272
  {/if}
273
+ <input
274
+ type="checkbox"
275
+ class="!w-4 !h-4"
276
+ checked={colSelection.includes(key)}
277
+ on:change={() => handleColumnSelected(key)}
278
+ />
297
279
  </div>
298
280
  </Cell>
299
281
  {/each}
300
282
  </tr>
301
283
  </Head>
302
284
  <tbody class="divide-y">
303
- {#each slicedData as { _id, rowData }, index (index)}
304
- <Row dividable selected={selection.includes(_id)}>
285
+ {#each slicedData.filter((x) => x) as { _id, rowData }, index (index)}
286
+ <Row dividable selected={selection.includes(_id) && colSelection.length == 0}>
305
287
  <Cell first={true} last={false} class="w-6">
306
288
  <input
307
289
  type="checkbox"
@@ -312,7 +294,11 @@ function convertJsonToCsv(arr) {
312
294
  </Cell>
313
295
  {#each headers as key, index}
314
296
  {@const value = rowData[key]}
315
- <Cell last={index == Object.values(rowData ?? {}).length - 1}>
297
+ <Cell
298
+ selected={colSelection.includes(key) &&
299
+ (selection.length == 0 || selection.includes(_id))}
300
+ last={index == Object.values(rowData ?? {}).length - 1}
301
+ >
316
302
  {#if Array.isArray(value) && value.length === 0}
317
303
  <div />
318
304
  {:else if Array.isArray(value) && typeof value?.[0] === 'string'}
@@ -5,6 +5,7 @@ export let last = false;
5
5
  export let numeric = false;
6
6
  export let head = false;
7
7
  export let shouldStopPropagation = false;
8
+ export let selected = false;
8
9
  export let sticky = false;
9
10
  let Tag = head ? 'th' : 'td';
10
11
  const { size } = getContext('datatable');
@@ -31,7 +32,9 @@ const { size } = getContext('datatable');
31
32
  sticky ? `!p-0 sticky ${first ? 'left-0' : 'right-0'}` : 'px-2 py-3.5',
32
33
  size === 'sm' ? 'px-1.5 py-2.5' : '',
33
34
  size === 'lg' ? 'px-3 py-4' : '',
34
- size === 'xs' ? 'px-1 py-1.5' : ''
35
+ size === 'xs' ? 'px-1 py-1.5' : '',
36
+ selected ? 'bg-blue-50 dark:bg-blue-900/50' : '',
37
+ 'transition-all'
35
38
  )}
36
39
  >
37
40
  {#if sticky}
@@ -7,6 +7,7 @@ declare const __propDef: {
7
7
  numeric?: boolean | undefined;
8
8
  head?: boolean | undefined;
9
9
  shouldStopPropagation?: boolean | undefined;
10
+ selected?: boolean | undefined;
10
11
  sticky?: boolean | undefined;
11
12
  };
12
13
  events: {
@@ -0,0 +1,30 @@
1
+ <script>import { Download } from 'lucide-svelte';
2
+ import { Button } from '../common';
3
+ import { sendUserToast } from '../../toast';
4
+ export let getContent;
5
+ export let customText = undefined;
6
+ </script>
7
+
8
+ <Button
9
+ size="xs"
10
+ color="light"
11
+ startIcon={{ icon: Download }}
12
+ on:click={() => {
13
+ try {
14
+ const blob = new Blob([getContent()], { type: 'text/csv;charset=utf-8;' })
15
+ const url = URL.createObjectURL(blob)
16
+ const link = document.createElement('a')
17
+ link.setAttribute('href', url)
18
+ link.setAttribute('download', 'data.csv')
19
+ link.style.visibility = 'hidden'
20
+ document.body.appendChild(link)
21
+ link.click()
22
+
23
+ document.body.removeChild(link)
24
+ } catch (err) {
25
+ sendUserToast(err, true)
26
+ }
27
+ }}
28
+ >
29
+ {customText || 'Download as CSV'}
30
+ </Button>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ getContent: () => string;
5
+ customText?: string | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type DownloadCsvProps = typeof __propDef.props;
13
+ export type DownloadCsvEvents = typeof __propDef.events;
14
+ export type DownloadCsvSlots = typeof __propDef.slots;
15
+ export default class DownloadCsv extends SvelteComponent<DownloadCsvProps, DownloadCsvEvents, DownloadCsvSlots> {
16
+ }
17
+ export {};
@@ -1,2 +1,10 @@
1
1
  export declare function isLink(value: string): boolean;
2
2
  export declare function isEmail(value: string): boolean;
3
+ export declare function computeStructuredObjectsAndHeaders(objects: Array<Record<string, any>>): [
4
+ string[],
5
+ {
6
+ _id: number;
7
+ rowData: Record<string, any>;
8
+ }[]
9
+ ];
10
+ export declare function convertJsonToCsv(arr: Array<Record<string, any>>): string;
@@ -1,6 +1,43 @@
1
+ import { Parser } from '@json2csv/plainjs';
1
2
  export function isLink(value) {
2
3
  return value?.startsWith('http://') || value?.startsWith('https://');
3
4
  }
4
5
  export function isEmail(value) {
5
6
  return value?.includes('@');
6
7
  }
8
+ export function computeStructuredObjectsAndHeaders(objects) {
9
+ if (Array.isArray(objects)) {
10
+ let nextId = 1;
11
+ let hds = [];
12
+ let objs = objects.map((obj) => {
13
+ let rowData = obj && typeof obj == 'object' ? obj : {};
14
+ if (Array.isArray(rowData)) {
15
+ rowData = Object.fromEntries(rowData.map((x, i) => ['col' + i, x]));
16
+ }
17
+ let ks = Object.keys(rowData);
18
+ ks.forEach((x) => {
19
+ if (!hds.includes(x)) {
20
+ hds.push(x);
21
+ }
22
+ });
23
+ return {
24
+ _id: nextId++,
25
+ rowData
26
+ };
27
+ });
28
+ return [hds, objs];
29
+ }
30
+ else {
31
+ return [[], []];
32
+ }
33
+ }
34
+ export function convertJsonToCsv(arr) {
35
+ try {
36
+ const parser = new Parser({});
37
+ const csv = parser.parse(arr);
38
+ return csv;
39
+ }
40
+ catch (err) {
41
+ throw new Error('An error occured when generating CSV:' + err);
42
+ }
43
+ }
package/package/consts.js CHANGED
@@ -63,7 +63,9 @@ export const POSTGRES_TYPES = [
63
63
  'JSON',
64
64
  'JSON[]',
65
65
  'JSONB',
66
- 'JSONB[]'
66
+ 'JSONB[]',
67
+ 'BYTEA',
68
+ 'BYTEA[]'
67
69
  ];
68
70
  export const MYSQL_TYPES = [
69
71
  'varchar',
@@ -410,6 +410,12 @@ interface Console {
410
410
  log(...data: any[]): void;
411
411
  }
412
412
 
413
+
414
+ declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;
415
+ declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;
416
+ declare function clearTimeout(timeoutId: number): void;
417
+ declare function clearInterval(intervalId: number): void;
418
+
413
419
  declare var console: Console;
414
420
 
415
421
  declare var process: Process
@@ -21,7 +21,7 @@ export const OpenAPI = {
21
21
  PASSWORD: undefined,
22
22
  TOKEN: undefined,
23
23
  USERNAME: undefined,
24
- VERSION: '1.336.1',
24
+ VERSION: '1.352.0',
25
25
  WITH_CREDENTIALS: false,
26
26
  interceptors: {
27
27
  request: new Interceptors(),
@@ -407,6 +407,12 @@ export declare const $QueuedJob: {
407
407
  readonly priority: {
408
408
  readonly type: "integer";
409
409
  };
410
+ readonly self_wait_time_ms: {
411
+ readonly type: "number";
412
+ };
413
+ readonly aggregate_wait_time_ms: {
414
+ readonly type: "number";
415
+ };
410
416
  };
411
417
  readonly required: readonly ["id", "running", "canceled", "job_kind", "permissioned_as", "is_flow_step", "email", "visible_to_owner", "tag"];
412
418
  };
@@ -517,6 +523,12 @@ export declare const $CompletedJob: {
517
523
  readonly type: "string";
518
524
  };
519
525
  };
526
+ readonly self_wait_time_ms: {
527
+ readonly type: "number";
528
+ };
529
+ readonly aggregate_wait_time_ms: {
530
+ readonly type: "number";
531
+ };
520
532
  };
521
533
  readonly required: readonly ["id", "created_by", "duration_ms", "created_at", "started_at", "success", "canceled", "job_kind", "permissioned_as", "is_flow_step", "is_skipped", "email", "visible_to_owner", "tag"];
522
534
  };
@@ -1078,6 +1090,13 @@ export declare const $Resource: {
1078
1090
  readonly type: "boolean";
1079
1091
  };
1080
1092
  };
1093
+ readonly created_by: {
1094
+ readonly type: "string";
1095
+ };
1096
+ readonly edited_at: {
1097
+ readonly type: "string";
1098
+ readonly format: "date-time";
1099
+ };
1081
1100
  };
1082
1101
  readonly required: readonly ["path", "resource_type", "is_oauth"];
1083
1102
  };
@@ -1121,6 +1140,13 @@ export declare const $ListableResource: {
1121
1140
  readonly account: {
1122
1141
  readonly type: "number";
1123
1142
  };
1143
+ readonly created_by: {
1144
+ readonly type: "string";
1145
+ };
1146
+ readonly edited_at: {
1147
+ readonly type: "string";
1148
+ readonly format: "date-time";
1149
+ };
1124
1150
  };
1125
1151
  readonly required: readonly ["path", "resource_type", "is_oauth", "is_linked", "is_refreshed"];
1126
1152
  };
@@ -1137,6 +1163,13 @@ export declare const $ResourceType: {
1137
1163
  readonly description: {
1138
1164
  readonly type: "string";
1139
1165
  };
1166
+ readonly created_by: {
1167
+ readonly type: "string";
1168
+ };
1169
+ readonly edited_at: {
1170
+ readonly type: "string";
1171
+ readonly format: "date-time";
1172
+ };
1140
1173
  };
1141
1174
  readonly required: readonly ["name"];
1142
1175
  };
@@ -1432,6 +1465,16 @@ export declare const $Folder: {
1432
1465
  readonly type: "boolean";
1433
1466
  };
1434
1467
  };
1468
+ readonly summary: {
1469
+ readonly type: "string";
1470
+ };
1471
+ readonly created_by: {
1472
+ readonly type: "string";
1473
+ };
1474
+ readonly edited_at: {
1475
+ readonly type: "string";
1476
+ readonly format: "date-time";
1477
+ };
1435
1478
  };
1436
1479
  readonly required: readonly ["name", "owners", "extra_perms"];
1437
1480
  };
@@ -1478,6 +1521,18 @@ export declare const $WorkerPing: {
1478
1521
  readonly occupancy_rate: {
1479
1522
  readonly type: "number";
1480
1523
  };
1524
+ readonly memory: {
1525
+ readonly type: "number";
1526
+ };
1527
+ readonly vcpus: {
1528
+ readonly type: "number";
1529
+ };
1530
+ readonly memory_usage: {
1531
+ readonly type: "number";
1532
+ };
1533
+ readonly wm_memory_usage: {
1534
+ readonly type: "number";
1535
+ };
1481
1536
  };
1482
1537
  readonly required: readonly ["worker", "worker_instance", "ping_at", "started_at", "ip", "jobs_executed", "worker_group", "wm_version"];
1483
1538
  };
@@ -1960,6 +2015,27 @@ export declare const $LargeFileStorage: {
1960
2015
  readonly public_resource: {
1961
2016
  readonly type: "boolean";
1962
2017
  };
2018
+ readonly secondary_storage: {
2019
+ readonly type: "object";
2020
+ readonly additionalProperties: {
2021
+ readonly type: "object";
2022
+ readonly properties: {
2023
+ readonly type: {
2024
+ readonly type: "string";
2025
+ readonly enum: readonly ["S3Storage", "AzureBlobStorage", "AzureWorkloadIdentity", "S3AwsOidc"];
2026
+ };
2027
+ readonly s3_resource_path: {
2028
+ readonly type: "string";
2029
+ };
2030
+ readonly azure_blob_resource_path: {
2031
+ readonly type: "string";
2032
+ };
2033
+ readonly public_resource: {
2034
+ readonly type: "boolean";
2035
+ };
2036
+ };
2037
+ };
2038
+ };
1963
2039
  };
1964
2040
  };
1965
2041
  export declare const $WindmillLargeFile: {