Flowfile 0.3.0__py3-none-any.whl → 0.3.0.2__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 (149) hide show
  1. flowfile/__init__.py +13 -6
  2. flowfile/__main__.py +50 -15
  3. flowfile/api.py +383 -0
  4. flowfile/readme.md +130 -0
  5. flowfile/web/__init__.py +155 -0
  6. flowfile/web/static/assets/AirbyteReader-1ac35765.css +314 -0
  7. flowfile/web/static/assets/AirbyteReader-cb0c1d4a.js +921 -0
  8. flowfile/web/static/assets/CrossJoin-41efa4cb.css +100 -0
  9. flowfile/web/static/assets/CrossJoin-a514fa59.js +153 -0
  10. flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +77 -0
  11. flowfile/web/static/assets/DatabaseConnectionSettings-f2cecf33.js +151 -0
  12. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +64 -0
  13. flowfile/web/static/assets/DatabaseManager-83ee3c98.js +484 -0
  14. flowfile/web/static/assets/DatabaseReader-dc0c6881.js +426 -0
  15. flowfile/web/static/assets/DatabaseReader-f50c6558.css +158 -0
  16. flowfile/web/static/assets/DatabaseWriter-2f570e53.css +96 -0
  17. flowfile/web/static/assets/DatabaseWriter-5afe9f8d.js +312 -0
  18. flowfile/web/static/assets/ExploreData-5bdae813.css +45 -0
  19. flowfile/web/static/assets/ExploreData-c7ee19cf.js +118306 -0
  20. flowfile/web/static/assets/ExternalSource-17b23a01.js +225 -0
  21. flowfile/web/static/assets/ExternalSource-e37b6275.css +94 -0
  22. flowfile/web/static/assets/Filter-90856b4f.js +238 -0
  23. flowfile/web/static/assets/Filter-a9d08ba1.css +20 -0
  24. flowfile/web/static/assets/Formula-38b71e9e.js +197 -0
  25. flowfile/web/static/assets/Formula-d60a74f4.css +17 -0
  26. flowfile/web/static/assets/FuzzyMatch-6857de82.css +254 -0
  27. flowfile/web/static/assets/FuzzyMatch-d0f1fe81.js +422 -0
  28. flowfile/web/static/assets/GoogleSheet-854294a4.js +2616 -0
  29. flowfile/web/static/assets/GoogleSheet-92084da7.css +233 -0
  30. flowfile/web/static/assets/GraphSolver-0c86bbc6.js +382 -0
  31. flowfile/web/static/assets/GraphSolver-17fd26db.css +68 -0
  32. flowfile/web/static/assets/GroupBy-ab1ea74b.css +51 -0
  33. flowfile/web/static/assets/GroupBy-f2772e9f.js +413 -0
  34. flowfile/web/static/assets/Join-41c0f331.css +109 -0
  35. flowfile/web/static/assets/Join-bc3e1cf7.js +247 -0
  36. flowfile/web/static/assets/ManualInput-03aa0245.js +391 -0
  37. flowfile/web/static/assets/ManualInput-ac7b9972.css +84 -0
  38. flowfile/web/static/assets/Output-48f81019.css +2642 -0
  39. flowfile/web/static/assets/Output-5b35eee8.js +536 -0
  40. flowfile/web/static/assets/Pivot-7164087c.js +408 -0
  41. flowfile/web/static/assets/Pivot-f415e85f.css +35 -0
  42. flowfile/web/static/assets/PolarsCode-3abf6507.js +2863 -0
  43. flowfile/web/static/assets/PolarsCode-650322d1.css +35 -0
  44. flowfile/web/static/assets/PopOver-b37ff9be.js +577 -0
  45. flowfile/web/static/assets/PopOver-bccfde04.css +32 -0
  46. flowfile/web/static/assets/Read-65966a3e.js +701 -0
  47. flowfile/web/static/assets/Read-80dc1675.css +197 -0
  48. flowfile/web/static/assets/RecordCount-c66c6d6d.js +121 -0
  49. flowfile/web/static/assets/RecordId-826dc095.js +339 -0
  50. flowfile/web/static/assets/Sample-4ed555c8.js +184 -0
  51. flowfile/web/static/assets/SecretManager-eac1e97d.js +382 -0
  52. flowfile/web/static/assets/Select-085f05cc.js +231 -0
  53. flowfile/web/static/assets/SettingsSection-1f5e79c1.js +87 -0
  54. flowfile/web/static/assets/SettingsSection-9c836ecc.css +47 -0
  55. flowfile/web/static/assets/Sort-3e6cb414.js +309 -0
  56. flowfile/web/static/assets/Sort-7ccfa0fe.css +51 -0
  57. flowfile/web/static/assets/TextToRows-606349bc.js +307 -0
  58. flowfile/web/static/assets/TextToRows-c92d1ec2.css +48 -0
  59. flowfile/web/static/assets/UnavailableFields-5edd5322.css +49 -0
  60. flowfile/web/static/assets/UnavailableFields-b41976ed.js +36 -0
  61. flowfile/web/static/assets/Union-8d9ac7f9.css +30 -0
  62. flowfile/web/static/assets/Union-fca91665.js +145 -0
  63. flowfile/web/static/assets/Unique-a59f830e.js +273 -0
  64. flowfile/web/static/assets/Unique-b5615727.css +51 -0
  65. flowfile/web/static/assets/Unpivot-246e9bbd.css +77 -0
  66. flowfile/web/static/assets/Unpivot-c3815565.js +441 -0
  67. flowfile/web/static/assets/airbyte-292aa232.png +0 -0
  68. flowfile/web/static/assets/api-22b338bd.js +60 -0
  69. flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
  70. flowfile/web/static/assets/database_reader-ce1e55f3.svg +24 -0
  71. flowfile/web/static/assets/database_writer-b4ad0753.svg +23 -0
  72. flowfile/web/static/assets/designer-2394122a.css +10697 -0
  73. flowfile/web/static/assets/designer-e5bbe26f.js +69712 -0
  74. flowfile/web/static/assets/documentation-08045cf2.js +33 -0
  75. flowfile/web/static/assets/documentation-12216a74.css +50 -0
  76. flowfile/web/static/assets/dropDown-35135ba8.css +143 -0
  77. flowfile/web/static/assets/dropDown-5e7e9a5a.js +319 -0
  78. flowfile/web/static/assets/dropDownGeneric-50a91b99.js +72 -0
  79. flowfile/web/static/assets/dropDownGeneric-895680d6.css +10 -0
  80. flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  81. flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  82. flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
  83. flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
  84. flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
  85. flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
  86. flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
  87. flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
  88. flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
  89. flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
  90. flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
  91. flowfile/web/static/assets/filter-d7708bda.png +0 -0
  92. flowfile/web/static/assets/formula-eeeb1611.png +0 -0
  93. flowfile/web/static/assets/fullEditor-178376bb.css +256 -0
  94. flowfile/web/static/assets/fullEditor-705c6ccb.js +630 -0
  95. flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
  96. flowfile/web/static/assets/genericNodeSettings-65587f20.js +137 -0
  97. flowfile/web/static/assets/genericNodeSettings-924759c7.css +46 -0
  98. flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
  99. flowfile/web/static/assets/group_by-80561fc3.png +0 -0
  100. flowfile/web/static/assets/index-552863fd.js +58652 -0
  101. flowfile/web/static/assets/index-681a3ed0.css +8843 -0
  102. flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
  103. flowfile/web/static/assets/join-349043ae.png +0 -0
  104. flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
  105. flowfile/web/static/assets/nodeTitle-cf9bae3c.js +227 -0
  106. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +134 -0
  107. flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
  108. flowfile/web/static/assets/output-06ec0371.png +0 -0
  109. flowfile/web/static/assets/pivot-9660df51.png +0 -0
  110. flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
  111. flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
  112. flowfile/web/static/assets/record_id-0b15856b.png +0 -0
  113. flowfile/web/static/assets/sample-693a88b5.png +0 -0
  114. flowfile/web/static/assets/secretApi-3ad510e1.js +46 -0
  115. flowfile/web/static/assets/select-b0d0437a.png +0 -0
  116. flowfile/web/static/assets/selectDynamic-b062bc9b.css +107 -0
  117. flowfile/web/static/assets/selectDynamic-bd644891.js +302 -0
  118. flowfile/web/static/assets/sort-2aa579f0.png +0 -0
  119. flowfile/web/static/assets/summarize-2a099231.png +0 -0
  120. flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
  121. flowfile/web/static/assets/union-2d8609f4.png +0 -0
  122. flowfile/web/static/assets/unique-1958b98a.png +0 -0
  123. flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
  124. flowfile/web/static/assets/view-7a0f0be1.png +0 -0
  125. flowfile/web/static/assets/vue-codemirror.esm-dd17b478.js +22281 -0
  126. flowfile/web/static/assets/vue-content-loader.es-6b36f05e.js +210 -0
  127. flowfile/web/static/flowfile.svg +47 -0
  128. flowfile/web/static/icons/flowfile.png +0 -0
  129. flowfile/web/static/images/airbyte.png +0 -0
  130. flowfile/web/static/images/flowfile.svg +47 -0
  131. flowfile/web/static/images/google.svg +1 -0
  132. flowfile/web/static/images/sheets.png +0 -0
  133. flowfile/web/static/index.html +22 -0
  134. flowfile/web/static/vite.svg +1 -0
  135. flowfile/web/static/vue.svg +1 -0
  136. flowfile-0.3.0.2.dist-info/METADATA +235 -0
  137. {flowfile-0.3.0.dist-info → flowfile-0.3.0.2.dist-info}/RECORD +147 -15
  138. {flowfile-0.3.0.dist-info → flowfile-0.3.0.2.dist-info}/entry_points.txt +1 -1
  139. flowfile_core/configs/settings.py +7 -32
  140. flowfile_core/flowfile/FlowfileFlow.py +4 -2
  141. flowfile_core/flowfile/analytics/analytics_processor.py +1 -1
  142. flowfile_core/main.py +4 -1
  143. flowfile_core/schemas/input_schema.py +1 -8
  144. flowfile_frame/__init__.py +0 -1
  145. flowfile_frame/utils.py +0 -139
  146. flowfile-0.3.0.dist-info/METADATA +0 -219
  147. flowfile_frame/__main__.py +0 -12
  148. {flowfile-0.3.0.dist-info → flowfile-0.3.0.2.dist-info}/LICENSE +0 -0
  149. {flowfile-0.3.0.dist-info → flowfile-0.3.0.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,312 @@
1
+ import { d as defineComponent, r as ref, n as onMounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, F as Fragment, q as renderList, h as createBlock, u as unref, aj as ElRadio, g as createTextVNode, t as toDisplayString, a4 as withDirectives, ae as vModelSelect, a5 as vModelText, z as ElMessage, _ as _export_sfc, R as nextTick, a6 as Teleport, i as createCommentVNode } from "./index-552863fd.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-6b36f05e.js";
3
+ import { u as useNodeStore } from "./PopOver-b37ff9be.js";
4
+ import { f as fetchDatabaseConnectionsInterfaces } from "./api-22b338bd.js";
5
+ import { D as DatabaseConnectionSettings } from "./DatabaseConnectionSettings-f2cecf33.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-65587f20.js";
7
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-cf9bae3c.js";
8
+ import "./secretApi-3ad510e1.js";
9
+ import "./designer-e5bbe26f.js";
10
+ const createNodeDatabaseWriter = (flowId, nodeId) => {
11
+ const databaseWriteSettings = {
12
+ if_exists: "replace",
13
+ connection_mode: "reference",
14
+ schema_name: void 0,
15
+ table_name: void 0,
16
+ database_connection: {
17
+ database_type: "postgresql",
18
+ username: "",
19
+ password_ref: "",
20
+ host: "localhost",
21
+ port: 4322,
22
+ database: "",
23
+ url: void 0
24
+ }
25
+ };
26
+ const nodePolarsCode = {
27
+ flow_id: flowId,
28
+ node_id: nodeId,
29
+ pos_x: 0,
30
+ pos_y: 0,
31
+ database_write_settings: databaseWriteSettings,
32
+ cache_results: false
33
+ };
34
+ return nodePolarsCode;
35
+ };
36
+ const _hoisted_1$1 = {
37
+ key: 0,
38
+ class: "db-container"
39
+ };
40
+ const _hoisted_2 = { class: "listbox-wrapper" };
41
+ const _hoisted_3 = { class: "form-group" };
42
+ const _hoisted_4 = { key: 0 };
43
+ const _hoisted_5 = { key: 1 };
44
+ const _hoisted_6 = { key: 0 };
45
+ const _hoisted_7 = { key: 1 };
46
+ const _hoisted_8 = ["value"];
47
+ const _hoisted_9 = { class: "listbox-wrapper" };
48
+ const _hoisted_10 = { class: "form-row" };
49
+ const _hoisted_11 = { class: "form-group half" };
50
+ const _hoisted_12 = { class: "form-group half" };
51
+ const _hoisted_13 = { class: "listbox-wrapper" };
52
+ const _hoisted_14 = { class: "form-group" };
53
+ const _hoisted_15 = ["value"];
54
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
55
+ __name: "DatabaseWriter",
56
+ props: {
57
+ nodeId: {}
58
+ },
59
+ setup(__props, { expose: __expose }) {
60
+ const props = __props;
61
+ const nodeStore = useNodeStore();
62
+ const connectionModeOptions = ref(["inline", "reference"]);
63
+ const ifExistActions = ref(["append", "replace", "fail"]);
64
+ const connectionInterfaces = ref([]);
65
+ const nodeData = ref(null);
66
+ const dataLoaded = ref(false);
67
+ const connectionsAreLoading = ref(false);
68
+ const loadNodeData = async (nodeId) => {
69
+ var _a;
70
+ try {
71
+ const fetchedNodeData = await nodeStore.getNodeData(nodeId, false);
72
+ if (fetchedNodeData) {
73
+ const hasValidSetup = Boolean((_a = fetchedNodeData.setting_input) == null ? void 0 : _a.is_setup);
74
+ nodeData.value = hasValidSetup ? fetchedNodeData.setting_input : createNodeDatabaseWriter(nodeStore.flow_id, nodeId);
75
+ }
76
+ dataLoaded.value = true;
77
+ } catch (error) {
78
+ console.error("Error loading node data:", error);
79
+ dataLoaded.value = false;
80
+ ElMessage.error("Failed to load node data");
81
+ }
82
+ };
83
+ const resetFields = () => {
84
+ };
85
+ const pushNodeData = async () => {
86
+ if (!nodeData.value) {
87
+ return;
88
+ }
89
+ nodeData.value.is_setup = true;
90
+ try {
91
+ await nodeStore.updateSettings(nodeData);
92
+ } catch (error) {
93
+ console.error("Error saving node data:", error);
94
+ ElMessage.error("Failed to save node settings");
95
+ }
96
+ };
97
+ const fetchConnections = async () => {
98
+ connectionsAreLoading.value = true;
99
+ try {
100
+ connectionInterfaces.value = await fetchDatabaseConnectionsInterfaces();
101
+ } catch (error) {
102
+ console.error("Error fetching connections:", error);
103
+ ElMessage.error("Failed to load database connections");
104
+ } finally {
105
+ connectionsAreLoading.value = false;
106
+ }
107
+ };
108
+ onMounted(async () => {
109
+ await fetchConnections();
110
+ await loadNodeData(props.nodeId);
111
+ });
112
+ __expose({
113
+ loadNodeData,
114
+ pushNodeData
115
+ });
116
+ return (_ctx, _cache) => {
117
+ const _component_el_radio_group = resolveComponent("el-radio-group");
118
+ return dataLoaded.value && nodeData.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
119
+ createVNode(GenericNodeSettings, {
120
+ modelValue: nodeData.value,
121
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => nodeData.value = $event)
122
+ }, {
123
+ default: withCtx(() => [
124
+ createBaseVNode("div", _hoisted_2, [
125
+ createBaseVNode("div", _hoisted_3, [
126
+ _cache[7] || (_cache[7] = createBaseVNode("label", null, "Connection Mode", -1)),
127
+ createVNode(_component_el_radio_group, {
128
+ modelValue: nodeData.value.database_write_settings.connection_mode,
129
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => nodeData.value.database_write_settings.connection_mode = $event)
130
+ }, {
131
+ default: withCtx(() => [
132
+ (openBlock(true), createElementBlock(Fragment, null, renderList(connectionModeOptions.value, (option) => {
133
+ return openBlock(), createBlock(unref(ElRadio), {
134
+ key: option,
135
+ label: option
136
+ }, {
137
+ default: withCtx(() => [
138
+ createTextVNode(toDisplayString(option), 1)
139
+ ]),
140
+ _: 2
141
+ }, 1032, ["label"]);
142
+ }), 128))
143
+ ]),
144
+ _: 1
145
+ }, 8, ["modelValue"])
146
+ ]),
147
+ createBaseVNode("div", null, [
148
+ nodeData.value.database_write_settings.connection_mode === "inline" && nodeData.value.database_write_settings.database_connection ? (openBlock(), createElementBlock("div", _hoisted_4, [
149
+ createVNode(DatabaseConnectionSettings, {
150
+ modelValue: nodeData.value.database_write_settings.database_connection,
151
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => nodeData.value.database_write_settings.database_connection = $event),
152
+ onChange: resetFields
153
+ }, null, 8, ["modelValue"])
154
+ ])) : (openBlock(), createElementBlock("div", _hoisted_5, [
155
+ connectionsAreLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, _cache[8] || (_cache[8] = [
156
+ createBaseVNode("div", { class: "loading-spinner" }, null, -1),
157
+ createBaseVNode("p", null, "Loading connections...", -1)
158
+ ]))) : (openBlock(), createElementBlock("div", _hoisted_7, [
159
+ withDirectives(createBaseVNode("select", {
160
+ id: "connection-select",
161
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => nodeData.value.database_write_settings.database_connection_name = $event),
162
+ class: "form-control minimal-select"
163
+ }, [
164
+ _cache[9] || (_cache[9] = createBaseVNode("option", {
165
+ disabled: "",
166
+ value: ""
167
+ }, "Choose a connection", -1)),
168
+ (openBlock(true), createElementBlock(Fragment, null, renderList(connectionInterfaces.value, (conn) => {
169
+ return openBlock(), createElementBlock("option", {
170
+ key: conn.connectionName,
171
+ value: conn.connectionName
172
+ }, toDisplayString(conn.connectionName) + " (" + toDisplayString(conn.databaseType) + " - " + toDisplayString(conn.database) + ") ", 9, _hoisted_8);
173
+ }), 128))
174
+ ], 512), [
175
+ [vModelSelect, nodeData.value.database_write_settings.database_connection_name]
176
+ ])
177
+ ]))
178
+ ]))
179
+ ])
180
+ ]),
181
+ createBaseVNode("div", _hoisted_9, [
182
+ _cache[12] || (_cache[12] = createBaseVNode("h4", { class: "section-subtitle" }, "Table Settings", -1)),
183
+ createBaseVNode("div", _hoisted_10, [
184
+ createBaseVNode("div", _hoisted_11, [
185
+ _cache[10] || (_cache[10] = createBaseVNode("label", { for: "schema-name" }, "Schema", -1)),
186
+ withDirectives(createBaseVNode("input", {
187
+ id: "schema-name",
188
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => nodeData.value.database_write_settings.schema_name = $event),
189
+ type: "text",
190
+ class: "form-control",
191
+ placeholder: "Enter schema name"
192
+ }, null, 512), [
193
+ [vModelText, nodeData.value.database_write_settings.schema_name]
194
+ ])
195
+ ]),
196
+ createBaseVNode("div", _hoisted_12, [
197
+ _cache[11] || (_cache[11] = createBaseVNode("label", { for: "table-name" }, "Table", -1)),
198
+ withDirectives(createBaseVNode("input", {
199
+ id: "table-name",
200
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => nodeData.value.database_write_settings.table_name = $event),
201
+ type: "text",
202
+ class: "form-control",
203
+ placeholder: "Enter table name"
204
+ }, null, 512), [
205
+ [vModelText, nodeData.value.database_write_settings.table_name]
206
+ ])
207
+ ])
208
+ ])
209
+ ]),
210
+ createBaseVNode("div", _hoisted_13, [
211
+ createBaseVNode("div", _hoisted_14, [
212
+ _cache[13] || (_cache[13] = createBaseVNode("label", { for: "if-exists-action" }, "If Table Exists", -1)),
213
+ withDirectives(createBaseVNode("select", {
214
+ id: "if-exists-action",
215
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => nodeData.value.database_write_settings.if_exists = $event),
216
+ class: "form-control"
217
+ }, [
218
+ (openBlock(true), createElementBlock(Fragment, null, renderList(ifExistActions.value, (action) => {
219
+ return openBlock(), createElementBlock("option", {
220
+ key: action,
221
+ value: action
222
+ }, toDisplayString(action.charAt(0).toUpperCase() + action.slice(1)), 9, _hoisted_15);
223
+ }), 128))
224
+ ], 512), [
225
+ [vModelSelect, nodeData.value.database_write_settings.if_exists]
226
+ ])
227
+ ]),
228
+ _cache[14] || (_cache[14] = createBaseVNode("div", { class: "form-group" }, [
229
+ createBaseVNode("p", { class: "option-description" }, [
230
+ createBaseVNode("strong", null, "Append:"),
231
+ createTextVNode(" Add new data to existing table"),
232
+ createBaseVNode("br"),
233
+ createBaseVNode("strong", null, "Replace:"),
234
+ createTextVNode(" Delete existing table and create new one"),
235
+ createBaseVNode("br"),
236
+ createBaseVNode("strong", null, "Fail:"),
237
+ createTextVNode(" Abort if table already exists ")
238
+ ])
239
+ ], -1))
240
+ ])
241
+ ]),
242
+ _: 1
243
+ }, 8, ["modelValue"])
244
+ ])) : (openBlock(), createBlock(unref(CodeLoader), { key: 1 }));
245
+ };
246
+ }
247
+ });
248
+ const DatabaseWriter_vue_vue_type_style_index_0_scoped_90b52fee_lang = "";
249
+ const DatabaseWriter = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-90b52fee"]]);
250
+ const _hoisted_1 = { ref: "el" };
251
+ const _sfc_main = /* @__PURE__ */ defineComponent({
252
+ __name: "DatabaseWriter",
253
+ props: {
254
+ nodeId: {
255
+ type: Number,
256
+ required: true
257
+ }
258
+ },
259
+ setup(__props) {
260
+ const nodeStore = useNodeStore();
261
+ const childComp = ref(null);
262
+ const props = __props;
263
+ const drawer = ref(false);
264
+ const closeOnDrawer = () => {
265
+ var _a;
266
+ drawer.value = false;
267
+ (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
268
+ };
269
+ const openDrawer = async () => {
270
+ nodeStore.closeDrawer();
271
+ drawer.value = true;
272
+ nodeStore.isDrawerOpen;
273
+ nodeStore.isDrawerOpen = true;
274
+ await nextTick();
275
+ if (childComp.value) {
276
+ childComp.value.loadNodeData(props.nodeId);
277
+ nodeStore.openDrawer(closeOnDrawer);
278
+ }
279
+ };
280
+ onMounted(async () => {
281
+ await nextTick();
282
+ });
283
+ return (_ctx, _cache) => {
284
+ return openBlock(), createElementBlock("div", _hoisted_1, [
285
+ createVNode(NodeButton, {
286
+ ref: "nodeButton",
287
+ "node-id": __props.nodeId,
288
+ "image-src": "database_writer.svg",
289
+ title: `${__props.nodeId}: Database writer`,
290
+ onClick: openDrawer
291
+ }, null, 8, ["node-id", "title"]),
292
+ drawer.value ? (openBlock(), createBlock(Teleport, {
293
+ key: 0,
294
+ to: "#nodesettings"
295
+ }, [
296
+ createVNode(NodeTitle, {
297
+ title: "Write data to database",
298
+ intro: "Write data to database"
299
+ }),
300
+ createVNode(DatabaseWriter, {
301
+ ref_key: "childComp",
302
+ ref: childComp,
303
+ "node-id": __props.nodeId
304
+ }, null, 8, ["node-id"])
305
+ ])) : createCommentVNode("", true)
306
+ ], 512);
307
+ };
308
+ }
309
+ });
310
+ export {
311
+ _sfc_main as default
312
+ };
@@ -0,0 +1,45 @@
1
+
2
+ div[data-v-5af75af4] {
3
+ width: 100%;
4
+ min-height: 500px;
5
+ height: 100%;
6
+ }
7
+
8
+ .explore-data-container[data-v-669bd025] {
9
+ height: 100%;
10
+ display: flex;
11
+ flex-direction: column;
12
+ }
13
+ .graphic-walker-wrapper[data-v-669bd025] {
14
+ flex-grow: 1; /* Allow wrapper to fill space */
15
+ min-height: 300px; /* Ensure minimum size */
16
+ overflow: hidden; /* Prevent content spillover if needed */
17
+ }
18
+ /* Ensure the child fills the wrapper if necessary */
19
+ [data-v-669bd025] .graphic-walker-wrapper > div {
20
+ height: 100%;
21
+ }
22
+ .error-display[data-v-669bd025] {
23
+ padding: 1rem;
24
+ color: #a94442; /* Dark red */
25
+ border: 1px solid #ebccd1; /* Light red border */
26
+ background-color: #f2dede; /* Light red background */
27
+ margin: 1rem;
28
+ border-radius: 4px;
29
+ }
30
+ .empty-data-message[data-v-669bd025],
31
+ .fallback-message[data-v-669bd025] {
32
+ padding: 1rem;
33
+ text-align: center;
34
+ color: #777; /* Grey */
35
+ }
36
+ /* Add styles for the button if needed */
37
+ button[data-v-669bd025] {
38
+ margin: 0.5rem 1rem;
39
+ padding: 0.5rem 1rem;
40
+ cursor: pointer;
41
+ }
42
+ button[data-v-669bd025]:disabled {
43
+ cursor: not-allowed;
44
+ opacity: 0.6;
45
+ }