@milaboratories/graph-maker 1.2.0 → 1.2.2
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/assets/ui.css +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.css +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js.map +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js +1 -1
- package/dist/components/Chart.vue.d.ts.map +1 -1
- package/dist/components/Chart.vue.js +67 -66
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/ChartTruncationWarningAlert.css +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue.d.ts +7 -0
- package/dist/components/ChartTruncationWarningAlert.vue.d.ts.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue.js +10 -0
- package/dist/components/ChartTruncationWarningAlert.vue.js.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue2.js +54 -0
- package/dist/components/ChartTruncationWarningAlert.vue2.js.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue3.js +8 -0
- package/dist/components/ChartTruncationWarningAlert.vue3.js.map +1 -0
- package/dist/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DnDBasketChip.vue.js +34 -31
- package/dist/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DnDRangeChip.vue.js +34 -31
- package/dist/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DndDoubleChip.vue.js +40 -35
- package/dist/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
- package/dist/components/PanelModal.vue.d.ts.map +1 -1
- package/dist/components/PanelModal.vue.js +25 -11
- package/dist/components/PanelModal.vue.js.map +1 -1
- package/dist/components/ReorderForm.vue.d.ts.map +1 -1
- package/dist/components/ReorderForm.vue2.js +14 -13
- package/dist/components/ReorderForm.vue2.js.map +1 -1
- package/dist/constantsCommon.d.ts +7 -0
- package/dist/constantsCommon.d.ts.map +1 -1
- package/dist/constantsCommon.js +33 -28
- package/dist/constantsCommon.js.map +1 -1
- package/dist/dataBindAes.d.ts.map +1 -1
- package/dist/dataBindAes.js +88 -93
- package/dist/dataBindAes.js.map +1 -1
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js +96 -78
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +189 -161
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js +157 -139
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js +154 -136
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +232 -201
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/utils.js +58 -58
- package/dist/forms/DataMappingForm/utils.js.map +1 -1
- package/dist/forms/LayersForm/AesSelector.vue.d.ts.map +1 -1
- package/dist/forms/LayersForm/AesSelector.vue.js +86 -86
- package/dist/forms/LayersForm/AesSelector.vue.js.map +1 -1
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +183 -159
- package/dist/index.vue.js.map +1 -1
- package/dist/store.d.ts +2 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +135 -128
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/calculateDiscreteGroups.d.ts.map +1 -1
- package/dist/utils/calculateDiscreteGroups.js +6 -6
- package/dist/utils/calculateDiscreteGroups.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +9 -0
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +19 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js +74 -40
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts +16 -0
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.js +22 -22
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +4 -468
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +48 -31
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +22 -0
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +5 -0
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +19 -0
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +89 -71
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +12 -0
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +40 -35
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js +28 -28
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
- package/dist/utils/loadUniqueValuesToSave.d.ts +3 -1
- package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
- package/dist/utils/loadUniqueValuesToSave.js +81 -63
- package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets/drag-and-drop/img/chip-close.svg.js +0 -7
- package/dist/assets/drag-and-drop/img/chip-close.svg.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as X, ref as h, watch as y, computed as p, createElementBlock as C, openBlock as s, createElementVNode as S,
|
|
1
|
+
import { defineComponent as X, ref as h, watch as y, computed as p, createElementBlock as C, openBlock as s, createElementVNode as S, createBlock as c, createCommentVNode as d, withKeys as J, resolveDynamicComponent as Q, renderSlot as Y, unref as l, withCtx as k, createTextVNode as B, normalizeClass as O, createVNode as R, withModifiers as U } from "vue";
|
|
2
2
|
import { PlNotificationAlert as _, PlDropdown as ee, PlAutocomplete as te, PlBtnGhost as $ } from "@platforma-sdk/ui-vue";
|
|
3
3
|
import ae from "./DendroTable.vue.js";
|
|
4
4
|
import oe from "./DendroTooltip.vue.js";
|
|
@@ -9,10 +9,10 @@ import ne from "../icons/EditIcon.vue.js";
|
|
|
9
9
|
import { useStore as ie } from "../store.js";
|
|
10
10
|
import se from "./GraphStatusScreen.vue.js";
|
|
11
11
|
const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["value", "disabled"], ve = { class: "chart_titleLineSlot" }, me = {
|
|
12
|
-
key:
|
|
12
|
+
key: 1,
|
|
13
13
|
class: "chart_tabBy"
|
|
14
14
|
}, pe = {
|
|
15
|
-
key:
|
|
15
|
+
key: 2,
|
|
16
16
|
class: "chart_controls"
|
|
17
17
|
}, ke = /* @__PURE__ */ X({
|
|
18
18
|
__name: "Chart",
|
|
@@ -29,20 +29,20 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
29
29
|
},
|
|
30
30
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
31
31
|
setup(n, { emit: I }) {
|
|
32
|
-
const
|
|
33
|
-
y(() =>
|
|
32
|
+
const D = I, o = ie(), x = n, g = h(x.graphTitle);
|
|
33
|
+
y(() => x.graphTitle, (t) => {
|
|
34
34
|
g.value = t;
|
|
35
35
|
});
|
|
36
|
-
const
|
|
36
|
+
const P = p(() => {
|
|
37
37
|
var t;
|
|
38
38
|
return (t = o.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
39
39
|
}), v = p(() => {
|
|
40
40
|
var t;
|
|
41
|
-
return (t =
|
|
41
|
+
return (t = P.value) == null ? void 0 : t.selectedSource;
|
|
42
42
|
}), b = p(() => {
|
|
43
43
|
var t, e;
|
|
44
|
-
return (e = (t =
|
|
45
|
-
}),
|
|
44
|
+
return (e = (t = P.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
45
|
+
}), G = p(() => {
|
|
46
46
|
var t;
|
|
47
47
|
return (t = o.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
48
|
}), m = h(b.value);
|
|
@@ -53,18 +53,18 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
53
53
|
var a;
|
|
54
54
|
if (!o.value.columnsDataStore.value)
|
|
55
55
|
return Promise.resolve([]);
|
|
56
|
-
const e =
|
|
56
|
+
const e = G.value.find((i) => i.selectedSource === t);
|
|
57
57
|
if (e && (((a = e.selectedFilterValues) == null ? void 0 : a.length) ?? 0) > 0) {
|
|
58
58
|
const i = e.selectedFilterValues ?? [];
|
|
59
|
-
return Promise.all(i.map((u) =>
|
|
59
|
+
return Promise.all(i.map((u) => F(t, u)));
|
|
60
60
|
}
|
|
61
|
-
const
|
|
61
|
+
const r = await o.value.controller.getUniqueSourceValuesWithLabels(
|
|
62
62
|
o.value.columnsDataStore.value,
|
|
63
63
|
o.value.inputGuide.value,
|
|
64
64
|
t,
|
|
65
65
|
A
|
|
66
66
|
);
|
|
67
|
-
return
|
|
67
|
+
return r.overflow ? null : r.values;
|
|
68
68
|
}
|
|
69
69
|
const f = h();
|
|
70
70
|
y([
|
|
@@ -76,9 +76,9 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
76
76
|
if (v.value === void 0 || m.value !== void 0 || t === void 0)
|
|
77
77
|
return;
|
|
78
78
|
let e = t;
|
|
79
|
-
if (t === null && (e = await
|
|
80
|
-
const
|
|
81
|
-
m.value =
|
|
79
|
+
if (t === null && (e = await L(v.value, "")), e != null && e.length) {
|
|
80
|
+
const r = e[0].value;
|
|
81
|
+
m.value = r, T(r);
|
|
82
82
|
}
|
|
83
83
|
}, { immediate: !0 });
|
|
84
84
|
function T(t) {
|
|
@@ -91,24 +91,24 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
91
91
|
}
|
|
92
92
|
function q(t) {
|
|
93
93
|
const e = t.currentTarget;
|
|
94
|
-
g.value = e.value,
|
|
94
|
+
g.value = e.value, D("graph-title-update", e.value);
|
|
95
95
|
}
|
|
96
96
|
function Z(t) {
|
|
97
|
-
|
|
97
|
+
D("dendro-node-select", t);
|
|
98
98
|
}
|
|
99
|
-
async function
|
|
100
|
-
var
|
|
99
|
+
async function L(t, e, r = "label") {
|
|
100
|
+
var E;
|
|
101
101
|
if (!o.value.columnsDataStore.value)
|
|
102
102
|
return Promise.resolve([]);
|
|
103
|
-
const a =
|
|
104
|
-
if (a && (((
|
|
105
|
-
const V = a.selectedFilterValues ?? [],
|
|
106
|
-
return e ?
|
|
103
|
+
const a = G.value.find((V) => V.selectedSource === t);
|
|
104
|
+
if (a && (((E = a.selectedFilterValues) == null ? void 0 : E.length) ?? 0) > 0) {
|
|
105
|
+
const V = a.selectedFilterValues ?? [], N = await Promise.all(V.map((w) => F(t, w)));
|
|
106
|
+
return e ? N.filter((w) => w.label.toLowerCase().includes(e.toLowerCase())) : N;
|
|
107
107
|
}
|
|
108
|
-
const i =
|
|
108
|
+
const i = r === "label" ? e : void 0, u = r === "value" ? e : void 0;
|
|
109
109
|
return (await o.value.controller.getUniqueSourceValuesWithLabels(o.value.columnsDataStore.value, o.value.inputGuide.value, t, A, i, u)).values;
|
|
110
110
|
}
|
|
111
|
-
async function
|
|
111
|
+
async function F(t, e) {
|
|
112
112
|
return o.value.columnsDataStore.value ? await o.value.controller.getUniqueSourceValuesWithLabels(
|
|
113
113
|
o.value.columnsDataStore.value,
|
|
114
114
|
o.value.inputGuide.value,
|
|
@@ -118,13 +118,13 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
118
118
|
e
|
|
119
119
|
).then((a) => a.values[0]) : Promise.resolve({ value: e, label: " " });
|
|
120
120
|
}
|
|
121
|
-
const
|
|
121
|
+
const H = h(), j = p(() => {
|
|
122
122
|
var e;
|
|
123
123
|
if (o.value.reactive.chartType !== "discrete")
|
|
124
124
|
return !1;
|
|
125
125
|
const t = o.value.reactive.optionsState.components;
|
|
126
126
|
if ((e = t.primaryGrouping) != null && e.selectorStates.length) {
|
|
127
|
-
const
|
|
127
|
+
const r = t.primaryGrouping.selectorStates[0].selectedSource, a = o.value.reactive.dataBindAes[r];
|
|
128
128
|
if ((a == null ? void 0 : a.type) === "categorical" && a.hidden)
|
|
129
129
|
return Object.values(a.hidden).length > 0 && a.order.some((i) => {
|
|
130
130
|
var u;
|
|
@@ -138,7 +138,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
138
138
|
return !1;
|
|
139
139
|
const t = o.value.reactive.optionsState.components;
|
|
140
140
|
if ((e = t.secondaryGrouping) != null && e.selectorStates.length) {
|
|
141
|
-
const
|
|
141
|
+
const r = t.secondaryGrouping.selectorStates[0].selectedSource, a = o.value.reactive.dataBindAes[r];
|
|
142
142
|
if ((a == null ? void 0 : a.type) === "categorical" && a.hidden)
|
|
143
143
|
return Object.values(a.hidden).length > 0 && a.order.some((i) => {
|
|
144
144
|
var u;
|
|
@@ -154,7 +154,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
154
154
|
o.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, o.value.reactive.currentTab = "axes";
|
|
155
155
|
}
|
|
156
156
|
return (t, e) => {
|
|
157
|
-
var
|
|
157
|
+
var r;
|
|
158
158
|
return s(), C("div", ue, [
|
|
159
159
|
S("div", ce, [
|
|
160
160
|
S("input", {
|
|
@@ -167,28 +167,29 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
167
167
|
(i = a.target) == null || i.blur();
|
|
168
168
|
}, ["enter"]))
|
|
169
169
|
}, null, 40, de),
|
|
170
|
-
n.allowTitleEditing ? (s(),
|
|
170
|
+
n.allowTitleEditing ? (s(), c(Q(ne), {
|
|
171
171
|
key: 0,
|
|
172
172
|
class: "chart_titleEdit"
|
|
173
|
-
})) :
|
|
173
|
+
})) : d("", !0),
|
|
174
174
|
S("div", ve, [
|
|
175
175
|
Y(t.$slots, "default")
|
|
176
176
|
])
|
|
177
177
|
]),
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
l(o).reactive.tooltipHintWasShown ? d("", !0) : (s(), c(l(_), {
|
|
179
|
+
key: 0,
|
|
180
|
+
modelValue: l(o).reactive.showTooltipHint,
|
|
181
|
+
"onUpdate:modelValue": e[1] || (e[1] = (a) => l(o).reactive.showTooltipHint = a),
|
|
181
182
|
type: "success",
|
|
182
183
|
class: "chart_tooltipHint",
|
|
183
184
|
width: "170px"
|
|
184
185
|
}, {
|
|
185
|
-
default:
|
|
186
|
-
|
|
186
|
+
default: k(() => [...e[10] || (e[10] = [
|
|
187
|
+
B(" Hit enter to pin tooltip ", -1)
|
|
187
188
|
])]),
|
|
188
189
|
_: 1
|
|
189
|
-
}, 8, ["modelValue"]),
|
|
190
|
+
}, 8, ["modelValue"])),
|
|
190
191
|
v.value ? (s(), C("div", me, [
|
|
191
|
-
f.value || f.value === void 0 &&
|
|
192
|
+
f.value || f.value === void 0 && l(o).loading.inputGuide ? (s(), c(l(ee), {
|
|
192
193
|
key: 0,
|
|
193
194
|
modelValue: m.value,
|
|
194
195
|
"onUpdate:modelValue": [
|
|
@@ -197,7 +198,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
197
198
|
],
|
|
198
199
|
label: "Show for",
|
|
199
200
|
options: f.value
|
|
200
|
-
}, null, 8, ["modelValue", "options"])) : (s(),
|
|
201
|
+
}, null, 8, ["modelValue", "options"])) : (s(), c(l(te), {
|
|
201
202
|
key: 1,
|
|
202
203
|
modelValue: m.value,
|
|
203
204
|
"onUpdate:modelValue": [
|
|
@@ -205,73 +206,73 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
205
206
|
e[5] || (e[5] = (a) => T(a))
|
|
206
207
|
],
|
|
207
208
|
label: "Show for",
|
|
208
|
-
"options-search": (a, i) =>
|
|
209
|
+
"options-search": (a, i) => L(v.value, a, i)
|
|
209
210
|
}, null, 8, ["modelValue", "options-search"]))
|
|
210
|
-
])) :
|
|
211
|
+
])) : d("", !0),
|
|
211
212
|
S("div", {
|
|
212
213
|
ref_key: "chartContainerRef",
|
|
213
|
-
ref:
|
|
214
|
-
class:
|
|
214
|
+
ref: H,
|
|
215
|
+
class: O(["chart_main-content", [{ "chart_main-content__dendro": l(o).reactive.chartType === "dendro" }, "pl-scrollable"]])
|
|
215
216
|
}, [
|
|
216
217
|
S("div", {
|
|
217
218
|
id: "chartSvgContainer",
|
|
218
|
-
class:
|
|
219
|
+
class: O({
|
|
219
220
|
chart_ready: n.graphStatus === "ready",
|
|
220
221
|
chart_loading: n.graphStatus === "loading",
|
|
221
|
-
chart_activeLassoSelection: ((
|
|
222
|
+
chart_activeLassoSelection: ((r = l(o).reactive.lassoControlsState) == null ? void 0 : r.mode) === "selection"
|
|
222
223
|
})
|
|
223
224
|
}, null, 2),
|
|
224
|
-
|
|
225
|
+
R(se, {
|
|
225
226
|
graphStatus: n.graphStatus,
|
|
226
227
|
top: v.value ? 24 : 0,
|
|
227
228
|
bottom: 11,
|
|
228
229
|
customStatusText: n.customStatusText,
|
|
229
230
|
errorInfo: n.errorInfo
|
|
230
231
|
}, null, 8, ["graphStatus", "top", "customStatusText", "errorInfo"]),
|
|
231
|
-
|
|
232
|
+
l(o).reactive.chartType === "dendro" && n.chartData && l(o).reactive.layersSettings.dendro.showTable ? (s(), c(ae, {
|
|
232
233
|
key: 0,
|
|
233
234
|
chartData: n.chartData,
|
|
234
235
|
onRowSelect: Z
|
|
235
|
-
}, null, 8, ["chartData"])) :
|
|
236
|
-
|
|
236
|
+
}, null, 8, ["chartData"])) : d("", !0),
|
|
237
|
+
l(o).reactive.dendroInfoByClick ? (s(), c(oe, {
|
|
237
238
|
key: 1,
|
|
238
|
-
info:
|
|
239
|
-
containerRef:
|
|
239
|
+
info: l(o).reactive.dendroInfoByClick,
|
|
240
|
+
containerRef: H.value,
|
|
240
241
|
tooltipBtn: n.dendroTooltipButton,
|
|
241
242
|
onTooltipBtnClick: e[6] || (e[6] = (a) => t.$emit("dendro-tooltip-btn-click", a)),
|
|
242
243
|
onClose: e[7] || (e[7] = (a) => {
|
|
243
|
-
|
|
244
|
+
l(o).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
|
|
244
245
|
})
|
|
245
|
-
}, null, 8, ["info", "containerRef", "tooltipBtn"])) :
|
|
246
|
+
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : d("", !0)
|
|
246
247
|
], 2),
|
|
247
248
|
n.graphStatus === "ready" ? (s(), C("div", pe, [
|
|
248
|
-
|
|
249
|
-
|
|
249
|
+
R(re),
|
|
250
|
+
l(o).reactive.chartType === "scatterplot-umap" ? (s(), c(le, {
|
|
250
251
|
key: 0,
|
|
251
252
|
"chart-ref": n.chartRef,
|
|
252
253
|
isScatterplotZoomChanged: n.isScatterplotZoomChanged
|
|
253
|
-
}, null, 8, ["chart-ref", "isScatterplotZoomChanged"])) :
|
|
254
|
-
j.value ? (s(),
|
|
254
|
+
}, null, 8, ["chart-ref", "isScatterplotZoomChanged"])) : d("", !0),
|
|
255
|
+
j.value ? (s(), c(l($), {
|
|
255
256
|
key: 1,
|
|
256
257
|
icon: "view-hide",
|
|
257
258
|
onClick: e[8] || (e[8] = U(() => M(), ["stop"]))
|
|
258
259
|
}, {
|
|
259
|
-
default:
|
|
260
|
-
|
|
260
|
+
default: k(() => [...e[11] || (e[11] = [
|
|
261
|
+
B(" Hidden (primary) ", -1)
|
|
261
262
|
])]),
|
|
262
263
|
_: 1
|
|
263
|
-
})) :
|
|
264
|
-
K.value ? (s(),
|
|
264
|
+
})) : d("", !0),
|
|
265
|
+
K.value ? (s(), c(l($), {
|
|
265
266
|
key: 2,
|
|
266
267
|
icon: "view-hide",
|
|
267
268
|
onClick: e[9] || (e[9] = U(() => z(), ["stop"]))
|
|
268
269
|
}, {
|
|
269
|
-
default:
|
|
270
|
-
|
|
270
|
+
default: k(() => [...e[12] || (e[12] = [
|
|
271
|
+
B(" Hidden (secondary) ", -1)
|
|
271
272
|
])]),
|
|
272
273
|
_: 1
|
|
273
|
-
})) :
|
|
274
|
-
])) :
|
|
274
|
+
})) : d("", !0)
|
|
275
|
+
])) : d("", !0)
|
|
275
276
|
]);
|
|
276
277
|
};
|
|
277
278
|
}
|
|
@@ -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 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, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\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 customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\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, () => tabByFilterValue.value], () => { // tabBy column changed, needs to update selected value\n tabByLocalValue.value = tabByFilterValue.value;\n}, { deep: 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.value) {\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.value,\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.value) {\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.value) {\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.value, 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.value) {\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.value, 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\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" 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_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"tabBySource ? 24 : 0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\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 === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\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","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","value","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_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","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","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 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, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\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 customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\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, () => tabByFilterValue.value], () => { // tabBy column changed, needs to update selected value\n tabByLocalValue.value = tabByFilterValue.value;\n}, { deep: 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.value) {\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.value,\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.value) {\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.value) {\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.value, 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.value) {\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.value, 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\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-if=\"!store.reactive.tooltipHintWasShown\"\n v-model=\"store.reactive.showTooltipHint\"\n type=\"success\"\n 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_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"tabBySource ? 24 : 0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\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 === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\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","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","value","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","_createVNode","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","Zoom","LassoControls","PlBtnGhost"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAMA,IAAOC,GAEPC,IAAQC,GAAA,GAERC,IAAQC,GAYRC,IAAQC,EAAIH,EAAM,UAAU;AAElC,IAAAI,EAAM,MAAMJ,EAAM,YAAY,CAACK,MAAe;AAC5C,MAAAH,EAAM,QAAQG;AAAA,IAChB,CAAC;AAED,UAAMC,IAAaC,EAAS,MAAA;;AAAM,cAAAC,IAAAV,EAAM,MAAM,SAAS,aAAa,WAAW,UAA7C,gBAAAU,EAAoD,eAAe;AAAA,KAAqC,GACpIC,IAAcF,EAAS,MAAA;;AAAM,cAAAC,IAAAF,EAAW,UAAX,gBAAAE,EAAkB;AAAA,KAAc,GAC7DE,IAAmBH,EAAS,MAAA;;AAAM,cAAAI,KAAAH,IAAAF,EAAW,UAAX,gBAAAE,EAAkB,yBAAlB,gBAAAG,EAAyC;AAAA,KAAE,GAC7EC,IAAgBL,EAAS,MAAA;;AAAM,cAAAC,IAAAV,EAAM,MAAM,SAAS,aAAa,WAAW,YAA7C,gBAAAU,EAAsD;AAAA,KAAuC,GAE5HK,IAAkBV,EAAIO,EAAiB,KAAK;AAClD,IAAAN,EAAM,CAAC,MAAMK,EAAY,OAAO,MAAMC,EAAiB,KAAK,GAAG,MAAM;AACnE,MAAAG,EAAgB,QAAQH,EAAiB;AAAA,IAC3C,GAAG,EAAE,MAAM,IAAM;AAGjB,mBAAeI,EAAYC,GAAkB;;AAC3C,UAAI,CAACjB,EAAM,MAAM,iBAAiB;AAChC,eAAO,QAAQ,QAAQ,EAAE;AAG3B,YAAMkB,IAAgCJ,EAAc,MAAM,KAAK,CAACK,MAAUA,EAAM,mBAAmBF,CAAQ;AAC3G,UAAIC,QAAkCR,IAAAQ,EAA8B,yBAA9B,gBAAAR,EAAoD,WAAU,KAAK,GAAG;AAC1G,cAAMU,IAAiBF,EAA8B,wBAAwB,CAAA;AAC7E,eAAO,QAAQ,IAAIE,EAAe,IAAI,CAACC,MAAkBC,EAAiCL,GAAUI,CAAa,CAAC,CAAC;AAAA,MACrH;AACA,YAAME,IAAW,MAAMvB,EAAM,MAAM,WAAW;AAAA,QAC5CA,EAAM,MAAM,iBAAiB;AAAA,QAC7BA,EAAM,MAAM,WAAW;AAAA,QACvBiB;AAAA,QACAO;AAAA,MAAA;AAEF,aAAOD,EAAS,WAAW,OAAOA,EAAS;AAAA,IAC7C;AACA,UAAME,IAAmBpB,EAAA;AACzB,IAAAC,EAAM;AAAA,MACJ,MAAMK,EAAY;AAAA,MAClB,MAAMX,EAAM,MAAM,QAAQ;AAAA,IAAA,GACzB,OAAO,CAAC0B,GAAGC,CAAO,MAAM;AACzB,MAAID,MAAM,UAAaC,KAAW,CAAC3B,EAAM,MAAM,iBAAiB,UAGhEyB,EAAiB,QAAQ,MAAMT,EAAYU,CAAC;AAAA,IAC9C,GAAG,EAAE,WAAW,IAAM,GAEtBpB,EAAM,MAAMmB,EAAiB,OAAO,OAAOG,MAAS;AAClD,UACEjB,EAAY,UAAU,UACnBI,EAAgB,UAAU,UAC1Ba,MAAS;AAEZ;AAEF,UAAIC,IAAmBD;AAIvB,UAHIA,MAAS,SACXC,IAAmB,MAAMC,EAAoBnB,EAAY,OAAO,EAAE,IAEhEkB,KAAA,QAAAA,EAAkB,QAAQ;AAC5B,cAAME,IAAkBF,EAAiB,CAAC,EAAE;AAC5C,QAAAd,EAAgB,QAAQgB,GACxBC,EAAoBD,CAAe;AAAA,MACrC;AAAA,IACF,GAAG,EAAE,WAAW,IAAM;AAEtB,aAASC,EAAoBC,GAAe;AAC1C,YAAMC,IAAqBlC,EAAM,MAAM,SAAS,aAAa,WAAW,MAAM;AAC9E,MAAIkC,EAAmB,WACrBlC,EAAM,MAAM,SAAS,aAAa,WAAW,MAAM,iBAAiB,CAAC;AAAA,QACnE,GAAGkC,EAAmB,CAAC;AAAA,QACvB,MAAM;AAAA,QACN,sBAAsB,CAACD,CAAK;AAAA,MAAA,CAC7B;AAAA,IAEL;AAEA,aAASE,EAAcC,GAAU;AAC/B,YAAMC,IAASD,EAAE;AACjB,MAAAhC,EAAM,QAAQiC,EAAO,OACrBvC,EAAK,sBAAsBuC,EAAO,KAAK;AAAA,IACzC;AAEA,aAASC,EAAiBC,GAAY;AACpC,MAAAzC,EAAK,sBAAsByC,CAAE;AAAA,IAC/B;AAGA,mBAAeT,EAAoBb,GAAkBuB,GAAmBC,IAA0B,SAAS;;AACzG,UAAI,CAACzC,EAAM,MAAM,iBAAiB;AAChC,eAAO,QAAQ,QAAQ,EAAE;AAG3B,YAAMkB,IAAgCJ,EAAc,MAAM,KAAK,CAACK,MAAUA,EAAM,mBAAmBF,CAAQ;AAC3G,UAAIC,QAAkCR,IAAAQ,EAA8B,yBAA9B,gBAAAR,EAAoD,WAAU,KAAK,GAAG;AAC1G,cAAMU,IAAiBF,EAA8B,wBAAwB,CAAA,GACvEwB,IAAU,MAAM,QAAQ,IAAItB,EAAe,IAAI,CAACC,MAAkBC,EAAiCL,GAAUI,CAAa,CAAC,CAAC;AAClI,eAAOmB,IAAYE,EAAQ,OAAO,CAAChB,MAAMA,EAAE,MAAM,YAAA,EAAc,SAASc,EAAU,YAAA,CAAa,CAAC,IAAIE;AAAA,MACtG;AACA,YAAMC,IAAiBF,MAAS,UAAUD,IAAY,QAChDI,IAAiBH,MAAS,UAAUD,IAAY;AACtD,cAAQ,MAAMxC,EAAM,MAAM,WAAW,gCAAgCA,EAAM,MAAM,iBAAiB,OAAOA,EAAM,MAAM,WAAW,OAAOiB,GAAUO,GAAgCmB,GAAgBC,CAAc,GAAG;AAAA,IACpN;AAGA,mBAAetB,EAAiCL,GAAkBI,GAAuB;AACvF,aAAKrB,EAAM,MAAM,iBAAiB,QAGpB,MAAMA,EAAM,MAAM,WAAW;AAAA,QACzCA,EAAM,MAAM,iBAAiB;AAAA,QAAOA,EAAM,MAAM,WAAW;AAAA,QAC3DiB;AAAA,QAAU;AAAA,QAAG;AAAA,QAAWI;AAAA,MAAA,EAAe,KAAK,CAACK,MAAMA,EAAE,OAAO,CAAC,CAAC,IAJvD,QAAQ,QAAQ,EAAE,OAAOL,GAAe,OAAO,KAAK;AAAA,IAM/D;AAEA,UAAMwB,IAAoBxC,EAAA,GAEpByC,IAAmBrC,EAAS,MAAM;;AACtC,UAAIT,EAAM,MAAM,SAAS,cAAc;AACrC,eAAO;AAET,YAAM+C,IAAe/C,EAAM,MAAM,SAAS,aAAa;AACvD,WAAIU,IAAAqC,EAAa,oBAAb,QAAArC,EAA8B,eAAe,QAAQ;AACvD,cAAMsC,IAAaD,EAAa,gBAAgB,eAAe,CAAC,EAAE,gBAC5DE,IAAcjD,EAAM,MAAM,SAAS,YAAYgD,CAAU;AAC/D,aAAIC,KAAA,gBAAAA,EAAa,UAAS,iBAAiBA,EAAY;AACrD,iBAAO,OAAO,OAAOA,EAAY,MAAM,EAAE,SAAS,KAAKA,EAAY,MAAM,KAAK,CAACvB,MAAA;;AAAM,oBAAAhB,IAAAuC,EAAY,WAAZ,gBAAAvC,EAAqBgB;AAAA,WAAE;AAAA,MAEhH;AACA,aAAO;AAAA,IACT,CAAC,GACKwB,IAAqBzC,EAAS,MAAM;;AACxC,UAAIT,EAAM,MAAM,SAAS,cAAc;AACrC,eAAO;AAET,YAAM+C,IAAe/C,EAAM,MAAM,SAAS,aAAa;AACvD,WAAIU,IAAAqC,EAAa,sBAAb,QAAArC,EAAgC,eAAe,QAAQ;AACzD,cAAMsC,IAAaD,EAAa,kBAAkB,eAAe,CAAC,EAAE,gBAC9DE,IAAcjD,EAAM,MAAM,SAAS,YAAYgD,CAAU;AAC/D,aAAIC,KAAA,gBAAAA,EAAa,UAAS,iBAAiBA,EAAY;AACrD,iBAAO,OAAO,OAAOA,EAAY,MAAM,EAAE,SAAS,KAAKA,EAAY,MAAM,KAAK,CAACvB,MAAA;;AAAM,oBAAAhB,IAAAuC,EAAY,WAAZ,gBAAAvC,EAAqBgB;AAAA,WAAE;AAAA,MAEhH;AACA,aAAO;AAAA,IACT,CAAC;AACD,aAASyB,IAA0B;AACjC,MAAAnD,EAAM,MAAM,SAAS,gBAAgB,KAAQ,qBAAqB,IAClEA,EAAM,MAAM,SAAS,aAAa;AAAA,IACpC;AACA,aAASoD,IAA4B;AACnC,MAAApD,EAAM,MAAM,SAAS,gBAAgB,KAAQ,uBAAuB,IACpEA,EAAM,MAAM,SAAS,aAAa;AAAA,IACpC;;;AAKE,aAAAqD,EAAA,GAAAC,EAsEM,OAtENC,IAsEM;AAAA,QArEJC,EAYM,OAZNC,IAYM;AAAA,UAXJD,EAME,SAAA;AAAA,YALA,OAAM;AAAA,YACL,OAAOpD,EAAA;AAAA,YACP,WAAWD,EAAA;AAAA,YACX,UAAQgC;AAAA,YACR,4BAAcC,MAAC;;AAAQ,eAAA1B,IAAA0B,EAAE,WAAF,QAAA1B,EAA+B;AAAA,YAAI,GAAA,CAAA,OAAA,CAAA;AAAA,UAAA;UAE7BP,EAAA,qBAAhCkD,EAAA,GAAAK,EAA6EC,EAA7DC,EAAQ,GAAA;AAAA;YAA2B,OAAM;AAAA,UAAA;UACzDJ,EAEM,OAFNK,IAEM;AAAA,YADJC,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;QAIHC,EAAAhE,CAAA,EAAM,SAAS,wCADxB0D,EAQsBM,EAAAC,CAAA,GAAA;AAAA;sBANXD,EAAAhE,CAAA,EAAM,SAAS;AAAA,wDAAfgE,EAAAhE,CAAA,EAAM,SAAS,kBAAekE;AAAA,UACvC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,OAAM;AAAA,QAAA;qBACP,MAED,CAAA,GAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,cAFC,8BAED,EAAA;AAAA,UAAA;;;QACWxD,EAAA,SAAX0C,EAAA,GAAAC,EAWM,OAXNc,IAWM;AAAA,UATI3C,EAAA,SAAqBA,YAAqB,UAAauC,EAAAhE,CAAA,EAAM,QAAQ,mBAD7E0D,EAIEM,EAAAK,EAAA,GAAA;AAAA;wBAFStD,EAAA;AAAA;qCAAAA,EAAe,QAAAmD;AAAA,+BACHxC,MAAMM,EAAoBN,CAAC;AAAA,YAAA;AAAA,YADtB,OAAM;AAAA,YAAY,SAASD,EAAA;AAAA,UAAA,gDAGvDiC,EAIEM,EAAAM,EAAA,GAAA;AAAA;wBAHgBvD,EAAA;AAAA;qCAAAA,EAAe,QAAAmD;AAAA,+BAEVxC,MAAMM,EAAoBN,CAAC;AAAA,YAAA;AAAA,YAFf,OAAM;AAAA,YACtC,kBAAc,CAAG6C,GAAK9B,MAASX,EAAoBnB,EAAA,OAAuB4D,GAAK9B,CAAI;AAAA,UAAA;;QAIxFe,EAwBM,OAAA;AAAA,mBAvBA;AAAA,UAAJ,KAAIX;AAAA,UAAoB,UAAM,sBAAoB,CAAA,EAAA,8BACTmB,KAAM,SAAS,cAAS,SAAA,GAAA,eAAA,CAAA,CAAA;AAAA,QAAA;UAEjER,EAME,OAAA;AAAA,YALA,IAAG;AAAA,YAAqB,OAAKgB,EAAA;AAAA,2BAA6BrE,EAAA,gBAAW;AAAA,6BAAyCA,EAAA,gBAAW;AAAA,cAAwD,8BAAA6D,IAAAA,EAAAhE,CAAA,EAAM,SAAS,uBAAfgE,gBAAAA,EAAmC,UAAI;AAAA,YAAA;;UAM1NS,EAAoJC,IAAA;AAAA,YAAhI,aAAavE,EAAA;AAAA,YAAc,KAAKQ,EAAA,QAAW,KAAA;AAAA,YAAY,QAAQ;AAAA,YAAK,kBAAkBR,EAAA;AAAA,YAAmB,WAAWA,EAAA;AAAA,UAAA;UAEhI6D,EAAAhE,CAAA,EAAM,SAAS,0BAA0BG,EAAA,aAAa6D,EAAAhE,CAAA,EAAM,SAAS,eAAe,OAAO,kBADnG0D,EAGEiB,IAAA;AAAA;YADC,WAAWxE,EAAA;AAAA,YAAY,aAAYmC;AAAA,UAAA;UAG9B0B,EAAAhE,CAAA,EAAM,SAAS,0BADvB0D,EAOEkB,IAAA;AAAA;YANyC,MAAMZ,EAAAhE,CAAA,EAAM,SAAS;AAAA,YAC7D,cAAc6C,EAAA;AAAA,YAAoB,YAAY1C,EAAA;AAAA,YAC9C,mBAAiBgE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAG5B,MAAesC,EAAAA,kCAAkCtC,CAAE;AAAA,YAAI,SAAK4B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAA;AAAaF,cAAAA,EAAAhE,CAAA,EAAM,SAAS,oBAAiB,MAAmB6E,EAAAA,MAAK,sBAAA,IAAA;AAAA;;;QAM/I1E,EAAA,gBAAW,WAAtBkD,KAAAC,EASM,OATNwB,IASM;AAAA,UARJL,EAAQM,EAAA;AAAA,UACaf,EAAAhE,CAAA,EAAM,SAAS,cAAS,2BAA7C0D,EAAkJsB,IAAA;AAAA;YAA3E,aAAW7E,EAAA;AAAA,YAAW,0BAA0BA,EAAA;AAAA,UAAA;UACrG2C,EAAA,cAAlBY,EAEaM,EAAAiB,CAAA,GAAA;AAAA;YAFuB,MAAK;AAAA,YAAa,iCAAkB9B,KAAuB,CAAA,MAAA,CAAA;AAAA,UAAA;uBAAI,MAEnG,CAAA,GAAAgB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAFmG,sBAEnG,EAAA;AAAA,YAAA;;;UACkBjB,EAAA,cAAlBQ,EAEaM,EAAAiB,CAAA,GAAA;AAAA;YAFyB,MAAK;AAAA,YAAa,iCAAkB7B,KAAyB,CAAA,MAAA,CAAA;AAAA,UAAA;uBAAI,MAEvG,CAAA,GAAAe,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAFuG,wBAEvG,EAAA;AAAA,YAAA;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._alert_1fz73_2{position:fixed;bottom:12px;right:12px;width:256px;height:auto;z-index:1}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
truncationWarning: ChartTruncationWarning;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=ChartTruncationWarningAlert.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTruncationWarningAlert.vue.d.ts","sourceRoot":"","sources":["../../src/components/ChartTruncationWarningAlert.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AAIzG,KAAK,WAAW,GAAG;IAAE,iBAAiB,EAAE,sBAAsB,CAAA;CAAE,CAAC;;AAyHjE,wBAOG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import o from "./ChartTruncationWarningAlert.vue2.js";
|
|
2
|
+
import s from "./ChartTruncationWarningAlert.vue3.js";
|
|
3
|
+
import t from "../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const r = {
|
|
5
|
+
$style: s
|
|
6
|
+
}, n = /* @__PURE__ */ t(o, [["__cssModules", r]]);
|
|
7
|
+
export {
|
|
8
|
+
n as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=ChartTruncationWarningAlert.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTruncationWarningAlert.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { defineComponent as T, ref as x, computed as V, createElementBlock as $, openBlock as b, normalizeClass as h, createVNode as s, unref as r, withCtx as a, createTextVNode as u, toDisplayString as v, withModifiers as S } from "vue";
|
|
2
|
+
import { PlNotificationAlert as w, PlBtnPrimary as A, PlSpacer as C } from "@platforma-sdk/ui-vue";
|
|
3
|
+
import { formatTruncationTotal as c } from "../utils/createChartSettingsForRender/composeChartSettings.js";
|
|
4
|
+
import { useStore as P } from "../store.js";
|
|
5
|
+
const j = /* @__PURE__ */ T({
|
|
6
|
+
__name: "ChartTruncationWarningAlert",
|
|
7
|
+
props: {
|
|
8
|
+
truncationWarning: {}
|
|
9
|
+
},
|
|
10
|
+
setup(p) {
|
|
11
|
+
const f = p, i = P(), l = x(!0), m = V(() => {
|
|
12
|
+
const t = f.truncationWarning, e = [];
|
|
13
|
+
t.groups && e.push("Some groups are hidden"), t.facets && e.push("Some facets are hidden");
|
|
14
|
+
const n = e.join(". "), o = [];
|
|
15
|
+
t.groups && t.groupsVisible != null && t.groupsTotal != null && o.push(`${t.groupsVisible} of ${c(t.groupsTotal)} groups`), t.facets && t.facetsVisible != null && t.facetsTotal != null && o.push(`${t.facetsVisible} of ${c(t.facetsTotal)} facets`);
|
|
16
|
+
const g = o.length ? ` Showing ${o.join("; ")}.` : "";
|
|
17
|
+
return `${n}.${g} Limits can be changed in Axes settings.`;
|
|
18
|
+
});
|
|
19
|
+
function d() {
|
|
20
|
+
i.value.reactive.currentTab = "axes", i.value.reactive.tabDefaultState.axes.scrollToBottom = !0;
|
|
21
|
+
}
|
|
22
|
+
return (t, e) => (b(), $("div", {
|
|
23
|
+
class: h(t.$style.alert)
|
|
24
|
+
}, [
|
|
25
|
+
s(r(w), {
|
|
26
|
+
modelValue: l.value,
|
|
27
|
+
"onUpdate:modelValue": e[1] || (e[1] = (n) => l.value = n),
|
|
28
|
+
type: "warning",
|
|
29
|
+
closable: ""
|
|
30
|
+
}, {
|
|
31
|
+
actions: a(() => [
|
|
32
|
+
s(r(A), {
|
|
33
|
+
icon: "arrow-right",
|
|
34
|
+
onClick: e[0] || (e[0] = S(() => d(), ["stop"]))
|
|
35
|
+
}, {
|
|
36
|
+
default: a(() => [...e[2] || (e[2] = [
|
|
37
|
+
u("Open Axes settings", -1)
|
|
38
|
+
])]),
|
|
39
|
+
_: 1
|
|
40
|
+
}),
|
|
41
|
+
s(r(C))
|
|
42
|
+
]),
|
|
43
|
+
default: a(() => [
|
|
44
|
+
u(v(m.value) + " ", 1)
|
|
45
|
+
]),
|
|
46
|
+
_: 1
|
|
47
|
+
}, 8, ["modelValue"])
|
|
48
|
+
], 2));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
export {
|
|
52
|
+
j as default
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=ChartTruncationWarningAlert.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTruncationWarningAlert.vue2.js","sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"names":["props","__props","store","useStore","isAlertOpen","ref","message","computed","w","intro","lead","countParts","formatTruncationTotal","countText","openAxesSettings","_createElementBlock","_normalizeClass","$style","_createVNode","_unref","PlNotificationAlert","$event","PlBtnPrimary","_cache","PlSpacer","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAQC,EAAA,GACRC,IAAcC,EAAI,EAAI,GAEtBC,IAAUC,EAAS,MAAM;AAC7B,YAAMC,IAAIR,EAAM,mBACVS,IAAkB,CAAA;AACxB,MAAID,EAAE,UAAQC,EAAM,KAAK,wBAAwB,GAC7CD,EAAE,UAAQC,EAAM,KAAK,wBAAwB;AACjD,YAAMC,IAAOD,EAAM,KAAK,IAAI,GACtBE,IAAuB,CAAA;AAC7B,MAAIH,EAAE,UAAUA,EAAE,iBAAiB,QAAQA,EAAE,eAAe,QAC1DG,EAAW,KAAK,GAAGH,EAAE,aAAa,OAAOI,EAAsBJ,EAAE,WAAW,CAAC,SAAS,GAEpFA,EAAE,UAAUA,EAAE,iBAAiB,QAAQA,EAAE,eAAe,QAC1DG,EAAW,KAAK,GAAGH,EAAE,aAAa,OAAOI,EAAsBJ,EAAE,WAAW,CAAC,SAAS;AAExF,YAAMK,IAAYF,EAAW,SAAS,YAAYA,EAAW,KAAK,IAAI,CAAC,MAAM;AAE7E,aAAO,GAAGD,CAAI,IAAIG,CAAS;AAAA,IAC7B,CAAC;AAED,aAASC,IAAmB;AAC1B,MAAAZ,EAAM,MAAM,SAAS,aAAa,QAClCA,EAAM,MAAM,SAAS,gBAAgB,KAAK,iBAAiB;AAAA,IAC7D;2BAGEa,EAQM,OAAA;AAAA,MARA,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,IAAA;MACvBC,EAMsBC,EAAAC,CAAA,GAAA;AAAA,oBANQhB,EAAA;AAAA,sDAAAA,EAAW,QAAAiB;AAAA,QAAE,MAAK;AAAA,QAAU,UAAA;AAAA,MAAA;QAE7C,WACT,MAAyG;AAAA,UAAzGH,EAAyGC,EAAAG,CAAA,GAAA;AAAA,YAA3F,MAAK;AAAA,YAAe,iCAAkBR,KAAgB,CAAA,MAAA,CAAA;AAAA,UAAA;uBAAI,MAAkB,CAAA,GAAAS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,gBAAlB,sBAAkB,EAAA;AAAA,YAAA;;;UAC1FL,EAAYC,EAAAK,CAAA,CAAA;AAAA,QAAA;mBAHd,MAAa;AAAA,UAAVC,EAAAC,EAAApB,EAAA,KAAO,IAAG,KACb,CAAA;AAAA,QAAA;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartTruncationWarningAlert.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnDBasketChip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DragAndDrop/DnDBasketChip.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"DnDBasketChip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DragAndDrop/DnDBasketChip.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;AAmJF,wBASG"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlIcon16 as
|
|
3
|
-
import _ from "../../assets/drag-and-drop/img/chip-close.svg.js";
|
|
1
|
+
import { defineComponent as p, ref as y, computed as v, createElementBlock as s, openBlock as t, createElementVNode as o, normalizeClass as c, createCommentVNode as d, createVNode as m, createBlock as u, unref as i, toDisplayString as h } from "vue";
|
|
2
|
+
import { PlIcon16 as n } from "@platforma-sdk/ui-vue";
|
|
4
3
|
const C = {
|
|
5
4
|
key: 0,
|
|
6
5
|
class: "dnd-basket-chip__handler"
|
|
7
|
-
},
|
|
6
|
+
}, _ = { class: "dnd-basket-chip__title-wrapper" }, g = ["title"], B = ["title"], S = /* @__PURE__ */ p({
|
|
8
7
|
__name: "DnDBasketChip",
|
|
9
8
|
props: {
|
|
10
9
|
error: { type: Boolean },
|
|
@@ -12,56 +11,60 @@ const C = {
|
|
|
12
11
|
sortable: { type: Boolean }
|
|
13
12
|
},
|
|
14
13
|
emits: ["close-chip"],
|
|
15
|
-
setup(e, { emit:
|
|
16
|
-
const
|
|
17
|
-
() =>
|
|
14
|
+
setup(e, { emit: k }) {
|
|
15
|
+
const l = e, f = k, b = y(), a = v(
|
|
16
|
+
() => l.info.uniqueValues.join("/")
|
|
18
17
|
);
|
|
19
|
-
function
|
|
20
|
-
|
|
18
|
+
function r() {
|
|
19
|
+
f("close-chip", l.info.id);
|
|
21
20
|
}
|
|
22
|
-
return (
|
|
21
|
+
return (V, x) => (t(), s("div", {
|
|
23
22
|
ref_key: "chipRoot",
|
|
24
|
-
ref:
|
|
23
|
+
ref: b,
|
|
25
24
|
class: "dnd-basket-chip__group"
|
|
26
25
|
}, [
|
|
27
|
-
|
|
28
|
-
class:
|
|
26
|
+
o("div", {
|
|
27
|
+
class: c([{ error: e.error, sortable: e.sortable }, "dnd-basket-chip"])
|
|
29
28
|
}, [
|
|
30
|
-
|
|
31
|
-
class:
|
|
29
|
+
o("div", {
|
|
30
|
+
class: c(["dnd-basket-chip__icon", { error: e.error }])
|
|
32
31
|
}, [
|
|
33
|
-
e.error ? (t(),
|
|
32
|
+
e.error ? (t(), u(i(n), {
|
|
34
33
|
key: 0,
|
|
35
34
|
name: "warning",
|
|
36
|
-
class:
|
|
37
|
-
}, null, 8, ["class"])) : (t(),
|
|
35
|
+
class: c({ error: e.error })
|
|
36
|
+
}, null, 8, ["class"])) : (t(), u(i(n), {
|
|
38
37
|
key: 1,
|
|
39
38
|
name: e.info.isSubsetFilter ? "cell-type-subset" : e.info.type === "String" ? "cell-type-txt" : "cell-type-num"
|
|
40
39
|
}, null, 8, ["name"]))
|
|
41
40
|
], 2),
|
|
42
|
-
e.sortable ? (t(),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
e.sortable ? (t(), s("div", C)) : d("", !0),
|
|
42
|
+
m(i(n), { name: "drag-dots" }),
|
|
43
|
+
o("div", _, [
|
|
44
|
+
o("div", {
|
|
46
45
|
class: "dnd-basket-chip__title",
|
|
47
46
|
title: e.info.title
|
|
48
|
-
},
|
|
49
|
-
e.info.nonHomogenous ? (t(),
|
|
47
|
+
}, h(e.info.title), 9, g),
|
|
48
|
+
e.info.nonHomogenous ? (t(), s("div", {
|
|
50
49
|
key: 0,
|
|
51
50
|
class: "dnd-basket-chip__sub-title",
|
|
52
|
-
title:
|
|
53
|
-
},
|
|
51
|
+
title: a.value
|
|
52
|
+
}, h(a.value), 9, B)) : d("", !0)
|
|
54
53
|
]),
|
|
55
|
-
|
|
54
|
+
o("div", {
|
|
56
55
|
class: "dnd-basket-chip__icon-close",
|
|
57
|
-
onClick:
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
onClick: r
|
|
57
|
+
}, [
|
|
58
|
+
m(i(n), {
|
|
59
|
+
name: "close",
|
|
60
|
+
onClick: r
|
|
61
|
+
})
|
|
62
|
+
])
|
|
60
63
|
], 2)
|
|
61
64
|
], 512));
|
|
62
65
|
}
|
|
63
66
|
});
|
|
64
67
|
export {
|
|
65
|
-
|
|
68
|
+
S as default
|
|
66
69
|
};
|
|
67
70
|
//# sourceMappingURL=DnDBasketChip.vue.js.map
|