Flowfile 0.3.8__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 (161) hide show
  1. flowfile/__init__.py +4 -3
  2. flowfile/api.py +1 -1
  3. flowfile/web/static/assets/{CloudConnectionManager-c20a740f.js → CloudConnectionManager-d7c2c028.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-960b400a.js → CloudStorageReader-d467329f.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-e3decbdd.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-d67e2405.js → CrossJoin-cf68ec7a.js} +14 -84
  15. flowfile/web/static/assets/{DatabaseConnectionSettings-a81e0f7e.js → DatabaseConnectionSettings-435c5dd8.js} +3 -3
  16. flowfile/web/static/assets/{DatabaseManager-9ea35e84.js → DatabaseManager-349e33a8.js} +2 -2
  17. flowfile/web/static/assets/{DatabaseReader-9578bfa5.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-19531098.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-2297ef96.js → ExternalSource-609a265c.js} +8 -79
  23. flowfile/web/static/assets/{Filter-f211c03a.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-4207ea31.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-bf120df0.js → FuzzyMatch-bdf70248.js} +16 -87
  29. flowfile/web/static/assets/{GraphSolver-5bb7497a.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-92c81b65.js → GroupBy-eaddadde.js} +12 -75
  33. flowfile/web/static/assets/{Join-4e49a274.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-90998ae8.js → ManualInput-e8bfc0be.js} +11 -82
  37. flowfile/web/static/assets/{Output-81e3e917.js → Output-7303bb09.js} +13 -243
  38. flowfile/web/static/assets/Output-ddc9079f.css +37 -0
  39. flowfile/web/static/assets/{Pivot-a3419842.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-72710deb.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-10baf191.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-3ed9a0ae.js → Sample-f06cb97a.js} +8 -77
  53. flowfile/web/static/assets/{SecretManager-0d49c0e8.js → SecretManager-37f34886.js} +2 -2
  54. flowfile/web/static/assets/{Select-8a02a0b3.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-4c0f45f5.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-f55c9f9d.js → Sort-51b1ee4d.js} +12 -97
  63. flowfile/web/static/assets/{TextToRows-5dbc2145.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-a1768e52.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-46b250da.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-25ac84cc.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-40476474.js → VueGraphicWalker-5324d566.js} +4 -264
  75. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  76. flowfile/web/static/assets/{api-6ef0dcef.js → api-271ed117.js} +1 -1
  77. flowfile/web/static/assets/{api-a0abbdc7.js → api-31e4fea6.js} +1 -1
  78. flowfile/web/static/assets/{designer-186f2e71.css → designer-091bdc3f.css} +819 -184
  79. flowfile/web/static/assets/{designer-13eabd83.js → designer-bf3d9487.js} +2214 -680
  80. flowfile/web/static/assets/{documentation-b87e7f6f.js → documentation-4d0a1cea.js} +1 -1
  81. flowfile/web/static/assets/{dropDown-13564764.js → dropDown-025888df.js} +1 -1
  82. flowfile/web/static/assets/{fullEditor-fd2cd6f9.js → fullEditor-1df991ec.js} +2 -2
  83. flowfile/web/static/assets/{genericNodeSettings-71e11604.js → genericNodeSettings-d3b2b2ac.js} +3 -3
  84. flowfile/web/static/assets/{index-f6c15e76.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-dd636aa2.js → secretApi-ce823eee.js} +1 -1
  98. flowfile/web/static/assets/{selectDynamic-af36165e.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-2847001e.js → vue-codemirror.esm-9ed00d50.js} +29 -33
  101. flowfile/web/static/assets/{vue-content-loader.es-0371da73.js → vue-content-loader.es-7bca2d9b.js} +1 -1
  102. flowfile/web/static/index.html +1 -1
  103. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/METADATA +2 -1
  104. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/RECORD +147 -117
  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 +6 -3
  108. flowfile_core/database/connection.py +5 -21
  109. flowfile_core/fileExplorer/funcs.py +239 -121
  110. flowfile_core/flowfile/code_generator/code_generator.py +36 -0
  111. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +60 -80
  112. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +61 -0
  113. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +44 -3
  114. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +3 -3
  115. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +33 -10
  116. flowfile_core/flowfile/flow_graph.py +223 -118
  117. flowfile_core/flowfile/flow_node/flow_node.py +56 -19
  118. flowfile_core/flowfile/flow_node/models.py +0 -2
  119. flowfile_core/flowfile/flow_node/schema_callback.py +138 -43
  120. flowfile_core/flowfile/graph_tree/graph_tree.py +250 -0
  121. flowfile_core/flowfile/graph_tree/models.py +15 -0
  122. flowfile_core/flowfile/handler.py +22 -3
  123. flowfile_core/flowfile/manage/compatibility_enhancements.py +1 -1
  124. flowfile_core/flowfile/{flow_data_engine/fuzzy_matching/settings_validator.py → schema_callbacks.py} +72 -16
  125. flowfile_core/flowfile/setting_generator/settings.py +2 -2
  126. flowfile_core/flowfile/util/execution_orderer.py +9 -0
  127. flowfile_core/flowfile/util/node_skipper.py +8 -0
  128. flowfile_core/main.py +4 -1
  129. flowfile_core/routes/routes.py +59 -10
  130. flowfile_core/schemas/input_schema.py +0 -1
  131. flowfile_core/schemas/output_model.py +5 -2
  132. flowfile_core/schemas/schemas.py +48 -3
  133. flowfile_core/schemas/transform_schema.py +28 -38
  134. flowfile_frame/__init__.py +1 -4
  135. flowfile_frame/flow_frame.py +33 -4
  136. flowfile_frame/flow_frame.pyi +2 -0
  137. flowfile_worker/__init__.py +6 -35
  138. flowfile_worker/funcs.py +7 -3
  139. flowfile_worker/main.py +5 -2
  140. flowfile_worker/models.py +3 -1
  141. flowfile_worker/routes.py +47 -5
  142. shared/__init__.py +15 -0
  143. shared/storage_config.py +243 -0
  144. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  145. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  146. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  147. flowfile/web/static/assets/Read-c4059daf.js +0 -701
  148. flowfile/web/static/assets/RecordCount-c2b5e095.js +0 -122
  149. flowfile/web/static/assets/Union-f2aefdc9.js +0 -146
  150. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  151. flowfile/web/static/assets/nodeTitle-988d9efe.js +0 -227
  152. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  153. flowfile_worker/polars_fuzzy_match/matcher.py +0 -435
  154. flowfile_worker/polars_fuzzy_match/models.py +0 -36
  155. flowfile_worker/polars_fuzzy_match/pre_process.py +0 -213
  156. flowfile_worker/polars_fuzzy_match/process.py +0 -86
  157. flowfile_worker/polars_fuzzy_match/utils.py +0 -50
  158. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/LICENSE +0 -0
  159. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/WHEEL +0 -0
  160. {flowfile-0.3.8.dist-info → flowfile-0.3.10.dist-info}/entry_points.txt +0 -0
  161. {flowfile_worker/polars_fuzzy_match → flowfile_core/flowfile/graph_tree}/__init__.py +0 -0
