Flowfile 0.2.2__py3-none-any.whl → 0.3.0.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.

Potentially problematic release.


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

Files changed (149) hide show
  1. flowfile/__init__.py +14 -7
  2. flowfile/__main__.py +51 -15
  3. flowfile/api.py +379 -0
  4. flowfile/web/__init__.py +155 -0
  5. flowfile/web/static/assets/AirbyteReader-1ac35765.css +314 -0
  6. flowfile/web/static/assets/AirbyteReader-cb0c1d4a.js +921 -0
  7. flowfile/web/static/assets/CrossJoin-41efa4cb.css +100 -0
  8. flowfile/web/static/assets/CrossJoin-a514fa59.js +153 -0
  9. flowfile/web/static/assets/DatabaseConnectionSettings-0c04b2e5.css +77 -0
  10. flowfile/web/static/assets/DatabaseConnectionSettings-f2cecf33.js +151 -0
  11. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +64 -0
  12. flowfile/web/static/assets/DatabaseManager-83ee3c98.js +484 -0
  13. flowfile/web/static/assets/DatabaseReader-dc0c6881.js +426 -0
  14. flowfile/web/static/assets/DatabaseReader-f50c6558.css +158 -0
  15. flowfile/web/static/assets/DatabaseWriter-2f570e53.css +96 -0
  16. flowfile/web/static/assets/DatabaseWriter-5afe9f8d.js +312 -0
  17. flowfile/web/static/assets/ExploreData-5bdae813.css +45 -0
  18. flowfile/web/static/assets/ExploreData-c7ee19cf.js +118306 -0
  19. flowfile/web/static/assets/ExternalSource-17b23a01.js +225 -0
  20. flowfile/web/static/assets/ExternalSource-e37b6275.css +94 -0
  21. flowfile/web/static/assets/Filter-90856b4f.js +238 -0
  22. flowfile/web/static/assets/Filter-a9d08ba1.css +20 -0
  23. flowfile/web/static/assets/Formula-38b71e9e.js +197 -0
  24. flowfile/web/static/assets/Formula-d60a74f4.css +17 -0
  25. flowfile/web/static/assets/FuzzyMatch-6857de82.css +254 -0
  26. flowfile/web/static/assets/FuzzyMatch-d0f1fe81.js +422 -0
  27. flowfile/web/static/assets/GoogleSheet-854294a4.js +2616 -0
  28. flowfile/web/static/assets/GoogleSheet-92084da7.css +233 -0
  29. flowfile/web/static/assets/GraphSolver-0c86bbc6.js +382 -0
  30. flowfile/web/static/assets/GraphSolver-17fd26db.css +68 -0
  31. flowfile/web/static/assets/GroupBy-ab1ea74b.css +51 -0
  32. flowfile/web/static/assets/GroupBy-f2772e9f.js +413 -0
  33. flowfile/web/static/assets/Join-41c0f331.css +109 -0
  34. flowfile/web/static/assets/Join-bc3e1cf7.js +247 -0
  35. flowfile/web/static/assets/ManualInput-03aa0245.js +391 -0
  36. flowfile/web/static/assets/ManualInput-ac7b9972.css +84 -0
  37. flowfile/web/static/assets/Output-48f81019.css +2642 -0
  38. flowfile/web/static/assets/Output-5b35eee8.js +536 -0
  39. flowfile/web/static/assets/Pivot-7164087c.js +408 -0
  40. flowfile/web/static/assets/Pivot-f415e85f.css +35 -0
  41. flowfile/web/static/assets/PolarsCode-3abf6507.js +2863 -0
  42. flowfile/web/static/assets/PolarsCode-650322d1.css +35 -0
  43. flowfile/web/static/assets/PopOver-b37ff9be.js +577 -0
  44. flowfile/web/static/assets/PopOver-bccfde04.css +32 -0
  45. flowfile/web/static/assets/Read-65966a3e.js +701 -0
  46. flowfile/web/static/assets/Read-80dc1675.css +197 -0
  47. flowfile/web/static/assets/RecordCount-c66c6d6d.js +121 -0
  48. flowfile/web/static/assets/RecordId-826dc095.js +339 -0
  49. flowfile/web/static/assets/Sample-4ed555c8.js +184 -0
  50. flowfile/web/static/assets/SecretManager-eac1e97d.js +382 -0
  51. flowfile/web/static/assets/Select-085f05cc.js +231 -0
  52. flowfile/web/static/assets/SettingsSection-1f5e79c1.js +87 -0
  53. flowfile/web/static/assets/SettingsSection-9c836ecc.css +47 -0
  54. flowfile/web/static/assets/Sort-3e6cb414.js +309 -0
  55. flowfile/web/static/assets/Sort-7ccfa0fe.css +51 -0
  56. flowfile/web/static/assets/TextToRows-606349bc.js +307 -0
  57. flowfile/web/static/assets/TextToRows-c92d1ec2.css +48 -0
  58. flowfile/web/static/assets/UnavailableFields-5edd5322.css +49 -0
  59. flowfile/web/static/assets/UnavailableFields-b41976ed.js +36 -0
  60. flowfile/web/static/assets/Union-8d9ac7f9.css +30 -0
  61. flowfile/web/static/assets/Union-fca91665.js +145 -0
  62. flowfile/web/static/assets/Unique-a59f830e.js +273 -0
  63. flowfile/web/static/assets/Unique-b5615727.css +51 -0
  64. flowfile/web/static/assets/Unpivot-246e9bbd.css +77 -0
  65. flowfile/web/static/assets/Unpivot-c3815565.js +441 -0
  66. flowfile/web/static/assets/airbyte-292aa232.png +0 -0
  67. flowfile/web/static/assets/api-22b338bd.js +60 -0
  68. flowfile/web/static/assets/cross_join-d30c0290.png +0 -0
  69. flowfile/web/static/assets/database_reader-ce1e55f3.svg +24 -0
  70. flowfile/web/static/assets/database_writer-b4ad0753.svg +23 -0
  71. flowfile/web/static/assets/designer-2394122a.css +10697 -0
  72. flowfile/web/static/assets/designer-e5bbe26f.js +69712 -0
  73. flowfile/web/static/assets/documentation-08045cf2.js +33 -0
  74. flowfile/web/static/assets/documentation-12216a74.css +50 -0
  75. flowfile/web/static/assets/dropDown-35135ba8.css +143 -0
  76. flowfile/web/static/assets/dropDown-5e7e9a5a.js +319 -0
  77. flowfile/web/static/assets/dropDownGeneric-50a91b99.js +72 -0
  78. flowfile/web/static/assets/dropDownGeneric-895680d6.css +10 -0
  79. flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  80. flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  81. flowfile/web/static/assets/explore_data-8a0a2861.png +0 -0
  82. flowfile/web/static/assets/fa-brands-400-808443ae.ttf +0 -0
  83. flowfile/web/static/assets/fa-brands-400-d7236a19.woff2 +0 -0
  84. flowfile/web/static/assets/fa-regular-400-54cf6086.ttf +0 -0
  85. flowfile/web/static/assets/fa-regular-400-e3456d12.woff2 +0 -0
  86. flowfile/web/static/assets/fa-solid-900-aa759986.woff2 +0 -0
  87. flowfile/web/static/assets/fa-solid-900-d2f05935.ttf +0 -0
  88. flowfile/web/static/assets/fa-v4compatibility-0ce9033c.woff2 +0 -0
  89. flowfile/web/static/assets/fa-v4compatibility-30f6abf6.ttf +0 -0
  90. flowfile/web/static/assets/filter-d7708bda.png +0 -0
  91. flowfile/web/static/assets/formula-eeeb1611.png +0 -0
  92. flowfile/web/static/assets/fullEditor-178376bb.css +256 -0
  93. flowfile/web/static/assets/fullEditor-705c6ccb.js +630 -0
  94. flowfile/web/static/assets/fuzzy_match-40c161b2.png +0 -0
  95. flowfile/web/static/assets/genericNodeSettings-65587f20.js +137 -0
  96. flowfile/web/static/assets/genericNodeSettings-924759c7.css +46 -0
  97. flowfile/web/static/assets/graph_solver-8b7888b8.png +0 -0
  98. flowfile/web/static/assets/group_by-80561fc3.png +0 -0
  99. flowfile/web/static/assets/index-552863fd.js +58652 -0
  100. flowfile/web/static/assets/index-681a3ed0.css +8843 -0
  101. flowfile/web/static/assets/input_data-ab2eb678.png +0 -0
  102. flowfile/web/static/assets/join-349043ae.png +0 -0
  103. flowfile/web/static/assets/manual_input-ae98f31d.png +0 -0
  104. flowfile/web/static/assets/nodeTitle-cf9bae3c.js +227 -0
  105. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +134 -0
  106. flowfile/web/static/assets/old_join-5d0eb604.png +0 -0
  107. flowfile/web/static/assets/output-06ec0371.png +0 -0
  108. flowfile/web/static/assets/pivot-9660df51.png +0 -0
  109. flowfile/web/static/assets/polars_code-05ce5dc6.png +0 -0
  110. flowfile/web/static/assets/record_count-dab44eb5.png +0 -0
  111. flowfile/web/static/assets/record_id-0b15856b.png +0 -0
  112. flowfile/web/static/assets/sample-693a88b5.png +0 -0
  113. flowfile/web/static/assets/secretApi-3ad510e1.js +46 -0
  114. flowfile/web/static/assets/select-b0d0437a.png +0 -0
  115. flowfile/web/static/assets/selectDynamic-b062bc9b.css +107 -0
  116. flowfile/web/static/assets/selectDynamic-bd644891.js +302 -0
  117. flowfile/web/static/assets/sort-2aa579f0.png +0 -0
  118. flowfile/web/static/assets/summarize-2a099231.png +0 -0
  119. flowfile/web/static/assets/text_to_rows-859b29ea.png +0 -0
  120. flowfile/web/static/assets/union-2d8609f4.png +0 -0
  121. flowfile/web/static/assets/unique-1958b98a.png +0 -0
  122. flowfile/web/static/assets/unpivot-d3cb4b5b.png +0 -0
  123. flowfile/web/static/assets/view-7a0f0be1.png +0 -0
  124. flowfile/web/static/assets/vue-codemirror.esm-dd17b478.js +22281 -0
  125. flowfile/web/static/assets/vue-content-loader.es-6b36f05e.js +210 -0
  126. flowfile/web/static/flowfile.svg +47 -0
  127. flowfile/web/static/icons/flowfile.png +0 -0
  128. flowfile/web/static/images/airbyte.png +0 -0
  129. flowfile/web/static/images/flowfile.svg +47 -0
  130. flowfile/web/static/images/google.svg +1 -0
  131. flowfile/web/static/images/sheets.png +0 -0
  132. flowfile/web/static/index.html +22 -0
  133. flowfile/web/static/vite.svg +1 -0
  134. flowfile/web/static/vue.svg +1 -0
  135. flowfile-0.3.0.1.dist-info/METADATA +219 -0
  136. {flowfile-0.2.2.dist-info → flowfile-0.3.0.1.dist-info}/RECORD +147 -16
  137. {flowfile-0.2.2.dist-info → flowfile-0.3.0.1.dist-info}/entry_points.txt +1 -1
  138. flowfile_core/configs/settings.py +7 -32
  139. flowfile_core/flowfile/FlowfileFlow.py +4 -2
  140. flowfile_core/flowfile/analytics/analytics_processor.py +1 -1
  141. flowfile_core/main.py +4 -1
  142. flowfile_core/schemas/input_schema.py +1 -8
  143. flowfile_frame/__init__.py +1 -2
  144. flowfile_frame/flow_frame.py +6 -6
  145. flowfile_frame/utils.py +1 -140
  146. flowfile-0.2.2.dist-info/METADATA +0 -225
  147. flowfile_frame/__main__.py +0 -12
  148. {flowfile-0.2.2.dist-info → flowfile-0.3.0.1.dist-info}/LICENSE +0 -0
  149. {flowfile-0.2.2.dist-info → flowfile-0.3.0.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,233 @@
1
+
2
+ .context-menu[data-v-f96970aa] {
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
+ user-select: none;
11
+ }
12
+ .context-menu button[data-v-f96970aa] {
13
+ display: block;
14
+ background: none;
15
+ border: none;
16
+ padding: 4px 8px;
17
+ text-align: left;
18
+ width: 100%;
19
+ cursor: pointer;
20
+ z-index: 1;
21
+ }
22
+ .context-menu button[data-v-f96970aa]:hover {
23
+ background-color: #f0f0f0;
24
+ }
25
+ .selected[data-v-f96970aa] {
26
+ background-color: #e0f7fa;
27
+ }
28
+ .table-wrapper[data-v-f96970aa] {
29
+ position: relative;
30
+ max-height: 300px;
31
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
32
+ border-radius: 8px;
33
+ overflow: auto;
34
+ margin: 5px;
35
+ }
36
+ .buttons-container[data-v-f96970aa] {
37
+ position: relative;
38
+ display: flex;
39
+ gap: 10px;
40
+ justify-content: center;
41
+ padding: 10px 0;
42
+ min-width: 250px;
43
+ z-index: 2;
44
+ }
45
+ button[data-v-f96970aa] {
46
+ position: relative;
47
+ display: inline-flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ cursor: pointer;
51
+ padding: 10px;
52
+ background-color: #f5f5f5;
53
+ border: 1px solid #ddd;
54
+ border-radius: 4px;
55
+ font-size: 16px;
56
+ transition: background-color 0.3s ease;
57
+ z-index: 2;
58
+ }
59
+ button[data-v-f96970aa]:hover {
60
+ background-color: #b3b5ba;
61
+ }
62
+ button .material-icons[data-v-f96970aa] {
63
+ margin-right: 8px;
64
+ font-size: 20px;
65
+ }
66
+ .modal[data-v-f96970aa] {
67
+ position: fixed;
68
+ z-index: 1000;
69
+ left: 0;
70
+ top: 0;
71
+ width: 100vw;
72
+ height: 100vh;
73
+ overflow: auto;
74
+ background-color: rgba(0, 0, 0, 0.4);
75
+ }
76
+ .modal-content[data-v-f96970aa] {
77
+ position: relative;
78
+ background-color: #fefefe;
79
+ margin: 10% auto;
80
+ padding: 20px;
81
+ border: 1px solid #888;
82
+ width: 80%;
83
+ z-index: 1001;
84
+ }
85
+ .pagination-buttons[data-v-f96970aa] {
86
+ display: flex;
87
+ gap: 10px;
88
+ justify-content: center;
89
+ margin-top: 20px;
90
+ z-index: 2;
91
+ }
92
+ .grid-container[data-v-f96970aa] {
93
+ position: relative;
94
+ display: grid;
95
+ grid-template-columns: repeat(5, 1fr);
96
+ grid-gap: 10px;
97
+ padding: 10px;
98
+ z-index: 1;
99
+ }
100
+ .file-item[data-v-f96970aa] {
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: left;
104
+ text-align: center;
105
+ padding: 10px;
106
+ background-color: #f4f4f4;
107
+ border-radius: 4px;
108
+ }
109
+ .file-icon[data-v-f96970aa] {
110
+ width: 24px;
111
+ height: auto;
112
+ margin-right: 8px;
113
+ }
114
+ @media (max-width: 800px) {
115
+ .grid-container[data-v-f96970aa] {
116
+ grid-template-columns: repeat(2, 1fr);
117
+ }
118
+ }
119
+ .breadcrumb[data-v-f96970aa] {
120
+ margin: 10px 0;
121
+ }
122
+ .breadcrumb a[data-v-f96970aa] {
123
+ cursor: pointer;
124
+ color: #0275d8;
125
+ text-decoration: none;
126
+ }
127
+ .breadcrumb a[data-v-f96970aa]:hover {
128
+ text-decoration: underline;
129
+ }
130
+
131
+ /* Additional styles for el-select override */
132
+ .el-select-dropdown .el-select-dropdown__item.selected[data-v-f96970aa] {
133
+ background-color: #f5f5f5 !important;
134
+ color: #000000;
135
+ }
136
+ .close[data-v-f96970aa] {
137
+ position: relative;
138
+ z-index: 1002;
139
+ }
140
+
141
+ .context-menu[data-v-dc36d3d0] {
142
+ position: fixed;
143
+ z-index: 1000;
144
+ border: 1px solid #ccc;
145
+ background-color: white;
146
+ padding: 8px;
147
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
148
+ border-radius: 4px;
149
+ user-select: none;
150
+ }
151
+ .context-menu button[data-v-dc36d3d0] {
152
+ display: block;
153
+ background: none;
154
+ border: none;
155
+ padding: 4px 8px;
156
+ text-align: left;
157
+ width: 100%;
158
+ cursor: pointer;
159
+ z-index: 100;
160
+ }
161
+ .context-menu button[data-v-dc36d3d0]:hover {
162
+ background-color: #f0f0f0;
163
+ }
164
+ .table-wrapper[data-v-dc36d3d0] {
165
+ max-height: 300px; /* Adjust this value as needed */
166
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* subtle shadow for depth */
167
+ border-radius: 8px; /* rounded corners */
168
+ overflow: auto; /* ensures the rounded corners are applied to the child elements */
169
+ margin: 5px; /* adds a small margin around the table */
170
+ }
171
+ .context-menu[data-v-dc36d3d0] {
172
+ position: fixed;
173
+ z-index: 1000;
174
+ border: 1px solid #ccc;
175
+ background-color: white;
176
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
177
+ border-radius: 4px;
178
+ }
179
+ .context-menu ul[data-v-dc36d3d0] {
180
+ list-style: none;
181
+ padding: 0;
182
+ margin: 0;
183
+ }
184
+ .context-menu li[data-v-dc36d3d0] {
185
+ padding: 8px 16px;
186
+ cursor: pointer;
187
+ }
188
+ .context-menu li[data-v-dc36d3d0]:hover {
189
+ background-color: #f0f0f0;
190
+ }
191
+ .file-upload-wrapper[data-v-dc36d3d0] {
192
+ position: relative;
193
+ width: 100%;
194
+ }
195
+ .file-upload-input[data-v-dc36d3d0] {
196
+ width: 100%;
197
+ height: 40px;
198
+ opacity: 0;
199
+ position: absolute;
200
+ top: 0;
201
+ left: 0;
202
+ z-index: 1;
203
+ cursor: pointer;
204
+ }
205
+ .file-upload-label[data-v-dc36d3d0] {
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: flex-start;
209
+ background-color: #f5f5f5;
210
+ border: 1px solid #ddd;
211
+ border-radius: 4px;
212
+ padding: 10px 15px;
213
+ color: #333;
214
+ font-size: 16px;
215
+ font-weight: 500;
216
+ text-align: left;
217
+ user-select: none;
218
+ cursor: pointer;
219
+ transition: background-color 0.3s ease;
220
+ }
221
+ .file-upload-label[data-v-dc36d3d0]:hover {
222
+ background-color: #e4e4e4;
223
+ }
224
+ .file-icon[data-v-dc36d3d0] {
225
+ margin-right: 10px;
226
+ font-size: 20px; /* Slightly larger icon for better visual balance */
227
+ }
228
+ .file-label-text[data-v-dc36d3d0] {
229
+ flex-grow: 1; /* Ensures text takes the available space */
230
+ margin-left: 10px; /* Spacing between icon and text */
231
+ }
232
+
233
+ /* Additional styling to align with Vuestic's modern and minimalistic design */
@@ -0,0 +1,382 @@
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, l as computed, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, f as createVNode, w as withCtx, v as withModifiers, h as createBlock, a6 as Teleport } from "./index-552863fd.js";
2
+ import { u as useNodeStore } from "./PopOver-b37ff9be.js";
3
+ import { G as GenericNodeSettings } from "./genericNodeSettings-65587f20.js";
4
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-cf9bae3c.js";
5
+ import "./designer-e5bbe26f.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_d0286fd2_lang = "";
42
+ const ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-d0286fd2"]]);
43
+ const _hoisted_1$2 = { class: "listbox-wrapper" };
44
+ const _hoisted_2$1 = { class: "listbox-row" };
45
+ const _hoisted_3$1 = { class: "listbox-subtitle" };
46
+ const _hoisted_4$1 = { class: "items-container" };
47
+ const _hoisted_5$1 = {
48
+ key: 0,
49
+ class: "item-box"
50
+ };
51
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
52
+ __name: "SettingsSection",
53
+ props: {
54
+ title: { type: String, required: true },
55
+ item: { type: String, required: true }
56
+ // Changed to a single item
57
+ },
58
+ emits: ["removeItem"],
59
+ setup(__props, { emit: __emit }) {
60
+ const emit = __emit;
61
+ const emitRemove = (item) => {
62
+ emit("removeItem", item);
63
+ };
64
+ return (_ctx, _cache) => {
65
+ return openBlock(), createElementBlock("div", _hoisted_1$2, [
66
+ createBaseVNode("div", _hoisted_2$1, [
67
+ createBaseVNode("div", _hoisted_3$1, toDisplayString(__props.title), 1),
68
+ createBaseVNode("div", _hoisted_4$1, [
69
+ __props.item !== "" ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
70
+ createTextVNode(toDisplayString(__props.item) + " ", 1),
71
+ createBaseVNode("span", {
72
+ class: "remove-btn",
73
+ onClick: _cache[0] || (_cache[0] = ($event) => emitRemove(__props.item))
74
+ }, "x")
75
+ ])) : createCommentVNode("", true)
76
+ ])
77
+ ])
78
+ ]);
79
+ };
80
+ }
81
+ });
82
+ const SettingsSection_vue_vue_type_style_index_0_scoped_43acf78a_lang = "";
83
+ const SettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-43acf78a"]]);
84
+ const _hoisted_1$1 = {
85
+ key: 0,
86
+ class: "listbox-wrapper"
87
+ };
88
+ const _hoisted_2 = { class: "listbox-wrapper" };
89
+ const _hoisted_3 = { class: "listbox" };
90
+ const _hoisted_4 = ["onClick", "onContextmenu", "onDragstart", "onDrop"];
91
+ const _hoisted_5 = { class: "listbox-wrapper" };
92
+ const _hoisted_6 = { class: "listbox-wrapper" };
93
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
94
+ __name: "graphSolver",
95
+ props: { nodeId: { type: Number, required: true } },
96
+ setup(__props, { expose: __expose }) {
97
+ const nodeStore = useNodeStore();
98
+ const showContextMenu = ref(false);
99
+ const dataLoaded = ref(false);
100
+ const contextMenuPosition = ref({ x: 0, y: 0 });
101
+ const selectedColumns = ref([]);
102
+ const contextMenuOptions = ref([]);
103
+ const contextMenuRef = ref(null);
104
+ const nodeData = ref(null);
105
+ const draggedColumnName = ref(null);
106
+ const graphSolverInput = ref({
107
+ col_from: "",
108
+ col_to: "",
109
+ output_column_name: "group_column"
110
+ });
111
+ const nodeGraphSolver = ref(null);
112
+ const singleColumnSelected = computed(() => selectedColumns.value.length === 1);
113
+ const getColumnClass = (columnName) => {
114
+ return selectedColumns.value.includes(columnName) ? "is-selected" : "";
115
+ };
116
+ const onDragStart = (columnName, event) => {
117
+ var _a;
118
+ draggedColumnName.value = columnName;
119
+ (_a = event.dataTransfer) == null ? void 0 : _a.setData("text/plain", columnName);
120
+ };
121
+ const onDrop = (index) => {
122
+ var _a, _b;
123
+ if (draggedColumnName.value) {
124
+ const colSchema = (_b = (_a = nodeData.value) == null ? void 0 : _a.main_input) == null ? void 0 : _b.table_schema;
125
+ if (colSchema) {
126
+ const fromIndex = colSchema.findIndex((col) => col.name === draggedColumnName.value);
127
+ if (fromIndex !== -1 && fromIndex !== index) {
128
+ const [movedColumn] = colSchema.splice(fromIndex, 1);
129
+ colSchema.splice(index, 0, movedColumn);
130
+ }
131
+ }
132
+ draggedColumnName.value = null;
133
+ }
134
+ };
135
+ const onDropInSection = (section) => {
136
+ if (draggedColumnName.value) {
137
+ removeColumnIfExists(draggedColumnName.value);
138
+ if (section === "from" && graphSolverInput.value.col_from !== draggedColumnName.value) {
139
+ graphSolverInput.value.col_from = draggedColumnName.value;
140
+ } else if (section === "to") {
141
+ graphSolverInput.value.col_to = draggedColumnName.value;
142
+ }
143
+ draggedColumnName.value = null;
144
+ }
145
+ };
146
+ const openContextMenu = (columnName, event) => {
147
+ selectedColumns.value = [columnName];
148
+ contextMenuPosition.value = { x: event.clientX, y: event.clientY };
149
+ contextMenuOptions.value = [
150
+ {
151
+ label: "Assign as From",
152
+ action: "from",
153
+ disabled: isColumnAssigned(columnName) || !singleColumnSelected.value
154
+ },
155
+ {
156
+ label: "Assign as To",
157
+ action: "to",
158
+ disabled: isColumnAssigned(columnName) || !singleColumnSelected.value
159
+ }
160
+ ];
161
+ showContextMenu.value = true;
162
+ };
163
+ const handleContextMenuSelect = (action) => {
164
+ const column = selectedColumns.value[0];
165
+ if (action === "from" && graphSolverInput.value.col_from !== column) {
166
+ removeColumnIfExists(column);
167
+ graphSolverInput.value.col_from = column;
168
+ } else if (action === "to") {
169
+ removeColumnIfExists(column);
170
+ graphSolverInput.value.col_to = column;
171
+ }
172
+ closeContextMenu();
173
+ };
174
+ const isColumnAssigned = (columnName) => {
175
+ return graphSolverInput.value.col_from === columnName || graphSolverInput.value.col_to === columnName;
176
+ };
177
+ const removeColumnIfExists = (columnName) => {
178
+ if (graphSolverInput.value.col_from === columnName) {
179
+ graphSolverInput.value.col_from = "";
180
+ } else if (graphSolverInput.value.col_to === columnName) {
181
+ graphSolverInput.value.col_to = "";
182
+ }
183
+ };
184
+ const removeColumn = (type, _) => {
185
+ if (type === "from") {
186
+ graphSolverInput.value.col_from = "";
187
+ } else if (type === "to") {
188
+ graphSolverInput.value.col_to = "";
189
+ }
190
+ };
191
+ const handleItemClick = (columnName) => {
192
+ selectedColumns.value = [columnName];
193
+ };
194
+ const loadNodeData = async (nodeId) => {
195
+ var _a;
196
+ console.log("loadNodeData from groupby");
197
+ nodeData.value = await nodeStore.getNodeData(nodeId, false);
198
+ nodeGraphSolver.value = (_a = nodeData.value) == null ? void 0 : _a.setting_input;
199
+ if (nodeData.value) {
200
+ if (nodeGraphSolver.value) {
201
+ if (nodeGraphSolver.value.graph_solver_input) {
202
+ graphSolverInput.value = nodeGraphSolver.value.graph_solver_input;
203
+ } else {
204
+ nodeGraphSolver.value.graph_solver_input = graphSolverInput.value;
205
+ }
206
+ }
207
+ }
208
+ dataLoaded.value = true;
209
+ nodeStore.isDrawerOpen = true;
210
+ };
211
+ const handleClickOutside = (event) => {
212
+ const targetEvent = event.target;
213
+ if (targetEvent.id === "pivot-context-menu")
214
+ return;
215
+ showContextMenu.value = false;
216
+ };
217
+ const closeContextMenu = () => {
218
+ showContextMenu.value = false;
219
+ };
220
+ const pushNodeData = async () => {
221
+ if (nodeGraphSolver.value) {
222
+ nodeStore.updateSettings(nodeGraphSolver);
223
+ }
224
+ nodeStore.isDrawerOpen = false;
225
+ };
226
+ __expose({
227
+ loadNodeData,
228
+ pushNodeData
229
+ });
230
+ onMounted(async () => {
231
+ await nextTick();
232
+ window.addEventListener("click", handleClickOutside);
233
+ });
234
+ onUnmounted(() => {
235
+ window.removeEventListener("click", handleClickOutside);
236
+ });
237
+ return (_ctx, _cache) => {
238
+ const _component_el_input = resolveComponent("el-input");
239
+ return dataLoaded.value && nodeGraphSolver.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
240
+ createVNode(GenericNodeSettings, {
241
+ modelValue: nodeGraphSolver.value,
242
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => nodeGraphSolver.value = $event)
243
+ }, {
244
+ default: withCtx(() => {
245
+ var _a, _b;
246
+ return [
247
+ createBaseVNode("div", _hoisted_2, [
248
+ createBaseVNode("ul", _hoisted_3, [
249
+ (openBlock(true), createElementBlock(Fragment, null, renderList((_b = (_a = nodeData.value) == null ? void 0 : _a.main_input) == null ? void 0 : _b.table_schema, (col_schema, index) => {
250
+ return openBlock(), createElementBlock("li", {
251
+ key: col_schema.name,
252
+ class: normalizeClass(getColumnClass(col_schema.name)),
253
+ draggable: "true",
254
+ onClick: ($event) => handleItemClick(col_schema.name),
255
+ onContextmenu: withModifiers(($event) => openContextMenu(col_schema.name, $event), ["prevent"]),
256
+ onDragstart: ($event) => onDragStart(col_schema.name, $event),
257
+ onDragover: _cache[0] || (_cache[0] = withModifiers(() => {
258
+ }, ["prevent"])),
259
+ onDrop: ($event) => onDrop(index)
260
+ }, toDisplayString(col_schema.name) + " (" + toDisplayString(col_schema.data_type) + ") ", 43, _hoisted_4);
261
+ }), 128))
262
+ ])
263
+ ]),
264
+ showContextMenu.value ? (openBlock(), createBlock(ContextMenu, {
265
+ key: 0,
266
+ id: "pivot-context-menu",
267
+ ref_key: "contextMenuRef",
268
+ ref: contextMenuRef,
269
+ position: contextMenuPosition.value,
270
+ options: contextMenuOptions.value,
271
+ onSelect: handleContextMenuSelect,
272
+ onClose: closeContextMenu
273
+ }, null, 8, ["position", "options"])) : createCommentVNode("", true),
274
+ createBaseVNode("div", _hoisted_5, [
275
+ createVNode(SettingsSection, {
276
+ title: "From Column",
277
+ item: graphSolverInput.value.col_from ?? "",
278
+ droppable: "true",
279
+ onRemoveItem: _cache[1] || (_cache[1] = ($event) => removeColumn("from", $event)),
280
+ onDragover: _cache[2] || (_cache[2] = withModifiers(() => {
281
+ }, ["prevent"])),
282
+ onDrop: _cache[3] || (_cache[3] = ($event) => onDropInSection("from"))
283
+ }, null, 8, ["item"]),
284
+ createVNode(SettingsSection, {
285
+ title: "To Column",
286
+ item: graphSolverInput.value.col_to ?? "",
287
+ droppable: "true",
288
+ onRemoveItem: _cache[4] || (_cache[4] = ($event) => removeColumn("to", $event)),
289
+ onDragover: _cache[5] || (_cache[5] = withModifiers(() => {
290
+ }, ["prevent"])),
291
+ onDrop: _cache[6] || (_cache[6] = ($event) => onDropInSection("to"))
292
+ }, null, 8, ["item"]),
293
+ createBaseVNode("div", _hoisted_6, [
294
+ _cache[9] || (_cache[9] = createBaseVNode("div", { class: "listbox-subtitle" }, "Select Output column name", -1)),
295
+ createVNode(_component_el_input, {
296
+ modelValue: graphSolverInput.value.output_column_name,
297
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => graphSolverInput.value.output_column_name = $event),
298
+ style: { "width": "240px" },
299
+ placeholder: "Please input"
300
+ }, null, 8, ["modelValue"])
301
+ ])
302
+ ])
303
+ ];
304
+ }),
305
+ _: 1
306
+ }, 8, ["modelValue"])
307
+ ])) : createCommentVNode("", true);
308
+ };
309
+ }
310
+ });
311
+ const graphSolver_vue_vue_type_style_index_0_scoped_5a467b52_lang = "";
312
+ const readInput = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-5a467b52"]]);
313
+ const _hoisted_1 = { ref: "el" };
314
+ const _sfc_main = /* @__PURE__ */ defineComponent({
315
+ __name: "GraphSolver",
316
+ props: {
317
+ nodeId: {
318
+ type: Number,
319
+ required: true
320
+ }
321
+ },
322
+ setup(__props) {
323
+ const nodeStore = useNodeStore();
324
+ const childComp = ref(null);
325
+ const props = __props;
326
+ const drawer = ref(false);
327
+ const closeOnDrawer = () => {
328
+ var _a;
329
+ drawer.value = false;
330
+ (_a = childComp.value) == null ? void 0 : _a.pushNodeData();
331
+ };
332
+ const openDrawer = async () => {
333
+ if (nodeStore.node_id === props.nodeId) {
334
+ nodeStore.openDrawer(closeOnDrawer);
335
+ return;
336
+ }
337
+ nodeStore.closeDrawer();
338
+ drawer.value = true;
339
+ const drawerOpen = nodeStore.isDrawerOpen;
340
+ nodeStore.isDrawerOpen = true;
341
+ await nextTick();
342
+ if (nodeStore.node_id === props.nodeId && drawerOpen) {
343
+ return;
344
+ }
345
+ if (childComp.value) {
346
+ childComp.value.loadNodeData(props.nodeId);
347
+ nodeStore.openDrawer(closeOnDrawer);
348
+ }
349
+ };
350
+ onMounted(async () => {
351
+ await nextTick();
352
+ });
353
+ return (_ctx, _cache) => {
354
+ return openBlock(), createElementBlock("div", _hoisted_1, [
355
+ createVNode(NodeButton, {
356
+ ref: "nodeButton",
357
+ "node-id": __props.nodeId,
358
+ "image-src": "graph_solver.png",
359
+ title: `${__props.nodeId}: Graph Solver`,
360
+ onClick: openDrawer
361
+ }, null, 8, ["node-id", "title"]),
362
+ drawer.value ? (openBlock(), createBlock(Teleport, {
363
+ key: 0,
364
+ to: "#nodesettings"
365
+ }, [
366
+ createVNode(NodeTitle, {
367
+ title: "Graph Solver",
368
+ intro: "Find groups in your data"
369
+ }),
370
+ createVNode(readInput, {
371
+ ref_key: "childComp",
372
+ ref: childComp,
373
+ "node-id": __props.nodeId
374
+ }, null, 8, ["node-id"])
375
+ ])) : createCommentVNode("", true)
376
+ ], 512);
377
+ };
378
+ }
379
+ });
380
+ export {
381
+ _sfc_main as default
382
+ };
@@ -0,0 +1,68 @@
1
+
2
+ .context-menu[data-v-d0286fd2] {
3
+ position: fixed;
4
+ z-index: 1000;
5
+ border: 1px solid #ccc;
6
+ background-color: white;
7
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
8
+ border-radius: 4px;
9
+ user-select: none;
10
+ }
11
+ .context-menu ul[data-v-d0286fd2] {
12
+ list-style: none;
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+ .context-menu li[data-v-d0286fd2] {
17
+ padding: 8px 16px;
18
+ cursor: pointer;
19
+ }
20
+ .context-menu li.disabled[data-v-d0286fd2] {
21
+ color: #ccc;
22
+ cursor: not-allowed;
23
+ }
24
+ .context-menu li[data-v-d0286fd2]:hover:not(.disabled) {
25
+ background-color: #f0f0f0;
26
+ }
27
+
28
+ .items-container[data-v-43acf78a] {
29
+ display: flex;
30
+ gap: 10px; /* Space between items */
31
+ }
32
+ .item-box[data-v-43acf78a] {
33
+ display: flex;
34
+ align-items: center;
35
+ padding: 5px 10px;
36
+ background-color: #f0f0f0;
37
+ border-radius: 4px;
38
+ font-size: 12px; /* Font size set to 12px */
39
+ position: relative;
40
+ }
41
+ .remove-btn[data-v-43acf78a] {
42
+ margin-left: 8px;
43
+ cursor: pointer;
44
+ color: #100f0f72;
45
+ font-weight: bold;
46
+ }
47
+
48
+ .context-menu[data-v-5a467b52] {
49
+ position: fixed;
50
+ z-index: 1000;
51
+ border: 1px solid #ccc;
52
+ background-color: white;
53
+ padding: 8px;
54
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
55
+ border-radius: 4px;
56
+ }
57
+ .context-menu ul[data-v-5a467b52] {
58
+ list-style: none;
59
+ padding: 0;
60
+ margin: 0;
61
+ }
62
+ .context-menu li[data-v-5a467b52] {
63
+ padding: 8px 16px;
64
+ cursor: pointer;
65
+ }
66
+ .context-menu li[data-v-5a467b52]:hover {
67
+ background-color: #f0f0f0;
68
+ }