@milaboratories/graph-maker 1.1.150 → 1.1.152
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/AesDataMappingDiscrete.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js +2 -1
- package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
- package/dist/GraphMaker/components/Chart.vue.js +3 -3
- package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +3 -12
- package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +42 -85
- package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts +1 -9
- package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +44 -89
- package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts +1 -3
- package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +68 -86
- package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +7 -11
- package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +48 -91
- package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
- package/dist/GraphMaker/components/DragAndDrop/types.d.ts +1 -21
- package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
- package/dist/GraphMaker/components/PlColorSliderThumb.vue.js +18 -18
- package/dist/GraphMaker/components/PlColorSliderThumb.vue.js.map +1 -1
- package/dist/GraphMaker/constantsCommon.d.ts +0 -1
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +95 -95
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +128 -166
- package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +93 -131
- package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/utils.js +79 -155
- package/dist/GraphMaker/forms/DataMappingForm/utils.js.map +1 -1
- package/dist/GraphMaker/forms/index.js +2 -2
- package/dist/GraphMaker/forms/index.js.map +1 -1
- package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts +3 -0
- package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts.map +1 -0
- package/dist/GraphMaker/icons/StackedAreaIcon.vue.js +19 -0
- package/dist/GraphMaker/icons/StackedAreaIcon.vue.js.map +1 -0
- package/dist/GraphMaker/index.vue.js +1 -1
- package/dist/GraphMaker/store.d.ts.map +1 -1
- package/dist/GraphMaker/store.js +43 -45
- package/dist/GraphMaker/store.js.map +1 -1
- package/dist/GraphMaker/types.d.ts +1 -1
- package/dist/GraphMaker/types.d.ts.map +1 -1
- package/dist/GraphMaker/utils/addFixedOptionsToState.js +2 -2
- package/dist/GraphMaker/utils/addFixedOptionsToState.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js +25 -25
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.d.ts +2 -3
- package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.js +47 -51
- package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +39 -41
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
- package/dist/lib.js +1 -1
- package/dist/node_modules/@milaboratories/helpers/dist/objects.js +33 -0
- package/dist/node_modules/@milaboratories/helpers/dist/objects.js.map +1 -0
- package/dist/node_modules/@milaboratories/helpers/dist/utils.js +12 -0
- package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +6 -5
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +146 -149
- 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 +168 -221
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +95 -102
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +145 -156
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +68 -75
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +154 -159
- 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/histogram.js +48 -55
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +114 -122
- 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 +111 -119
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +70 -69
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +2 -2
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +184 -183
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
- package/dist/node_modules/@vueuse/shared/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/node_modules/@milaboratories/helpers/dist/index.js +0 -372
- package/dist/node_modules/@milaboratories/helpers/dist/index.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { FORMAT as
|
|
4
|
-
import { ControllerBase as
|
|
1
|
+
import z from "../../_virtual/canonicalize.js";
|
|
2
|
+
import E from "../../_virtual/lodash.js";
|
|
3
|
+
import { FORMAT as P } from "../../constants.js";
|
|
4
|
+
import { ControllerBase as M } from "../ControllerBase.js";
|
|
5
5
|
import { ComponentController as c } from "../ComponentController.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
var
|
|
9
|
-
const
|
|
6
|
+
import { AxisId as T, columnOrAxisIdFromString as h, isColumnId as C } from "../../spec.js";
|
|
7
|
+
import { createLinkerMap as q, createMultipliesByMap as Y, getFiltersFromStates as W, getAxesSpecsFromSources as X, getLinkerColumnsForSource as $, getColumnOrAxisValueLabelsId as b, createHighlightColumn as H, getColumnOrAxisLabel as A, getColumnOrAxisSpec as N } from "../../utils.js";
|
|
8
|
+
var U = Object.defineProperty, j = (w, e, t) => e in w ? U(w, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : w[e] = t, k = (w, e, t) => j(w, typeof e != "symbol" ? e + "" : e, t);
|
|
9
|
+
const _ = {
|
|
10
10
|
type: "scatterplot-umap",
|
|
11
11
|
components: {
|
|
12
12
|
x: { type: "simple", selectorStates: [] },
|
|
@@ -22,7 +22,7 @@ const oe = {
|
|
|
22
22
|
},
|
|
23
23
|
dividedAxes: {}
|
|
24
24
|
};
|
|
25
|
-
class
|
|
25
|
+
class ee extends M {
|
|
26
26
|
constructor() {
|
|
27
27
|
super(
|
|
28
28
|
{
|
|
@@ -119,8 +119,7 @@ class ne extends X {
|
|
|
119
119
|
axesAllowed: !0,
|
|
120
120
|
dimensionConsumer: !0,
|
|
121
121
|
multipleSelectors: !0
|
|
122
|
-
}
|
|
123
|
-
checkSourceBySpec: k
|
|
122
|
+
}
|
|
124
123
|
}),
|
|
125
124
|
tabBy: new c({
|
|
126
125
|
componentName: "tabBy",
|
|
@@ -143,173 +142,166 @@ class ne extends X {
|
|
|
143
142
|
axesAllowed: !0,
|
|
144
143
|
columnsAllowed: !0,
|
|
145
144
|
multipleSelectors: !0
|
|
146
|
-
}
|
|
147
|
-
checkSourceBySpec: k
|
|
145
|
+
}
|
|
148
146
|
})
|
|
149
147
|
}
|
|
150
|
-
),
|
|
148
|
+
), k(this, "dataInputs", ["x", "y"]), k(this, "allowHangingAxes", !0);
|
|
151
149
|
}
|
|
152
|
-
|
|
150
|
+
getMustBeConsumedAxes(e, t) {
|
|
153
151
|
if (!e.components.x.selectorStates.length || !e.components.y.selectorStates.length)
|
|
154
152
|
return /* @__PURE__ */ new Set();
|
|
155
|
-
const y = e.components.x.selectorStates[0].selectedSource,
|
|
156
|
-
if (!u ||
|
|
153
|
+
const y = e.components.x.selectorStates[0].selectedSource, S = e.components.y.selectorStates[0].selectedSource, p = t.get(y), u = t.get(S);
|
|
154
|
+
if (!p || !u || p.kind !== "column" || u.kind !== "column")
|
|
157
155
|
return /* @__PURE__ */ new Set();
|
|
158
|
-
const
|
|
159
|
-
return /* @__PURE__ */ new Set([...
|
|
156
|
+
const l = p.spec.axesSpec.map((n) => T.fromAxisSpec(n).toCanonicalString()), a = u.spec.axesSpec.map((n) => T.fromAxisSpec(n).toCanonicalString()), r = l.filter((n) => !a.some((d) => d === n)), m = a.filter((n) => !l.some((d) => d === n));
|
|
157
|
+
return r.length && m.length ? /* @__PURE__ */ new Set([...r, ...m]) : /* @__PURE__ */ new Set();
|
|
160
158
|
}
|
|
161
|
-
async createDataByColumns(
|
|
162
|
-
var y,
|
|
163
|
-
const
|
|
164
|
-
if (!
|
|
159
|
+
async createDataByColumns(e, t) {
|
|
160
|
+
var y, S;
|
|
161
|
+
const p = (y = t.components.x.selectorStates[0]) == null ? void 0 : y.selectedSource, u = (S = t.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource;
|
|
162
|
+
if (!p || !u)
|
|
165
163
|
throw Error("X or Y column is not valid");
|
|
166
|
-
const
|
|
167
|
-
if (!
|
|
164
|
+
const l = h(p), a = h(u);
|
|
165
|
+
if (!l || !a)
|
|
168
166
|
throw Error("X or Y column is not valid");
|
|
169
|
-
const
|
|
167
|
+
const r = {
|
|
170
168
|
type: "columns",
|
|
171
|
-
id:
|
|
169
|
+
id: z(t.components) ?? "",
|
|
172
170
|
values: {}
|
|
173
|
-
},
|
|
174
|
-
...
|
|
175
|
-
...
|
|
176
|
-
],
|
|
177
|
-
if (
|
|
171
|
+
}, m = await q(e), n = await Y(e), d = [
|
|
172
|
+
...t.components.filters.selectorStates,
|
|
173
|
+
...t.components.tabBy.selectorStates
|
|
174
|
+
], I = W(d), O = d.map((s) => h(s.selectedSource)).filter(C), v = [l, a].filter(C).map((s) => s.toCanonicalString());
|
|
175
|
+
if (v.length === 0)
|
|
178
176
|
throw Error("One of X and Y should be a column");
|
|
179
|
-
const
|
|
180
|
-
for (const { selectedSource:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
177
|
+
const D = await X(e, v), B = [l, a, ...O], x = [], f = [];
|
|
178
|
+
for (const { selectedSource: s } of d)
|
|
179
|
+
f.push(...await $(
|
|
180
|
+
e,
|
|
181
|
+
m,
|
|
182
|
+
n,
|
|
183
|
+
D,
|
|
186
184
|
s
|
|
187
|
-
))
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
e.components.highlight,
|
|
196
|
-
e.components.size
|
|
185
|
+
));
|
|
186
|
+
const L = [
|
|
187
|
+
t.components.grouping,
|
|
188
|
+
t.components.facetBy,
|
|
189
|
+
t.components.tooltipContent,
|
|
190
|
+
t.components.label,
|
|
191
|
+
t.components.highlight,
|
|
192
|
+
t.components.size
|
|
197
193
|
];
|
|
198
|
-
for (const
|
|
199
|
-
for (const { selectedSource:
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
s,
|
|
207
|
-
x
|
|
194
|
+
for (const s of L)
|
|
195
|
+
for (const { selectedSource: i } of s.selectorStates) {
|
|
196
|
+
x.push(h(i)), f.push(...await $(
|
|
197
|
+
e,
|
|
198
|
+
m,
|
|
199
|
+
n,
|
|
200
|
+
D,
|
|
201
|
+
i
|
|
208
202
|
));
|
|
209
|
-
const
|
|
210
|
-
|
|
203
|
+
const g = await b(e, i, v);
|
|
204
|
+
g && x.push(g);
|
|
211
205
|
}
|
|
212
|
-
const
|
|
213
|
-
[
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
!1
|
|
217
|
-
F,
|
|
218
|
-
A
|
|
206
|
+
const o = await e.pFrameProvider.getTableOuterJoin(
|
|
207
|
+
[l, a, ...f, ...O],
|
|
208
|
+
x,
|
|
209
|
+
I,
|
|
210
|
+
!1
|
|
219
211
|
);
|
|
220
|
-
return [...
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
}),
|
|
224
|
-
byColumns:
|
|
225
|
-
axesData:
|
|
212
|
+
return [...B, ...x].forEach((s) => {
|
|
213
|
+
const i = s.toCanonicalString();
|
|
214
|
+
r.values[i] = C(s) ? o.columnsData[i] : o.axesData[i];
|
|
215
|
+
}), t.components.highlight.selectorStates.length && (r.values.highlight = H(t.components.highlight.selectorStates, o)), {
|
|
216
|
+
byColumns: r,
|
|
217
|
+
axesData: o.axesData
|
|
226
218
|
};
|
|
227
219
|
}
|
|
228
|
-
async createChartSettings(
|
|
229
|
-
var y,
|
|
230
|
-
const
|
|
231
|
-
if (!
|
|
220
|
+
async createChartSettings(e, t) {
|
|
221
|
+
var y, S, p, u;
|
|
222
|
+
const l = (y = t.components.x.selectorStates[0]) == null ? void 0 : y.selectedSource, a = (S = t.components.y.selectorStates[0]) == null ? void 0 : S.selectedSource, r = l ? h(l) : null, m = a ? h(a) : null;
|
|
223
|
+
if (!l || !a || !r || !m || !C(r) && !C(m))
|
|
232
224
|
throw Error("Empty or invalid required data");
|
|
233
|
-
const n = [
|
|
225
|
+
const n = [r, m].filter(C).map((o) => o.toCanonicalString()), d = {
|
|
234
226
|
type: "column",
|
|
235
|
-
value:
|
|
236
|
-
label: await
|
|
227
|
+
value: l,
|
|
228
|
+
label: await A(e, l, n)
|
|
237
229
|
}, I = {
|
|
238
230
|
type: "column",
|
|
239
|
-
value:
|
|
240
|
-
label: await
|
|
241
|
-
},
|
|
231
|
+
value: a,
|
|
232
|
+
label: await A(e, a, n)
|
|
233
|
+
}, O = {
|
|
242
234
|
type: "column",
|
|
243
235
|
value: "key"
|
|
244
|
-
},
|
|
245
|
-
|
|
246
|
-
var
|
|
236
|
+
}, v = await Promise.all(
|
|
237
|
+
t.components.facetBy.selectorStates.map(async (o) => {
|
|
238
|
+
var s;
|
|
247
239
|
return {
|
|
248
240
|
type: "column",
|
|
249
|
-
value: ((
|
|
241
|
+
value: ((s = await b(e, o.selectedSource, n)) == null ? void 0 : s.toCanonicalString()) ?? o.selectedSource
|
|
250
242
|
};
|
|
251
243
|
})
|
|
252
|
-
),
|
|
253
|
-
...
|
|
254
|
-
...
|
|
255
|
-
]),
|
|
256
|
-
|
|
257
|
-
var
|
|
244
|
+
), D = E.uniq([
|
|
245
|
+
...t.components.grouping.selectorStates.map((o) => o.selectedSource),
|
|
246
|
+
...t.components.size.selectorStates.map((o) => o.selectedSource)
|
|
247
|
+
]), B = await Promise.all(
|
|
248
|
+
D.map(async (o) => {
|
|
249
|
+
var s;
|
|
258
250
|
return {
|
|
259
251
|
columnName: {
|
|
260
252
|
type: "column",
|
|
261
|
-
label: await
|
|
253
|
+
label: await A(e, o, n) || o,
|
|
262
254
|
value: o,
|
|
263
|
-
valueLabels: ((
|
|
255
|
+
valueLabels: ((s = await b(e, o, n)) == null ? void 0 : s.toCanonicalString()) ?? o
|
|
264
256
|
}
|
|
265
257
|
};
|
|
266
258
|
})
|
|
267
|
-
),
|
|
268
|
-
|
|
269
|
-
var
|
|
270
|
-
const
|
|
259
|
+
), x = await Promise.all(
|
|
260
|
+
t.components.tooltipContent.selectorStates.map(async (o) => {
|
|
261
|
+
var s, i;
|
|
262
|
+
const g = o.selectedSource, F = await N(e, g, n);
|
|
271
263
|
return {
|
|
272
264
|
type: "column",
|
|
273
|
-
label: await
|
|
274
|
-
value:
|
|
275
|
-
valueLabels: ((
|
|
276
|
-
format: (i =
|
|
265
|
+
label: await A(e, g, n) || g,
|
|
266
|
+
value: g,
|
|
267
|
+
valueLabels: ((s = await b(e, g, n)) == null ? void 0 : s.toCanonicalString()) ?? g,
|
|
268
|
+
format: (i = F == null ? void 0 : F.annotations) == null ? void 0 : i[P]
|
|
277
269
|
};
|
|
278
270
|
})
|
|
279
271
|
);
|
|
280
|
-
let
|
|
281
|
-
if (
|
|
282
|
-
const o =
|
|
283
|
-
|
|
272
|
+
let f;
|
|
273
|
+
if (t.components.label.selectorStates.length) {
|
|
274
|
+
const o = t.components.label.selectorStates[0].selectedSource, s = await N(e, o, n);
|
|
275
|
+
f = {
|
|
284
276
|
type: "column",
|
|
285
277
|
value: o,
|
|
286
|
-
label: await
|
|
287
|
-
valueLabels: ((
|
|
288
|
-
format: (
|
|
278
|
+
label: await A(e, o, n),
|
|
279
|
+
valueLabels: ((p = await b(e, o, n)) == null ? void 0 : p.toCanonicalString()) ?? o,
|
|
280
|
+
format: (u = s == null ? void 0 : s.annotations) == null ? void 0 : u[P]
|
|
289
281
|
};
|
|
290
282
|
}
|
|
291
|
-
let
|
|
292
|
-
return
|
|
283
|
+
let L;
|
|
284
|
+
return t.components.highlight.selectorStates.length && (L = {
|
|
293
285
|
type: "column",
|
|
294
286
|
value: "highlight"
|
|
295
287
|
}), {
|
|
296
288
|
type: "scatterplot-umap",
|
|
297
|
-
x:
|
|
289
|
+
x: d,
|
|
298
290
|
y: I,
|
|
299
|
-
keyColumn:
|
|
300
|
-
facetBy:
|
|
301
|
-
grouping:
|
|
302
|
-
label:
|
|
303
|
-
highlight:
|
|
291
|
+
keyColumn: O,
|
|
292
|
+
facetBy: v,
|
|
293
|
+
grouping: B,
|
|
294
|
+
label: f,
|
|
295
|
+
highlight: L,
|
|
304
296
|
tooltips: {
|
|
305
297
|
show: !0,
|
|
306
|
-
content:
|
|
298
|
+
content: x
|
|
307
299
|
}
|
|
308
300
|
};
|
|
309
301
|
}
|
|
310
302
|
}
|
|
311
303
|
export {
|
|
312
|
-
|
|
313
|
-
|
|
304
|
+
_ as InitialScatterplotUmapState,
|
|
305
|
+
ee as ScatterplotUmapStateController
|
|
314
306
|
};
|
|
315
307
|
//# sourceMappingURL=scatterplot-umap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scatterplot-umap.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/scatterplot-umap.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport lodash from 'lodash';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport {FORMAT} from '../../constants';\nimport {PValue} from '../../store';\nimport {ControllerBase, PlotDataAndSettings} from '../ControllerBase';\nimport {ComponentController} from '../ComponentController';\nimport {AxisId, ColumnId} from '../../spec';\nimport {columnOrAxisIdFromString, isColumnId} from '../../spec';\nimport type {DataStore} from '../../store';\nimport {\n checkSourceBySpecForFilters,\n createHighlightColumn,\n createLinkerMap,\n getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates,\n getLinkerColumnsForSource,\n} from '../../utils';\n\nexport interface ScatterplotUmapUIState extends InputStateParent<'scatterplot-umap'> {\n type: 'scatterplot-umap';\n components: {\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n highlight: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n grouping: ComponentStateSimple;\n label: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n size: ComponentStateSimple;\n };\n}\n\nexport const InitialScatterplotUmapState: ScatterplotUmapUIState = {\n type: 'scatterplot-umap',\n components: {\n x: {type: 'simple', selectorStates: []},\n y: {type: 'simple', selectorStates: []},\n filters: {type: 'filter', selectorStates: []},\n highlight: {type: 'filter', selectorStates: []},\n tabBy: {type: 'filter', selectorStates: []},\n facetBy: {type: 'simple', selectorStates: []},\n grouping: {type: 'simple', selectorStates: []},\n label: {type: 'simple', selectorStates: []},\n tooltipContent: {type: 'simple', selectorStates: []},\n size: {type: 'simple', selectorStates: []},\n },\n dividedAxes: {},\n};\n\nexport class ScatterplotUmapStateController extends ControllerBase<ScatterplotUmapUIState> {\n dataInputs = ['x', 'y'];\n\n constructor() {\n super(\n {\n x: new ComponentController<ScatterplotUmapUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'Long', 'Double' , 'Float'],\n parentComponents: ['y'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n y: new ComponentController<ScatterplotUmapUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['x'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n facetBy: new ComponentController<ScatterplotUmapUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n grouping: new ComponentController<ScatterplotUmapUIState, 'grouping'>({\n componentName: 'grouping',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n tooltipContent: new ComponentController<ScatterplotUmapUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n label: new ComponentController<ScatterplotUmapUIState, 'label'>({\n componentName: 'label',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: false,\n },\n }),\n size: new ComponentController<ScatterplotUmapUIState, 'size'>({\n componentName: 'size',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n },\n }),\n },\n {\n filters: new ComponentController<ScatterplotUmapUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n checkSourceBySpec: checkSourceBySpecForFilters\n }),\n tabBy: new ComponentController<ScatterplotUmapUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n highlight: new ComponentController<ScatterplotUmapUIState, 'highlight'>({\n componentName: 'highlight',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: true,\n },\n checkSourceBySpec: checkSourceBySpecForFilters\n }),\n }\n );\n }\n\n async getMustBeConsumedAxes(store: DataStore, state: ScatterplotUmapUIState):Promise<Set<string>> {\n if (!state.components.x.selectorStates.length || !state.components.y.selectorStates.length) {\n return new Set<string>();\n }\n const sourceIdX = state.components.x.selectorStates[0].selectedSource;\n const sourceIdY = state.components.y.selectorStates[0].selectedSource;\n const specX = await store.pFrameProvider.getColumnSpecById(columnOrAxisIdFromString(sourceIdX));\n const specY = await store.pFrameProvider.getColumnSpecById(columnOrAxisIdFromString(sourceIdY));\n if (!specX || !specY) {\n return new Set<string>();\n }\n const axesX = specX.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const axesY = specY.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const hangingX = axesX.filter(axisKey => !axesY.some(id => id === axisKey));\n const hangingY = axesY.filter(axisKey => !axesX.some(id => id === axisKey));\n\n return new Set<string>([...hangingX, ...hangingY])\n }\n\n async createDataByColumns(store: DataStore, state: ScatterplotUmapUIState): Promise<PlotDataAndSettings['data']> {\n const xColumnIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yColumnIdString = state.components.y.selectorStates[0]?.selectedSource;\n if (!xColumnIdString || !yColumnIdString) {\n throw Error('X or Y column is not valid');\n }\n const xId = columnOrAxisIdFromString(xColumnIdString);\n const yId = columnOrAxisIdFromString(yColumnIdString);\n if (!xId || !yId) {\n throw Error('X or Y column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const parentSources = [xId, yId].filter(isColumnId).map(item => item.toCanonicalString());\n if (parentSources.length === 0) {\n throw Error('One of X and Y should be a column');\n }\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n\n const primarySources = [xId, yId, ...filterColumns];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const primarySourcesFixedAxes:{idx: number, value: PValue}[][] = [[], []];\n const secondarySourcesFixedAxes:{idx: number, value: PValue}[][] = [];\n const linkerColumns:ColumnId[] = [];\n\n for (const {selectedSource, fixedAxes} of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n primarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n }\n\n const inputs = [\n state.components.grouping,\n state.components.facetBy,\n state.components.tooltipContent,\n state.components.label,\n state.components.highlight,\n state.components.size,\n ];\n for (const input of inputs) {\n for (const {selectedSource, fixedAxes} of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n secondarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [xId, yId, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n false,\n primarySourcesFixedAxes,\n secondarySourcesFixedAxes\n );\n\n [...primarySources, ...secondarySources].forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item) ? data.columnsData[key] : data.axesData[key];\n });\n\n if (state.components.highlight.selectorStates.length) {\n dataByColumns.values['highlight'] = createHighlightColumn(state.components.highlight.selectorStates, data) as PValue[];\n }\n\n return {\n byColumns: dataByColumns,\n axesData: data.axesData\n };\n }\n\n async createChartSettings(store: DataStore, state: ScatterplotUmapUIState): Promise<Record<string, unknown>> {\n const xIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yIdString = state.components.y.selectorStates[0]?.selectedSource;\n const xIdWithQ = xIdString ? columnOrAxisIdFromString(xIdString) : null;\n const yIdWithQ = yIdString ? columnOrAxisIdFromString(yIdString) : null;\n if (!xIdString || !yIdString || !xIdWithQ || !yIdWithQ || (!isColumnId(xIdWithQ) && !isColumnId(yIdWithQ))) {\n throw Error('Empty or invalid required data');\n }\n\n const parentSources = [xIdWithQ, yIdWithQ].filter(isColumnId).map(item => item.toCanonicalString());\n const x = {\n type: 'column',\n value: xIdString,\n label: await getColumnOrAxisLabel(store, xIdString, parentSources),\n };\n const y = {\n type: 'column',\n value: yIdString,\n label: await getColumnOrAxisLabel(store, yIdString, parentSources),\n };\n const keyColumn = {\n type: 'column',\n value: 'key',\n };\n const facetBy = await Promise.all(\n state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n const allGroupingIds = lodash.uniq([\n ...state.components.grouping.selectorStates.map(s => s.selectedSource),\n ...state.components.size.selectorStates.map(s => s.selectedSource),\n ]);\n const grouping = await Promise.all(\n allGroupingIds.map(async idString => {\n return {\n columnName: {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, idString, parentSources)) || idString,\n value: idString,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, idString, parentSources))?.toCanonicalString() ??\n idString,\n }\n }\n })\n );\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT]\n };\n })\n );\n\n let label;\n if (state.components.label.selectorStates.length) {\n const source = state.components.label.selectorStates[0].selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n label = {\n type: 'column',\n value: source,\n label: await getColumnOrAxisLabel(store, source, parentSources),\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT]\n };\n }\n\n let highlight;\n if (state.components.highlight.selectorStates.length) {\n highlight = {\n type: 'column',\n value: 'highlight'\n }\n }\n return {\n type: 'scatterplot-umap',\n x,\n y,\n keyColumn,\n facetBy,\n grouping,\n label,\n highlight,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialScatterplotUmapState","ScatterplotUmapStateController","ControllerBase","ComponentController","checkSourceBySpecForFilters","__publicField","store","state","sourceIdX","sourceIdY","specX","columnOrAxisIdFromString","specY","axesX","s","AxisId","axesY","hangingX","axisKey","id","hangingY","xColumnIdString","_a","yColumnIdString","_b","xId","yId","dataByColumns","canonicalize","linkerMap","createLinkerMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","isColumnId","parentSources","item","parentAxesList","getAxesSpecsFromSources","primarySources","secondarySources","primarySourcesFixedAxes","secondarySourcesFixedAxes","linkerColumns","selectedSource","fixedAxes","getLinkerColumnsForSource","axisIdx","axisValue","inputs","input","labelsColumnId","getColumnOrAxisValueLabelsId","data","key","createHighlightColumn","xIdString","yIdString","xIdWithQ","yIdWithQ","x","getColumnOrAxisLabel","y","keyColumn","facetBy","selectorState","allGroupingIds","lodash","grouping","idString","tooltipContent","source","spec","getColumnOrAxisSpec","FORMAT","label","_c","_d","highlight"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"scatterplot-umap.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/scatterplot-umap.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport lodash from 'lodash';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport { FORMAT } from '../../constants';\nimport { PValue } from '../../store';\nimport { ControllerBase, PlotDataAndSettings } from '../ControllerBase';\nimport { ComponentController } from '../ComponentController';\nimport { AxisId, ColumnId } from '../../spec';\nimport { columnOrAxisIdFromString, isColumnId } from '../../spec';\nimport type { DataStore } from '../../store';\nimport {\n createHighlightColumn,\n createLinkerMap,\n createMultipliesByMap,\n getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates,\n getLinkerColumnsForSource,\n OptionsInfo,\n} from '../../utils';\n\nexport interface ScatterplotUmapUIState extends InputStateParent<'scatterplot-umap'> {\n type: 'scatterplot-umap';\n components: {\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n highlight: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n grouping: ComponentStateSimple;\n label: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n size: ComponentStateSimple;\n };\n}\n\nexport const InitialScatterplotUmapState: ScatterplotUmapUIState = {\n type: 'scatterplot-umap',\n components: {\n x: { type: 'simple', selectorStates: [] },\n y: { type: 'simple', selectorStates: [] },\n filters: { type: 'filter', selectorStates: [] },\n highlight: { type: 'filter', selectorStates: [] },\n tabBy: { type: 'filter', selectorStates: [] },\n facetBy: { type: 'simple', selectorStates: [] },\n grouping: { type: 'simple', selectorStates: [] },\n label: { type: 'simple', selectorStates: [] },\n tooltipContent: { type: 'simple', selectorStates: [] },\n size: { type: 'simple', selectorStates: [] },\n },\n dividedAxes: {},\n};\n\nexport class ScatterplotUmapStateController extends ControllerBase<ScatterplotUmapUIState> {\n dataInputs = ['x', 'y'];\n allowHangingAxes = true;\n\n constructor() {\n super(\n {\n x: new ComponentController<ScatterplotUmapUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['y'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n y: new ComponentController<ScatterplotUmapUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n parentComponents: ['x'],\n strictlyDependsOnParents: false,\n settings: {\n isDataComponent: true,\n required: true,\n axesAllowed: true,\n columnsAllowed: true,\n },\n }),\n facetBy: new ComponentController<ScatterplotUmapUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n }),\n grouping: new ComponentController<ScatterplotUmapUIState, 'grouping'>({\n componentName: 'grouping',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n tooltipContent: new ComponentController<ScatterplotUmapUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n label: new ComponentController<ScatterplotUmapUIState, 'label'>({\n componentName: 'label',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: false,\n },\n }),\n size: new ComponentController<ScatterplotUmapUIState, 'size'>({\n componentName: 'size',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n },\n }),\n },\n {\n filters: new ComponentController<ScatterplotUmapUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n }\n }),\n tabBy: new ComponentController<ScatterplotUmapUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n highlight: new ComponentController<ScatterplotUmapUIState, 'highlight'>({\n componentName: 'highlight',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['x', 'y'],\n dependsOn: ['x', 'y'],\n settings: {\n axesAllowed: true,\n columnsAllowed: true,\n multipleSelectors: true,\n }\n }),\n }\n );\n }\n\n getMustBeConsumedAxes(state: ScatterplotUmapUIState, optionsInfo: OptionsInfo): Set<string> {\n if (!state.components.x.selectorStates.length || !state.components.y.selectorStates.length) {\n return new Set<string>();\n }\n const sourceIdX = state.components.x.selectorStates[0].selectedSource;\n const sourceIdY = state.components.y.selectorStates[0].selectedSource;\n const dataX = optionsInfo.get(sourceIdX);\n const dataY = optionsInfo.get(sourceIdY);\n if (!dataX || !dataY || dataX.kind !== 'column' || dataY.kind !== 'column') {\n return new Set<string>();\n }\n const axesX = dataX.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const axesY = dataY.spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString());\n const hangingX = axesX.filter(axisKey => !axesY.some(id => id === axisKey));\n const hangingY = axesY.filter(axisKey => !axesX.some(id => id === axisKey));\n\n if (hangingX.length && hangingY.length) {\n return new Set<string>([...hangingX, ...hangingY])\n }\n return new Set<string>();\n }\n\n async createDataByColumns(store: DataStore, state: ScatterplotUmapUIState): Promise<PlotDataAndSettings['data']> {\n const xColumnIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yColumnIdString = state.components.y.selectorStates[0]?.selectedSource;\n if (!xColumnIdString || !yColumnIdString) {\n throw Error('X or Y column is not valid');\n }\n const xId = columnOrAxisIdFromString(xColumnIdString);\n const yId = columnOrAxisIdFromString(yColumnIdString);\n if (!xId || !yId) {\n throw Error('X or Y column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n const multipliesByMap = await createMultipliesByMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const parentSources = [xId, yId].filter(isColumnId).map(item => item.toCanonicalString());\n if (parentSources.length === 0) {\n throw Error('One of X and Y should be a column');\n }\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n\n const primarySources = [xId, yId, ...filterColumns];\n const secondarySources: (ColumnId | AxisId)[] = [];\n const linkerColumns: ColumnId[] = [];\n\n for (const { selectedSource } of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource,\n ));\n }\n\n const inputs = [\n state.components.grouping,\n state.components.facetBy,\n state.components.tooltipContent,\n state.components.label,\n state.components.highlight,\n state.components.size,\n ];\n for (const input of inputs) {\n for (const { selectedSource } of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n multipliesByMap,\n parentAxesList,\n selectedSource\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [xId, yId, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n false\n );\n\n [...primarySources, ...secondarySources].forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item) ? data.columnsData[key] : data.axesData[key];\n });\n\n if (state.components.highlight.selectorStates.length) {\n dataByColumns.values['highlight'] = createHighlightColumn(state.components.highlight.selectorStates, data) as PValue[];\n }\n\n return {\n byColumns: dataByColumns,\n axesData: data.axesData\n };\n }\n\n async createChartSettings(store: DataStore, state: ScatterplotUmapUIState): Promise<Record<string, unknown>> {\n const xIdString = state.components.x.selectorStates[0]?.selectedSource;\n const yIdString = state.components.y.selectorStates[0]?.selectedSource;\n const xIdWithQ = xIdString ? columnOrAxisIdFromString(xIdString) : null;\n const yIdWithQ = yIdString ? columnOrAxisIdFromString(yIdString) : null;\n if (!xIdString || !yIdString || !xIdWithQ || !yIdWithQ || (!isColumnId(xIdWithQ) && !isColumnId(yIdWithQ))) {\n throw Error('Empty or invalid required data');\n }\n\n const parentSources = [xIdWithQ, yIdWithQ].filter(isColumnId).map(item => item.toCanonicalString());\n const x = {\n type: 'column',\n value: xIdString,\n label: await getColumnOrAxisLabel(store, xIdString, parentSources),\n };\n const y = {\n type: 'column',\n value: yIdString,\n label: await getColumnOrAxisLabel(store, yIdString, parentSources),\n };\n const keyColumn = {\n type: 'column',\n value: 'key',\n };\n const facetBy = await Promise.all(\n state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n }))\n );\n const allGroupingIds = lodash.uniq([\n ...state.components.grouping.selectorStates.map(s => s.selectedSource),\n ...state.components.size.selectorStates.map(s => s.selectedSource),\n ]);\n const grouping = await Promise.all(\n allGroupingIds.map(async idString => {\n return {\n columnName: {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, idString, parentSources)) || idString,\n value: idString,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, idString, parentSources))?.toCanonicalString() ??\n idString,\n }\n }\n })\n );\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT]\n };\n })\n );\n\n let label;\n if (state.components.label.selectorStates.length) {\n const source = state.components.label.selectorStates[0].selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n label = {\n type: 'column',\n value: source,\n label: await getColumnOrAxisLabel(store, source, parentSources),\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT]\n };\n }\n\n let highlight;\n if (state.components.highlight.selectorStates.length) {\n highlight = {\n type: 'column',\n value: 'highlight'\n }\n }\n return {\n type: 'scatterplot-umap',\n x,\n y,\n keyColumn,\n facetBy,\n grouping,\n label,\n highlight,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialScatterplotUmapState","ScatterplotUmapStateController","ControllerBase","ComponentController","__publicField","state","optionsInfo","sourceIdX","sourceIdY","dataX","dataY","axesX","s","AxisId","axesY","hangingX","axisKey","id","hangingY","store","xColumnIdString","_a","yColumnIdString","_b","xId","columnOrAxisIdFromString","yId","dataByColumns","canonicalize","linkerMap","createLinkerMap","multipliesByMap","createMultipliesByMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","isColumnId","parentSources","item","parentAxesList","getAxesSpecsFromSources","primarySources","secondarySources","linkerColumns","selectedSource","getLinkerColumnsForSource","inputs","input","labelsColumnId","getColumnOrAxisValueLabelsId","data","key","createHighlightColumn","xIdString","yIdString","xIdWithQ","yIdWithQ","x","getColumnOrAxisLabel","y","keyColumn","facetBy","selectorState","allGroupingIds","lodash","grouping","idString","tooltipContent","source","spec","getColumnOrAxisSpec","FORMAT","label","_c","_d","highlight"],"mappings":"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","x_google_ignoreList":[0]}
|