@milaboratories/graph-maker 1.1.153 → 1.1.155
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/GraphMaker/components/AesSettings/FormWrapper.vue.d.ts +2 -0
- package/dist/GraphMaker/components/AesSettings/FormWrapper.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/AesSettings/FormWrapper.vue.js +18 -16
- package/dist/GraphMaker/components/AesSettings/FormWrapper.vue.js.map +1 -1
- package/dist/GraphMaker/components/Chart.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/Chart.vue.js +177 -120
- package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +198 -192
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/GraphMaker/store.d.ts.map +1 -1
- package/dist/GraphMaker/store.js +85 -81
- package/dist/GraphMaker/store.js.map +1 -1
- package/dist/GraphMaker/types.d.ts +1 -0
- package/dist/GraphMaker/types.d.ts.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +6 -6
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +94 -91
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +2 -2
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +50 -49
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +15 -14
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
- package/package.json +2 -2
|
@@ -15,8 +15,10 @@ declare function __VLS_template(): {
|
|
|
15
15
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
16
16
|
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
17
17
|
"form:close": (...args: any[]) => void;
|
|
18
|
+
"form:open": (...args: any[]) => void;
|
|
18
19
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
20
|
"onForm:close"?: ((...args: any[]) => any) | undefined;
|
|
21
|
+
"onForm:open"?: ((...args: any[]) => any) | undefined;
|
|
20
22
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
21
23
|
root: HTMLDivElement;
|
|
22
24
|
}, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/AesSettings/FormWrapper.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/components/AesSettings/FormWrapper.vue"],"names":[],"mappings":"AAqCA,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,iBAAS,cAAc;WA2DT,OAAO,IAA6B;;yBAXpB,GAAG;;;;;;EAgBhC;AAUD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;OASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,35 +1,37 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as c, onMounted as p, createBlock as s, openBlock as n, Teleport as d, createElementVNode as e, renderSlot as f, withModifiers as k, createTextVNode as _, resolveDynamicComponent as u, toDisplayString as i } from "vue";
|
|
2
|
+
import g from "../../icons/ArrowLeft.vue.js";
|
|
3
|
+
const h = {
|
|
4
4
|
ref: "root",
|
|
5
5
|
class: "aes-settings-form"
|
|
6
|
-
},
|
|
6
|
+
}, v = { class: "aes-settings-form__header" }, B = /* @__PURE__ */ c({
|
|
7
7
|
__name: "FormWrapper",
|
|
8
8
|
props: {
|
|
9
9
|
title: {},
|
|
10
10
|
backTitle: {}
|
|
11
11
|
},
|
|
12
|
-
emits: ["form:close"],
|
|
13
|
-
setup(l, { emit:
|
|
14
|
-
const
|
|
15
|
-
return (
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
emits: ["form:close", "form:open"],
|
|
13
|
+
setup(l, { emit: a }) {
|
|
14
|
+
const o = l, m = a;
|
|
15
|
+
return p(() => {
|
|
16
|
+
m("form:open");
|
|
17
|
+
}), (t, r) => (n(), s(d, { to: "#graph-settings-modal" }, [
|
|
18
|
+
e("div", h, [
|
|
19
|
+
e("div", v, [
|
|
18
20
|
e("div", {
|
|
19
|
-
onClick:
|
|
21
|
+
onClick: r[0] || (r[0] = k((T) => t.$emit("form:close"), ["stop"])),
|
|
20
22
|
class: "back-link"
|
|
21
23
|
}, [
|
|
22
|
-
(
|
|
23
|
-
|
|
24
|
+
(n(), s(u(g))),
|
|
25
|
+
_(" " + i(`Back to ${o.backTitle}`), 1)
|
|
24
26
|
]),
|
|
25
|
-
e("h3", null,
|
|
27
|
+
e("h3", null, i(o.title), 1)
|
|
26
28
|
]),
|
|
27
|
-
|
|
29
|
+
f(t.$slots, "default")
|
|
28
30
|
], 512)
|
|
29
31
|
]));
|
|
30
32
|
}
|
|
31
33
|
});
|
|
32
34
|
export {
|
|
33
|
-
|
|
35
|
+
B as default
|
|
34
36
|
};
|
|
35
37
|
//# sourceMappingURL=FormWrapper.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormWrapper.vue.js","sources":["../../../../src/GraphMaker/components/AesSettings/FormWrapper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport ArrowLeft from \"../../icons/ArrowLeft.vue\";\n\nconst props = defineProps<{\n title: string;\n backTitle: string;\n}>();\n\nconst emit = defineEmits([\"form:close\"]);\n\n</script>\n\n<template>\n <Teleport to=\"#graph-settings-modal\">\n <div ref=\"root\" class=\"aes-settings-form\">\n <div class=\"aes-settings-form__header\">\n <div @click.stop=\"$emit('form:close')\" class=\"back-link\">\n <component :is=\"ArrowLeft\" />\n {{ `Back to ${props.backTitle}` }}\n </div>\n <h3>\n {{ props.title }}\n </h3>\n </div>\n <slot/>\n </div>\n </Teleport>\n</template>\n"],"names":["props","__props"],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"FormWrapper.vue.js","sources":["../../../../src/GraphMaker/components/AesSettings/FormWrapper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted } from \"vue\";\nimport ArrowLeft from \"../../icons/ArrowLeft.vue\";\n\nconst props = defineProps<{\n title: string;\n backTitle: string;\n}>();\n\nconst emit = defineEmits([\"form:close\", \"form:open\"]);\nonMounted(() => {\n emit(\"form:open\");\n});\n\n</script>\n\n<template>\n <Teleport to=\"#graph-settings-modal\">\n <div ref=\"root\" class=\"aes-settings-form\">\n <div class=\"aes-settings-form__header\">\n <div @click.stop=\"$emit('form:close')\" class=\"back-link\">\n <component :is=\"ArrowLeft\" />\n {{ `Back to ${props.backTitle}` }}\n </div>\n <h3>\n {{ props.title }}\n </h3>\n </div>\n <slot/>\n </div>\n </Teleport>\n</template>\n"],"names":["props","__props","emit","__emit","onMounted"],"mappings":";;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAKRC,IAAOC;AACb,WAAAC,EAAU,MAAM;AACd,MAAAF,EAAK,WAAW;AAAA,IAClB,CAAC;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/components/Chart.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/components/Chart.vue"],"names":[],"mappings":"AA2OA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAY1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;CAChC,CAAC;AAoIF,iBAAS,cAAc;WA+PT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAkCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;kBASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { PlNotificationAlert as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as
|
|
9
|
-
import
|
|
10
|
-
import { useStore as
|
|
11
|
-
const
|
|
1
|
+
import { defineComponent as W, ref as h, watch as S, computed as p, createElementBlock as b, openBlock as n, createElementVNode as m, createVNode as P, createCommentVNode as s, createBlock as i, withKeys as j, resolveDynamicComponent as K, renderSlot as z, unref as r, withCtx as T, createTextVNode as k, normalizeClass as H, withModifiers as R } from "vue";
|
|
2
|
+
import { PlNotificationAlert as X, PlDropdown as J, PlAutocomplete as Q, PlBtnGhost as G } from "@platforma-sdk/ui-vue";
|
|
3
|
+
import Y from "./DendroTable.vue.js";
|
|
4
|
+
import Z from "./DendroTooltip.vue.js";
|
|
5
|
+
import x from "./LassoControls/index.vue.js";
|
|
6
|
+
import ee from "./Loading.vue.js";
|
|
7
|
+
import te from "./Zoom/index.vue.js";
|
|
8
|
+
import { MAX_SEARCH_OPTIONS_LIST_LENGTH as N } from "../constantsCommon.js";
|
|
9
|
+
import ae from "../icons/EditIcon.vue.js";
|
|
10
|
+
import { useStore as oe } from "../store.js";
|
|
11
|
+
const re = { class: "chart_container" }, ne = { class: "chart_header" }, le = ["value"], ie = { class: "chart_titleLineSlot" }, se = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "chart_tabBy"
|
|
14
|
-
},
|
|
14
|
+
}, ue = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "chart_controls"
|
|
17
|
+
}, be = /* @__PURE__ */ W({
|
|
15
18
|
__name: "Chart",
|
|
16
19
|
props: {
|
|
17
20
|
graphStatus: {},
|
|
@@ -21,163 +24,217 @@ const Y = { class: "chart_container" }, Z = { class: "chart_header" }, x = ["val
|
|
|
21
24
|
chartRef: {}
|
|
22
25
|
},
|
|
23
26
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
24
|
-
setup(
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
setup(O, { emit: $ }) {
|
|
28
|
+
const C = $, a = oe(), V = O, y = h(V.graphTitle);
|
|
29
|
+
S(() => V.graphTitle, (t) => {
|
|
30
|
+
y.value = t;
|
|
28
31
|
});
|
|
29
|
-
const
|
|
30
|
-
var
|
|
31
|
-
return (
|
|
32
|
-
}),
|
|
33
|
-
var
|
|
34
|
-
return (
|
|
35
|
-
}),
|
|
36
|
-
var
|
|
37
|
-
return (
|
|
38
|
-
}),
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
const w = p(() => {
|
|
33
|
+
var t;
|
|
34
|
+
return (t = a.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
35
|
+
}), u = p(() => {
|
|
36
|
+
var t;
|
|
37
|
+
return (t = w.value) == null ? void 0 : t.selectedSource;
|
|
38
|
+
}), B = p(() => {
|
|
39
|
+
var t, e;
|
|
40
|
+
return (e = (t = w.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
41
|
+
}), c = h(B.value);
|
|
42
|
+
S(() => u.value, (t, e) => {
|
|
43
|
+
t !== e && (c.value = B.value);
|
|
41
44
|
}, { immediate: !0 });
|
|
42
|
-
async function
|
|
45
|
+
async function L(t) {
|
|
43
46
|
if (!a.value.columnsDataStore)
|
|
44
47
|
return Promise.resolve([]);
|
|
45
|
-
const
|
|
46
|
-
return
|
|
48
|
+
const e = await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, N);
|
|
49
|
+
return e.overflow ? null : e.values;
|
|
47
50
|
}
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}),
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
const f = h();
|
|
52
|
+
S(() => u.value, async (t) => {
|
|
53
|
+
t !== void 0 && (f.value = await L(t));
|
|
54
|
+
}), S(() => f.value, async (t) => {
|
|
55
|
+
if (u.value === void 0 || // no tabBy selected
|
|
56
|
+
c.value !== void 0 || // tabBy selected and has selected value
|
|
57
|
+
t === void 0)
|
|
55
58
|
return;
|
|
56
|
-
let
|
|
57
|
-
if (
|
|
58
|
-
const
|
|
59
|
-
|
|
59
|
+
let e = t;
|
|
60
|
+
if (t === null && (e = await D(u.value, "")), e != null && e.length) {
|
|
61
|
+
const l = e[0].value;
|
|
62
|
+
c.value = l, g(l);
|
|
60
63
|
}
|
|
61
64
|
}, { immediate: !0 });
|
|
62
|
-
function
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
...
|
|
65
|
+
function g(t) {
|
|
66
|
+
const e = a.value.reactive.optionsState.components.tabBy.selectorStates;
|
|
67
|
+
e.length && (a.value.reactive.optionsState.components.tabBy.selectorStates = [{
|
|
68
|
+
...e[0],
|
|
66
69
|
type: "equals",
|
|
67
|
-
selectedFilterValues: [
|
|
70
|
+
selectedFilterValues: [t]
|
|
68
71
|
}]);
|
|
69
72
|
}
|
|
70
|
-
function
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
+
function F(t) {
|
|
74
|
+
const e = t.currentTarget;
|
|
75
|
+
y.value = e.value, C("graph-title-update", e.value);
|
|
76
|
+
}
|
|
77
|
+
function U(t) {
|
|
78
|
+
C("dendro-node-select", t);
|
|
73
79
|
}
|
|
74
|
-
function
|
|
75
|
-
|
|
80
|
+
async function D(t, e) {
|
|
81
|
+
return a.value.columnsDataStore ? (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, N, e || void 0)).values : Promise.resolve([]);
|
|
76
82
|
}
|
|
77
|
-
async function
|
|
78
|
-
return a.value.columnsDataStore ? (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value,
|
|
83
|
+
async function A(t, e) {
|
|
84
|
+
return a.value.columnsDataStore ? (await a.value.controller.getUniqueSourceValuesWithLabels(a.value.columnsDataStore, a.value.inputGuide.value, t, 1, void 0, e)).values[0] : Promise.resolve({ value: e, label: e });
|
|
85
|
+
}
|
|
86
|
+
const _ = h(), E = p(() => {
|
|
87
|
+
var e;
|
|
88
|
+
if (a.value.reactive.chartType !== "discrete")
|
|
89
|
+
return !1;
|
|
90
|
+
const t = a.value.reactive.optionsState.components;
|
|
91
|
+
if ((e = t.primaryGrouping) != null && e.selectorStates.length) {
|
|
92
|
+
const l = t.primaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[l];
|
|
93
|
+
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
94
|
+
return Object.values(o.hidden).length > 0 && o.order.some((d) => {
|
|
95
|
+
var v;
|
|
96
|
+
return (v = o.hidden) == null ? void 0 : v[d];
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return !1;
|
|
100
|
+
}), I = p(() => {
|
|
101
|
+
var e;
|
|
102
|
+
if (a.value.reactive.chartType !== "discrete")
|
|
103
|
+
return !1;
|
|
104
|
+
const t = a.value.reactive.optionsState.components;
|
|
105
|
+
if ((e = t.secondaryGrouping) != null && e.selectorStates.length) {
|
|
106
|
+
const l = t.secondaryGrouping.selectorStates[0].selectedSource, o = a.value.reactive.dataBindAes[l];
|
|
107
|
+
if ((o == null ? void 0 : o.type) === "categorical" && o.hidden)
|
|
108
|
+
return Object.values(o.hidden).length > 0 && o.order.some((d) => {
|
|
109
|
+
var v;
|
|
110
|
+
return (v = o.hidden) == null ? void 0 : v[d];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return !1;
|
|
114
|
+
});
|
|
115
|
+
function q() {
|
|
116
|
+
a.value.reactive.tabDefaultState.axes.reorderPrimaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
79
117
|
}
|
|
80
|
-
|
|
81
|
-
|
|
118
|
+
function M() {
|
|
119
|
+
a.value.reactive.tabDefaultState.axes.reorderSecondaryOpen = !0, a.value.reactive.currentTab = "axes";
|
|
82
120
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
c("input", {
|
|
121
|
+
return (t, e) => {
|
|
122
|
+
var l;
|
|
123
|
+
return n(), b("div", re, [
|
|
124
|
+
m("div", ne, [
|
|
125
|
+
m("input", {
|
|
89
126
|
class: "chart_title",
|
|
90
|
-
value:
|
|
91
|
-
onChange:
|
|
92
|
-
onKeyup:
|
|
93
|
-
var
|
|
94
|
-
(
|
|
127
|
+
value: y.value,
|
|
128
|
+
onChange: F,
|
|
129
|
+
onKeyup: e[0] || (e[0] = j((o) => {
|
|
130
|
+
var d;
|
|
131
|
+
(d = o.target) == null || d.blur();
|
|
95
132
|
}, ["enter"]))
|
|
96
|
-
}, null, 40,
|
|
97
|
-
(
|
|
98
|
-
|
|
99
|
-
|
|
133
|
+
}, null, 40, le),
|
|
134
|
+
(n(), i(K(ae), { class: "chart_titleEdit" })),
|
|
135
|
+
m("div", ie, [
|
|
136
|
+
z(t.$slots, "default")
|
|
100
137
|
])
|
|
101
138
|
]),
|
|
102
|
-
|
|
139
|
+
P(r(X), {
|
|
103
140
|
type: "success",
|
|
104
|
-
modelValue:
|
|
105
|
-
"onUpdate:modelValue":
|
|
141
|
+
modelValue: r(a).reactive.showTooltipHint,
|
|
142
|
+
"onUpdate:modelValue": e[1] || (e[1] = (o) => r(a).reactive.showTooltipHint = o),
|
|
106
143
|
class: "chart_tooltipHint",
|
|
107
144
|
width: "170px"
|
|
108
145
|
}, {
|
|
109
|
-
default:
|
|
110
|
-
|
|
146
|
+
default: T(() => e[10] || (e[10] = [
|
|
147
|
+
k(" Hit enter to pin tooltip ")
|
|
111
148
|
])),
|
|
112
149
|
_: 1
|
|
113
150
|
}, 8, ["modelValue"]),
|
|
114
|
-
|
|
115
|
-
|
|
151
|
+
u.value ? (n(), b("div", se, [
|
|
152
|
+
f.value ? (n(), i(r(J), {
|
|
116
153
|
key: 0,
|
|
117
154
|
label: "Show for",
|
|
118
|
-
modelValue:
|
|
155
|
+
modelValue: c.value,
|
|
119
156
|
"onUpdate:modelValue": [
|
|
120
|
-
|
|
121
|
-
|
|
157
|
+
e[2] || (e[2] = (o) => c.value = o),
|
|
158
|
+
e[3] || (e[3] = (o) => g(o))
|
|
122
159
|
],
|
|
123
|
-
options:
|
|
124
|
-
}, null, 8, ["modelValue", "options"])) : (
|
|
160
|
+
options: f.value
|
|
161
|
+
}, null, 8, ["modelValue", "options"])) : (n(), i(r(Q), {
|
|
125
162
|
key: 1,
|
|
126
|
-
modelValue:
|
|
163
|
+
modelValue: c.value,
|
|
127
164
|
"onUpdate:modelValue": [
|
|
128
|
-
|
|
129
|
-
|
|
165
|
+
e[4] || (e[4] = (o) => c.value = o),
|
|
166
|
+
e[5] || (e[5] = (o) => g(o))
|
|
130
167
|
],
|
|
131
|
-
"options-search": (o) =>
|
|
132
|
-
"model-search": (o) =>
|
|
168
|
+
"options-search": (o) => D(u.value, o),
|
|
169
|
+
"model-search": (o) => A(u.value, o)
|
|
133
170
|
}, null, 8, ["modelValue", "options-search", "model-search"]))
|
|
134
|
-
])) :
|
|
135
|
-
|
|
136
|
-
class:
|
|
171
|
+
])) : s("", !0),
|
|
172
|
+
m("div", {
|
|
173
|
+
class: H(["chart_main-content", [{ "chart_main-content__dendro": r(a).reactive.chartType === "dendro" }, "pl-scrollable"]]),
|
|
137
174
|
ref_key: "chartContainerRef",
|
|
138
|
-
ref:
|
|
175
|
+
ref: _
|
|
139
176
|
}, [
|
|
140
|
-
|
|
177
|
+
m("div", {
|
|
141
178
|
id: "chartSvgContainer",
|
|
142
|
-
class:
|
|
143
|
-
chart_loading:
|
|
144
|
-
chart_noDataMapping:
|
|
145
|
-
chart_emptyData:
|
|
146
|
-
chart_inconsistent:
|
|
147
|
-
chart_error:
|
|
148
|
-
chart_activeLassoSelection: ((
|
|
179
|
+
class: H({
|
|
180
|
+
chart_loading: r(a).loading.initialCharts && t.graphStatus === "ready",
|
|
181
|
+
chart_noDataMapping: t.graphStatus === "notReady",
|
|
182
|
+
chart_emptyData: t.graphStatus === "empty",
|
|
183
|
+
chart_inconsistent: t.graphStatus === "inconsistent",
|
|
184
|
+
chart_error: t.graphStatus === "error",
|
|
185
|
+
chart_activeLassoSelection: ((l = r(a).reactive.lassoControlsState) == null ? void 0 : l.mode) === "selection"
|
|
149
186
|
})
|
|
150
187
|
}, [
|
|
151
|
-
|
|
188
|
+
r(a).loading.initialCharts && t.graphStatus === "ready" ? (n(), i(ee, { key: 0 })) : s("", !0)
|
|
152
189
|
], 2),
|
|
153
|
-
|
|
190
|
+
r(a).reactive.chartType === "dendro" && t.chartData && r(a).reactive.layersSettings.dendro.showTable ? (n(), i(Y, {
|
|
154
191
|
key: 0,
|
|
155
|
-
chartData:
|
|
156
|
-
onRowSelect:
|
|
157
|
-
}, null, 8, ["chartData"])) :
|
|
158
|
-
|
|
192
|
+
chartData: t.chartData,
|
|
193
|
+
onRowSelect: U
|
|
194
|
+
}, null, 8, ["chartData"])) : s("", !0),
|
|
195
|
+
r(a).reactive.dendroInfoByClick ? (n(), i(Z, {
|
|
159
196
|
key: 1,
|
|
160
|
-
info:
|
|
161
|
-
containerRef:
|
|
162
|
-
tooltipBtn:
|
|
163
|
-
onTooltipBtnClick:
|
|
164
|
-
onClose:
|
|
165
|
-
|
|
197
|
+
info: r(a).reactive.dendroInfoByClick,
|
|
198
|
+
containerRef: _.value,
|
|
199
|
+
tooltipBtn: t.dendroTooltipButton,
|
|
200
|
+
onTooltipBtnClick: e[6] || (e[6] = (o) => t.$emit("dendro-tooltip-btn-click", o)),
|
|
201
|
+
onClose: e[7] || (e[7] = (o) => {
|
|
202
|
+
r(a).reactive.dendroInfoByClick = null, t.$emit("dendro-node-select", null);
|
|
166
203
|
})
|
|
167
|
-
}, null, 8, ["info", "containerRef", "tooltipBtn"])) :
|
|
204
|
+
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : s("", !0)
|
|
168
205
|
], 2),
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
206
|
+
t.graphStatus !== "empty" ? (n(), b("div", ue, [
|
|
207
|
+
P(te),
|
|
208
|
+
r(a).reactive.chartType === "scatterplot-umap" ? (n(), i(x, {
|
|
209
|
+
key: 0,
|
|
210
|
+
"chart-ref": t.chartRef
|
|
211
|
+
}, null, 8, ["chart-ref"])) : s("", !0),
|
|
212
|
+
E.value ? (n(), i(r(G), {
|
|
172
213
|
key: 1,
|
|
173
|
-
"
|
|
174
|
-
|
|
175
|
-
|
|
214
|
+
icon: "view-hide",
|
|
215
|
+
onClick: e[8] || (e[8] = R(() => q(), ["stop"]))
|
|
216
|
+
}, {
|
|
217
|
+
default: T(() => e[11] || (e[11] = [
|
|
218
|
+
k(" Hidden (primary) ")
|
|
219
|
+
])),
|
|
220
|
+
_: 1
|
|
221
|
+
})) : s("", !0),
|
|
222
|
+
I.value ? (n(), i(r(G), {
|
|
223
|
+
key: 2,
|
|
224
|
+
icon: "view-hide",
|
|
225
|
+
onClick: e[9] || (e[9] = R(() => M(), ["stop"]))
|
|
226
|
+
}, {
|
|
227
|
+
default: T(() => e[12] || (e[12] = [
|
|
228
|
+
k(" Hidden (secondary) ")
|
|
229
|
+
])),
|
|
230
|
+
_: 1
|
|
231
|
+
})) : s("", !0)
|
|
232
|
+
])) : s("", !0)
|
|
176
233
|
]);
|
|
177
234
|
};
|
|
178
235
|
}
|
|
179
236
|
});
|
|
180
237
|
export {
|
|
181
|
-
|
|
238
|
+
be as default
|
|
182
239
|
};
|
|
183
240
|
//# sourceMappingURL=Chart.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.js","sources":["../../../src/GraphMaker/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ChartInterface } from '@milaboratories/miplots4';\nimport { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport { ListOption, PlAutocomplete, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../../GraphMaker/components/DendroTable.vue';\nimport DendroTooltip from '../../GraphMaker/components/DendroTooltip.vue';\nimport LassoControls from '../../GraphMaker/components/LassoControls/index.vue';\nimport Loading from '../../GraphMaker/components/Loading.vue';\nimport Zoom from '../../GraphMaker/components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../GraphMaker/constantsCommon.ts';\nimport EditIcon from '../../GraphMaker/icons/EditIcon.vue';\nimport { useStore } from '../../GraphMaker/store.ts';\nimport { GraphStatus } from '../../GraphMaker/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}>();\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]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\nasync function loadOptions(sourceId:string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\nwatch(() => tabBySource.value, async (v) => {\n if (v === undefined) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n});\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\n\nfunction onFilterValueUpdate(value:string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value]\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\nasync function searchFilterOptions(sourceId:string, searchStr:string):Promise<ListOption[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId:string, selectedValue:string):Promise<ListOption> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: selectedValue });\n }\n const r = (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, 1, undefined, selectedValue)).values;\n return r[0];\n}\n\nconst chartContainerRef = ref();\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => {(e.target as HTMLInputElement)?.blur()}\" />\n <component class=\"chart_titleEdit\" :is=\"EditIcon\" />\n <div class=\"chart_titleLineSlot\">\n <slot></slot>\n </div>\n </div>\n <PlNotificationAlert\n type=\"success\"\n v-model=\"store.reactive.showTooltipHint\"\n class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div class=\"chart_tabBy\" v-if=\"tabBySource\">\n <pl-dropdown\n v-if=\"preloadedOptions\"\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options=\"preloadedOptions\"\n />\n <pl-autocomplete\n v-else\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\n />\n </div>\n <div class=\"chart_main-content\" ref=\"chartContainerRef\"\n :class=\"[{'chart_main-content__dendro': store.reactive.chartType === 'dendro'}, 'pl-scrollable']\">\n <div\n id=\"chartSvgContainer\"\n :class=\"{\n 'chart_loading': store.loading.initialCharts && graphStatus === 'ready',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_error': graphStatus === 'error',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <loading v-if=\"store.loading.initialCharts && graphStatus === 'ready'\" />\n </div>\n <dendro-table\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\"\n @row-select=\"onTableRowSelect\"\n />\n <dendro-tooltip\n v-if=\"store.reactive.dendroInfoByClick\"\n :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\"\n :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id:string) => $emit('dendro-tooltip-btn-click', id)\"\n @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div class=\"chart_controls\">\n <zoom v-if=\"graphStatus !== 'empty'\" />\n <lasso-controls v-if=\"graphStatus !== 'empty' && store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\"/>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","tabByLocalValue","value","prevValue","loadOptions","sourceId","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","target","onTableRowSelect","id","searchStr","searchSelectedFilterValueOptions","selectedValue","chartContainerRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.vue.js","sources":["../../../src/GraphMaker/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ChartInterface } from '@milaboratories/miplots4';\nimport { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport { ListOption, PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../../GraphMaker/components/DendroTable.vue';\nimport DendroTooltip from '../../GraphMaker/components/DendroTooltip.vue';\nimport LassoControls from '../../GraphMaker/components/LassoControls/index.vue';\nimport Loading from '../../GraphMaker/components/Loading.vue';\nimport Zoom from '../../GraphMaker/components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../../GraphMaker/constantsCommon.ts';\nimport EditIcon from '../../GraphMaker/icons/EditIcon.vue';\nimport { useStore } from '../../GraphMaker/store.ts';\nimport { GraphStatus } from '../../GraphMaker/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}>();\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]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\nasync function loadOptions(sourceId:string) {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH);\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[]|null|undefined>();\nwatch(() => tabBySource.value, async (v) => {\n if (v === undefined) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n});\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\n\nfunction onFilterValueUpdate(value:string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value]\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\nasync function searchFilterOptions(sourceId:string, searchStr:string):Promise<ListOption[]> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve([]);\n }\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchStr || undefined)).values;\n}\n\nasync function searchSelectedFilterValueOptions(sourceId:string, selectedValue:string):Promise<ListOption> {\n if (!store.value.columnsDataStore) {\n return Promise.resolve({ value: selectedValue, label: selectedValue });\n }\n const r = (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore, store.value.inputGuide.value, sourceId, 1, undefined, selectedValue)).values;\n return r[0];\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</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input class=\"chart_title\" :value=\"title\" @change=\"onTitleChange\"\n @keyup.enter=\"(e) => {(e.target as HTMLInputElement)?.blur()}\" />\n <component class=\"chart_titleEdit\" :is=\"EditIcon\" />\n <div class=\"chart_titleLineSlot\">\n <slot></slot>\n </div>\n </div>\n <PlNotificationAlert\n type=\"success\"\n v-model=\"store.reactive.showTooltipHint\"\n class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div class=\"chart_tabBy\" v-if=\"tabBySource\">\n <pl-dropdown\n v-if=\"preloadedOptions\"\n label=\"Show for\"\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options=\"preloadedOptions\"\n />\n <pl-autocomplete\n v-else\n v-model=\"tabByLocalValue\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n :options-search=\"(str) => searchFilterOptions(tabBySource as string, str)\"\n :model-search=\"(v) => searchSelectedFilterValueOptions(tabBySource as string, v as string)\"\n />\n </div>\n <div class=\"chart_main-content\" ref=\"chartContainerRef\"\n :class=\"[{'chart_main-content__dendro': store.reactive.chartType === 'dendro'}, 'pl-scrollable']\">\n <div\n id=\"chartSvgContainer\"\n :class=\"{\n 'chart_loading': store.loading.initialCharts && graphStatus === 'ready',\n 'chart_noDataMapping': graphStatus === 'notReady',\n 'chart_emptyData': graphStatus === 'empty',\n 'chart_inconsistent': graphStatus === 'inconsistent',\n 'chart_error': graphStatus === 'error',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n >\n <loading v-if=\"store.loading.initialCharts && graphStatus === 'ready'\" />\n </div>\n <dendro-table\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\"\n @row-select=\"onTableRowSelect\"\n />\n <dendro-tooltip\n v-if=\"store.reactive.dendroInfoByClick\"\n :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\"\n :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id:string) => $emit('dendro-tooltip-btn-click', id)\"\n @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div class=\"chart_controls\" v-if=\"graphStatus !== 'empty'\">\n <zoom />\n <lasso-controls 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","tabByLocalValue","value","prevValue","loadOptions","sourceId","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","searchSelectedFilterValueOptions","selectedValue","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscreteAxesSettingsForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DiscreteAxesSettingsForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"names":[],"mappings":";AAymCA,wBAMG"}
|