Flowfile 0.3.9__py3-none-any.whl → 0.5.1__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.
Files changed (201) hide show
  1. flowfile/__init__.py +8 -1
  2. flowfile/api.py +1 -3
  3. flowfile/web/static/assets/{CloudConnectionManager-c97c25f8.js → CloudConnectionManager-0dfba9f2.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-f1ff509e.js → CloudStorageReader-d5b1b6c9.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-034f8b78.js → CloudStorageWriter-00d87aad.js} +12 -79
  6. flowfile/web/static/assets/{CloudStorageWriter-49c9a4b2.css → CloudStorageWriter-b0ee067f.css} +24 -24
  7. flowfile/web/static/assets/ColumnSelector-4685e75d.js +83 -0
  8. flowfile/web/static/assets/ColumnSelector-47996a16.css +10 -0
  9. flowfile/web/static/assets/ContextMenu-23e909da.js +41 -0
  10. flowfile/web/static/assets/{SettingsSection-9c836ecc.css → ContextMenu-4c74eef1.css} +0 -21
  11. flowfile/web/static/assets/ContextMenu-63cfa99b.css +26 -0
  12. flowfile/web/static/assets/ContextMenu-70ae0c79.js +41 -0
  13. flowfile/web/static/assets/ContextMenu-c13f91d0.css +26 -0
  14. flowfile/web/static/assets/ContextMenu-f149cf7c.js +41 -0
  15. flowfile/web/static/assets/{CrossJoin-41efa4cb.css → CrossJoin-1119d18e.css} +18 -18
  16. flowfile/web/static/assets/{CrossJoin-9e156ebe.js → CrossJoin-702a3edd.js} +14 -84
  17. flowfile/web/static/assets/CustomNode-74a37f74.css +32 -0
  18. flowfile/web/static/assets/CustomNode-b1519993.js +211 -0
  19. flowfile/web/static/assets/{DatabaseConnectionSettings-d5c625b3.js → DatabaseConnectionSettings-6f3e4ea5.js} +3 -3
  20. flowfile/web/static/assets/{DatabaseManager-265adc5e.js → DatabaseManager-cf5ef661.js} +2 -2
  21. flowfile/web/static/assets/{DatabaseReader-f50c6558.css → DatabaseReader-ae61773c.css} +0 -27
  22. flowfile/web/static/assets/{DatabaseReader-0b10551e.js → DatabaseReader-d38c7295.js} +14 -114
  23. flowfile/web/static/assets/{DatabaseWriter-c17c6916.js → DatabaseWriter-b04ef46a.js} +13 -74
  24. flowfile/web/static/assets/{ExploreData-5bdae813.css → ExploreData-2d0cf4db.css} +8 -14
  25. flowfile/web/static/assets/ExploreData-5fa10ed8.js +192 -0
  26. flowfile/web/static/assets/{ExternalSource-3a66556c.js → ExternalSource-d39af878.js} +8 -79
  27. flowfile/web/static/assets/{Filter-91ad87e7.js → Filter-9b6d08db.js} +12 -85
  28. flowfile/web/static/assets/{Filter-a9d08ba1.css → Filter-f62091b3.css} +3 -3
  29. flowfile/web/static/assets/{Formula-3c395ab1.js → Formula-6b04fb1d.js} +20 -87
  30. flowfile/web/static/assets/{Formula-29f19d21.css → Formula-bb96803d.css} +4 -4
  31. flowfile/web/static/assets/{FuzzyMatch-6857de82.css → FuzzyMatch-1010f966.css} +42 -42
  32. flowfile/web/static/assets/{FuzzyMatch-2df0d230.js → FuzzyMatch-999521f4.js} +16 -87
  33. flowfile/web/static/assets/{GraphSolver-d285877f.js → GraphSolver-17dd2198.js} +13 -159
  34. flowfile/web/static/assets/GraphSolver-f0cb7bfb.css +22 -0
  35. flowfile/web/static/assets/{GroupBy-0bd1cc6b.js → GroupBy-6b039e18.js} +12 -75
  36. flowfile/web/static/assets/{Unique-b5615727.css → GroupBy-b9505323.css} +8 -8
  37. flowfile/web/static/assets/{Join-5a78a203.js → Join-24d0f113.js} +15 -85
  38. flowfile/web/static/assets/{Join-f45eff22.css → Join-fd79b451.css} +20 -20
  39. flowfile/web/static/assets/{ManualInput-a71b52c6.css → ManualInput-3246a08d.css} +20 -20
  40. flowfile/web/static/assets/{ManualInput-93aef9d6.js → ManualInput-34639209.js} +11 -82
  41. flowfile/web/static/assets/MultiSelect-0e8724a3.js +5 -0
  42. flowfile/web/static/assets/MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js +63 -0
  43. flowfile/web/static/assets/NumericInput-3d63a470.js +5 -0
  44. flowfile/web/static/assets/NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js +35 -0
  45. flowfile/web/static/assets/Output-283fe388.css +37 -0
  46. flowfile/web/static/assets/{Output-411ecaee.js → Output-edea9802.js} +62 -273
  47. flowfile/web/static/assets/{Pivot-89db4b04.js → Pivot-61d19301.js} +14 -138
  48. flowfile/web/static/assets/Pivot-cf333e3d.css +22 -0
  49. flowfile/web/static/assets/PivotValidation-891ddfb0.css +13 -0
  50. flowfile/web/static/assets/PivotValidation-c46cd420.css +13 -0
  51. flowfile/web/static/assets/PivotValidation-de9f43fe.js +61 -0
  52. flowfile/web/static/assets/PivotValidation-f97fec5b.js +61 -0
  53. flowfile/web/static/assets/{PolarsCode-a9f974f8.js → PolarsCode-bc3c9984.js} +13 -80
  54. flowfile/web/static/assets/Read-64a3f259.js +218 -0
  55. flowfile/web/static/assets/Read-e808b239.css +62 -0
  56. flowfile/web/static/assets/RecordCount-3d5039be.js +53 -0
  57. flowfile/web/static/assets/{RecordId-55ae7d36.js → RecordId-597510e0.js} +8 -80
  58. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +27 -0
  59. flowfile/web/static/assets/SQLQueryComponent-df51adbe.js +38 -0
  60. flowfile/web/static/assets/{Sample-b4a18476.js → Sample-4be0a507.js} +8 -77
  61. flowfile/web/static/assets/{SecretManager-b066d13a.js → SecretManager-4839be57.js} +2 -2
  62. flowfile/web/static/assets/{Select-727688dc.js → Select-9b72f201.js} +11 -85
  63. flowfile/web/static/assets/SettingsSection-2e4d03c4.css +21 -0
  64. flowfile/web/static/assets/SettingsSection-5c696bee.css +20 -0
  65. flowfile/web/static/assets/SettingsSection-71e6b7e3.css +21 -0
  66. flowfile/web/static/assets/SettingsSection-7ded385d.js +45 -0
  67. flowfile/web/static/assets/{SettingsSection-695ac487.js → SettingsSection-e1e9c953.js} +2 -40
  68. flowfile/web/static/assets/SettingsSection-f0f75a42.js +53 -0
  69. flowfile/web/static/assets/SingleSelect-6c777aac.js +5 -0
  70. flowfile/web/static/assets/SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js +62 -0
  71. flowfile/web/static/assets/SliderInput-7cb93e62.js +40 -0
  72. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +4 -0
  73. flowfile/web/static/assets/{GroupBy-ab1ea74b.css → Sort-3643d625.css} +8 -8
  74. flowfile/web/static/assets/{Sort-be3339a8.js → Sort-6cbde21a.js} +12 -97
  75. flowfile/web/static/assets/TextInput-d9a40c11.js +5 -0
  76. flowfile/web/static/assets/TextInput.vue_vue_type_script_setup_true_lang-5896c375.js +32 -0
  77. flowfile/web/static/assets/{TextToRows-c92d1ec2.css → TextToRows-5d2c1190.css} +9 -9
  78. flowfile/web/static/assets/{TextToRows-7b8998da.js → TextToRows-c4fcbf4d.js} +14 -83
  79. flowfile/web/static/assets/ToggleSwitch-4ef91d19.js +5 -0
  80. flowfile/web/static/assets/ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js +31 -0
  81. flowfile/web/static/assets/{UnavailableFields-8b0cb48e.js → UnavailableFields-a03f512c.js} +2 -2
  82. flowfile/web/static/assets/{Union-8d9ac7f9.css → Union-af6c3d9b.css} +6 -6
  83. flowfile/web/static/assets/Union-bfe9b996.js +77 -0
  84. flowfile/web/static/assets/{Unique-af5a80b4.js → Unique-5d023a27.js} +23 -104
  85. flowfile/web/static/assets/{Sort-7ccfa0fe.css → Unique-f9fb0809.css} +8 -8
  86. flowfile/web/static/assets/Unpivot-1e422df3.css +30 -0
  87. flowfile/web/static/assets/{Unpivot-5195d411.js → Unpivot-91cc5354.js} +12 -166
  88. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +13 -0
  89. flowfile/web/static/assets/UnpivotValidation-7ee2de44.js +51 -0
  90. flowfile/web/static/assets/{ExploreData-18a4fe52.js → VueGraphicWalker-e51b9924.js} +4 -264
  91. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  92. flowfile/web/static/assets/{api-cb00cce6.js → api-c1bad5ca.js} +1 -1
  93. flowfile/web/static/assets/{api-023d1733.js → api-cf1221f0.js} +1 -1
  94. flowfile/web/static/assets/{designer-2197d782.css → designer-8da3ba3a.css} +859 -201
  95. flowfile/web/static/assets/{designer-6c322d8e.js → designer-9633482a.js} +2297 -733
  96. flowfile/web/static/assets/{documentation-4d1fafe1.js → documentation-ca400224.js} +1 -1
  97. flowfile/web/static/assets/{dropDown-0b46dd77.js → dropDown-614b998d.js} +1 -1
  98. flowfile/web/static/assets/{fullEditor-ec4e4f95.js → fullEditor-f7971590.js} +2 -2
  99. flowfile/web/static/assets/{genericNodeSettings-def5879b.js → genericNodeSettings-4fe5f36b.js} +3 -3
  100. flowfile/web/static/assets/{index-681a3ed0.css → index-50508d4d.css} +8 -0
  101. flowfile/web/static/assets/{index-683fc198.js → index-5429bbf8.js} +208 -31
  102. flowfile/web/static/assets/nodeInput-5d0d6b79.js +41 -0
  103. flowfile/web/static/assets/outputCsv-076b85ab.js +86 -0
  104. flowfile/web/static/assets/{Output-48f81019.css → outputCsv-9cc59e0b.css} +0 -143
  105. flowfile/web/static/assets/outputExcel-0fd17dbe.js +56 -0
  106. flowfile/web/static/assets/outputExcel-b41305c0.css +102 -0
  107. flowfile/web/static/assets/outputParquet-b61e0847.js +31 -0
  108. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +4 -0
  109. flowfile/web/static/assets/readCsv-a8bb8b61.js +179 -0
  110. flowfile/web/static/assets/readCsv-c767cb37.css +52 -0
  111. flowfile/web/static/assets/readExcel-67b4aee0.js +201 -0
  112. flowfile/web/static/assets/readExcel-806d2826.css +64 -0
  113. flowfile/web/static/assets/readParquet-48c81530.css +19 -0
  114. flowfile/web/static/assets/readParquet-92ce1dbc.js +23 -0
  115. flowfile/web/static/assets/{secretApi-baceb6f9.js → secretApi-68435402.js} +1 -1
  116. flowfile/web/static/assets/{selectDynamic-de91449a.js → selectDynamic-92e25ee3.js} +7 -7
  117. flowfile/web/static/assets/{selectDynamic-b062bc9b.css → selectDynamic-aa913ff4.css} +16 -16
  118. flowfile/web/static/assets/user-defined-icon-0ae16c90.png +0 -0
  119. flowfile/web/static/assets/{vue-codemirror.esm-dc5e3348.js → vue-codemirror.esm-41b0e0d7.js} +65 -36
  120. flowfile/web/static/assets/{vue-content-loader.es-ba94b82f.js → vue-content-loader.es-2c8e608f.js} +1 -1
  121. flowfile/web/static/index.html +2 -2
  122. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/METADATA +5 -3
  123. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/RECORD +191 -121
  124. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/WHEEL +1 -1
  125. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/entry_points.txt +1 -0
  126. flowfile_core/__init__.py +3 -0
  127. flowfile_core/configs/flow_logger.py +5 -13
  128. flowfile_core/configs/node_store/__init__.py +30 -0
  129. flowfile_core/configs/node_store/nodes.py +383 -99
  130. flowfile_core/configs/node_store/user_defined_node_registry.py +193 -0
  131. flowfile_core/configs/settings.py +2 -1
  132. flowfile_core/database/connection.py +5 -21
  133. flowfile_core/fileExplorer/funcs.py +239 -121
  134. flowfile_core/flowfile/analytics/analytics_processor.py +1 -0
  135. flowfile_core/flowfile/code_generator/code_generator.py +62 -64
  136. flowfile_core/flowfile/flow_data_engine/create/funcs.py +73 -56
  137. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +77 -86
  138. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +4 -0
  139. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +19 -34
  140. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +36 -0
  141. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +23 -23
  142. flowfile_core/flowfile/flow_data_engine/join/utils.py +1 -1
  143. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +9 -4
  144. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +212 -86
  145. flowfile_core/flowfile/flow_data_engine/utils.py +2 -0
  146. flowfile_core/flowfile/flow_graph.py +240 -54
  147. flowfile_core/flowfile/flow_node/flow_node.py +48 -13
  148. flowfile_core/flowfile/flow_node/models.py +2 -1
  149. flowfile_core/flowfile/handler.py +24 -5
  150. flowfile_core/flowfile/manage/compatibility_enhancements.py +404 -41
  151. flowfile_core/flowfile/manage/io_flowfile.py +394 -0
  152. flowfile_core/flowfile/node_designer/__init__.py +47 -0
  153. flowfile_core/flowfile/node_designer/_type_registry.py +197 -0
  154. flowfile_core/flowfile/node_designer/custom_node.py +371 -0
  155. flowfile_core/flowfile/node_designer/ui_components.py +277 -0
  156. flowfile_core/flowfile/schema_callbacks.py +17 -10
  157. flowfile_core/flowfile/setting_generator/settings.py +15 -10
  158. flowfile_core/main.py +5 -1
  159. flowfile_core/routes/routes.py +73 -30
  160. flowfile_core/routes/user_defined_components.py +55 -0
  161. flowfile_core/schemas/cloud_storage_schemas.py +0 -2
  162. flowfile_core/schemas/input_schema.py +228 -65
  163. flowfile_core/schemas/output_model.py +5 -2
  164. flowfile_core/schemas/schemas.py +153 -35
  165. flowfile_core/schemas/transform_schema.py +1083 -412
  166. flowfile_core/schemas/yaml_types.py +103 -0
  167. flowfile_core/types.py +156 -0
  168. flowfile_core/utils/validate_setup.py +3 -1
  169. flowfile_frame/__init__.py +3 -1
  170. flowfile_frame/flow_frame.py +31 -24
  171. flowfile_frame/flow_frame_methods.py +12 -9
  172. flowfile_worker/__init__.py +9 -35
  173. flowfile_worker/create/__init__.py +3 -21
  174. flowfile_worker/create/funcs.py +68 -56
  175. flowfile_worker/create/models.py +130 -62
  176. flowfile_worker/main.py +5 -2
  177. flowfile_worker/routes.py +52 -13
  178. shared/__init__.py +15 -0
  179. shared/storage_config.py +258 -0
  180. tools/migrate/README.md +56 -0
  181. tools/migrate/__init__.py +12 -0
  182. tools/migrate/__main__.py +131 -0
  183. tools/migrate/legacy_schemas.py +621 -0
  184. tools/migrate/migrate.py +598 -0
  185. tools/migrate/tests/__init__.py +0 -0
  186. tools/migrate/tests/conftest.py +23 -0
  187. tools/migrate/tests/test_migrate.py +627 -0
  188. tools/migrate/tests/test_migration_e2e.py +1010 -0
  189. tools/migrate/tests/test_node_migrations.py +813 -0
  190. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  191. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  192. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  193. flowfile/web/static/assets/Read-c3b1929c.js +0 -701
  194. flowfile/web/static/assets/RecordCount-4e95f98e.js +0 -122
  195. flowfile/web/static/assets/Union-89fd73dc.js +0 -146
  196. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  197. flowfile/web/static/assets/nodeTitle-a16db7c3.js +0 -227
  198. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  199. flowfile_core/flowfile/manage/open_flowfile.py +0 -135
  200. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info/licenses}/LICENSE +0 -0
  201. /flowfile_core/flowfile/manage/manage_flowfile.py → /tools/__init__.py +0 -0
