Flowfile 0.3.9__py3-none-any.whl → 0.3.10__py3-none-any.whl

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.

Potentially problematic release.


This version of Flowfile might be problematic. Click here for more details.

Files changed (138) hide show
  1. flowfile/__init__.py +1 -1
  2. flowfile/api.py +0 -1
  3. flowfile/web/static/assets/{CloudConnectionManager-c97c25f8.js → CloudConnectionManager-d7c2c028.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-f1ff509e.js → CloudStorageReader-d467329f.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-034f8b78.js → CloudStorageWriter-071b8b00.js} +12 -79
  6. flowfile/web/static/assets/{CloudStorageWriter-49c9a4b2.css → CloudStorageWriter-b0ee067f.css} +24 -24
  7. flowfile/web/static/assets/ContextMenu-2dea5e27.js +41 -0
  8. flowfile/web/static/assets/{SettingsSection-9c836ecc.css → ContextMenu-4c74eef1.css} +0 -21
  9. flowfile/web/static/assets/ContextMenu-63cfa99b.css +26 -0
  10. flowfile/web/static/assets/ContextMenu-785554c4.js +41 -0
  11. flowfile/web/static/assets/ContextMenu-a51e19ea.js +41 -0
  12. flowfile/web/static/assets/ContextMenu-c13f91d0.css +26 -0
  13. flowfile/web/static/assets/{CrossJoin-41efa4cb.css → CrossJoin-1119d18e.css} +18 -18
  14. flowfile/web/static/assets/{CrossJoin-9e156ebe.js → CrossJoin-cf68ec7a.js} +14 -84
  15. flowfile/web/static/assets/{DatabaseConnectionSettings-d5c625b3.js → DatabaseConnectionSettings-435c5dd8.js} +3 -3
  16. flowfile/web/static/assets/{DatabaseManager-265adc5e.js → DatabaseManager-349e33a8.js} +2 -2
  17. flowfile/web/static/assets/{DatabaseReader-0b10551e.js → DatabaseReader-8075bd28.js} +14 -114
  18. flowfile/web/static/assets/{DatabaseReader-f50c6558.css → DatabaseReader-ae61773c.css} +0 -27
  19. flowfile/web/static/assets/{DatabaseWriter-c17c6916.js → DatabaseWriter-3e2dda89.js} +13 -74
  20. flowfile/web/static/assets/{ExploreData-5bdae813.css → ExploreData-2d0cf4db.css} +8 -14
  21. flowfile/web/static/assets/ExploreData-76ec698c.js +192 -0
  22. flowfile/web/static/assets/{ExternalSource-3a66556c.js → ExternalSource-609a265c.js} +8 -79
  23. flowfile/web/static/assets/{Filter-91ad87e7.js → Filter-97cff793.js} +12 -85
  24. flowfile/web/static/assets/{Filter-a9d08ba1.css → Filter-f62091b3.css} +3 -3
  25. flowfile/web/static/assets/{Formula-3c395ab1.js → Formula-09de0ec9.js} +18 -85
  26. flowfile/web/static/assets/{Formula-29f19d21.css → Formula-bb96803d.css} +4 -4
  27. flowfile/web/static/assets/{FuzzyMatch-6857de82.css → FuzzyMatch-1010f966.css} +42 -42
  28. flowfile/web/static/assets/{FuzzyMatch-2df0d230.js → FuzzyMatch-bdf70248.js} +16 -87
  29. flowfile/web/static/assets/{GraphSolver-d285877f.js → GraphSolver-0b5a0e05.js} +13 -159
  30. flowfile/web/static/assets/GraphSolver-f0cb7bfb.css +22 -0
  31. flowfile/web/static/assets/{Unique-b5615727.css → GroupBy-b9505323.css} +8 -8
  32. flowfile/web/static/assets/{GroupBy-0bd1cc6b.js → GroupBy-eaddadde.js} +12 -75
  33. flowfile/web/static/assets/{Join-5a78a203.js → Join-3313371b.js} +15 -85
  34. flowfile/web/static/assets/{Join-f45eff22.css → Join-fd79b451.css} +20 -20
  35. flowfile/web/static/assets/{ManualInput-a71b52c6.css → ManualInput-3246a08d.css} +20 -20
  36. flowfile/web/static/assets/{ManualInput-93aef9d6.js → ManualInput-e8bfc0be.js} +11 -82
  37. flowfile/web/static/assets/{Output-411ecaee.js → Output-7303bb09.js} +13 -243
  38. flowfile/web/static/assets/Output-ddc9079f.css +37 -0
  39. flowfile/web/static/assets/{Pivot-89db4b04.js → Pivot-3b1c54ef.js} +14 -138
  40. flowfile/web/static/assets/Pivot-cf333e3d.css +22 -0
  41. flowfile/web/static/assets/PivotValidation-3bb36c8f.js +61 -0
  42. flowfile/web/static/assets/PivotValidation-891ddfb0.css +13 -0
  43. flowfile/web/static/assets/PivotValidation-c46cd420.css +13 -0
  44. flowfile/web/static/assets/PivotValidation-eaa819c0.js +61 -0
  45. flowfile/web/static/assets/{PolarsCode-a9f974f8.js → PolarsCode-aa12e25d.js} +13 -80
  46. flowfile/web/static/assets/Read-6b17491f.css +62 -0
  47. flowfile/web/static/assets/Read-a2bfc618.js +243 -0
  48. flowfile/web/static/assets/RecordCount-aa0dc082.js +53 -0
  49. flowfile/web/static/assets/{RecordId-55ae7d36.js → RecordId-48ee1a3b.js} +8 -80
  50. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +27 -0
  51. flowfile/web/static/assets/SQLQueryComponent-e149dbf2.js +38 -0
  52. flowfile/web/static/assets/{Sample-b4a18476.js → Sample-f06cb97a.js} +8 -77
  53. flowfile/web/static/assets/{SecretManager-b066d13a.js → SecretManager-37f34886.js} +2 -2
  54. flowfile/web/static/assets/{Select-727688dc.js → Select-b60e6c47.js} +11 -85
  55. flowfile/web/static/assets/SettingsSection-2e4d03c4.css +21 -0
  56. flowfile/web/static/assets/SettingsSection-5c696bee.css +20 -0
  57. flowfile/web/static/assets/SettingsSection-70e5a7b1.js +53 -0
  58. flowfile/web/static/assets/SettingsSection-71e6b7e3.css +21 -0
  59. flowfile/web/static/assets/{SettingsSection-695ac487.js → SettingsSection-75b6cf4f.js} +2 -40
  60. flowfile/web/static/assets/SettingsSection-e57a672e.js +45 -0
  61. flowfile/web/static/assets/{GroupBy-ab1ea74b.css → Sort-3643d625.css} +8 -8
  62. flowfile/web/static/assets/{Sort-be3339a8.js → Sort-51b1ee4d.js} +12 -97
  63. flowfile/web/static/assets/{TextToRows-7b8998da.js → TextToRows-26835f8f.js} +14 -83
  64. flowfile/web/static/assets/{TextToRows-c92d1ec2.css → TextToRows-5d2c1190.css} +9 -9
  65. flowfile/web/static/assets/{UnavailableFields-8b0cb48e.js → UnavailableFields-88a4cd0c.js} +2 -2
  66. flowfile/web/static/assets/Union-4d0088eb.js +77 -0
  67. flowfile/web/static/assets/{Union-8d9ac7f9.css → Union-af6c3d9b.css} +6 -6
  68. flowfile/web/static/assets/{Unique-af5a80b4.js → Unique-7d554a62.js} +22 -91
  69. flowfile/web/static/assets/{Sort-7ccfa0fe.css → Unique-f9fb0809.css} +8 -8
  70. flowfile/web/static/assets/Unpivot-1e422df3.css +30 -0
  71. flowfile/web/static/assets/{Unpivot-5195d411.js → Unpivot-4668595c.js} +12 -166
  72. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +13 -0
  73. flowfile/web/static/assets/UnpivotValidation-d4f0e0e8.js +51 -0
  74. flowfile/web/static/assets/{ExploreData-18a4fe52.js → VueGraphicWalker-5324d566.js} +4 -264
  75. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  76. flowfile/web/static/assets/{api-cb00cce6.js → api-271ed117.js} +1 -1
  77. flowfile/web/static/assets/{api-023d1733.js → api-31e4fea6.js} +1 -1
  78. flowfile/web/static/assets/{designer-2197d782.css → designer-091bdc3f.css} +819 -184
  79. flowfile/web/static/assets/{designer-6c322d8e.js → designer-bf3d9487.js} +2191 -703
  80. flowfile/web/static/assets/{documentation-4d1fafe1.js → documentation-4d0a1cea.js} +1 -1
  81. flowfile/web/static/assets/{dropDown-0b46dd77.js → dropDown-025888df.js} +1 -1
  82. flowfile/web/static/assets/{fullEditor-ec4e4f95.js → fullEditor-1df991ec.js} +2 -2
  83. flowfile/web/static/assets/{genericNodeSettings-def5879b.js → genericNodeSettings-d3b2b2ac.js} +3 -3
  84. flowfile/web/static/assets/{index-683fc198.js → index-d0518598.js} +210 -31
  85. flowfile/web/static/assets/{Output-48f81019.css → outputCsv-9cc59e0b.css} +0 -143
  86. flowfile/web/static/assets/outputCsv-d8457527.js +86 -0
  87. flowfile/web/static/assets/outputExcel-b41305c0.css +102 -0
  88. flowfile/web/static/assets/outputExcel-be89153e.js +56 -0
  89. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +4 -0
  90. flowfile/web/static/assets/outputParquet-fabb445a.js +31 -0
  91. flowfile/web/static/assets/readCsv-bca3ed53.css +52 -0
  92. flowfile/web/static/assets/readCsv-e8359522.js +178 -0
  93. flowfile/web/static/assets/readExcel-dabaf51b.js +203 -0
  94. flowfile/web/static/assets/readExcel-e1b381ea.css +64 -0
  95. flowfile/web/static/assets/readParquet-cee068e2.css +19 -0
  96. flowfile/web/static/assets/readParquet-e0771ef2.js +26 -0
  97. flowfile/web/static/assets/{secretApi-baceb6f9.js → secretApi-ce823eee.js} +1 -1
  98. flowfile/web/static/assets/{selectDynamic-de91449a.js → selectDynamic-5476546e.js} +7 -7
  99. flowfile/web/static/assets/{selectDynamic-b062bc9b.css → selectDynamic-aa913ff4.css} +16 -16
  100. flowfile/web/static/assets/{vue-codemirror.esm-dc5e3348.js → vue-codemirror.esm-9ed00d50.js} +29 -33
  101. flowfile/web/static/assets/{vue-content-loader.es-ba94b82f.js → vue-content-loader.es-7bca2d9b.js} +1 -1
  102. flowfile/web/static/index.html +1 -1
  103. {flowfile-0.3.9.dist-info → flowfile-0.3.10.dist-info}/METADATA +1 -1
  104. {flowfile-0.3.9.dist-info → flowfile-0.3.10.dist-info}/RECORD +129 -97
  105. flowfile_core/configs/flow_logger.py +5 -13
  106. flowfile_core/configs/node_store/nodes.py +303 -44
  107. flowfile_core/configs/settings.py +2 -1
  108. flowfile_core/database/connection.py +5 -21
  109. flowfile_core/fileExplorer/funcs.py +239 -121
  110. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +28 -8
  111. flowfile_core/flowfile/flow_graph.py +97 -33
  112. flowfile_core/flowfile/flow_node/flow_node.py +41 -9
  113. flowfile_core/flowfile/handler.py +22 -3
  114. flowfile_core/flowfile/schema_callbacks.py +8 -4
  115. flowfile_core/flowfile/setting_generator/settings.py +0 -1
  116. flowfile_core/main.py +4 -1
  117. flowfile_core/routes/routes.py +59 -10
  118. flowfile_core/schemas/input_schema.py +0 -1
  119. flowfile_core/schemas/output_model.py +5 -2
  120. flowfile_core/schemas/schemas.py +2 -0
  121. flowfile_core/schemas/transform_schema.py +1 -0
  122. flowfile_worker/__init__.py +6 -35
  123. flowfile_worker/main.py +5 -2
  124. flowfile_worker/routes.py +47 -5
  125. shared/__init__.py +15 -0
  126. shared/storage_config.py +243 -0
  127. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  128. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  129. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  130. flowfile/web/static/assets/Read-c3b1929c.js +0 -701
  131. flowfile/web/static/assets/RecordCount-4e95f98e.js +0 -122
  132. flowfile/web/static/assets/Union-89fd73dc.js +0 -146
  133. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  134. flowfile/web/static/assets/nodeTitle-a16db7c3.js +0 -227
  135. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  136. {flowfile-0.3.9.dist-info → flowfile-0.3.10.dist-info}/LICENSE +0 -0
  137. {flowfile-0.3.9.dist-info → flowfile-0.3.10.dist-info}/WHEEL +0 -0
  138. {flowfile-0.3.9.dist-info → flowfile-0.3.10.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,61 @@
1
+ import { d as defineComponent, l as computed, c as openBlock, h as createBlock, w as withCtx, f as createVNode, p as createBaseVNode, u as unref, ar as ElIcon, e as createElementBlock, i as createCommentVNode, as as ElPopover, _ as _export_sfc } from "./index-d0518598.js";
2
+ const _hoisted_1 = { class: "validation-wrapper" };
3
+ const _hoisted_2 = {
4
+ key: 0,
5
+ class: "error-message"
6
+ };
7
+ const _hoisted_3 = {
8
+ key: 1,
9
+ class: "error-message"
10
+ };
11
+ const _hoisted_4 = {
12
+ key: 2,
13
+ class: "error-message"
14
+ };
15
+ const _sfc_main = /* @__PURE__ */ defineComponent({
16
+ __name: "PivotValidation",
17
+ props: {
18
+ pivotInput: {}
19
+ },
20
+ setup(__props) {
21
+ const props = __props;
22
+ const showValidationMessages = computed(() => {
23
+ return !props.pivotInput.pivot_column || !props.pivotInput.value_col || props.pivotInput.aggregations.length === 0;
24
+ });
25
+ return (_ctx, _cache) => {
26
+ return showValidationMessages.value ? (openBlock(), createBlock(unref(ElPopover), {
27
+ key: 0,
28
+ placement: "top",
29
+ width: "200",
30
+ trigger: "hover",
31
+ content: "Some required fields are missing"
32
+ }, {
33
+ reference: withCtx(() => [
34
+ createVNode(unref(ElIcon), {
35
+ color: "#FF6B6B",
36
+ class: "warning-icon"
37
+ }, {
38
+ default: withCtx(() => _cache[0] || (_cache[0] = [
39
+ createBaseVNode("i", { class: "el-icon-warning" }, null, -1)
40
+ ])),
41
+ _: 1,
42
+ __: [0]
43
+ })
44
+ ]),
45
+ default: withCtx(() => [
46
+ createBaseVNode("div", _hoisted_1, [
47
+ !_ctx.pivotInput.pivot_column ? (openBlock(), createElementBlock("p", _hoisted_2, "Pivot Column cannot be empty.")) : createCommentVNode("", true),
48
+ !_ctx.pivotInput.value_col ? (openBlock(), createElementBlock("p", _hoisted_3, "Value Column cannot be empty.")) : createCommentVNode("", true),
49
+ _ctx.pivotInput.aggregations.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_4, " At least one aggregation must be selected. ")) : createCommentVNode("", true)
50
+ ])
51
+ ]),
52
+ _: 1
53
+ })) : createCommentVNode("", true);
54
+ };
55
+ }
56
+ });
57
+ const PivotValidation_vue_vue_type_style_index_0_scoped_1561039d_lang = "";
58
+ const PivotValidation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1561039d"]]);
59
+ export {
60
+ PivotValidation as default
61
+ };
@@ -1,9 +1,8 @@
1
- import { C as CodeLoader } from "./vue-content-loader.es-ba94b82f.js";
2
- import { v as keymap, w as acceptCompletion, x as indentMore, q as EditorState, r as autocompletion, o as T, u as useNodeStore } from "./vue-codemirror.esm-dc5e3348.js";
3
- import { p as python, o as oneDark } from "./designer-6c322d8e.js";
4
- import { d as defineComponent, r as ref, X as shallowRef, m as watch, c as openBlock, e as createElementBlock, f as createVNode, u as unref, t as toDisplayString, i as createCommentVNode, w as withCtx, h as createBlock, n as onMounted, R as nextTick, a7 as Teleport } from "./index-683fc198.js";
5
- import { G as GenericNodeSettings } from "./genericNodeSettings-def5879b.js";
6
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-a16db7c3.js";
1
+ import { C as CodeLoader } from "./vue-content-loader.es-7bca2d9b.js";
2
+ import { v as keymap, w as acceptCompletion, x as indentMore, q as EditorState, r as autocompletion, o as T, u as useNodeStore } from "./vue-codemirror.esm-9ed00d50.js";
3
+ import { p as python, o as oneDark } from "./designer-bf3d9487.js";
4
+ import { d as defineComponent, r as ref, X as shallowRef, m as watch, c as openBlock, e as createElementBlock, f as createVNode, u as unref, t as toDisplayString, i as createCommentVNode, w as withCtx, h as createBlock } from "./index-d0518598.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-d3b2b2ac.js";
7
6
  const polarsCompletionVals = [
8
7
  // Polars basics
9
8
  { label: "pl", type: "variable", info: "Polars main module" },
@@ -39,12 +38,12 @@ const polarsCompletionVals = [
39
38
  { label: "float", type: "type" },
40
39
  { label: "bool", type: "type" }
41
40
  ];
42
- const _hoisted_1$2 = { class: "polars-editor-root" };
41
+ const _hoisted_1$1 = { class: "polars-editor-root" };
43
42
  const _hoisted_2 = {
44
43
  key: 0,
45
44
  class: "validation-error"
46
45
  };
47
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
46
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
48
47
  __name: "pythonEditor",
49
48
  props: {
50
49
  editorString: { type: String, required: true }
@@ -121,7 +120,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
121
120
  });
