@milaboratories/graph-maker 1.1.195 → 1.1.197
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.
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js +127 -130
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js.map +1 -1
- package/dist/components/AesSettings/DiscreteRow.vue2.js +18 -18
- package/dist/components/AesSettings/DiscreteRow.vue2.js.map +1 -1
- package/dist/components/AesSettings/DiscreteRow.vue3.js +10 -8
- package/dist/components/AesSettings/DiscreteRow.vue3.js.map +1 -1
- package/dist/components/Chart.vue.js +118 -112
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/CollapsableBlock.vue.d.ts +1 -0
- package/dist/components/CollapsableBlock.vue.js +27 -21
- package/dist/components/CollapsableBlock.vue.js.map +1 -1
- package/dist/constantsCommon.d.ts +2 -0
- package/dist/constantsCommon.js +24 -16
- package/dist/constantsCommon.js.map +1 -1
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js +156 -117
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +162 -134
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js +175 -153
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js +177 -136
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +243 -203
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/Bubble.vue.js +39 -43
- package/dist/forms/LayersForm/Layer/Bubble.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/discrete/Bar.vue.js +30 -34
- package/dist/forms/LayersForm/Layer/discrete/Bar.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/discrete/Errorbar.vue.js +24 -26
- package/dist/forms/LayersForm/Layer/discrete/Errorbar.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/discrete/Line.vue.js +27 -29
- package/dist/forms/LayersForm/Layer/discrete/Line.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/discrete/StackedArea.vue.js +38 -43
- package/dist/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/discrete/StackedBar.vue.js +31 -36
- package/dist/forms/LayersForm/Layer/discrete/StackedBar.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue.js +53 -57
- package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue.js.map +1 -1
- package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue.js +70 -74
- package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.vue.js +1 -1
- package/dist/store.d.ts +3 -4
- package/dist/store.js +25 -26
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +1 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +4 -2
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js +22 -22
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +7 -5
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +2 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +12 -12
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +11 -11
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js +17 -17
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
- package/dist/utils/loadUniqueValuesToSave.d.ts +2 -3
- package/dist/utils/loadUniqueValuesToSave.js +2 -2
- package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as z, ref as S, watch as g, computed as m, createElementBlock as T, openBlock as s, createElementVNode as h, createVNode as H, createCommentVNode as d, createBlock as f, withKeys as J, resolveDynamicComponent as Q, renderSlot as Z, unref as i, withCtx as C, createTextVNode as x, normalizeClass as L, toDisplayString as ee, withModifiers as R } from "vue";
|
|
2
2
|
import { PlNotificationAlert as te, PlDropdown as oe, PlAutocomplete as ae, PlBtnGhost as N } from "@platforma-sdk/ui-vue";
|
|
3
3
|
import re from "./DendroTable.vue.js";
|
|
4
4
|
import ne from "./DendroTooltip.vue.js";
|
|
5
5
|
import le from "./LassoControls/index.vue.js";
|
|
6
6
|
import ie from "./Loading.vue.js";
|
|
7
|
-
import
|
|
7
|
+
import ue from "./Zoom/index.vue.js";
|
|
8
8
|
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as O } from "../constantsCommon.js";
|
|
9
|
-
import
|
|
9
|
+
import se from "../icons/EditIcon.vue.js";
|
|
10
10
|
import { useStore as ce } from "../store.js";
|
|
11
|
-
const de = { class: "chart_container" },
|
|
11
|
+
const de = { class: "chart_container" }, fe = { class: "chart_header" }, ve = ["value"], me = { class: "chart_titleLineSlot" }, pe = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "chart_tabBy"
|
|
14
|
-
},
|
|
14
|
+
}, ye = {
|
|
15
15
|
key: 1,
|
|
16
16
|
class: "chart_errorMessage"
|
|
17
|
-
},
|
|
17
|
+
}, he = {
|
|
18
18
|
key: 1,
|
|
19
19
|
class: "chart_controls"
|
|
20
|
-
},
|
|
20
|
+
}, $e = /* @__PURE__ */ z({
|
|
21
21
|
__name: "Chart",
|
|
22
22
|
props: {
|
|
23
23
|
graphStatus: {},
|
|
@@ -28,57 +28,57 @@ const de = { class: "chart_container" }, ve = { class: "chart_header" }, me = ["
|
|
|
28
28
|
errorInfo: {}
|
|
29
29
|
},
|
|
30
30
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
31
|
-
setup(
|
|
32
|
-
const
|
|
33
|
-
g(() =>
|
|
31
|
+
setup(u, { emit: U }) {
|
|
32
|
+
const I = U, a = ce(), r = u, b = S(r.graphTitle);
|
|
33
|
+
g(() => r.graphTitle, (t) => {
|
|
34
34
|
b.value = t;
|
|
35
35
|
});
|
|
36
|
-
const
|
|
36
|
+
const $ = m(() => {
|
|
37
37
|
var t;
|
|
38
38
|
return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
39
|
-
}), p =
|
|
39
|
+
}), p = m(() => {
|
|
40
40
|
var t;
|
|
41
|
-
return (t =
|
|
42
|
-
}),
|
|
41
|
+
return (t = $.value) == null ? void 0 : t.selectedSource;
|
|
42
|
+
}), B = m(() => {
|
|
43
43
|
var t, e;
|
|
44
|
-
return (e = (t =
|
|
45
|
-
}),
|
|
44
|
+
return (e = (t = $.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
45
|
+
}), D = m(() => {
|
|
46
46
|
var t;
|
|
47
47
|
return (t = a.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
|
-
}),
|
|
48
|
+
}), v = S(B.value);
|
|
49
49
|
g(() => p.value, (t, e) => {
|
|
50
|
-
t !== e && (
|
|
50
|
+
t !== e && (v.value = B.value);
|
|
51
51
|
}, { immediate: !0 });
|
|
52
52
|
async function A(t) {
|
|
53
53
|
var o;
|
|
54
54
|
if (!a.value.columnsDataStore)
|
|
55
55
|
return Promise.resolve([]);
|
|
56
|
-
const e =
|
|
56
|
+
const e = D.value.find((l) => l.selectedSource === t);
|
|
57
57
|
if (e && (((o = e.selectedFilterValues) == null ? void 0 : o.length) ?? 0) > 0) {
|
|
58
|
-
const
|
|
59
|
-
return Promise.all(
|
|
58
|
+
const l = e.selectedFilterValues ?? [];
|
|
59
|
+
return Promise.all(l.map((c) => G(t, c)));
|
|
60
60
|
}
|
|
61
|
-
const
|
|
61
|
+
const n = await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
62
62
|
a.value.columnsDataStore,
|
|
63
63
|
a.value.inputGuide.value,
|
|
64
64
|
t,
|
|
65
65
|
O
|
|
66
66
|
);
|
|
67
|
-
return
|
|
67
|
+
return n.overflow ? null : n.values;
|
|
68
68
|
}
|
|
69
|
-
const
|
|
69
|
+
const y = S();
|
|
70
70
|
g([
|
|
71
71
|
() => p.value,
|
|
72
72
|
() => a.value.loading.inputGuide
|
|
73
73
|
], async ([t, e]) => {
|
|
74
|
-
t === void 0 || e || !a.value.columnsDataStore || (
|
|
75
|
-
}, { immediate: !0 }), g(() =>
|
|
76
|
-
if (p.value === void 0 ||
|
|
74
|
+
t === void 0 || e || !a.value.columnsDataStore || (y.value = await A(t));
|
|
75
|
+
}, { immediate: !0 }), g(() => y.value, async (t) => {
|
|
76
|
+
if (p.value === void 0 || v.value !== void 0 || t === void 0)
|
|
77
77
|
return;
|
|
78
78
|
let e = t;
|
|
79
|
-
if (t === null && (e = await
|
|
80
|
-
const
|
|
81
|
-
|
|
79
|
+
if (t === null && (e = await M(p.value, "")), e != null && e.length) {
|
|
80
|
+
const n = e[0].value;
|
|
81
|
+
v.value = n, w(n);
|
|
82
82
|
}
|
|
83
83
|
}, { immediate: !0 });
|
|
84
84
|
function w(t) {
|
|
@@ -91,24 +91,24 @@ const de = { class: "chart_container" }, ve = { class: "chart_header" }, me = ["
|
|
|
91
91
|
}
|
|
92
92
|
function W(t) {
|
|
93
93
|
const e = t.currentTarget;
|
|
94
|
-
b.value = e.value,
|
|
94
|
+
b.value = e.value, I("graph-title-update", e.value);
|
|
95
95
|
}
|
|
96
96
|
function q(t) {
|
|
97
|
-
|
|
97
|
+
I("dendro-node-select", t);
|
|
98
98
|
}
|
|
99
|
-
async function
|
|
100
|
-
var
|
|
99
|
+
async function M(t, e, n = "label") {
|
|
100
|
+
var F;
|
|
101
101
|
if (!a.value.columnsDataStore)
|
|
102
102
|
return Promise.resolve([]);
|
|
103
|
-
const o =
|
|
104
|
-
if (o && (((
|
|
105
|
-
const V = o.selectedFilterValues ?? [],
|
|
106
|
-
return e ?
|
|
103
|
+
const o = D.value.find((V) => V.selectedSource === t);
|
|
104
|
+
if (o && (((F = o.selectedFilterValues) == null ? void 0 : F.length) ?? 0) > 0) {
|
|
105
|
+
const V = o.selectedFilterValues ?? [], E = await Promise.all(V.map((k) => G(t, k)));
|
|
106
|
+
return e ? E.filter((k) => k.label.toLowerCase().includes(e.toLowerCase())) : E;
|
|
107
107
|
}
|
|
108
|
-
const
|
|
109
|
-
return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, O,
|
|
108
|
+
const l = n === "label" ? e : void 0, c = n === "value" ? e : void 0;
|
|
109
|
+
return (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, O, l, c)).values;
|
|
110
110
|
}
|
|
111
|
-
async function
|
|
111
|
+
async function G(t, e) {
|
|
112
112
|
return a.value.columnsDataStore ? await a.value.controller.getUniqueSourceValuesWithLabels(
|
|
113
113
|
a.value.columnsDataStore,
|
|
114
114
|
a.value.inputGuide.value,
|
|
@@ -118,164 +118,170 @@ const de = { class: "chart_container" }, ve = { class: "chart_header" }, me = ["
|
|
|
118
118
|
e
|
|
119
119
|
).then((o) => o.values[0]) : Promise.resolve({ value: e, label: " " });
|
|
120
120
|
}
|
|
121
|
-
const
|
|
121
|
+
const P = S(), X = m(() => {
|
|
122
122
|
var e;
|
|
123
123
|
if (a.value.reactive.chartType !== "discrete")
|
|
124
124
|
return !1;
|
|
125
125
|
const t = a.value.reactive.optionsState.components;
|
|
126
126
|
if ((e = t.primaryGrouping) != null && e.selectorStates.length) {
|
|
127
|
-
const
|
|
127
|
+
const n = t.primaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[n];
|
|
128
128
|
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
129
|
-
return Object.values(o.hidden).length > 0 && o.order.some((
|
|
129
|
+
return Object.values(o.hidden).length > 0 && o.order.some((l) => {
|
|
130
130
|
var c;
|
|
131
|
-
return (c = o.hidden) == null ? void 0 : c[
|
|
131
|
+
return (c = o.hidden) == null ? void 0 : c[l];
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
134
|
return !1;
|
|
135
|
-
}),
|
|
135
|
+
}), _ = m(() => {
|
|
136
136
|
var e;
|
|
137
137
|
if (a.value.reactive.chartType !== "discrete")
|
|
138
138
|
return !1;
|
|
139
139
|
const t = a.value.reactive.optionsState.components;
|
|
140
140
|
if ((e = t.secondaryGrouping) != null && e.selectorStates.length) {
|
|
141
|
-
const
|
|
141
|
+
const n = t.secondaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[n];
|
|
142
142
|
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
143
|
-
return Object.values(o.hidden).length > 0 && o.order.some((
|
|
143
|
+
return Object.values(o.hidden).length > 0 && o.order.some((l) => {
|
|
144
144
|
var c;
|
|
145
|
-
return (c = o.hidden) == null ? void 0 : c[
|
|
145
|
+
return (c = o.hidden) == null ? void 0 : c[l];
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
return !1;
|
|
149
149
|
});
|
|
150
|
-
function
|
|
150
|
+
function j() {
|
|
151
151
|
a.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
152
152
|
}
|
|
153
|
-
function
|
|
153
|
+
function K() {
|
|
154
154
|
a.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
155
155
|
}
|
|
156
|
-
const
|
|
157
|
-
var t, e,
|
|
158
|
-
return ((t =
|
|
159
|
-
Maximum count is ${
|
|
160
|
-
Try to filter the data.` : ((e =
|
|
161
|
-
Maximum count is ${
|
|
162
|
-
Try to filter the data.` : ((
|
|
163
|
-
Maximum count is ${
|
|
156
|
+
const Y = m(() => {
|
|
157
|
+
var t, e, n, o, l, c;
|
|
158
|
+
return ((t = r.errorInfo) == null ? void 0 : t.type) === "tooManyFacets" ? `Too many facets (${r.errorInfo.info.count}).
|
|
159
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
160
|
+
Try to filter the data.` : ((e = r.errorInfo) == null ? void 0 : e.type) === "tooManyPrimaryGroups" ? `Too many primary groups (${r.errorInfo.info.count}).
|
|
161
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
162
|
+
Try to filter the data.` : ((n = r.errorInfo) == null ? void 0 : n.type) === "tooManySecondaryGroups" ? `Too many secondary groups (${r.errorInfo.info.count}).
|
|
163
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
164
|
+
Try to filter the data.` : ((o = r.errorInfo) == null ? void 0 : o.type) === "tooManyScatterplotGroupsX" ? `Too many categories on X axis (${r.errorInfo.info.count}).
|
|
165
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
166
|
+
Try to filter the data.` : ((l = r.errorInfo) == null ? void 0 : l.type) === "tooManyScatterplotGroupsY" ? `Too many categories on Y axis (${r.errorInfo.info.count}).
|
|
167
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
168
|
+
Try to filter the data.` : ((c = r.errorInfo) == null ? void 0 : c.type) === "tooManyHistogramGroups" ? `Too many groups (${r.errorInfo.info.count}).
|
|
169
|
+
Maximum count is ${r.errorInfo.info.maxCount}.
|
|
164
170
|
Try to filter the data.` : "";
|
|
165
171
|
});
|
|
166
172
|
return (t, e) => {
|
|
167
|
-
var
|
|
173
|
+
var n;
|
|
168
174
|
return s(), T("div", de, [
|
|
169
|
-
|
|
170
|
-
|
|
175
|
+
h("div", fe, [
|
|
176
|
+
h("input", {
|
|
171
177
|
class: "chart_title",
|
|
172
178
|
value: b.value,
|
|
173
179
|
onChange: W,
|
|
174
|
-
onKeyup: e[0] || (e[0] =
|
|
175
|
-
var
|
|
176
|
-
(
|
|
180
|
+
onKeyup: e[0] || (e[0] = J((o) => {
|
|
181
|
+
var l;
|
|
182
|
+
(l = o.target) == null || l.blur();
|
|
177
183
|
}, ["enter"]))
|
|
178
|
-
}, null, 40,
|
|
179
|
-
(s(),
|
|
180
|
-
|
|
184
|
+
}, null, 40, ve),
|
|
185
|
+
(s(), f(Q(se), { class: "chart_titleEdit" })),
|
|
186
|
+
h("div", me, [
|
|
181
187
|
Z(t.$slots, "default")
|
|
182
188
|
])
|
|
183
189
|
]),
|
|
184
|
-
|
|
185
|
-
modelValue:
|
|
186
|
-
"onUpdate:modelValue": e[1] || (e[1] = (o) =>
|
|
190
|
+
H(i(te), {
|
|
191
|
+
modelValue: i(a).reactive.showTooltipHint,
|
|
192
|
+
"onUpdate:modelValue": e[1] || (e[1] = (o) => i(a).reactive.showTooltipHint = o),
|
|
187
193
|
type: "success",
|
|
188
194
|
class: "chart_tooltipHint",
|
|
189
195
|
width: "170px"
|
|
190
196
|
}, {
|
|
191
197
|
default: C(() => [...e[10] || (e[10] = [
|
|
192
|
-
|
|
198
|
+
x(" Hit enter to pin tooltip ", -1)
|
|
193
199
|
])]),
|
|
194
200
|
_: 1
|
|
195
201
|
}, 8, ["modelValue"]),
|
|
196
202
|
p.value ? (s(), T("div", pe, [
|
|
197
|
-
|
|
203
|
+
y.value || y.value === void 0 && i(a).loading.inputGuide ? (s(), f(i(oe), {
|
|
198
204
|
key: 0,
|
|
199
|
-
modelValue:
|
|
205
|
+
modelValue: v.value,
|
|
200
206
|
"onUpdate:modelValue": [
|
|
201
|
-
e[2] || (e[2] = (o) =>
|
|
207
|
+
e[2] || (e[2] = (o) => v.value = o),
|
|
202
208
|
e[3] || (e[3] = (o) => w(o))
|
|
203
209
|
],
|
|
204
210
|
label: "Show for",
|
|
205
|
-
options:
|
|
206
|
-
}, null, 8, ["modelValue", "options"])) : (s(),
|
|
211
|
+
options: y.value
|
|
212
|
+
}, null, 8, ["modelValue", "options"])) : (s(), f(i(ae), {
|
|
207
213
|
key: 1,
|
|
208
|
-
modelValue:
|
|
214
|
+
modelValue: v.value,
|
|
209
215
|
"onUpdate:modelValue": [
|
|
210
|
-
e[4] || (e[4] = (o) =>
|
|
216
|
+
e[4] || (e[4] = (o) => v.value = o),
|
|
211
217
|
e[5] || (e[5] = (o) => w(o))
|
|
212
218
|
],
|
|
213
219
|
label: "Show for",
|
|
214
|
-
"options-search": (o,
|
|
220
|
+
"options-search": (o, l) => M(p.value, o, l)
|
|
215
221
|
}, null, 8, ["modelValue", "options-search"]))
|
|
216
222
|
])) : d("", !0),
|
|
217
|
-
|
|
223
|
+
h("div", {
|
|
218
224
|
ref_key: "chartContainerRef",
|
|
219
|
-
ref:
|
|
220
|
-
class:
|
|
225
|
+
ref: P,
|
|
226
|
+
class: L(["chart_main-content", [{ "chart_main-content__dendro": i(a).reactive.chartType === "dendro" }, "pl-scrollable"]])
|
|
221
227
|
}, [
|
|
222
|
-
|
|
228
|
+
h("div", {
|
|
223
229
|
id: "chartSvgContainer",
|
|
224
|
-
class:
|
|
225
|
-
chart_loading:
|
|
226
|
-
chart_noDataMapping:
|
|
227
|
-
chart_emptyData:
|
|
228
|
-
chart_inconsistent:
|
|
229
|
-
chart_knownError:
|
|
230
|
-
chart_unknownError:
|
|
231
|
-
chart_activeLassoSelection: ((
|
|
230
|
+
class: L({
|
|
231
|
+
chart_loading: u.graphStatus === "loading",
|
|
232
|
+
chart_noDataMapping: u.graphStatus === "notReady",
|
|
233
|
+
chart_emptyData: u.graphStatus === "empty",
|
|
234
|
+
chart_inconsistent: u.graphStatus === "inconsistent",
|
|
235
|
+
chart_knownError: u.graphStatus === "knownError",
|
|
236
|
+
chart_unknownError: u.graphStatus === "unknownError",
|
|
237
|
+
chart_activeLassoSelection: ((n = i(a).reactive.lassoControlsState) == null ? void 0 : n.mode) === "selection"
|
|
232
238
|
})
|
|
233
239
|
}, [
|
|
234
|
-
|
|
240
|
+
u.graphStatus === "loading" ? (s(), f(ie, {
|
|
235
241
|
key: 0,
|
|
236
242
|
top: 10
|
|
237
243
|
})) : d("", !0),
|
|
238
|
-
|
|
244
|
+
u.graphStatus === "knownError" ? (s(), T("div", ye, ee(Y.value), 1)) : d("", !0)
|
|
239
245
|
], 2),
|
|
240
|
-
|
|
246
|
+
i(a).reactive.chartType === "dendro" && u.chartData && i(a).reactive.layersSettings.dendro.showTable ? (s(), f(re, {
|
|
241
247
|
key: 0,
|
|
242
|
-
chartData:
|
|
248
|
+
chartData: u.chartData,
|
|
243
249
|
onRowSelect: q
|
|
244
250
|
}, null, 8, ["chartData"])) : d("", !0),
|
|
245
|
-
|
|
251
|
+
i(a).reactive.dendroInfoByClick ? (s(), f(ne, {
|
|
246
252
|
key: 1,
|
|
247
|
-
info:
|
|
248
|
-
containerRef:
|
|
249
|
-
tooltipBtn:
|
|
253
|
+
info: i(a).reactive.dendroInfoByClick,
|
|
254
|
+
containerRef: P.value,
|
|
255
|
+
tooltipBtn: u.dendroTooltipButton,
|
|
250
256
|
onTooltipBtnClick: e[6] || (e[6] = (o) => t.$emit("dendro-tooltip-btn-click", o)),
|
|
251
257
|
onClose: e[7] || (e[7] = (o) => {
|
|
252
|
-
|
|
258
|
+
i(a).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
|
|
253
259
|
})
|
|
254
260
|
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : d("", !0)
|
|
255
261
|
], 2),
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
262
|
+
u.graphStatus !== "empty" ? (s(), T("div", he, [
|
|
263
|
+
H(ue),
|
|
264
|
+
i(a).reactive.chartType === "scatterplot-umap" ? (s(), f(le, {
|
|
259
265
|
key: 0,
|
|
260
|
-
"chart-ref":
|
|
266
|
+
"chart-ref": u.chartRef
|
|
261
267
|
}, null, 8, ["chart-ref"])) : d("", !0),
|
|
262
|
-
|
|
268
|
+
X.value ? (s(), f(i(N), {
|
|
263
269
|
key: 1,
|
|
264
270
|
icon: "view-hide",
|
|
265
|
-
onClick: e[8] || (e[8] = R(() =>
|
|
271
|
+
onClick: e[8] || (e[8] = R(() => j(), ["stop"]))
|
|
266
272
|
}, {
|
|
267
273
|
default: C(() => [...e[11] || (e[11] = [
|
|
268
|
-
|
|
274
|
+
x(" Hidden (primary) ", -1)
|
|
269
275
|
])]),
|
|
270
276
|
_: 1
|
|
271
277
|
})) : d("", !0),
|
|
272
|
-
|
|
278
|
+
_.value ? (s(), f(i(N), {
|
|
273
279
|
key: 2,
|
|
274
280
|
icon: "view-hide",
|
|
275
|
-
onClick: e[9] || (e[9] = R(() =>
|
|
281
|
+
onClick: e[9] || (e[9] = R(() => K(), ["stop"]))
|
|
276
282
|
}, {
|
|
277
283
|
default: C(() => [...e[12] || (e[12] = [
|
|
278
|
-
|
|
284
|
+
x(" Hidden (secondary) ", -1)
|
|
279
285
|
])]),
|
|
280
286
|
_: 1
|
|
281
287
|
})) : d("", !0)
|
|
@@ -285,6 +291,6 @@ Try to filter the data.` : "";
|
|
|
285
291
|
}
|
|
286
292
|
});
|
|
287
293
|
export {
|
|
288
|
-
|
|
294
|
+
$e as default
|
|
289
295
|
};
|
|
290
296
|
//# 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\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
|
+
{"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 if (props.errorInfo?.type === 'tooManyScatterplotGroupsX') {\n return `Too many categories on X axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyScatterplotGroupsY') {\n return `Too many categories on Y axis\\u00A0(${props.errorInfo.info.count}).\\nMaximum count is\\u00A0${props.errorInfo.info.maxCount}.\\nTry to\\u00A0filter the\\u00A0data.`;\n }\n if (props.errorInfo?.type === 'tooManyHistogramGroups') {\n return `Too many 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","_d","_e","_f","_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,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as f, ref as k, createElementBlock as y, openBlock as g, normalizeClass as b, createElementVNode as n, createBlock as h, createCommentVNode as z, resolveDynamicComponent as C, toDisplayString as S, normalizeStyle as x, renderSlot as B } from "vue";
|
|
2
|
+
const O = /* @__PURE__ */ f({
|
|
3
3
|
__name: "CollapsableBlock",
|
|
4
4
|
props: {
|
|
5
5
|
iconOpen: {},
|
|
@@ -7,28 +7,34 @@ const S = { class: "collapsable-block-content" }, B = /* @__PURE__ */ u({
|
|
|
7
7
|
title: {},
|
|
8
8
|
settings: {}
|
|
9
9
|
},
|
|
10
|
-
setup(
|
|
11
|
-
var
|
|
12
|
-
const e =
|
|
13
|
-
return (s = e.settings) != null && s.height && (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class: "collapsable-block-title",
|
|
19
|
-
style: l,
|
|
20
|
-
onClick: p[0] || (p[0] = (_) => t.value = !t.value)
|
|
10
|
+
setup(u) {
|
|
11
|
+
var o, s, a, c, d;
|
|
12
|
+
const e = u, t = k(((o = e.settings) == null ? void 0 : o.defaultState) !== "open"), i = {}, l = {};
|
|
13
|
+
return (s = e.settings) != null && s.height && (l["--title-height"] = `${(a = e.settings) == null ? void 0 : a.height}px`), (c = e.settings) != null && c.horizontalPadding && (i.padding = `0 ${(d = e.settings) == null ? void 0 : d.horizontalPadding}px`), (v, r) => {
|
|
14
|
+
var p, m;
|
|
15
|
+
return g(), y("div", {
|
|
16
|
+
class: b(["collapsable-block-container", { minimized: t.value, maximized: !t.value }]),
|
|
17
|
+
style: l
|
|
21
18
|
}, [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
n("div", {
|
|
20
|
+
class: "collapsable-block-title",
|
|
21
|
+
style: i,
|
|
22
|
+
onClick: r[0] || (r[0] = (P) => t.value = !t.value)
|
|
23
|
+
}, [
|
|
24
|
+
e.icon ? (g(), h(C(!t.value && e.iconOpen ? e.iconOpen : e.icon), { key: 0 })) : z("", !0),
|
|
25
|
+
n("span", null, S(e.title), 1)
|
|
26
|
+
]),
|
|
27
|
+
n("div", {
|
|
28
|
+
class: "collapsable-block-content",
|
|
29
|
+
style: x(((p = e.settings) == null ? void 0 : p.contentPadding) !== void 0 ? { padding: (m = e.settings) == null ? void 0 : m.contentPadding } : {})
|
|
30
|
+
}, [
|
|
31
|
+
B(v.$slots, "default")
|
|
32
|
+
], 4)
|
|
33
|
+
], 2);
|
|
34
|
+
};
|
|
29
35
|
}
|
|
30
36
|
});
|
|
31
37
|
export {
|
|
32
|
-
|
|
38
|
+
O as default
|
|
33
39
|
};
|
|
34
40
|
//# sourceMappingURL=CollapsableBlock.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsableBlock.vue.js","sources":["../../src/components/CollapsableBlock.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Component } from 'vue';\nimport { ref } from 'vue';\n\nconst props = defineProps<{\n iconOpen?: Component;\n icon?: Component;\n title: string;\n settings?: {\n defaultState?: 'open' | 'close';\n height?: number;\n horizontalPadding?: number;\n };\n}>();\n\nconst minimized = ref(props.settings?.defaultState !== 'open');\nconst titleStyle: Record<string, string> = {};\nconst containerStyle: Record<string, string> = {};\nif (props.settings?.height) {\n containerStyle['--title-height'] = `${props.settings?.height}px`;\n}\nif (props.settings?.horizontalPadding) {\n titleStyle['padding'] = `0 ${props.settings?.horizontalPadding}px`;\n}\n\n</script>\n\n<template>\n <div class=\"collapsable-block-container\" :class=\"{minimized: minimized, maximized: !minimized}\" :style=\"containerStyle\">\n <div class=\"collapsable-block-title\" :style=\"titleStyle\" @click=\"minimized = !minimized\">\n <component :is=\"!minimized && props.iconOpen ? props.iconOpen : props.icon\" v-if=\"props.icon\"/>\n <span>{{ props.title }}</span>\n </div>\n <div class=\"collapsable-block-content\">\n <slot/>\n </div>\n </div>\n</template>\n"],"names":["props","__props","minimized","ref","_a","titleStyle","containerStyle","_b","_c","_d","_e","_createElementBlock","_normalizeClass","_createElementVNode","_cache","$event","_openBlock","_createBlock","_resolveDynamicComponent","_toDisplayString","
|
|
1
|
+
{"version":3,"file":"CollapsableBlock.vue.js","sources":["../../src/components/CollapsableBlock.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Component } from 'vue';\nimport { ref } from 'vue';\n\nconst props = defineProps<{\n iconOpen?: Component;\n icon?: Component;\n title: string;\n settings?: {\n defaultState?: 'open' | 'close';\n height?: number;\n horizontalPadding?: number;\n contentPadding?: string;\n };\n}>();\n\nconst minimized = ref(props.settings?.defaultState !== 'open');\nconst titleStyle: Record<string, string> = {};\nconst containerStyle: Record<string, string> = {};\nif (props.settings?.height) {\n containerStyle['--title-height'] = `${props.settings?.height}px`;\n}\nif (props.settings?.horizontalPadding) {\n titleStyle['padding'] = `0 ${props.settings?.horizontalPadding}px`;\n}\n\n</script>\n\n<template>\n <div class=\"collapsable-block-container\" :class=\"{minimized: minimized, maximized: !minimized}\" :style=\"containerStyle\">\n <div class=\"collapsable-block-title\" :style=\"titleStyle\" @click=\"minimized = !minimized\">\n <component :is=\"!minimized && props.iconOpen ? props.iconOpen : props.icon\" v-if=\"props.icon\"/>\n <span>{{ props.title }}</span>\n </div>\n <div class=\"collapsable-block-content\" :style=\"props.settings?.contentPadding !== undefined ? {padding: props.settings?.contentPadding} : {}\">\n <slot/>\n </div>\n </div>\n</template>\n"],"names":["props","__props","minimized","ref","_a","titleStyle","containerStyle","_b","_c","_d","_e","_createElementBlock","_normalizeClass","_createElementVNode","_cache","$event","_openBlock","_createBlock","_resolveDynamicComponent","_toDisplayString","_normalizeStyle","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAYC,IAAIC,IAAAJ,EAAM,aAAN,gBAAAI,EAAgB,kBAAiB,MAAM,GACvDC,IAAqC,CAAA,GACrCC,IAAyC,CAAA;AAC/C,YAAIC,IAAAP,EAAM,aAAN,QAAAO,EAAgB,WAClBD,EAAe,gBAAgB,IAAI,IAAGE,IAAAR,EAAM,aAAN,gBAAAQ,EAAgB,MAAM,QAE1DC,IAAAT,EAAM,aAAN,QAAAS,EAAgB,sBAClBJ,EAAW,UAAa,MAAKK,IAAAV,EAAM,aAAN,gBAAAU,EAAgB,iBAAiB;;kBAM9DC,EAQM,OAAA;AAAA,QARD,OAAKC,EAAA,CAAC,+BAA6B,EAAA,WAAqBV,EAAA,mBAAuBA,EAAA,MAAA,CAAS,CAAA;AAAA,QAAI,OAAOI;AAAA,MAAA;QACtGO,EAGM,OAAA;AAAA,UAHD,OAAM;AAAA,UAA2B,OAAOR;AAAA,UAAa,SAAKS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEb,EAAA,QAAS,CAAIA,EAAA;AAAA,QAAA;UACMF,EAAM,QAAxFgB,EAAA,GAAAC,EAA+FC,EAAA,CAA9EhB,EAAA,SAAaF,EAAM,WAAWA,EAAM,WAAWA,EAAM,IAAI,GAAA,EAAA,KAAA,GAAA;UAC1Ea,EAA8B,QAAA,MAAAM,EAArBnB,EAAM,KAAK,GAAA,CAAA;AAAA,QAAA;QAEtBa,EAEM,OAAA;AAAA,UAFD,OAAM;AAAA,UAA6B,OAAKO,IAAEhB,IAAAJ,EAAM,aAAN,gBAAAI,EAAgB,oBAAmB,SAAS,EAAA,UAAaG,IAAAP,EAAM,aAAN,gBAAAO,EAAgB,eAAA,IAAc,CAAA,CAAA;AAAA,QAAA;UACpIc,EAAOC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
|
|
@@ -301,6 +301,7 @@ export type AxesState = {
|
|
|
301
301
|
groupingDirection: 'straight' | 'reverse';
|
|
302
302
|
groupingStack: 'vertical' | 'horizontal';
|
|
303
303
|
canvasRenderMode: boolean;
|
|
304
|
+
showLegend: boolean;
|
|
304
305
|
};
|
|
305
306
|
};
|
|
306
307
|
export declare function getInitialAxesSettings(chartType: ChartType, initialAxesSettings?: DeepPartial<AxesState>): AxesState;
|
|
@@ -318,4 +319,5 @@ export declare const DEFAULT_HEIGHT = 350;
|
|
|
318
319
|
export declare const DEFAULT_WIDTH_SMALL = 400;
|
|
319
320
|
export declare const DEFAULT_HEIGHT_SMALL = 250;
|
|
320
321
|
export declare const MAX_SEARCH_OPTIONS_LIST_LENGTH = 100;
|
|
322
|
+
export declare const AGGREGATION_METHOD_OPTIONS: Option[];
|
|
321
323
|
export {};
|