@@ -1,199 +1,42 @@
1
- import { u as useNodeStore } from "./vue-codemirror.esm-dc5e3348.js";
2
- import { d as defineComponent, r as ref, m as watch, c as openBlock, e as createElementBlock, p as createBaseVNode, f as createVNode, w as withCtx, F as Fragment, q as renderList, h as createBlock, u as unref, an as ElOption, ao as ElSelect, _ as _export_sfc, b as resolveComponent, i as createCommentVNode, l as computed, g as createTextVNode, a as axios, n as onMounted, R as nextTick, a7 as Teleport } from "./index-683fc198.js";
3
- import { w as warning_filled_default, F as FileBrowser } from "./designer-6c322d8e.js";
4
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-a16db7c3.js";
5
- const createDefaultParquetSettings = () => {
1
+ import { i as isOutputCsvTable, a as isOutputExcelTable, b as isOutputParquetTable } from "./nodeInput-5d0d6b79.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-41b0e0d7.js";
3
+ import { d as defineComponent, r as ref, l as computed, b as resolveComponent, c as openBlock, e as createElementBlock, p as createBaseVNode, h as createBlock, i as createCommentVNode, f as createVNode, w as withCtx, u as unref, g as createTextVNode, F as Fragment, q as renderList, a as axios, _ as _export_sfc } from "./index-5429bbf8.js";
4
+ import CsvTableConfig from "./outputCsv-076b85ab.js";
5
+ import ExcelTableConfig from "./outputExcel-0fd17dbe.js";
6
+ import ParquetTableConfig from "./outputParquet-b61e0847.js";
7
+ import { w as warning_filled_default, F as FileBrowser } from "./designer-9633482a.js";
8
+ function createDefaultOutputSettings() {
6
9
  return {
7
- file_type: "parquet"
10
+ name: "output.csv",
11
+ directory: ".",
12
+ file_type: "csv",
13
+ write_mode: "overwrite",
14
+ table_settings: {
15
+ file_type: "csv",
16
+ delimiter: ",",
17
+ encoding: "utf-8"
18
+ }
8
19
  };
9
- };
10
- const createDefaultCsvSettings = () => {
20
+ }
21
+ function createCsvTableSettings() {
11
22
  return {
23
+ file_type: "csv",
12
24
  delimiter: ",",
13
- encoding: "utf-8",
14
- file_type: "csv"
25
+ encoding: "utf-8"
15
26
  };
16
- };
17
- const createDefaultExcelSettings = () => {
27
+ }
28
+ function createParquetTableSettings() {
18
29
  return {
19
- sheet_name: "Sheet1",
20
- file_type: "excel"
30
+ file_type: "parquet"
21
31
  };
22
- };
23
- const createDefaultOutputSettings = () => {
32
+ }
33
+ function createExcelTableSettings() {
24
34
  return {
25
- name: "",
26
- directory: "",
27
- file_type: "parquet",
28
- fields: [],
29
- write_mode: "overwrite",
30
- output_csv_table: createDefaultCsvSettings(),
31
- output_parquet_table: createDefaultParquetSettings(),
32
- output_excel_table: createDefaultExcelSettings()
35
+ file_type: "excel",
36
+ sheet_name: "Sheet1"
33
37
  };
34
- };
35
- const _hoisted_1$4 = { class: "csv-table-settings" };
36
- const _hoisted_2$2 = { class: "input-group" };
37
- const _hoisted_3$2 = { class: "input-group" };
38
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
39
- __name: "outputCsv",
40
- props: {
41
- modelValue: {
42
- type: Object,
43
- required: true
44
- }
45
- },
46
- emits: ["update:modelValue"],
47
- setup(__props, { emit: __emit }) {
48
- const props = __props;
49
- const emit = __emit;
50
- const localCsvTable = ref(props.modelValue);
51
- const csv_settings = {
52
- delimiter_options: [",", ";", "|", "tab"],
53
- encoding_options: ["utf-8", "ISO-8859-1", "ASCII"]
54
- };
55
- const updateParent = () => {
56
- emit("update:modelValue", localCsvTable.value);
57
- };
58
- watch(
59
- () => props.modelValue,
60
- (newVal) => {
61
- localCsvTable.value = newVal;
62
- },
63
- { deep: true }
64
- );
65
- return (_ctx, _cache) => {
66
- return openBlock(), createElementBlock("div", _hoisted_1$4, [
67
- createBaseVNode("div", _hoisted_2$2, [
68
- _cache[2] || (_cache[2] = createBaseVNode("label", { for: "delimiter" }, "File delimiter:", -1)),
69
- createVNode(unref(ElSelect), {
70
- modelValue: localCsvTable.value.delimiter,
71
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localCsvTable.value.delimiter = $event),
72
- placeholder: "Select delimiter",
73
- size: "small",
74
- style: { "max-width": "200px" },
75
- onChange: updateParent
76
- }, {
77
- default: withCtx(() => [
78
- (openBlock(true), createElementBlock(Fragment, null, renderList(csv_settings.delimiter_options, (option) => {
79
- return openBlock(), createBlock(unref(ElOption), {
80
- key: option,
81
- label: option,
82
- value: option
83
- }, null, 8, ["label", "value"]);
84
- }), 128))
85
- ]),
86
- _: 1
87
- }, 8, ["modelValue"])
88
- ]),
89
- createBaseVNode("div", _hoisted_3$2, [
90
- _cache[3] || (_cache[3] = createBaseVNode("label", { for: "encoding" }, "File encoding:", -1)),
91
- createVNode(unref(ElSelect), {
92
- modelValue: localCsvTable.value.encoding,
93
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => localCsvTable.value.encoding = $event),
94
- placeholder: "Select encoding",
95
- size: "small",
96
- style: { "max-width": "200px" },
97
- onChange: updateParent
98
- }, {
99
- default: withCtx(() => [
100
- (openBlock(true), createElementBlock(Fragment, null, renderList(csv_settings.encoding_options, (option) => {
101
- return openBlock(), createBlock(unref(ElOption), {
102
- key: option,
103
- label: option,
104
- value: option
105
- }, null, 8, ["label", "value"]);
106
- }), 128))
107
- ]),
108
- _: 1
109
- }, 8, ["modelValue"])
110
- ])
111
- ]);
112
- };
113
- }
114
- });
115
- const outputCsv_vue_vue_type_style_index_0_scoped_9ecfb42a_lang = "";
116
- const CsvTableConfig = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-9ecfb42a"]]);
117
- const _hoisted_1$3 = { class: "excel-table-settings" };
118
- const _hoisted_2$1 = { class: "mandatory-section" };
119
- const _hoisted_3$1 = {
120
- key: 0,
121
- class: "section-divider"
122
- };
123
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
124
- __name: "outputExcel",
125
- props: {
126
- modelValue: {
127
- type: Object,
128
- required: true
129
- }
130
- },
131
- emits: ["update:modelValue"],
132
- setup(__props, { emit: __emit }) {
133
- const props = __props;
134
- const emit = __emit;
135
- const localExcelTable = ref(props.modelValue);
136
- const showOptionalSettings = ref(false);
137
- const updateParent = () => {
138
- emit("update:modelValue", localExcelTable.value);
139
- };
140
- watch(
141
- () => props.modelValue,
142
- (newVal) => {
143
- localExcelTable.value = newVal;
144
- },
145
- { deep: true }
146
- );
147
- return (_ctx, _cache) => {
148
- const _component_el_input = resolveComponent("el-input");
149
- return openBlock(), createElementBlock("div", _hoisted_1$3, [
150
- createBaseVNode("div", _hoisted_2$1, [
151
- _cache[1] || (_cache[1] = createBaseVNode("label", { for: "sheet-name" }, "Sheet Name:", -1)),
152
- createVNode(_component_el_input, {
153
- id: "sheet-name",
154
- modelValue: localExcelTable.value.sheet_name,
155
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localExcelTable.value.sheet_name = $event),
156
- type: "text",
157
- required: "",
158
- size: "small",
159
- onInput: updateParent
160
- }, null, 8, ["modelValue"]),
161
- showOptionalSettings.value ? (openBlock(), createElementBlock("hr", _hoisted_3$1)) : createCommentVNode("", true)
162
- ])
163
- ]);
164
- };
165
- }
166
- });
167
- const outputExcel_vue_vue_type_style_index_0_scoped_45248953_lang = "";
168
- const ExcelTableConfig = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-45248953"]]);
169
- const _hoisted_1$2 = { class: "parquet-table-settings" };
170
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
171
- __name: "outputParquet",
172
- props: {
173
- modelValue: {
174
- type: Object,
175
- required: true
176
- }
177
- },
178
- emits: ["update:modelValue"],
179
- setup(__props, { emit: __emit }) {
180
- const props = __props;
181
- const localParquetTable = ref(props.modelValue);
182
- watch(
183
- () => props.modelValue,
184
- (newVal) => {
185
- localParquetTable.value = newVal;
186
- },
187
- { deep: true }
188
- );
189
- return (_ctx, _cache) => {
190
- return openBlock(), createElementBlock("div", _hoisted_1$2);
191
- };
192
- }
193
- });
194
- const outputParquet_vue_vue_type_style_index_0_scoped_7db0128e_lang = "";
195
- const ParquetTableConfig = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-7db0128e"]]);
196
- const _hoisted_1$1 = {
38
+ }
39
+ const _hoisted_1 = {
197
40
  key: 0,
198
41
  class: "listbox-wrapper"
199
42
  };
