@milaboratories/graph-maker 1.1.190 → 1.1.191
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.
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlNotificationAlert as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as
|
|
9
|
-
import
|
|
10
|
-
import { useStore as
|
|
11
|
-
const
|
|
1
|
+
import { defineComponent as J, ref as y, watch as g, computed as f, createElementBlock as T, openBlock as s, createElementVNode as S, createVNode as M, createCommentVNode as d, createBlock as v, withKeys as Q, resolveDynamicComponent as Y, renderSlot as Z, unref as n, withCtx as C, createTextVNode as B, normalizeClass as H, toDisplayString as ee, withModifiers as R } from "vue";
|
|
2
|
+
import { PlNotificationAlert as te, PlDropdown as oe, PlAutocomplete as ae, PlBtnGhost as N } from "@platforma-sdk/ui-vue";
|
|
3
|
+
import re from "./DendroTable.vue.js";
|
|
4
|
+
import ne from "./DendroTooltip.vue.js";
|
|
5
|
+
import le from "./LassoControls/index.vue.js";
|
|
6
|
+
import ie from "./Loading.vue.js";
|
|
7
|
+
import se from "./Zoom/index.vue.js";
|
|
8
|
+
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as O } from "../constantsCommon.js";
|
|
9
|
+
import ue from "../icons/EditIcon.vue.js";
|
|
10
|
+
import { useStore as ce } from "../store.js";
|
|
11
|
+
const de = { class: "chart_container" }, ve = { class: "chart_header" }, me = ["value"], fe = { class: "chart_titleLineSlot" }, pe = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "chart_tabBy"
|
|
14
|
-
},
|
|
14
|
+
}, he = {
|
|
15
15
|
key: 1,
|
|
16
16
|
class: "chart_errorMessage"
|
|
17
|
-
},
|
|
17
|
+
}, Se = {
|
|
18
18
|
key: 1,
|
|
19
19
|
class: "chart_controls"
|
|
20
|
-
},
|
|
20
|
+
}, xe = /* @__PURE__ */ J({
|
|
21
21
|
__name: "Chart",
|
|
22
22
|
props: {
|
|
23
23
|
graphStatus: {},
|
|
@@ -28,55 +28,60 @@ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["
|
|
|
28
28
|
errorInfo: {}
|
|
29
29
|
},
|
|
30
30
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
31
|
-
setup(l, { emit:
|
|
32
|
-
const D =
|
|
31
|
+
setup(l, { emit: U }) {
|
|
32
|
+
const D = U, a = ce(), u = l, b = y(u.graphTitle);
|
|
33
33
|
g(() => u.graphTitle, (t) => {
|
|
34
|
-
|
|
34
|
+
b.value = t;
|
|
35
35
|
});
|
|
36
|
-
const x =
|
|
36
|
+
const x = f(() => {
|
|
37
37
|
var t;
|
|
38
38
|
return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
39
|
-
}),
|
|
39
|
+
}), p = f(() => {
|
|
40
40
|
var t;
|
|
41
41
|
return (t = x.value) == null ? void 0 : t.selectedSource;
|
|
42
|
-
}), $ =
|
|
42
|
+
}), $ = f(() => {
|
|
43
43
|
var t, e;
|
|
44
44
|
return (e = (t = x.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
45
|
-
}), P =
|
|
45
|
+
}), P = f(() => {
|
|
46
46
|
var t;
|
|
47
47
|
return (t = a.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
|
-
}),
|
|
49
|
-
g(() =>
|
|
50
|
-
t !== e && (
|
|
48
|
+
}), m = y($.value);
|
|
49
|
+
g(() => p.value, (t, e) => {
|
|
50
|
+
t !== e && (m.value = $.value);
|
|
51
51
|
}, { immediate: !0 });
|
|
52
|
-
async function
|
|
52
|
+
async function A(t) {
|
|
53
53
|
var o;
|
|
54
54
|
if (!a.value.columnsDataStore)
|
|
55
55
|
return Promise.resolve([]);
|
|
56
56
|
const e = P.value.find((i) => i.selectedSource === t);
|
|
57
57
|
if (e && (((o = e.selectedFilterValues) == null ? void 0 : o.length) ?? 0) > 0) {
|
|
58
58
|
const i = e.selectedFilterValues ?? [];
|
|
59
|
-
return Promise.all(i.map((c) =>
|
|
59
|
+
return Promise.all(i.map((c) => F(t, c)));
|
|
60
60
|
}
|
|
61
|
-
const r = await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
61
|
+
const r = await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
62
|
+
a.value.columnsDataStore,
|
|
63
|
+
a.value.inputGuide.value,
|
|
64
|
+
t,
|
|
65
|
+
O
|
|
66
|
+
);
|
|
62
67
|
return r.overflow ? null : r.values;
|
|
63
68
|
}
|
|
64
|
-
const h =
|
|
69
|
+
const h = y();
|
|
65
70
|
g([
|
|
66
|
-
() =>
|
|
71
|
+
() => p.value,
|
|
67
72
|
() => a.value.loading.inputGuide
|
|
68
73
|
], async ([t, e]) => {
|
|
69
|
-
t === void 0 || e || !a.value.columnsDataStore || (h.value = await
|
|
74
|
+
t === void 0 || e || !a.value.columnsDataStore || (h.value = await A(t));
|
|
70
75
|
}, { immediate: !0 }), g(() => h.value, async (t) => {
|
|
71
|
-
if (
|
|
76
|
+
if (p.value === void 0 || m.value !== void 0 || t === void 0)
|
|
72
77
|
return;
|
|
73
78
|
let e = t;
|
|
74
|
-
if (t === null && (e = await G(
|
|
79
|
+
if (t === null && (e = await G(p.value, "")), e != null && e.length) {
|
|
75
80
|
const r = e[0].value;
|
|
76
|
-
|
|
81
|
+
m.value = r, w(r);
|
|
77
82
|
}
|
|
78
83
|
}, { immediate: !0 });
|
|
79
|
-
function
|
|
84
|
+
function w(t) {
|
|
80
85
|
const e = a.value.reactive.optionsState.components.tabBy.selectorStates;
|
|
81
86
|
e.length && (a.value.reactive.optionsState.components.tabBy.selectorStates = [{
|
|
82
87
|
...e[0],
|
|
@@ -84,25 +89,26 @@ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["
|
|
|
84
89
|
selectedFilterValues: [t]
|
|
85
90
|
}]);
|
|
86
91
|
}
|
|
87
|
-
function
|
|
92
|
+
function W(t) {
|
|
88
93
|
const e = t.currentTarget;
|
|
89
|
-
|
|
94
|
+
b.value = e.value, D("graph-title-update", e.value);
|
|
90
95
|
}
|
|
91
|
-
function
|
|
96
|
+
function q(t) {
|
|
92
97
|
D("dendro-node-select", t);
|
|
93
98
|
}
|
|
94
|
-
async function G(t, e) {
|
|
95
|
-
var
|
|
99
|
+
async function G(t, e, r = "label") {
|
|
100
|
+
var E;
|
|
96
101
|
if (!a.value.columnsDataStore)
|
|
97
102
|
return Promise.resolve([]);
|
|
98
|
-
const
|
|
99
|
-
if (
|
|
100
|
-
const
|
|
101
|
-
return e ?
|
|
103
|
+
const o = P.value.find((V) => V.selectedSource === t);
|
|
104
|
+
if (o && (((E = o.selectedFilterValues) == null ? void 0 : E.length) ?? 0) > 0) {
|
|
105
|
+
const V = o.selectedFilterValues ?? [], L = await Promise.all(V.map((k) => F(t, k)));
|
|
106
|
+
return e ? L.filter((k) => k.label.toLowerCase().includes(e.toLowerCase())) : L;
|
|
102
107
|
}
|
|
103
|
-
|
|
108
|
+
const i = r === "label" ? e : void 0, c = r === "value" ? e : void 0;
|
|
109
|
+
return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, O, i, c)).values;
|
|
104
110
|
}
|
|
105
|
-
async function
|
|
111
|
+
async function F(t, e) {
|
|
106
112
|
return a.value.columnsDataStore ? await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
107
113
|
a.value.columnsDataStore,
|
|
108
114
|
a.value.inputGuide.value,
|
|
@@ -112,7 +118,7 @@ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["
|
|
|
112
118
|
e
|
|
113
119
|
).then((o) => o.values[0]) : Promise.resolve({ value: e, label: " " });
|
|
114
120
|
}
|
|
115
|
-
const
|
|
121
|
+
const I = y(), _ = f(() => {
|
|
116
122
|
var e;
|
|
117
123
|
if (a.value.reactive.chartType !== "discrete")
|
|
118
124
|
return !1;
|
|
@@ -126,7 +132,7 @@ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["
|
|
|
126
132
|
});
|
|
127
133
|
}
|
|
128
134
|
return !1;
|
|
129
|
-
}),
|
|
135
|
+
}), j = f(() => {
|
|
130
136
|
var e;
|
|
131
137
|
if (a.value.reactive.chartType !== "discrete")
|
|
132
138
|
return !1;
|
|
@@ -141,13 +147,13 @@ const se = { class: "chart_container" }, ue = { class: "chart_header" }, ce = ["
|
|
|
141
147
|
}
|
|
142
148
|
return !1;
|
|
143
149
|
});
|
|
144
|
-
function
|
|
150
|
+
function K() {
|
|
145
151
|
a.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
146
152
|
}
|
|
147
|
-
function
|
|
153
|
+
function z() {
|
|
148
154
|
a.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
149
155
|
}
|
|
150
|
-
const
|
|
156
|
+
const X = f(() => {
|
|
151
157
|
var t, e, r;
|
|
152
158
|
return ((t = u.errorInfo) == null ? void 0 : t.type) === "tooManyFacets" ? `Too many facets (${u.errorInfo.info.count}).
|
|
153
159
|
Maximum count is ${u.errorInfo.info.maxCount}.
|
|
@@ -159,23 +165,23 @@ Try to filter the data.` : "";
|
|
|
159
165
|
});
|
|
160
166
|
return (t, e) => {
|
|
161
167
|
var r;
|
|
162
|
-
return s(), T("div",
|
|
163
|
-
|
|
164
|
-
|
|
168
|
+
return s(), T("div", de, [
|
|
169
|
+
S("div", ve, [
|
|
170
|
+
S("input", {
|
|
165
171
|
class: "chart_title",
|
|
166
|
-
value:
|
|
167
|
-
onChange:
|
|
168
|
-
onKeyup: e[0] || (e[0] =
|
|
172
|
+
value: b.value,
|
|
173
|
+
onChange: W,
|
|
174
|
+
onKeyup: e[0] || (e[0] = Q((o) => {
|
|
169
175
|
var i;
|
|
170
176
|
(i = o.target) == null || i.blur();
|
|
171
177
|
}, ["enter"]))
|
|
172
|
-
}, null, 40,
|
|
173
|
-
(s(), v(
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
}, null, 40, me),
|
|
179
|
+
(s(), v(Y(ue), { class: "chart_titleEdit" })),
|
|
180
|
+
S("div", fe, [
|
|
181
|
+
Z(t.$slots, "default")
|
|
176
182
|
])
|
|
177
183
|
]),
|
|
178
|
-
|
|
184
|
+
M(n(te), {
|
|
179
185
|
modelValue: n(a).reactive.showTooltipHint,
|
|
180
186
|
"onUpdate:modelValue": e[1] || (e[1] = (o) => n(a).reactive.showTooltipHint = o),
|
|
181
187
|
type: "success",
|
|
@@ -187,36 +193,35 @@ Try to filter the data.` : "";
|
|
|
187
193
|
])]),
|
|
188
194
|
_: 1
|
|
189
195
|
}, 8, ["modelValue"]),
|
|
190
|
-
|
|
191
|
-
h.value || h.value === void 0 && n(a).loading.inputGuide ? (s(), v(n(
|
|
196
|
+
p.value ? (s(), T("div", pe, [
|
|
197
|
+
h.value || h.value === void 0 && n(a).loading.inputGuide ? (s(), v(n(oe), {
|
|
192
198
|
key: 0,
|
|
193
|
-
modelValue:
|
|
199
|
+
modelValue: m.value,
|
|
194
200
|
"onUpdate:modelValue": [
|
|
195
|
-
e[2] || (e[2] = (o) =>
|
|
196
|
-
e[3] || (e[3] = (o) =>
|
|
201
|
+
e[2] || (e[2] = (o) => m.value = o),
|
|
202
|
+
e[3] || (e[3] = (o) => w(o))
|
|
197
203
|
],
|
|
198
204
|
label: "Show for",
|
|
199
205
|
options: h.value
|
|
200
|
-
}, null, 8, ["modelValue", "options"])) : (s(), v(n(
|
|
206
|
+
}, null, 8, ["modelValue", "options"])) : (s(), v(n(ae), {
|
|
201
207
|
key: 1,
|
|
202
|
-
modelValue:
|
|
208
|
+
modelValue: m.value,
|
|
203
209
|
"onUpdate:modelValue": [
|
|
204
|
-
e[4] || (e[4] = (o) =>
|
|
205
|
-
e[5] || (e[5] = (o) =>
|
|
210
|
+
e[4] || (e[4] = (o) => m.value = o),
|
|
211
|
+
e[5] || (e[5] = (o) => w(o))
|
|
206
212
|
],
|
|
207
213
|
label: "Show for",
|
|
208
|
-
"options-search": (o) => G(
|
|
209
|
-
|
|
210
|
-
}, null, 8, ["modelValue", "options-search", "model-search"]))
|
|
214
|
+
"options-search": (o, i) => G(p.value, o, i)
|
|
215
|
+
}, null, 8, ["modelValue", "options-search"]))
|
|
211
216
|
])) : d("", !0),
|
|
212
|
-
|
|
217
|
+
S("div", {
|
|
213
218
|
ref_key: "chartContainerRef",
|
|
214
|
-
ref:
|
|
215
|
-
class:
|
|
219
|
+
ref: I,
|
|
220
|
+
class: H(["chart_main-content", [{ "chart_main-content__dendro": n(a).reactive.chartType === "dendro" }, "pl-scrollable"]])
|
|
216
221
|
}, [
|
|
217
|
-
|
|
222
|
+
S("div", {
|
|
218
223
|
id: "chartSvgContainer",
|
|
219
|
-
class:
|
|
224
|
+
class: H({
|
|
220
225
|
chart_loading: l.graphStatus === "loading",
|
|
221
226
|
chart_noDataMapping: l.graphStatus === "notReady",
|
|
222
227
|
chart_emptyData: l.graphStatus === "empty",
|
|
@@ -226,21 +231,21 @@ Try to filter the data.` : "";
|
|
|
226
231
|
chart_activeLassoSelection: ((r = n(a).reactive.lassoControlsState) == null ? void 0 : r.mode) === "selection"
|
|
227
232
|
})
|
|
228
233
|
}, [
|
|
229
|
-
l.graphStatus === "loading" ? (s(), v(
|
|
234
|
+
l.graphStatus === "loading" ? (s(), v(ie, {
|
|
230
235
|
key: 0,
|
|
231
236
|
top: 10
|
|
232
237
|
})) : d("", !0),
|
|
233
|
-
l.graphStatus === "knownError" ? (s(), T("div",
|
|
238
|
+
l.graphStatus === "knownError" ? (s(), T("div", he, ee(X.value), 1)) : d("", !0)
|
|
234
239
|
], 2),
|
|
235
|
-
n(a).reactive.chartType === "dendro" && l.chartData && n(a).reactive.layersSettings.dendro.showTable ? (s(), v(
|
|
240
|
+
n(a).reactive.chartType === "dendro" && l.chartData && n(a).reactive.layersSettings.dendro.showTable ? (s(), v(re, {
|
|
236
241
|
key: 0,
|
|
237
242
|
chartData: l.chartData,
|
|
238
|
-
onRowSelect:
|
|
243
|
+
onRowSelect: q
|
|
239
244
|
}, null, 8, ["chartData"])) : d("", !0),
|
|
240
|
-
n(a).reactive.dendroInfoByClick ? (s(), v(
|
|
245
|
+
n(a).reactive.dendroInfoByClick ? (s(), v(ne, {
|
|
241
246
|
key: 1,
|
|
242
247
|
info: n(a).reactive.dendroInfoByClick,
|
|
243
|
-
containerRef:
|
|
248
|
+
containerRef: I.value,
|
|
244
249
|
tooltipBtn: l.dendroTooltipButton,
|
|
245
250
|
onTooltipBtnClick: e[6] || (e[6] = (o) => t.$emit("dendro-tooltip-btn-click", o)),
|
|
246
251
|
onClose: e[7] || (e[7] = (o) => {
|
|
@@ -248,26 +253,26 @@ Try to filter the data.` : "";
|
|
|
248
253
|
})
|
|
249
254
|
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : d("", !0)
|
|
250
255
|
], 2),
|
|
251
|
-
l.graphStatus !== "empty" ? (s(), T("div",
|
|
252
|
-
|
|
253
|
-
n(a).reactive.chartType === "scatterplot-umap" ? (s(), v(
|
|
256
|
+
l.graphStatus !== "empty" ? (s(), T("div", Se, [
|
|
257
|
+
M(se),
|
|
258
|
+
n(a).reactive.chartType === "scatterplot-umap" ? (s(), v(le, {
|
|
254
259
|
key: 0,
|
|
255
260
|
"chart-ref": l.chartRef
|
|
256
261
|
}, null, 8, ["chart-ref"])) : d("", !0),
|
|
257
|
-
|
|
262
|
+
_.value ? (s(), v(n(N), {
|
|
258
263
|
key: 1,
|
|
259
264
|
icon: "view-hide",
|
|
260
|
-
onClick: e[8] || (e[8] =
|
|
265
|
+
onClick: e[8] || (e[8] = R(() => K(), ["stop"]))
|
|
261
266
|
}, {
|
|
262
267
|
default: C(() => [...e[11] || (e[11] = [
|
|
263
268
|
B(" Hidden (primary) ", -1)
|
|
264
269
|
])]),
|
|
265
270
|
_: 1
|
|
266
271
|
})) : d("", !0),
|
|
267
|
-
|
|
272
|
+
j.value ? (s(), v(n(N), {
|
|
268
273
|
key: 2,
|
|
269
274
|
icon: "view-hide",
|
|
270
|
-
onClick: e[9] || (e[9] =
|
|
275
|
+
onClick: e[9] || (e[9] = R(() => z(), ["stop"]))
|
|
271
276
|
}, {
|
|
272
277
|
default: C(() => [...e[12] || (e[12] = [
|
|
273
278
|
B(" Hidden (secondary) ", -1)
|
|
@@ -280,6 +285,6 @@ Try to filter the data.` : "";
|
|
|
280
285
|
}
|
|
281
286
|
});
|
|
282
287
|
export {
|
|
283
|
-
|
|
288
|
+
xe as default
|
|
284
289
|
};
|
|
285
290
|
//# sourceMappingURL=Chart.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Loading from '../components/Loading.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus } from '../types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\nasync function searchFilterOptions(sourceId: string, searchStr: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\nconst errorMessage = computed(() => {\n if (props.errorInfo?.type === 'tooManyFacets') {\n return `Too many facets (${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyPrimaryGroups') {\n return `Too many primary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManySecondaryGroups') {\n return `Too many secondary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n return '';\n});\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_loading': graphStatus === 'loading',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_knownError': graphStatus === 'knownError',\n 'chart_unknownError': graphStatus === 'unknownError',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <Loading v-if=\"graphStatus === 'loading'\" :top=\"10\" />\n <div v-if=\"graphStatus === 'knownError'\" class=\"chart_errorMessage\">\n {{ errorMessage }}\n </div>\n </div>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus !== 'empty'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" />\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","results","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","Loading","_hoisted_6","_toDisplayString","DendroTable","DendroTooltip","$emit","_hoisted_7","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Loading from '../components/Loading.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus } from '../types.ts';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\nconst errorMessage = computed(() => {\n if (props.errorInfo?.type === 'tooManyFacets') {\n return `Too many facets (${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyPrimaryGroups') {\n return `Too many primary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManySecondaryGroups') {\n return `Too many secondary groups\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n return '';\n});\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_loading': graphStatus === 'loading',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_knownError': graphStatus === 'knownError',\n 'chart_unknownError': graphStatus === 'unknownError',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <Loading v-if=\"graphStatus === 'loading'\" :top=\"10\" />\n <div v-if=\"graphStatus === 'knownError'\" class=\"chart_errorMessage\">\n {{ errorMessage }}\n </div>\n </div>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus !== 'empty'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" />\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","errorMessage","_c","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","Loading","_hoisted_6","_toDisplayString","DendroTable","DendroTooltip","$emit","_hoisted_7","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlIcon16 as
|
|
1
|
+
import { defineComponent as k, mergeModels as h, useModel as M, ref as y, watch as V, createElementBlock as b, openBlock as r, createElementVNode as n, normalizeClass as g, createCommentVNode as w, createVNode as O, createBlock as a, unref as s, toDisplayString as C } from "vue";
|
|
2
|
+
import { PlIcon16 as f, PlDropdownMulti as D, PlAutocompleteMulti as S } from "@platforma-sdk/ui-vue";
|
|
3
3
|
import B from "../../assets/drag-and-drop/img/chip-close.svg.js";
|
|
4
4
|
import { useStore as F } from "../../store.js";
|
|
5
5
|
const P = {
|
|
6
6
|
ref: "chipRoot",
|
|
7
7
|
class: "dnd-double-chip__group"
|
|
8
|
-
},
|
|
8
|
+
}, A = { class: "dnd-double-chip__top" }, N = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "dnd-basket-chip__handler"
|
|
11
|
-
},
|
|
11
|
+
}, x = ["title"], E = { class: "dnd-double-chip__title" }, H = ["innerHTML"], I = { class: "dnd-double-chip__bottom" }, z = /* @__PURE__ */ k({
|
|
12
12
|
__name: "DndDoubleChip",
|
|
13
13
|
props: /* @__PURE__ */ h({
|
|
14
14
|
info: {},
|
|
@@ -22,59 +22,58 @@ const P = {
|
|
|
22
22
|
filterModifiers: {}
|
|
23
23
|
}),
|
|
24
24
|
emits: /* @__PURE__ */ h(["close-chip", "update:filter"], ["update:filter"]),
|
|
25
|
-
setup(e, { emit:
|
|
26
|
-
var
|
|
27
|
-
const o = e, u = F(),
|
|
28
|
-
|
|
29
|
-
if (
|
|
25
|
+
setup(e, { emit: L }) {
|
|
26
|
+
var m, v;
|
|
27
|
+
const o = e, u = F(), d = M(e, "filter"), c = y((m = u.value.filterSuggestionsData.value[o.info.id]) == null ? void 0 : m.values), p = y(((v = u.value.filterSuggestionsData.value[o.info.id]) == null ? void 0 : v.overflow) ?? !1);
|
|
28
|
+
V(() => u.value.loading.inputGuide, async (t) => {
|
|
29
|
+
if (t)
|
|
30
30
|
return;
|
|
31
|
-
const { values:
|
|
32
|
-
c.value =
|
|
31
|
+
const { values: l, overflow: i } = await o.loadOptions(o.info.id);
|
|
32
|
+
c.value = l, p.value = i;
|
|
33
33
|
}, { immediate: !0 });
|
|
34
|
-
function
|
|
35
|
-
return
|
|
34
|
+
function _(t) {
|
|
35
|
+
return t === "" ? Promise.resolve(c.value ?? []) : Array.isArray(t) ? o.searchModel(o.info.id, t) : o.searchOptions(o.info.id, t);
|
|
36
36
|
}
|
|
37
|
-
return (
|
|
38
|
-
|
|
37
|
+
return (t, l) => (r(), b("div", P, [
|
|
38
|
+
n("div", {
|
|
39
39
|
class: g([{ error: e.error, sortable: e.sortable }, "dnd-double-chip"])
|
|
40
40
|
}, [
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
n("div", A, [
|
|
42
|
+
n("div", {
|
|
43
43
|
class: g(["dnd-double-chip__icon", { error: e.error }])
|
|
44
44
|
}, [
|
|
45
|
-
e.error ? (
|
|
45
|
+
e.error ? (r(), a(s(f), {
|
|
46
46
|
key: 0,
|
|
47
47
|
name: "warning"
|
|
48
|
-
})) : (
|
|
48
|
+
})) : (r(), a(s(f), {
|
|
49
49
|
key: 1,
|
|
50
50
|
name: e.info.isSubsetFilter ? "cell-type-subset" : e.info.type === "String" ? "cell-type-txt" : "cell-type-num"
|
|
51
51
|
}, null, 8, ["name"]))
|
|
52
52
|
], 2),
|
|
53
|
-
e.sortable ? (
|
|
54
|
-
O(
|
|
55
|
-
|
|
53
|
+
e.sortable ? (r(), b("div", N)) : w("", !0),
|
|
54
|
+
O(s(f), { name: "drag-dots" }),
|
|
55
|
+
n("div", {
|
|
56
56
|
class: "dnd-double-chip__title-wrapper",
|
|
57
57
|
title: e.info.title
|
|
58
58
|
}, [
|
|
59
|
-
|
|
60
|
-
], 8,
|
|
61
|
-
|
|
59
|
+
n("div", E, C(e.info.title), 1)
|
|
60
|
+
], 8, x),
|
|
61
|
+
n("div", {
|
|
62
62
|
class: "dnd-double-chip__icon-close",
|
|
63
|
-
onClick:
|
|
64
|
-
innerHTML:
|
|
65
|
-
}, null, 8,
|
|
63
|
+
onClick: l[0] || (l[0] = (i) => t.$emit("close-chip", o.info.id)),
|
|
64
|
+
innerHTML: s(B)
|
|
65
|
+
}, null, 8, H)
|
|
66
66
|
]),
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
n("div", I, [
|
|
68
|
+
p.value ? (r(), a(s(S), {
|
|
69
69
|
key: 1,
|
|
70
|
-
modelValue:
|
|
71
|
-
"onUpdate:modelValue":
|
|
72
|
-
"options-search":
|
|
73
|
-
|
|
74
|
-
}, null, 8, ["modelValue", "model-search"])) : (d(), a(r(D), {
|
|
70
|
+
modelValue: d.value,
|
|
71
|
+
"onUpdate:modelValue": l[2] || (l[2] = (i) => d.value = i),
|
|
72
|
+
"options-search": (i) => _(i)
|
|
73
|
+
}, null, 8, ["modelValue", "options-search"])) : (r(), a(s(D), {
|
|
75
74
|
key: 0,
|
|
76
|
-
modelValue:
|
|
77
|
-
"onUpdate:modelValue":
|
|
75
|
+
modelValue: d.value,
|
|
76
|
+
"onUpdate:modelValue": l[1] || (l[1] = (i) => d.value = i),
|
|
78
77
|
options: c.value
|
|
79
78
|
}, null, 8, ["modelValue", "options"]))
|
|
80
79
|
])
|
|
@@ -83,6 +82,6 @@ const P = {
|
|
|
83
82
|
}
|
|
84
83
|
});
|
|
85
84
|
export {
|
|
86
|
-
|
|
85
|
+
z as default
|
|
87
86
|
};
|
|
88
87
|
//# sourceMappingURL=DndDoubleChip.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DndDoubleChip.vue.js","sources":["../../../src/components/DragAndDrop/DndDoubleChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { ListOption, ListOptionBase } from '@platforma-sdk/ui-vue';\nimport { PlAutocompleteMulti, PlDropdownMulti, PlIcon16 } from '@platforma-sdk/ui-vue';\nimport type { ChipInfo } from './types';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { useStore } from '../../store.ts';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n searchModel: (sourceId: string, selectedValues: string[]) => Promise<ListOptionBase<string>[]>;\n searchOptions: (sourceId: string, searchStr: string) => Promise<ListOptionBase<string>[]>;\n loadOptions: (sourceId: string) => Promise<{ values: ListOption<string>[]; overflow: boolean }>;\n sortable?: boolean;\n}>();\n\nconst _emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n (e: 'update:filter', id: unknown): void;\n}>();\n\nconst store = useStore();\n\nconst filterModel = defineModel<string[]>('filter', { required: true });\n\nconst preloadedOptions = ref<ListOption[] | undefined>(store.value.filterSuggestionsData.value[props.info.id]?.values);\nconst optionsOverflow = ref(store.value.filterSuggestionsData.value[props.info.id]?.overflow ?? false);\n\nwatch(() => store.value.loading.inputGuide, async (loading) => {\n if (loading) {\n return;\n }\n const { values, overflow } = await props.loadOptions(props.info.id);\n preloadedOptions.value = values;\n optionsOverflow.value = overflow;\n}, { immediate: true });\n\nfunction searchOptionsFn(str: string): Promise<ListOptionBase<string>[]> {\n if (str === '') {\n return Promise.resolve((preloadedOptions.value ?? []) as ListOptionBase<string>[]);\n }\n return props.searchOptions(props.info.id, str);\n}\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"/>\n <PlIcon16 name=\"drag-dots\" />\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n\n <div\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n v-html=\"CloseIcon\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom\">\n <PlDropdownMulti v-if=\"!optionsOverflow\" v-model=\"filterModel\" :options=\"preloadedOptions\" />\n <PlAutocompleteMulti\n v-else\n v-model=\"filterModel\"\n :options-search=\"
|
|
1
|
+
{"version":3,"file":"DndDoubleChip.vue.js","sources":["../../../src/components/DragAndDrop/DndDoubleChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport type { ListOption, ListOptionBase } from '@platforma-sdk/ui-vue';\nimport { PlAutocompleteMulti, PlDropdownMulti, PlIcon16 } from '@platforma-sdk/ui-vue';\nimport type { ChipInfo } from './types';\nimport CloseIcon from '../../assets/drag-and-drop/img/chip-close.svg?raw';\nimport { useStore } from '../../store.ts';\n\nconst props = defineProps<{\n info: ChipInfo;\n error: boolean;\n searchModel: (sourceId: string, selectedValues: string[]) => Promise<ListOptionBase<string>[]>;\n searchOptions: (sourceId: string, searchStr: string) => Promise<ListOptionBase<string>[]>;\n loadOptions: (sourceId: string) => Promise<{ values: ListOption<string>[]; overflow: boolean }>;\n sortable?: boolean;\n}>();\n\nconst _emit = defineEmits<{\n (e: 'close-chip', id: ChipInfo['id']): void;\n (e: 'update:filter', id: unknown): void;\n}>();\n\nconst store = useStore();\n\nconst filterModel = defineModel<string[]>('filter', { required: true });\n\nconst preloadedOptions = ref<ListOption[] | undefined>(store.value.filterSuggestionsData.value[props.info.id]?.values);\nconst optionsOverflow = ref(store.value.filterSuggestionsData.value[props.info.id]?.overflow ?? false);\n\nwatch(() => store.value.loading.inputGuide, async (loading) => {\n if (loading) {\n return;\n }\n const { values, overflow } = await props.loadOptions(props.info.id);\n preloadedOptions.value = values;\n optionsOverflow.value = overflow;\n}, { immediate: true });\n\nfunction searchOptionsFn(str: string | string[]): Promise<ListOptionBase<string>[]> {\n if (str === '') {\n return Promise.resolve((preloadedOptions.value ?? []) as ListOptionBase<string>[]);\n }\n if (Array.isArray(str)) {\n return props.searchModel(props.info.id, str);\n }\n return props.searchOptions(props.info.id, str);\n}\n\n</script>\n\n<template>\n <div ref=\"chipRoot\" class=\"dnd-double-chip__group\">\n <div :class=\"{ error, sortable }\" class=\"dnd-double-chip\">\n <div class=\"dnd-double-chip__top\">\n <div class=\"dnd-double-chip__icon\" :class=\"{error}\">\n <PlIcon16 v-if=\"error\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"info.isSubsetFilter ? 'cell-type-subset' : info.type === 'String' ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div v-if=\"sortable\" class=\"dnd-basket-chip__handler\"/>\n <PlIcon16 name=\"drag-dots\" />\n <div class=\"dnd-double-chip__title-wrapper\" :title=\"info.title\">\n <div class=\"dnd-double-chip__title\">\n {{ info.title }}\n </div>\n </div>\n\n <div\n class=\"dnd-double-chip__icon-close\"\n @click=\"$emit('close-chip', props.info.id)\"\n v-html=\"CloseIcon\"\n />\n </div>\n <div class=\"dnd-double-chip__bottom\">\n <PlDropdownMulti v-if=\"!optionsOverflow\" v-model=\"filterModel\" :options=\"preloadedOptions\" />\n <PlAutocompleteMulti\n v-else\n v-model=\"filterModel\"\n :options-search=\"(str: string | string[]) => searchOptionsFn(str)\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","store","useStore","filterModel","_useModel","preloadedOptions","ref","_a","optionsOverflow","_b","watch","loading","values","overflow","searchOptionsFn","str","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_createBlock","_unref","PlIcon16","_hoisted_3","_createVNode","_hoisted_5","_toDisplayString","$emit","CloseIcon","_hoisted_7","PlAutocompleteMulti","$event","PlDropdownMulti"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAcRC,IAAQC,EAAA,GAERC,IAAcC,EAAqBJ,GAAC,QAA4B,GAEhEK,IAAmBC,GAA8BC,IAAAN,EAAM,MAAM,sBAAsB,MAAMF,EAAM,KAAK,EAAE,MAArD,gBAAAQ,EAAwD,MAAM,GAC/GC,IAAkBF,IAAIG,IAAAR,EAAM,MAAM,sBAAsB,MAAMF,EAAM,KAAK,EAAE,MAArD,gBAAAU,EAAwD,aAAY,EAAK;AAErG,IAAAC,EAAM,MAAMT,EAAM,MAAM,QAAQ,YAAY,OAAOU,MAAY;AAC7D,UAAIA;AACF;AAEF,YAAM,EAAE,QAAAC,GAAQ,UAAAC,MAAa,MAAMd,EAAM,YAAYA,EAAM,KAAK,EAAE;AAClE,MAAAM,EAAiB,QAAQO,GACzBJ,EAAgB,QAAQK;AAAA,IAC1B,GAAG,EAAE,WAAW,IAAM;AAEtB,aAASC,EAAgBC,GAA2D;AAClF,aAAIA,MAAQ,KACH,QAAQ,QAASV,EAAiB,SAAS,CAAA,CAA+B,IAE/E,MAAM,QAAQU,CAAG,IACZhB,EAAM,YAAYA,EAAM,KAAK,IAAIgB,CAAG,IAEtChB,EAAM,cAAcA,EAAM,KAAK,IAAIgB,CAAG;AAAA,IAC/C;sBAKEC,EAAA,GAAAC,EA8BM,OA9BNC,GA8BM;AAAA,MA7BJC,EA4BM,OAAA;AAAA,QA5BA,OAAKC,EAAA,CAAA,EAAA,OAAIpB,EAAA,OAAK,UAAEA,EAAA,SAAA,GAAkB,iBAAiB,CAAA;AAAA,MAAA;QACvDmB,EAkBM,OAlBNE,GAkBM;AAAA,UAjBJF,EAGM,OAAA;AAAA,YAHD,OAAKC,EAAA,CAAC,yBAAuB,EAAA,OAAUpB,EAAA,OAAK,CAAA;AAAA,UAAA;YAC/BA,EAAA,cAAhBsB,EAAuCC,EAAAC,CAAA,GAAA;AAAA;cAAhB,MAAK;AAAA,YAAA,YAC5BF,EAAgIC,EAAAC,CAAA,GAAA;AAAA;cAA9G,MAAMxB,EAAA,KAAK,iBAAc,qBAAwBA,EAAA,KAAK,SAAI,WAAA,kBAAA;AAAA,YAAA;;UAEnEA,EAAA,YAAXgB,EAAA,GAAAC,EAAuD,OAAvDQ,CAAuD;UACvDC,EAA6BH,EAAAC,CAAA,GAAA,EAAnB,MAAK,aAAW;AAAA,UAC1BL,EAIM,OAAA;AAAA,YAJD,OAAM;AAAA,YAAkC,OAAOnB,EAAA,KAAK;AAAA,UAAA;YACvDmB,EAEM,OAFNQ,GAEMC,EADD5B,EAAA,KAAK,KAAK,GAAA,CAAA;AAAA,UAAA;UAIjBmB,EAIE,OAAA;AAAA,YAHA,OAAM;AAAA,YACL,gCAAOU,EAAAA,MAAK,cAAe9B,EAAM,KAAK,EAAE;AAAA,YACzC,WAAQwB,EAAAO,CAAA;AAAA,UAAA;;QAGZX,EAOM,OAPNY,GAOM;AAAA,UANoBvB,EAAA,cACxBc,EAIEC,EAAAS,CAAA,GAAA;AAAA;wBAFS7B,EAAA;AAAA,0DAAAA,EAAW,QAAA8B;AAAA,YACnB,kBAAc,CAAGlB,MAA2BD,EAAgBC,CAAG;AAAA,UAAA,uDAJlEO,EAA6FC,EAAAW,CAAA,GAAA;AAAA;wBAA3C/B,EAAA;AAAA,0DAAAA,EAAW,QAAA8B;AAAA,YAAG,SAAS5B,EAAA;AAAA,UAAA;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/graph-maker",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.191",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@ag-grid-community/core": "^32.3.3",
|
|
30
30
|
"@milaboratories/helpers": "^1.6.15",
|
|
31
|
-
"@platforma-sdk/model": "^1.
|
|
32
|
-
"@platforma-sdk/ui-vue": "^1.
|
|
31
|
+
"@platforma-sdk/model": "^1.46.0",
|
|
32
|
+
"@platforma-sdk/ui-vue": "^1.46.1",
|
|
33
33
|
"@types/d3-hierarchy": "^3.1.7",
|
|
34
34
|
"@types/d3-scale": "^4.0.8",
|
|
35
35
|
"@vueuse/core": "^13.1.0",
|