@@ -1,5 +1,5 @@
1
1
 
2
- .context-menu[data-v-001e3d98] {
2
+ .context-menu[data-v-c7455058] {
3
3
  position: fixed;
4
4
  z-index: 1000;
5
5
  border: 1px solid #ccc;
@@ -9,7 +9,7 @@
9
9
  border-radius: 4px;
10
10
  user-select: none;
11
11
  }
12
- .context-menu button[data-v-001e3d98] {
12
+ .context-menu button[data-v-c7455058] {
13
13
  display: block;
14
14
  background: none;
15
15
  border: none;
@@ -19,17 +19,17 @@
19
19
  cursor: pointer;
20
20
  z-index: 100;
21
21
  }
22
- .context-menu button[data-v-001e3d98]:hover {
22
+ .context-menu button[data-v-c7455058]:hover {
23
23
  background-color: #f0f0f0;
24
24
  }
25
- .table-wrapper[data-v-001e3d98] {
25
+ .table-wrapper[data-v-c7455058] {
26
26
  max-height: 300px; /* Adjust this value as needed */
27
27
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* subtle shadow for depth */
28
28
  border-radius: 8px; /* rounded corners */
29
29
  overflow: auto; /* ensures the rounded corners are applied to the child elements */
30
30
  margin: 5px; /* adds a small margin around the table */
31
31
  }
32
- .context-menu[data-v-001e3d98] {
32
+ .context-menu[data-v-c7455058] {
33
33
  position: fixed;
34
34
  z-index: 1000;
35
35
  border: 1px solid #ccc;
@@ -37,15 +37,15 @@
37
37
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
38
38
  border-radius: 4px;
39
39
  }
40
- .context-menu ul[data-v-001e3d98] {
40
+ .context-menu ul[data-v-c7455058] {
41
41
  list-style: none;
42
42
  padding: 0;
43
43
  margin: 0;
44
44
  }
45
- .context-menu li[data-v-001e3d98] {
45
+ .context-menu li[data-v-c7455058] {
46
46
  padding: 8px 16px;
47
47
  cursor: pointer;
48
48
  }
49
- .context-menu li[data-v-001e3d98]:hover {
49
+ .context-menu li[data-v-c7455058]:hover {
50
50
  background-color: #f0f0f0;
51
51
  }
@@ -0,0 +1,30 @@
1
+
2
+ .context-menu[data-v-e713e710] {
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 ul[data-v-e713e710] {
12
+ list-style: none;
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+ .context-menu li[data-v-e713e710] {
17
+ padding: 8px 16px;
18
+ cursor: pointer;
19
+ }
20
+ .context-menu li[data-v-e713e710]:hover {
21
+ background-color: #f0f0f0;
22
+ }
23
+ .switch-container[data-v-e713e710] {
24
+ display: flex;
25
+ align-items: center;
26
+ margin: 12px;
27
+ }
28
+ .switch-container span[data-v-e713e710] {
29
+ margin-right: 10px;
30
+ }
@@ -1,95 +1,10 @@
1
- import { d as defineComponent, c as openBlock, e as createElementBlock, p as createBaseVNode, F as Fragment, q as renderList, s as normalizeClass, t as toDisplayString, T as normalizeStyle, _ as _export_sfc, g as createTextVNode, i as createCommentVNode, r as ref, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, f as createVNode, w as withCtx, v as withModifiers, h as createBlock, a7 as Teleport } from "./index-f6c15e76.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
- import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
4
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
5
- import "./designer-13eabd83.js";
6
- const _hoisted_1$3 = ["onClick"];
7
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
8
- __name: "ContextMenu",
9
- props: {
10
- position: { type: Object, required: true },
11
- options: {
12
- type: Array,
13
- required: true
14
- }
15
- },
16
- emits: ["select", "close"],
17
- setup(__props, { emit: __emit }) {
18
- const emit = __emit;
19
- const selectOption = (action) => {
20
- emit("select", action);
21
- emit("close");
22
- };
23
- return (_ctx, _cache) => {
24
- return openBlock(), createElementBlock("div", {
25
- class: "context-menu",
26
- style: normalizeStyle({ top: __props.position.y + "px", left: __props.position.x + "px" })
27
- }, [
28
- createBaseVNode("ul", null, [
29
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
30
- return openBlock(), createElementBlock("li", {
31
- key: option.action,
32
- class: normalizeClass({ disabled: option.disabled }),
33
- onClick: ($event) => !option.disabled && selectOption(option.action)
34
- }, toDisplayString(option.label), 11, _hoisted_1$3);
35
- }), 128))
36
- ])
37
- ], 4);
38
- };
39
- }
40
- });
41
- const ContextMenu_vue_vue_type_style_index_0_scoped_4f9e01e5_lang = "";
42
- const ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-4f9e01e5"]]);
43
- const _hoisted_1$2 = { class: "listbox-wrapper" };
44
- const _hoisted_2$1 = { class: "listbox-row" };
45
- const _hoisted_3$1 = { class: "items-container" };
46
- const _hoisted_4$1 = { key: 0 };
47
- const _hoisted_5$1 = ["onClick"];
48
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
49
- __name: "SettingsSection",
50
- props: {
51
- title: { type: String, required: true },
52
- titleFontSize: { type: String, default: "15px" },
53
- items: { type: Array, required: true }
54
- },
55
- emits: ["removeItem"],
56
- setup(__props, { emit: __emit }) {
57
- const props = __props;
58
- const emit = __emit;
59
- const emitRemove = (item) => {
60
- emit("removeItem", item);
61
- };
62
- return (_ctx, _cache) => {
63
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
64
- createBaseVNode("div", _hoisted_2$1, [
65
- createBaseVNode("div", {
66
- class: "listbox-title",
67
- style: normalizeStyle({ fontSize: props.titleFontSize })
68
- }, toDisplayString(__props.title), 5),
69
- createBaseVNode("div", _hoisted_3$1, [
70
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
71
- return openBlock(), createElementBlock("div", {
72
- key: index,
73
- class: "item-box"
74
- }, [
75
- item !== "" ? (openBlock(), createElementBlock("div", _hoisted_4$1, [
76
- createTextVNode(toDisplayString(item) + " ", 1),
77
- createBaseVNode("span", {
78
- class: "remove-btn",
79
- onClick: ($event) => emitRemove(item)
80
- }, "x", 8, _hoisted_5$1)
81
- ])) : createCommentVNode("", true)
82
- ]);
83
- }), 128))
84
- ])
85
- ])
86
- ]);
87
- };
88
- }
89
- });
90
- const SettingsSection_vue_vue_type_style_index_0_scoped_fd7e6af1_lang = "";
91
- const SettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-fd7e6af1"]]);
92
- const _hoisted_1$1 = {
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, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, t as toDisplayString, h as createBlock, i as createCommentVNode, _ as _export_sfc } from "./index-d0518598.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-9ed00d50.js";
3
+ import ContextMenu from "./ContextMenu-785554c4.js";
4
+ import SettingsSection from "./SettingsSection-70e5a7b1.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-d3b2b2ac.js";
6
+ import "./designer-bf3d9487.js";
7
+ const _hoisted_1 = {
93
8
  key: 0,
94
9
  class: "listbox-wrapper"
95
10
  };