@@ -205,8 +48,8 @@ const _hoisted_4 = {
205
48
  };
206
49
  const _hoisted_5 = { class: "main-part" };
207
50
  const _hoisted_6 = { class: "file-type-row" };
208
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
209
- __name: "output",
51
+ const _sfc_main = /* @__PURE__ */ defineComponent({
52
+ __name: "Output",
210
53
  setup(__props, { expose: __expose }) {
211
54
  const nodeStore = useNodeStore();
212
55
  const nodeOutput = ref(null);
@@ -256,6 +99,22 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
256
99
  if (nodeOutput.value && fileTypeMap[verifiedExtension]) {
257
100
  nodeOutput.value.output_settings.file_type = fileTypeMap[verifiedExtension];
258
101
  nodeOutput.value.output_settings.write_mode = "overwrite";
102
+ updateTableSettings(fileTypeMap[verifiedExtension]);
103
+ }
104
+ }
105
+ function updateTableSettings(fileType) {
106
+ if (!nodeOutput.value)
107
+ return;
108
+ switch (fileType) {
109
+ case "csv":
110
+ nodeOutput.value.output_settings.table_settings = createCsvTableSettings();
111
+ break;
112
+ case "parquet":
113
+ nodeOutput.value.output_settings.table_settings = createParquetTableSettings();
114
+ break;
115
+ case "excel":
116
+ nodeOutput.value.output_settings.table_settings = createExcelTableSettings();
117
+ break;
259
118
  }
260
119
  }
261
120
  function handleFileNameChange() {
@@ -277,6 +136,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
277
136
  if (!nodeOutput.value.output_settings.write_mode) {
278
137
  nodeOutput.value.output_settings.write_mode = "overwrite";
279
138
  }
139
+ updateTableSettings(nodeOutput.value.output_settings.file_type);
280
140
  }
281
141
  function handleDirectorySelected(directoryPath) {
282
142
  if (!nodeOutput.value)
@@ -306,7 +166,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
306
166
  const nodeResult = await nodeStore.getNodeData(nodeId, false);
307
167
  if ((nodeResult == null ? void 0 : nodeResult.setting_input) && nodeResult.setting_input.is_setup) {
308
168
  nodeOutput.value = nodeResult.setting_input;
309
- console.log("this is all good", nodeResult == null ? void 0 : nodeResult.setting_input);
310
169
  } else {
311
170
  nodeOutput.value = {
312
171
  output_settings: createDefaultOutputSettings(),
@@ -339,7 +198,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
339
198
  const _component_el_option = resolveComponent("el-option");
340
199
  const _component_el_select = resolveComponent("el-select");
341
200
  const _component_el_dialog = resolveComponent("el-dialog");
342
- return dataLoaded.value && nodeOutput.value && nodeOutput.value.output_settings ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
201
+ return dataLoaded.value && nodeOutput.value && nodeOutput.value.output_settings ? (openBlock(), createElementBlock("div", _hoisted_1, [
343
202
  createBaseVNode("div", _hoisted_2, [
344
203
  createBaseVNode("div", _hoisted_3, [
345
204
  createBaseVNode("label", {
@@ -421,20 +280,20 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
421
280
  ]),
422
281
  _: 1
423
282
  }, 8, ["modelValue", "disabled"]),
424
- nodeOutput.value.output_settings.file_type === "csv" ? (openBlock(), createBlock(CsvTableConfig, {
283
+ unref(isOutputCsvTable)(nodeOutput.value.output_settings.table_settings) ? (openBlock(), createBlock(CsvTableConfig, {
425
284
  key: 0,
426
- modelValue: nodeOutput.value.output_settings.output_csv_table,
427
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => nodeOutput.value.output_settings.output_csv_table = $event)
285
+ modelValue: nodeOutput.value.output_settings.table_settings,
286
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => nodeOutput.value.output_settings.table_settings = $event)
428
287
  }, null, 8, ["modelValue"])) : createCommentVNode("", true),
429
- nodeOutput.value.output_settings.file_type === "excel" ? (openBlock(), createBlock(ExcelTableConfig, {
288
+ unref(isOutputExcelTable)(nodeOutput.value.output_settings.table_settings) ? (openBlock(), createBlock(ExcelTableConfig, {
430
289
  key: 1,
431
- modelValue: nodeOutput.value.output_settings.output_excel_table,
432
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => nodeOutput.value.output_settings.output_excel_table = $event)
290
+ modelValue: nodeOutput.value.output_settings.table_settings,
291
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => nodeOutput.value.output_settings.table_settings = $event)
433
292
  }, null, 8, ["modelValue"])) : createCommentVNode("", true),
434
- nodeOutput.value.output_settings.file_type === "parquet" ? (openBlock(), createBlock(ParquetTableConfig, {
293
+ unref(isOutputParquetTable)(nodeOutput.value.output_settings.table_settings) ? (openBlock(), createBlock(ParquetTableConfig, {
435
294
  key: 2,
436
- modelValue: nodeOutput.value.output_settings.output_parquet_table,
437
- "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => nodeOutput.value.output_settings.output_parquet_table = $event)
295
+ modelValue: nodeOutput.value.output_settings.table_settings,
296
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => nodeOutput.value.output_settings.table_settings = $event)
438
297
  }, null, 8, ["modelValue"])) : createCommentVNode("", true)
439
298
  ]),
440
299
  createVNode(_component_el_dialog, {
@@ -459,78 +318,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
459
318
  };
460
319
  }
461
320
  });
462
- const output_vue_vue_type_style_index_0_scoped_3955fb0e_lang = "";
463
- const outputPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3955fb0e"]]);
464
- const _hoisted_1 = { ref: "el" };
465
- const _sfc_main = /* @__PURE__ */ defineComponent({
466
- __name: "Output",
467
- props: {
468
- nodeId: {
469
- type: Number,
470
- required: true
471
- }
472
- },
473
- setup(__props) {
474
- const props = __props;
475
- const nodeStore = useNodeStore();
476
- ref(false);
477
- const childComp = ref(null);
478
- const closeOnDrawer = () => {
479
- var _a;
480
- console.log("closeOnDrawer");
481
- if (drawer.value) {
482
- (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
483
- drawer.value = false;
484
- }
485
- };
486
- const drawer = ref(false);
487
- const openDrawer = async () => {
488
- if (nodeStore.node_id === props.nodeId) {
489
- return;
490
- }
491
- nodeStore.closeDrawer();
492
- drawer.value = true;
493
- const drawerOpen = nodeStore.isDrawerOpen;
494
- nodeStore.isDrawerOpen = true;
495
- await nextTick();
496
- if (nodeStore.node_id === props.nodeId && drawerOpen) {
497
- return;
498
- }
499
- if (childComp.value) {
500
- childComp.value.loadNodeData(props.nodeId);
501
- nodeStore.openDrawer(closeOnDrawer);
502
- }
503
- };
504
- onMounted(async () => {
505
- await nextTick();
506
- });
507
- return (_ctx, _cache) => {
508
- return openBlock(), createElementBlock("div", _hoisted_1, [
509
- createVNode(NodeButton, {
510
- ref: "nodeButton",
511
- "node-id": __props.nodeId,
512
- "image-src": "output.png",
513
- title: `${__props.nodeId}: Write data`,
514
- onClick: openDrawer
515
- }, null, 8, ["node-id", "title"]),
516
- drawer.value ? (openBlock(), createBlock(Teleport, {
517
- key: 0,
518
- to: "#nodesettings"
519
- }, [
520
- createVNode(NodeTitle, {
521
- title: "Write data",
522
- intro: "Write data to a file or database"
523
- }),
524
- createVNode(outputPage, {
525
- ref_key: "childComp",
526
- ref: childComp,
527
- "node-id": __props.nodeId
528
- }, null, 8, ["node-id"])
529
- ])) : createCommentVNode("", true)
530
- ], 512);
531
- };
532
- }
533
- });
321
+ const Output_vue_vue_type_style_index_0_scoped_4c6e3071_lang = "";
322
+ const Output = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4c6e3071"]]);
534
323
  export {
535
- _sfc_main as default
324
+ Output as default
536
325
  };
@@ -1,67 +1,11 @@
1
- import { d as defineComponent, l as computed, c as openBlock, h as createBlock, w as withCtx, f as createVNode, u as unref, ap as ElIcon, p as createBaseVNode, e as createElementBlock, i as createCommentVNode, aq as ElPopover, _ as _export_sfc, r as ref, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, t as toDisplayString, 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";
7
- const _hoisted_1$2 = { class: "validation-wrapper" };
8
- const _hoisted_2$1 = {
9
- key: 0,
10
- class: "error-message"
11
- };
12
- const _hoisted_3$1 = {
13
- key: 1,
14
- class: "error-message"
15
- };
16
- const _hoisted_4$1 = {
17
- key: 2,
18
- class: "error-message"
19
- };
20
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
21
- __name: "PivotValidation",
22
- props: {
23
- pivotInput: {}
24
- },
25
- setup(__props) {
26
- const props = __props;
27
- const showValidationMessages = computed(() => {
28
- return !props.pivotInput.pivot_column || !props.pivotInput.value_col || props.pivotInput.aggregations.length === 0;
29
- });
30
- return (_ctx, _cache) => {
31
- return showValidationMessages.value ? (openBlock(), createBlock(unref(ElPopover), {
32
- key: 0,
33
- placement: "top",
34
- width: "200",
35
- trigger: "hover",
36
- content: "Some required fields are missing"
37
- }, {
38
- reference: withCtx(() => [
39
- createVNode(unref(ElIcon), {
40
- color: "#FF6B6B",
41
- class: "warning-icon"
42
- }, {
43
- default: withCtx(() => _cache[0] || (_cache[0] = [
44
- createBaseVNode("i", { class: "el-icon-warning" }, null, -1)
45
- ])),
46
- _: 1,
47
- __: [0]
48
- })
49
- ]),
50
- default: withCtx(() => [
51
- createBaseVNode("div", _hoisted_1$2, [
52
- !_ctx.pivotInput.pivot_column ? (openBlock(), createElementBlock("p", _hoisted_2$1, "Pivot Column cannot be empty.")) : createCommentVNode("", true),
53
- !_ctx.pivotInput.value_col ? (openBlock(), createElementBlock("p", _hoisted_3$1, "Value Column cannot be empty.")) : createCommentVNode("", true),
54
- _ctx.pivotInput.aggregations.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_4$1, " At least one aggregation must be selected. ")) : createCommentVNode("", true)
55
- ])
56
- ]),
57
- _: 1
58
- })) : createCommentVNode("", true);
59
- };
60
- }
61
- });
62
- const PivotValidation_vue_vue_type_style_index_0_scoped_3eb585b2_lang = "";
63
- const PivotValidation = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-3eb585b2"]]);
64
- const _hoisted_1$1 = {
1
+ import { d as defineComponent, r as ref, l as computed, 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-5429bbf8.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-41b0e0d7.js";
3
+ import ContextMenu from "./ContextMenu-f149cf7c.js";
4
+ import SettingsSection from "./SettingsSection-e1e9c953.js";
5
+ import PivotValidation from "./PivotValidation-f97fec5b.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-4fe5f36b.js";
7
+ import "./designer-9633482a.js";
8
+ const _hoisted_1 = {
65
9
  key: 0,
66
10
  class: "listbox-wrapper"
67
11
  };
@@ -70,8 +14,8 @@ const _hoisted_3 = { class: "listbox" };
70
14
  const _hoisted_4 = ["onClick", "onContextmenu", "onDragstart", "onDrop"];
71
15
  const _hoisted_5 = { class: "listbox-wrapper" };
72
16
  const _hoisted_6 = { class: "list-wrapper" };
73
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
74
- __name: "pivot",
17
+ const _sfc_main = /* @__PURE__ */ defineComponent({
18
+ __name: "Pivot",
75
19
  setup(__props, { expose: __expose }) {
76
20
  const nodeStore = useNodeStore();
77
21
  const showContextMenu = ref(false);
@@ -209,7 +153,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
209
153
  }
210
154
  }
211
155
  dataLoaded.value = true;
212
- nodeStore.isDrawerOpen = true;
213
156
  };
214
157
  const handleClickOutside = (event) => {
215
158
  const targetEvent = event.target;
@@ -224,7 +167,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
224
167
  if (pivotInput.value) {
225
168
  nodeStore.updateSettings(nodePivot);
226
169
  }
227
- nodeStore.isDrawerOpen = false;
228
170
  };
229
171
  __expose({
230
172
  loadNodeData,
@@ -240,7 +182,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
240
182
  return (_ctx, _cache) => {
241
183
  const _component_el_option = resolveComponent("el-option");
242
184
  const _component_el_select = resolveComponent("el-select");
243
- return dataLoaded.value && nodePivot.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
185
+ return dataLoaded.value && nodePivot.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
244
186
  createVNode(GenericNodeSettings, {
245
187
  modelValue: nodePivot.value,
246
188
  "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => nodePivot.value = $event)
@@ -336,74 +278,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
336
278
  };
337
279
  }
338
280
  });
339
- const pivot_vue_vue_type_style_index_0_scoped_d0f14439_lang = "";
340
- const readInput = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-d0f14439"]]);
341
- const _hoisted_1 = { ref: "el" };
342
- const _sfc_main = /* @__PURE__ */ defineComponent({
343
- __name: "Pivot",
344
- props: {
345
- nodeId: {
346
- type: Number,
347
- required: true
348
- }
349
- },
350
- setup(__props) {
351
- const nodeStore = useNodeStore();
352
- const childComp = ref(null);
353
- const props = __props;
354
- const drawer = ref(false);
355
- const closeOnDrawer = () => {
356
- var _a;
357
- drawer.value = false;
358
- (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
359
- };
360
- const openDrawer = async () => {
361
- if (nodeStore.node_id === props.nodeId) {
362
- return;
363
- }
364
- nodeStore.closeDrawer();
365
- drawer.value = true;
366
- const drawerOpen = nodeStore.isDrawerOpen;
367
- nodeStore.isDrawerOpen = true;
368
- await nextTick();
369
- if (nodeStore.node_id === props.nodeId && drawerOpen) {
370
- return;
371
- }
372
- if (childComp.value) {
373
- childComp.value.loadNodeData(props.nodeId);
374
- nodeStore.openDrawer(closeOnDrawer);
375
- }
376
- };
377
- onMounted(async () => {
378
- await nextTick();
379
- });
380
- return (_ctx, _cache) => {
381
- return openBlock(), createElementBlock("div", _hoisted_1, [
382
- createVNode(NodeButton, {
383
- ref: "nodeButton",
384
- "node-id": __props.nodeId,
385
- "image-src": "pivot.png",
386
- title: `${__props.nodeId}: Pivot data`,
387
- onClick: openDrawer
388
- }, null, 8, ["node-id", "title"]),
389
- drawer.value ? (openBlock(), createBlock(Teleport, {
390
- key: 0,
391
- to: "#nodesettings"
392
- }, [
393
- createVNode(NodeTitle, {
394
- title: "Pivot data",
395
- intro: "Pivot rows to columns, to understand your data better"
396
- }),
397
- createVNode(readInput, {
398
- ref_key: "childComp",
399
- ref: childComp,
400
- "node-id": __props.nodeId
401
- }, null, 8, ["node-id"])
402
- ])) : createCommentVNode("", true)
403
- ], 512);
404
- };
405
- }
406
- });
281
+ const Pivot_vue_vue_type_style_index_0_scoped_868bfce8_lang = "";
282
+ const Pivot = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-868bfce8"]]);
407
283
  export {
408
- _sfc_main as default
284
+ Pivot as default
409
285
  };
@@ -0,0 +1,22 @@
1
+
2
+ .context-menu[data-v-868bfce8] {
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-868bfce8] {
12
+ list-style: none;
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+ .context-menu li[data-v-868bfce8] {
17
+ padding: 8px 16px;
18
+ cursor: pointer;
19
+ }
20
+ .context-menu li[data-v-868bfce8]:hover {
21
+ background-color: #f0f0f0;
22
+ }
@@ -0,0 +1,13 @@
1
+
2
+ .validation-wrapper[data-v-1561039d] {
3
+ background-color: #ffffff;
4
+ }
5
+ .error-message[data-v-1561039d] {
6
+ color: #991b1b;
7
+ margin: 5px 0;
8
+ font-size: 12px;
9
+ }
10
+ .warning-icon[data-v-1561039d] {
11
+ cursor: pointer;
12
+ font-size: 24px;
13
+ }
@@ -0,0 +1,13 @@
1
+
2
+ .validation-wrapper[data-v-3eb585b2] {
3
+ background-color: #ffffff;
4
+ }
5
+ .error-message[data-v-3eb585b2] {
6
+ color: #991b1b;
7
+ margin: 5px 0;
8
+ font-size: 12px;
9
+ }
10
+ .warning-icon[data-v-3eb585b2] {
11
+ cursor: pointer;
12
+ font-size: 24px;
13
+ }