122
121
  __expose({ insertTextAtCursor });
123
122
  return (_ctx, _cache) => {
124
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
123
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
125
124
  createVNode(unref(T), {
126
125
  modelValue: code.value,
127
126
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => code.value = $event),
@@ -171,12 +170,12 @@ input_df`
171
170
  };
172
171
  return nodePolarsCode;
173
172
  };
174
- const _hoisted_1$1 = {
173
+ const _hoisted_1 = {
175
174
  key: 0,
176
175
  class: "listbox-wrapper"
177
176
  };
178
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
179
- __name: "polarsCode",
177
+ const _sfc_main = /* @__PURE__ */ defineComponent({
178
+ __name: "PolarsCode",
180
179
  setup(__props, { expose: __expose }) {
181
180
  const showEditor = ref(false);
182
181
  const nodeStore = useNodeStore();
@@ -218,10 +217,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
218
217
  };
219
218
  __expose({ loadNodeData, pushNodeData });
220
219
  return (_ctx, _cache) => {
221
- return dataLoaded.value && nodePolarsCode.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
220
+ return dataLoaded.value && nodePolarsCode.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
222
221
  createVNode(GenericNodeSettings, { "model-value": nodePolarsCode.value }, {
223
222
  default: withCtx(() => [
224
- showEditor.value && nodePolarsCode.value ? (openBlock(), createBlock(_sfc_main$2, {
223
+ showEditor.value && nodePolarsCode.value ? (openBlock(), createBlock(_sfc_main$1, {
225
224
  key: 0,
226
225
  ref_key: "editorChild",
227
226
  ref: editorChild,
@@ -235,72 +234,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
235
234
  };
236
235
  }
237
236
  });
238
- const _hoisted_1 = { ref: "el" };
239
- const _sfc_main = /* @__PURE__ */ defineComponent({
240
- __name: "PolarsCode",
241
- props: {
242
- nodeId: {
243
- type: Number,
244
- required: true
245
- }
246
- },
247
- setup(__props) {
248
- const nodeStore = useNodeStore();
249
- const childComp = ref(null);
250
- const props = __props;
251
- const drawer = ref(false);
252
- const closeOnDrawer = () => {
253
- var _a;
254
- drawer.value = false;
255
- (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
256
- };
257
- const openDrawer = async () => {
258
- if (nodeStore.node_id === props.nodeId) {
259
- return;
260
- }
261
- nodeStore.closeDrawer();
262
- drawer.value = true;
263
- const drawerOpen = nodeStore.isDrawerOpen;
264
- nodeStore.isDrawerOpen = true;
265
- await nextTick();
266
- if (nodeStore.node_id === props.nodeId && drawerOpen) {
267
- return;
268
- }
269
- if (childComp.value) {
270
- childComp.value.loadNodeData(props.nodeId);
271
- nodeStore.openDrawer(closeOnDrawer);
272
- }
273
- };
274
- onMounted(async () => {
275
- await nextTick();
276
- });
277
- return (_ctx, _cache) => {
278
- return openBlock(), createElementBlock("div", _hoisted_1, [
279
- createVNode(NodeButton, {
280
- ref: "nodeButton",
281
- "node-id": __props.nodeId,
282
- "image-src": "polars_code.png",
283
- title: `${__props.nodeId}: Polars code`,
284
- onClick: openDrawer
285
- }, null, 8, ["node-id", "title"]),
286
- drawer.value ? (openBlock(), createBlock(Teleport, {
287
- key: 0,
288
- to: "#nodesettings"
289
- }, [
290
- createVNode(NodeTitle, {
291
- title: "Polars code",
292
- intro: "Use custom Polars code to transform data."
293
- }),
294
- createVNode(_sfc_main$1, {
295
- ref_key: "childComp",
296
- ref: childComp,
297
- "node-id": __props.nodeId
298
- }, null, 8, ["node-id"])
299
- ])) : createCommentVNode("", true)
300
- ], 512);
301
- };
302
- }
303
- });
304
237
  export {
305
238
  _sfc_main as default
306
239
  };
@@ -0,0 +1,62 @@
1
+
2
+ .context-menu[data-v-41ef044d] {
3
+ position: fixed;
4
+ z-index: 1000;
5
+ border: 1px solid #ccc;
6
+ background-color: white;
7
+ padding: 8px;
8
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
9
+ border-radius: 4px;
10
+ }
11
+ .context-menu button[data-v-41ef044d] {
12
+ display: block;
13
+ background: none;
14
+ border: none;
15
+ padding: 4px 8px;
16
+ text-align: left;
17
+ width: 100%;
18
+ cursor: pointer;
19
+ }
20
+ .context-menu button[data-v-41ef044d]:hover {
21
+ background-color: #f0f0f0;
22
+ }
23
+ .file-upload-wrapper[data-v-41ef044d] {
24
+ position: relative;
25
+ width: 100%;
26
+ }
27
+ .file-upload-label[data-v-41ef044d] {
28
+ display: flex;
29
+ align-items: center;
30
+ background-color: #f5f5f5;
31
+ border: 1px solid #ddd;
32
+ border-radius: 4px;
33
+ padding: 10px 15px;
34
+ color: #333;
35
+ font-size: 16px;
36
+ font-weight: 500;
37
+ cursor: pointer;
38
+ transition: background-color 0.3s ease;
39
+ }
40
+ .file-upload-label[data-v-41ef044d]:hover {
41
+ background-color: #e4e4e4;
42
+ }
43
+ .file-icon[data-v-41ef044d] {
44
+ margin-right: 10px;
45
+ font-size: 20px;
46
+ }
47
+ .file-label-text[data-v-41ef044d] {
48
+ flex-grow: 1;
49
+ margin-left: 10px;
50
+ }
51
+ input[type="text"][data-v-41ef044d] {
52
+ width: 100%;
53
+ padding: 8px;
54
+ border: 1px solid #ddd;
55
+ border-radius: 4px;
56
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
57
+ transition: border-color 0.2s ease;
58
+ }
59
+ input[type="text"][data-v-41ef044d]:focus {
60
+ border-color: #3498db;
61
+ outline: none;
62
+ }
@@ -0,0 +1,243 @@
1
+ import { C as CodeLoader } from "./vue-content-loader.es-7bca2d9b.js";
2
+ import ExcelTableConfig from "./readExcel-dabaf51b.js";
3
+ import CsvTableConfig from "./readCsv-e8359522.js";
4
+ import ParquetTableConfig from "./readParquet-e0771ef2.js";
5
+ import { u as useNodeStore } from "./vue-codemirror.esm-9ed00d50.js";
6
+ import { F as FileBrowser } from "./designer-bf3d9487.js";
7
+ import { d as defineComponent, r as ref, l as computed, b as resolveComponent, c as openBlock, e as createElementBlock, p as createBaseVNode, t as toDisplayString, h as createBlock, i as createCommentVNode, f as createVNode, w as withCtx, u as unref, _ as _export_sfc } from "./index-d0518598.js";
8
+ import "./dropDown-025888df.js";
9
+ const _hoisted_1 = {
10
+ key: 0,
11
+ class: "listbox-wrapper"
12
+ };
13
+ const _hoisted_2 = { class: "listbox-wrapper" };
14
+ const _hoisted_3 = { class: "file-upload-container" };
15
+ const _hoisted_4 = {
16
+ for: "file-upload",
17
+ class: "file-upload-label"
18
+ };
19
+ const _hoisted_5 = { class: "file-label-text" };
20
+ const _hoisted_6 = { key: 0 };
21
+ const _hoisted_7 = { class: "listbox-wrapper" };
22
+ const _sfc_main = /* @__PURE__ */ defineComponent({
23
+ __name: "Read",
24
+ setup(__props, { expose: __expose }) {
25
+ const nodeStore = useNodeStore();
26
+ const selectedFile = ref(null);
27
+ const isExcelFile = ref(false);
28
+ const isCsvFile = ref(false);
29
+ const isParquetFile = ref(false);
30
+ const nodeRead = ref(null);
31
+ const dataLoaded = ref(false);
32
+ const selectedPath = ref("");
33
+ const modalVisibleForOpen = ref(false);
34
+ const getDisplayFileName = computed(() => {
35
+ var _a, _b, _c;
36
+ if ((_a = selectedFile.value) == null ? void 0 : _a.name) {
37
+ return selectedFile.value.name;
38
+ }
39
+ if ((_c = (_b = nodeRead.value) == null ? void 0 : _b.received_file) == null ? void 0 : _c.name) {
40
+ return nodeRead.value.received_file.name;
41
+ }
42
+ return "Choose a file...";
43
+ });
44
+ const receivedExcelTable = ref({
45
+ name: "",
46
+ path: "",
47
+ file_type: "excel",
48
+ sheet_name: "",
49
+ start_row: 0,
50
+ start_column: 0,
51
+ end_row: 0,
52
+ end_column: 0,
53
+ has_headers: true,
54
+ type_inference: false
55
+ });
56
+ const receivedCsvTable = ref({
57
+ name: "",
58
+ path: "",
59
+ file_type: "csv",
60
+ reference: "",
61
+ starting_from_line: 0,
62
+ delimiter: ",",
63
+ has_headers: true,
64
+ encoding: "utf-8",
65
+ row_delimiter: "",
66
+ quote_char: "",
67
+ infer_schema_length: 1e3,
68
+ truncate_ragged_lines: false,
69
+ ignore_errors: false
70
+ });
71
+ const receivedParquetTable = ref({
72
+ name: "",
73
+ path: "",
74
+ file_type: "parquet"
75
+ });
76
+ const handleFileChange = (fileInfo) => {
77
+ var _a;
78
+ try {
79
+ if (!fileInfo) {
80
+ console.warn("No file info provided");
81
+ return;
82
+ }
83
+ const fileType = (_a = fileInfo.name.split(".").pop()) == null ? void 0 : _a.toLowerCase();
84
+ if (!fileType) {
85
+ console.warn("No file type detected");
86
+ return;
87
+ }
88
+ isExcelFile.value = false;
89
+ isCsvFile.value = false;
90
+ isParquetFile.value = false;
91
+ switch (fileType) {
92
+ case "xlsx":
93
+ isExcelFile.value = true;
94
+ receivedExcelTable.value.path = fileInfo.path;
95
+ receivedExcelTable.value.name = fileInfo.name;
96
+ break;
97
+ case "csv":
98
+ case "txt":
99
+ isCsvFile.value = true;
100
+ receivedCsvTable.value.path = fileInfo.path;
101
+ receivedCsvTable.value.name = fileInfo.name;
102
+ break;
103
+ case "parquet":
104
+ isParquetFile.value = true;
105
+ receivedParquetTable.value.path = fileInfo.path;
106
+ receivedParquetTable.value.name = fileInfo.name;
107
+ break;
108
+ default:
109
+ console.warn("Unsupported file type:", fileType);
110
+ return;
111
+ }
112
+ selectedFile.value = fileInfo;
113
+ selectedPath.value = fileInfo.path;
114
+ modalVisibleForOpen.value = false;
115
+ } catch (error) {
116
+ console.error("Error handling file change:", error);
117
+ }
118
+ };
119
+ const loadNodeData = async (nodeId) => {
120
+ var _a;
121
+ try {
122
+ const nodeResult = await nodeStore.getNodeData(nodeId, false);
123
+ if (!nodeResult) {
124
+ console.warn("No node result received");
125
+ dataLoaded.value = true;
126
+ return;
127
+ }
128
+ nodeRead.value = nodeResult.setting_input;
129
+ if (((_a = nodeResult.setting_input) == null ? void 0 : _a.is_setup) && nodeResult.setting_input.received_file) {
130
+ const { file_type } = nodeResult.setting_input.received_file;
131
+ isExcelFile.value = false;
132
+ isCsvFile.value = false;
133
+ isParquetFile.value = false;
134
+ switch (file_type) {
135
+ case "excel":
136
+ isExcelFile.value = true;
137
+ receivedExcelTable.value = nodeResult.setting_input.received_file;
138
+ break;
139
+ case "csv":
140
+ isCsvFile.value = true;
141
+ receivedCsvTable.value = nodeResult.setting_input.received_file;
142
+ break;
143
+ case "parquet":
144
+ isParquetFile.value = true;
145
+ receivedParquetTable.value = nodeResult.setting_input.received_file;
146
+ break;
147
+ }
148
+ selectedPath.value = nodeResult.setting_input.received_file.path;
149
+ }
150
+ dataLoaded.value = true;
151
+ } catch (error) {
152
+ console.error("Error loading node data:", error);
153
+ dataLoaded.value = true;
154
+ }
155
+ };
156
+ const pushNodeData = async () => {
157
+ try {
158
+ dataLoaded.value = false;
159
+ if (!nodeRead.value) {
160
+ console.warn("No node read value available");
161
+ dataLoaded.value = true;
162
+ return;
163
+ }
164
+ nodeRead.value.is_setup = true;
165
+ if (isExcelFile.value) {
166
+ nodeRead.value.received_file = receivedExcelTable.value;
167
+ } else if (isCsvFile.value) {
168
+ nodeRead.value.received_file = receivedCsvTable.value;
169
+ } else if (isParquetFile.value) {
170
+ nodeRead.value.cache_results = false;
171
+ nodeRead.value.received_file = receivedParquetTable.value;
172
+ }
173
+ await nodeStore.updateSettings(nodeRead);
174
+ } catch (error) {
175
+ console.error("Error pushing node data:", error);
176
+ } finally {
177
+ dataLoaded.value = true;
178
+ }
179
+ };
180
+ __expose({
181
+ loadNodeData,
182
+ pushNodeData
183
+ });
184
+ return (_ctx, _cache) => {
185
+ const _component_el_dialog = resolveComponent("el-dialog");
186
+ return dataLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
187
+ createBaseVNode("div", _hoisted_2, [
188
+ createBaseVNode("div", _hoisted_3, [
189
+ createBaseVNode("div", {
190
+ class: "file-upload-wrapper",
191
+ onClick: _cache[0] || (_cache[0] = ($event) => modalVisibleForOpen.value = true)
192
+ }, [
193
+ createBaseVNode("label", _hoisted_4, [
194
+ _cache[5] || (_cache[5] = createBaseVNode("i", { class: "fas fa-table file-icon" }, null, -1)),
195
+ createBaseVNode("span", _hoisted_5, toDisplayString(getDisplayFileName.value), 1)
196
+ ])
197
+ ])
198
+ ])
199
+ ]),
200
+ isCsvFile.value || isExcelFile.value || isParquetFile.value ? (openBlock(), createElementBlock("div", _hoisted_6, [
201
+ createBaseVNode("div", _hoisted_7, [
202
+ _cache[6] || (_cache[6] = createBaseVNode("div", { class: "listbox-subtitle" }, "File Specs", -1)),
203
+ isExcelFile.value ? (openBlock(), createBlock(ExcelTableConfig, {
204
+ key: 0,
205
+ modelValue: receivedExcelTable.value,
206
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => receivedExcelTable.value = $event)
207
+ }, null, 8, ["modelValue"])) : createCommentVNode("", true),
208
+ isCsvFile.value ? (openBlock(), createBlock(CsvTableConfig, {
209
+ key: 1,
210
+ modelValue: receivedCsvTable.value,
211
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => receivedCsvTable.value = $event)
212
+ }, null, 8, ["modelValue"])) : createCommentVNode("", true),
213
+ isParquetFile.value ? (openBlock(), createBlock(ParquetTableConfig, {
214
+ key: 2,
215
+ modelValue: receivedParquetTable.value,
216
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => receivedParquetTable.value = $event)
217
+ }, null, 8, ["modelValue"])) : createCommentVNode("", true)
218
+ ])
219
+ ])) : createCommentVNode("", true),
220
+ createVNode(_component_el_dialog, {
221
+ modelValue: modalVisibleForOpen.value,
222
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => modalVisibleForOpen.value = $event),
223
+ title: "Select a file to Read",
224
+ width: "70%"
225
+ }, {
226
+ default: withCtx(() => [
227
+ createVNode(FileBrowser, {
228
+ "allowed-file-types": ["csv", "txt", "parquet", "xlsx"],
229
+ mode: "open",
230
+ onFileSelected: handleFileChange
231
+ })
232
+ ]),
233
+ _: 1
234
+ }, 8, ["modelValue"])
235
+ ])) : (openBlock(), createBlock(unref(CodeLoader), { key: 1 }));
236
+ };
237
+ }
238
+ });
239
+ const Read_vue_vue_type_style_index_0_scoped_41ef044d_lang = "";
240
+ const Read = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-41ef044d"]]);
241
+ export {
242
+ Read as default
243
+ };
@@ -0,0 +1,53 @@
1
+ import { u as useNodeStore } from "./vue-codemirror.esm-9ed00d50.js";
2
+ import { G as GenericNodeSettings } from "./genericNodeSettings-d3b2b2ac.js";
3
+ import { d as defineComponent, r as ref, n as onMounted, R as nextTick, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, i as createCommentVNode } from "./index-d0518598.js";
4
+ import "./designer-bf3d9487.js";
5
+ const _hoisted_1 = {
6
+ key: 0,
7
+ class: "listbox-wrapper"
8
+ };
9
+ const _sfc_main = /* @__PURE__ */ defineComponent({
10
+ __name: "RecordCount",
11
+ setup(__props, { expose: __expose }) {
12
+ const nodeStore = useNodeStore();
13
+ const dataLoaded = ref(false);
14
+ const nodeData = ref(null);
15
+ const nodeRecordCount = ref(null);
16
+ const loadNodeData = async (nodeId) => {
17
+ var _a;
18
+ nodeData.value = await nodeStore.getNodeData(nodeId, false);
19
+ nodeRecordCount.value = (_a = nodeData.value) == null ? void 0 : _a.setting_input;
20
+ dataLoaded.value = true;
21
+ };
22
+ const pushNodeData = async () => {
23
+ if (nodeRecordCount.value) {
24
+ nodeStore.updateSettings(nodeRecordCount);
25
+ }
26
+ };
27
+ __expose({
28
+ loadNodeData,
29
+ pushNodeData
30
+ });
31
+ onMounted(async () => {
32
+ await nextTick();
33
+ });
34
+ return (_ctx, _cache) => {
35
+ return dataLoaded.value && nodeRecordCount.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
36
+ createVNode(GenericNodeSettings, {
37
+ modelValue: nodeRecordCount.value,
38
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => nodeRecordCount.value = $event)
39
+ }, {
40
+ default: withCtx(() => _cache[1] || (_cache[1] = [
41
+ createBaseVNode("p", null, " This node helps you quickly retrieve the total number of records from the selected table. It's a simple yet powerful tool to keep track of the data volume as you work through your tasks. ", -1),
42
+ createBaseVNode("p", null, "This node does not need a setup", -1)
43
+ ])),
44
+ _: 1,
45
+ __: [1]
46
+ }, 8, ["modelValue"])
47
+ ])) : createCommentVNode("", true);
48
+ };
49
+ }
50
+ });
51
+ export {
52
+ _sfc_main as default
53
+ };
@@ -1,9 +1,9 @@
1
- import { d as defineComponent, r as ref, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, g as createTextVNode, a5 as withDirectives, a6 as vModelText, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, t as toDisplayString, h as createBlock, i as createCommentVNode, a7 as Teleport } from "./index-683fc198.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-dc5e3348.js";
3
- import { C as ContextMenu, S as SettingsSection } from "./SettingsSection-695ac487.js";
4
- import { G as GenericNodeSettings } from "./genericNodeSettings-def5879b.js";
5
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-a16db7c3.js";
6
- import "./designer-6c322d8e.js";
1
+ import { d as defineComponent, r as ref, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, g as createTextVNode, a8 as withDirectives, a9 as vModelText, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, t as toDisplayString, h as createBlock, i as createCommentVNode } from "./index-d0518598.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-9ed00d50.js";
3
+ import ContextMenu from "./ContextMenu-a51e19ea.js";
4
+ import SettingsSection from "./SettingsSection-75b6cf4f.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-d3b2b2ac.js";
6
+ import "./designer-bf3d9487.js";
7
7
  const _hoisted_1 = {
8
8
  key: 0,
9
9
  class: "listbox-wrapper"
@@ -14,8 +14,8 @@ const _hoisted_4 = { key: 0 };
14
14
  const _hoisted_5 = { class: "listbox" };
15
15
  const _hoisted_6 = { class: "column-options" };
16
16
  const _hoisted_7 = ["onClick", "onContextmenu", "onDragstart", "onDrop"];
17
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
18
- __name: "recordId",
17
+ const _sfc_main = /* @__PURE__ */ defineComponent({
18
+ __name: "RecordId",
19
19
  setup(__props, { expose: __expose }) {
20
20
  const nodeStore = useNodeStore();
21
21
  const showContextMenu = ref(false);
@@ -122,8 +122,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
122
122
  };
123
123
  const pushNodeData = async () => {
124
124
  nodeStore.updateSettings(nodeRecordId);
125
- dataLoaded.value = false;
126
- nodeStore.isDrawerOpen = false;
127
125
  };
128
126
  __expose({
129
127
  loadNodeData,
@@ -266,76 +264,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
266
264
  };
267
265
  }
268
266
  });
269
- const _sfc_main = /* @__PURE__ */ defineComponent({
270
- __name: "RecordId",
271
- props: {
272
- nodeId: {
273
- type: Number,
274
- required: true
275
- }
276
- },
277
- setup(__props) {
278
- const nodeStore = useNodeStore();
279
- const childComp = ref(null);
280
- const props = __props;
281
- const el = ref(null);
282
- const drawer = ref(false);
283
- const closeOnDrawer = () => {
284
- var _a;
285
- (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
286
- drawer.value = false;
287
- nodeStore.isDrawerOpen = false;
288
- };
289
- const openDrawer = async () => {
290
- if (nodeStore.node_id === props.nodeId) {
291
- return;
292
- }
293
- nodeStore.closeDrawer();
294
- drawer.value = true;
295
- const drawerOpen = nodeStore.isDrawerOpen;
296
- nodeStore.isDrawerOpen = true;
297
- await nextTick();
298
- if (nodeStore.node_id === props.nodeId && drawerOpen) {
299
- return;
300
- }
301
- if (childComp.value) {
302
- childComp.value.loadNodeData(props.nodeId);
303
- nodeStore.openDrawer(closeOnDrawer);
304
- }
305
- };
306
- onMounted(async () => {
307
- await nextTick();
308
- });
309
- return (_ctx, _cache) => {
310
- return openBlock(), createElementBlock("div", {
311
- ref_key: "el",
312
- ref: el
313
- }, [
314
- createVNode(NodeButton, {
315
- ref: "nodeButton",
316
- "node-id": __props.nodeId,
317
- "image-src": "record_id.png",
318
- title: `${__props.nodeId}: Add record Id`,
319
- onClick: openDrawer
320
- }, null, 8, ["node-id", "title"]),
321
- drawer.value ? (openBlock(), createBlock(Teleport, {
322
- key: 0,
323
- to: "#nodesettings"
324
- }, [
325
- createVNode(NodeTitle, {
326
- title: "Add record Id",
327
- intro: "<p>\n <strong>Record ID:</strong> This is a unique number or identifier for each entry in our database, like a personal ID number that ensures every record is distinct.<br><br>\n <strong>Offset:</strong> Think of this as the starting point or position where a record is found. It's like telling you on which page to find a word in a book.<br><br>\n <strong>Column Name:</strong> This is the name of the category or type of information stored in each column, similar to how a label on a box tells you what's inside.</p>"
328
- }),
329
- createVNode(_sfc_main$1, {
330
- ref_key: "childComp",
331
- ref: childComp,
332
- "node-id": __props.nodeId
333
- }, null, 8, ["node-id"])
334
- ])) : createCommentVNode("", true)
335
- ], 512);
336
- };
337
- }
338
- });
339
267
  export {
340
268
  _sfc_main as default
341
269
  };