@@ -104,7 +19,7 @@ const _hoisted_8 = {
104
19
  class: "listbox-wrapper"
105
20
  };
106
21
  const _hoisted_9 = { class: "listbox-wrapper" };
107
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
22
+ const _sfc_main = /* @__PURE__ */ defineComponent({
108
23
  __name: "Unpivot",
109
24
  setup(__props, { expose: __expose }) {
110
25
  const nodeStore = useNodeStore();
@@ -216,7 +131,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
216
131
  console.log("loadNodeData from unpivot ");
217
132
  nodeData.value = await nodeStore.getNodeData(nodeId, false);
218
133
  nodeUnpivot.value = (_a = nodeData.value) == null ? void 0 : _a.setting_input;
219
- console.log(nodeUnpivot.value);
220
134
  if (nodeData.value) {
221
135
  if (nodeUnpivot.value) {
222
136
  if (nodeUnpivot.value.unpivot_input) {
@@ -227,7 +141,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
227
141
  }
228
142
  }
229
143
  dataLoaded.value = true;
230
- nodeStore.isDrawerOpen = true;
231
144
  console.log("loadNodeData from groupby");
232
145
  };
233
146
  const handleClickOutside = (event) => {
@@ -249,7 +162,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
249
162
  nodeUnpivot.value.unpivot_input = unpivotInput.value;
250
163
  nodeStore.updateSettings(nodeUnpivot);
251
164
  }
252
- nodeStore.isDrawerOpen = false;
253
165
  };
254
166
  __expose({
255
167
  loadNodeData,
@@ -266,7 +178,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
266
178
  const _component_el_switch = resolveComponent("el-switch");
267
179
  const _component_el_option = resolveComponent("el-option");
268
180
  const _component_el_select = resolveComponent("el-select");
269
- return dataLoaded.value && nodeUnpivot.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
181
+ return dataLoaded.value && nodeUnpivot.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
270
182
  createVNode(GenericNodeSettings, {
271
183
  modelValue: nodeUnpivot.value,
272
184
  "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => nodeUnpivot.value = $event)
@@ -368,74 +280,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
368
280
  };
369
281
  }
370
282
  });
371
- const Unpivot_vue_vue_type_style_index_0_scoped_9746d208_lang = "";
372
- const readInput = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-9746d208"]]);
373
- const _hoisted_1 = { ref: "el" };
374
- const _sfc_main = /* @__PURE__ */ defineComponent({
375
- __name: "Unpivot",
376
- props: {
377
- nodeId: {
378
- type: Number,
379
- required: true
380
- }
381
- },
382
- setup(__props) {
383
- const nodeStore = useNodeStore();
384
- const childComp = ref(null);
385
- const props = __props;
386
- const drawer = ref(false);
387
- const closeOnDrawer = () => {
388
- var _a;
389
- drawer.value = false;
390
- (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
391
- };
392
- const openDrawer = async () => {
393
- if (nodeStore.node_id === props.nodeId) {
394
- return;
395
- }
396
- nodeStore.closeDrawer();
397
- drawer.value = true;
398
- const drawerOpen = nodeStore.isDrawerOpen;
399
- nodeStore.isDrawerOpen = true;
400
- await nextTick();
401
- if (nodeStore.node_id === props.nodeId && drawerOpen) {
402
- return;
403
- }
404
- if (childComp.value) {
405
- childComp.value.loadNodeData(props.nodeId);
406
- nodeStore.openDrawer(closeOnDrawer);
407
- }
408
- };
409
- onMounted(async () => {
410
- await nextTick();
411
- });
412
- return (_ctx, _cache) => {
413
- return openBlock(), createElementBlock("div", _hoisted_1, [
414
- createVNode(NodeButton, {
415
- ref: "nodeButton",
416
- "node-id": __props.nodeId,
417
- "image-src": "unpivot.png",
418
- title: `${__props.nodeId}: Unpivot data`,
419
- onClick: openDrawer
420
- }, null, 8, ["node-id", "title"]),
421
- drawer.value ? (openBlock(), createBlock(Teleport, {
422
- key: 0,
423
- to: "#nodesettings"
424
- }, [
425
- createVNode(NodeTitle, {
426
- title: "Unpivot data",
427
- intro: "Pivot columns to rows"
428
- }),
429
- createVNode(readInput, {
430
- ref_key: "childComp",
431
- ref: childComp,
432
- "node-id": __props.nodeId
433
- }, null, 8, ["node-id"])
434
- ])) : createCommentVNode("", true)
435
- ], 512);
436
- };
437
- }
438
- });
283
+ const Unpivot_vue_vue_type_style_index_0_scoped_e713e710_lang = "";
284
+ const Unpivot = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e713e710"]]);
439
285
  export {
440
- _sfc_main as default
286
+ Unpivot as default
441
287
  };
@@ -0,0 +1,13 @@
1
+
2
+ .validation-wrapper[data-v-1575257f] {
3
+ background-color: #ffffff;
4
+ }
5
+ .error-message[data-v-1575257f] {
6
+ color: #991b1b;
7
+ margin: 5px 0;
8
+ font-size: 12px;
9
+ }
10
+ .warning-icon[data-v-1575257f] {
11
+ cursor: pointer;
12
+ font-size: 24px;
13
+ }
@@ -0,0 +1,51 @@
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 _sfc_main = /* @__PURE__ */ defineComponent({
8
+ __name: "UnpivotValidation",
9
+ props: {
10
+ unpivotInput: {}
11
+ },
12
+ setup(__props) {
13
+ const props = __props;
14
+ const showValidationMessages = computed(() => {
15
+ return !(props.unpivotInput.index_columns.length === 0);
16
+ });
17
+ return (_ctx, _cache) => {
18
+ return showValidationMessages.value ? (openBlock(), createBlock(unref(ElPopover), {
19
+ key: 0,
20
+ placement: "top",
21
+ width: "200",
22
+ trigger: "hover",
23
+ content: "Some required fields are missing"
24
+ }, {
25
+ reference: withCtx(() => [
26
+ createVNode(unref(ElIcon), {
27
+ color: "#FF6B6B",
28
+ class: "warning-icon"
29
+ }, {
30
+ default: withCtx(() => _cache[0] || (_cache[0] = [
31
+ createBaseVNode("i", { class: "el-icon-warning" }, null, -1)
32
+ ])),
33
+ _: 1,
34
+ __: [0]
35
+ })
36
+ ]),
37
+ default: withCtx(() => [
38
+ createBaseVNode("div", _hoisted_1, [
39
+ !_ctx.unpivotInput.index_columns ? (openBlock(), createElementBlock("p", _hoisted_2, "Index Column cannot be empty.")) : createCommentVNode("", true)
40
+ ])
41
+ ]),
42
+ _: 1
43
+ })) : createCommentVNode("", true);
44
+ };
45
+ }
46
+ });
47
+ const UnpivotValidation_vue_vue_type_style_index_0_scoped_1575257f_lang = "";
48
+ const UnpivotValidation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1575257f"]]);
49
+ export {
50
+ UnpivotValidation as default
51
+ };
@@ -1,8 +1,4 @@
1
- import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
2
- import { k as getDefaultExportFromCjs, d as defineComponent, r as ref, n as onMounted, o as onUnmounted, c as openBlock, e as createElementBlock, af as toRaw, _ as _export_sfc, a as axios, l as computed, h as createBlock, u as unref, p as createBaseVNode, t as toDisplayString, f as createVNode, a7 as Teleport, i as createCommentVNode, R as nextTick } from "./index-f6c15e76.js";
3
- import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
4
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
5
- import { u as useItemStore } from "./designer-13eabd83.js";
1
+ import { k as getDefaultExportFromCjs, d as defineComponent, r as ref, n as onMounted, o as onUnmounted, c as openBlock, e as createElementBlock, aj as toRaw, _ as _export_sfc } from "./index-d0518598.js";
6
2
  function _mergeNamespaces(n10, m10) {
7
3
  for (var i = 0; i < m10.length; i++) {
8
4
  const e19 = m10[i];
@@ -121401,7 +121397,7 @@ Xn((e19) => {
121401
121397
  );
121402
121398
  });
121403
121399
  reactExports.createContext(null);
121404
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
121400
+ const _sfc_main = /* @__PURE__ */ defineComponent({
121405
121401
  __name: "VueGraphicWalker",
121406
121402
  props: {
121407
121403
  data: {},
@@ -121498,263 +121494,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
121498
121494
  }
121499
121495
  });
121500
121496
  const VueGraphicWalker_vue_vue_type_style_index_0_scoped_5af75af4_lang = "";
121501
- const VueGraphicWalker = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-5af75af4"]]);
121502
- const fetchGraphicWalkerData = async (flowId, nodeId) => {
121503
- var _a2, _b2;
121504
- console.log(`[GraphicWalker] Fetching data for flow ${flowId}, node ${nodeId}`);
121505
- try {
121506
- const response = await axios.get("/analysis_data/graphic_walker_input", {
121507
- params: { flow_id: flowId, node_id: nodeId },
121508
- headers: { Accept: "application/json" },
121509
- timeout: 3e4
121510
- // Add timeout
121511
- });
121512
- if (!response.data || !response.data.graphic_walker_input) {
121513
- throw new Error("Invalid response data structure");
121514
- }
121515
- console.log(
121516
- `[GraphicWalker] Data fetched successfully with ${((_b2 = (_a2 = response.data.graphic_walker_input.dataModel) == null ? void 0 : _a2.data) == null ? void 0 : _b2.length) || 0} rows`
121517
- );
121518
- return response.data;
121519
- } catch (error) {
121520
- if (error.response) {
121521
- console.error(`[GraphicWalker] Server error ${error.response.status}:`, error.response.data);
121522
- } else if (error.request) {
121523
- console.error("[GraphicWalker] No response received:", error.request);
121524
- } else {
121525
- console.error("[GraphicWalker] Request error:", error.message);
121526
- }
121527
- throw error;
121528
- }
121529
- };
121530
- const _hoisted_1$1 = { class: "explore-data-container" };
121531
- const _hoisted_2 = {
121532
- key: 1,
121533
- class: "error-display"
121534
- };
121535
- const _hoisted_3 = {
121536
- key: 2,
121537
- class: "graphic-walker-wrapper"
121538
- };
121539
- const _hoisted_4 = {
121540
- key: 1,
121541
- class: "empty-data-message"
121542
- };
121543
- const _hoisted_5 = {
121544
- key: 3,
121545
- class: "fallback-message"
121546
- };
121547
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
121548
- __name: "exploreData",
121549
- setup(__props, { expose: __expose }) {
121550
- const isLoading = ref(false);
121551
- const nodeData = ref(null);
121552
- const chartList = ref([]);
121553
- const data = ref([]);
121554
- const fields = ref([]);
121555
- const errorMessage = ref(null);
121556
- const nodeStore = useNodeStore();
121557
- const globalNodeId = ref(-1);
121558
- const vueGraphicWalkerRef = ref(null);
121559
- const canDisplayVisualization = computed(() => !isLoading.value && !errorMessage.value);
121560
- const loadNodeData = async (nodeId) => {
121561
- var _a2, _b2;
121562
- isLoading.value = true;
121563
- errorMessage.value = null;
121564
- globalNodeId.value = nodeId;
121565
- nodeData.value = null;
121566
- data.value = [];
121567
- fields.value = [];
121568
- chartList.value = [];
121569
- try {
121570
- const fetchedNodeData = await fetchGraphicWalkerData(nodeStore.flow_id, nodeId);
121571
- if (!(fetchedNodeData == null ? void 0 : fetchedNodeData.graphic_walker_input))
121572
- throw new Error("Received invalid data structure from backend.");
121573
- nodeData.value = fetchedNodeData;
121574
- const inputData = fetchedNodeData.graphic_walker_input;
121575
- fields.value = ((_a2 = inputData.dataModel) == null ? void 0 : _a2.fields) || [];
121576
- data.value = ((_b2 = inputData.dataModel) == null ? void 0 : _b2.data) || [];
121577
- chartList.value = inputData.specList || [];
121578
- } catch (error) {
121579
- console.error("Error loading GraphicWalker data:", error);
121580
- if (error.response && error.response.status === 422) {
121581
- errorMessage.value = "The analysis flow has not been run yet.";
121582
- } else if (error instanceof Error) {
121583
- errorMessage.value = `Failed to load data: ${error.message}`;
121584
- } else {
121585
- errorMessage.value = "An unknown error occurred while loading data.";
121586
- }
121587
- } finally {
121588
- isLoading.value = false;
121589
- }
121590
- };
121591
- const getCurrentSpec = async () => {
121592
- if (!vueGraphicWalkerRef.value) {
121593
- console.error("Cannot get spec: GraphicWalker component reference is missing.");
121594
- errorMessage.value = "Cannot get spec: Component reference missing.";
121595
- return null;
121596
- }
121597
- try {
121598
- const exportedCharts = await vueGraphicWalkerRef.value.exportCode();
121599
- if (exportedCharts === null) {
121600
- console.error("Failed to export chart specification (method returned null or failed).");
121601
- errorMessage.value = "Failed to retrieve current chart configuration.";
121602
- return null;
121603
- }
121604
- if (exportedCharts.length === 0) {
121605
- console.log("No charts were exported from Graphic Walker.");
121606
- return [];
121607
- }
121608
- return exportedCharts;
121609
- } catch (error) {
121610
- console.error("Error calling getCurrentSpec or processing result:", error);
121611
- errorMessage.value = `Failed to process configuration: ${error.message || "Unknown error"}`;
121612
- return null;
121613
- }
121614
- };
121615
- const saveSpecToNodeStore = async (specsToSave) => {
121616
- if (!nodeData.value) {
121617
- console.error("Cannot save: Original node data context is missing.");
121618
- errorMessage.value = "Cannot save: Missing original node data.";
121619
- return false;
121620
- }
121621
- try {
121622
- const saveData = {
121623
- ...nodeData.value,
121624
- graphic_walker_input: {
121625
- ...nodeData.value.graphic_walker_input,
121626
- specList: specsToSave,
121627
- dataModel: { data: [], fields: [] }
121628
- }
121629
- };
121630
- nodeStore.node_id = globalNodeId.value;
121631
- await nodeStore.updateSettingsDirectly(saveData);
121632
- console.log("Node settings updated successfully.");
121633
- return true;
121634
- } catch (error) {
121635
- console.error("Error saving spec to node store:", error);
121636
- errorMessage.value = `Failed to save configuration: ${error.message || "Unknown error"}`;
121637
- return false;
121638
- }
121639
- };
121640
- const pushNodeData = async () => {
121641
- errorMessage.value = null;
121642
- const currentSpec = await getCurrentSpec();
121643
- if (currentSpec === null) {
121644
- console.log("Spec retrieval failed, skipping save.");
121645
- return;
121646
- }
121647
- if (currentSpec.length === 0) {
121648
- console.log("No chart configurations exported, skipping save.");
121649
- return;
121650
- }
121651
- const saveSuccess = await saveSpecToNodeStore(currentSpec);
121652
- if (saveSuccess) {
121653
- console.log("Save process completed successfully.");
121654
- } else {
121655
- console.log("Save process failed.");
121656
- }
121657
- nodeStore.isDrawerOpen = false;
121658
- };
121659
- __expose({
121660
- loadNodeData,
121661
- pushNodeData
121662
- // Expose the main save action
121663
- });
121664
- return (_ctx, _cache) => {
121665
- return openBlock(), createElementBlock("div", _hoisted_1$1, [
121666
- isLoading.value ? (openBlock(), createBlock(unref(CodeLoader), { key: 0 })) : errorMessage.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
121667
- createBaseVNode("p", null, "⚠️ Error: " + toDisplayString(errorMessage.value), 1)
121668
- ])) : canDisplayVisualization.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
121669
- data.value.length > 0 && fields.value.length > 0 ? (openBlock(), createBlock(VueGraphicWalker, {
121670
- key: 0,
121671
- ref_key: "vueGraphicWalkerRef",
121672
- ref: vueGraphicWalkerRef,
121673
- appearance: "light",
121674
- data: data.value,
121675
- fields: fields.value,
121676
- "spec-list": chartList.value
121677
- }, null, 8, ["data", "fields", "spec-list"])) : (openBlock(), createElementBlock("div", _hoisted_4, " Data loaded, but the dataset appears to be empty or lacks defined fields. "))
121678
- ])) : (openBlock(), createElementBlock("div", _hoisted_5, "Please load data for the node."))
121679
- ]);
121680
- };
121681
- }
121682
- });
121683
- const exploreData_vue_vue_type_style_index_0_scoped_669bd025_lang = "";
121684
- const graphicWalker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-669bd025"]]);
121685
- const _hoisted_1 = { style: { "display": "flex", "flex-direction": "column", "height": "100%" } };
121686
- const _sfc_main = /* @__PURE__ */ defineComponent({
121687
- __name: "ExploreData",
121688
- props: {
121689
- nodeId: {
121690
- type: Number,
121691
- required: true
121692
- }
121693
- },
121694
- setup(__props) {
121695
- const nodeStore = useNodeStore();
121696
- const itemStore = useItemStore();
121697
- const props = __props;
121698
- const childComp = ref(null);
121699
- const el2 = ref(null);
121700
- const drawer = ref(false);
121701
- const closeOnDrawer = () => {
121702
- if (childComp.value) {
121703
- childComp.value.pushNodeData();
121704
- }
121705
- drawer.value = false;
121706
- itemStore.setFullScreen("nodeSettings", false);
121707
- };
121708
- const openDrawer = async () => {
121709
- const isDifferentNode = nodeStore.node_id !== props.nodeId;
121710
- if (nodeStore.isDrawerOpen && isDifferentNode) {
121711
- nodeStore.closeDrawer();
121712
- await nextTick();
121713
- } else if (nodeStore.isDrawerOpen && !isDifferentNode) {
121714
- return;
121715
- }
121716
- drawer.value = true;
121717
- nodeStore.openDrawer(closeOnDrawer);
121718
- nodeStore.node_id = props.nodeId;
121719
- await nextTick();
121720
- if (childComp.value) {
121721
- childComp.value.loadNodeData(props.nodeId);
121722
- }
121723
- itemStore.setFullScreen("nodeSettings", true);
121724
- };
121725
- return (_ctx, _cache) => {
121726
- return openBlock(), createElementBlock("div", {
121727
- ref_key: "el",
121728
- ref: el2
121729
- }, [
121730
- createVNode(NodeButton, {
121731
- ref: "nodeButton",
121732
- "node-id": __props.nodeId,
121733
- "image-src": "explore_data.png",
121734
- title: `${__props.nodeId}: Explore data`,
121735
- onClick: openDrawer
121736
- }, null, 8, ["node-id", "title"]),
121737
- drawer.value ? (openBlock(), createBlock(Teleport, {
121738
- key: 0,
121739
- to: "#nodesettings"
121740
- }, [
121741
- createBaseVNode("div", _hoisted_1, [
121742
- createVNode(NodeTitle, {
121743
- title: "explore data",
121744
- intro: "Explore data and creating interactig graphs. The flow must have run for the data to be populated"
121745
- }),
121746
- createVNode(graphicWalker, {
121747
- ref_key: "childComp",
121748
- ref: childComp,
121749
- "node-id": __props.nodeId,
121750
- style: { "flex-grow": "1", "overflow": "auto" }
121751
- }, null, 8, ["node-id"])
121752
- ])
121753
- ])) : createCommentVNode("", true)
121754
- ], 512);
121755
- };
121756
- }
121757
- });
121497
+ const VueGraphicWalker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5af75af4"]]);
121758
121498
  export {
121759
- _sfc_main as default
121499
+ VueGraphicWalker as default
121760
121500
  };
@@ -0,0 +1,6 @@
1
+
2
+ div[data-v-5af75af4] {
3
+ width: 100%;
4
+ min-height: 500px;
5
+ height: 100%;
6
+ }
@@ -1,4 +1,4 @@
1
- import { a as axios } from "./index-f6c15e76.js";
1
+ import { a as axios } from "./index-d0518598.js";
2
2
  const API_BASE_URL = "/cloud_connections";
3
3
  const toPythonFormat = (connection) => {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import { a as axios } from "./index-f6c15e76.js";
1
+ import { a as axios } from "./index-d0518598.js";
2
2
  const API_BASE_URL = "/db_connection_lib";
3
3
  const toPythonFormat = (connection) => {
4
4
  return {