@haniffalab/cherita-react 1.4.1-dev.2025-08-13.6fc43290 → 1.4.1-dev.2025-08-13.8f63c242
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/cjs/components/dotplot/Dotplot.js +12 -16
- package/dist/cjs/components/heatmap/Heatmap.js +11 -16
- package/dist/cjs/components/matrixplot/Matrixplot.js +11 -16
- package/dist/cjs/components/obs-list/ObsItem.js +14 -14
- package/dist/cjs/components/obs-list/ObsList.js +24 -23
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +25 -31
- package/dist/cjs/components/scatterplot/Scatterplot.js +14 -23
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +9 -3
- package/dist/cjs/components/var-list/VarList.js +16 -14
- package/dist/cjs/components/violin/Violin.js +21 -25
- package/dist/cjs/context/DatasetContext.js +4 -4
- package/dist/cjs/context/SettingsContext.js +175 -40
- package/dist/cjs/utils/Filter.js +15 -10
- package/dist/cjs/utils/Resolver.js +188 -0
- package/dist/cjs/utils/zarrData.js +16 -17
- package/dist/esm/components/dotplot/Dotplot.js +12 -16
- package/dist/esm/components/heatmap/Heatmap.js +11 -16
- package/dist/esm/components/matrixplot/Matrixplot.js +11 -16
- package/dist/esm/components/obs-list/ObsItem.js +14 -14
- package/dist/esm/components/obs-list/ObsList.js +24 -23
- package/dist/esm/components/pseudospatial/Pseudospatial.js +25 -31
- package/dist/esm/components/scatterplot/Scatterplot.js +14 -23
- package/dist/esm/components/scatterplot/ScatterplotControls.js +9 -3
- package/dist/esm/components/var-list/VarList.js +16 -14
- package/dist/esm/components/violin/Violin.js +21 -25
- package/dist/esm/context/DatasetContext.js +4 -4
- package/dist/esm/context/SettingsContext.js +176 -41
- package/dist/esm/utils/Filter.js +15 -10
- package/dist/esm/utils/Resolver.js +176 -0
- package/dist/esm/utils/zarrData.js +16 -17
- package/package.json +2 -2
|
@@ -24,6 +24,7 @@ var _colorHelper = require("../../helpers/color-helper");
|
|
|
24
24
|
var _mapHelper = require("../../helpers/map-helper");
|
|
25
25
|
var _Legend = require("../../utils/Legend");
|
|
26
26
|
var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
27
|
+
var _Resolver = require("../../utils/Resolver");
|
|
27
28
|
var _string = require("../../utils/string");
|
|
28
29
|
var _zarrData = require("../../utils/zarrData");
|
|
29
30
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -43,7 +44,7 @@ const INITIAL_VIEW_STATE = {
|
|
|
43
44
|
bearing: 0
|
|
44
45
|
};
|
|
45
46
|
function Scatterplot(_ref) {
|
|
46
|
-
var
|
|
47
|
+
var _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _data$positions;
|
|
47
48
|
let {
|
|
48
49
|
radius = null,
|
|
49
50
|
setShowObs,
|
|
@@ -74,6 +75,7 @@ function Scatterplot(_ref) {
|
|
|
74
75
|
values: []
|
|
75
76
|
});
|
|
76
77
|
const [coordsError, setCoordsError] = (0, _react.useState)(null);
|
|
78
|
+
const selectedObs = (0, _Resolver.useSelectedObs)();
|
|
77
79
|
|
|
78
80
|
// EditableGeoJsonLayer
|
|
79
81
|
const [mode, setMode] = (0, _react.useState)(() => _editModes.ViewMode);
|
|
@@ -182,8 +184,7 @@ function Scatterplot(_ref) {
|
|
|
182
184
|
getOriginalIndex,
|
|
183
185
|
sortedIndexMap
|
|
184
186
|
} = (0, _react.useMemo)(() => {
|
|
185
|
-
|
|
186
|
-
if ((settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === _constants.OBS_TYPES.CONTINUOUS) && data.positions && data.values && data.positions.length === data.values.length) {
|
|
187
|
+
if ((settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR || settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CONTINUOUS) && data.positions && data.values && data.positions.length === data.values.length) {
|
|
187
188
|
const sortedIndices = _lodash.default.map(data.values, (_v, i) => i).sort((a, b) => data.values[a] - data.values[b]);
|
|
188
189
|
const sortedIndexMap = new Map(_lodash.default.map(sortedIndices, (originalIndex, sortedIndex) => [originalIndex, sortedIndex]));
|
|
189
190
|
return {
|
|
@@ -200,24 +201,17 @@ function Scatterplot(_ref) {
|
|
|
200
201
|
// return original index
|
|
201
202
|
sortedIndexMap: identitySortedIndexMap // return original index
|
|
202
203
|
};
|
|
203
|
-
}, [data, identityGetOriginalIndex, identitySortedIndexMap,
|
|
204
|
+
}, [data, identityGetOriginalIndex, identitySortedIndexMap, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type, settings.colorEncoding]);
|
|
204
205
|
const sortedObsIndices = (0, _react.useMemo)(() => {
|
|
205
206
|
return obsIndices ? new Set(Array.from(obsIndices, i => sortedIndexMap.get(i))) : obsIndices;
|
|
206
207
|
}, [obsIndices, sortedIndexMap]);
|
|
207
208
|
const isCategorical = (0, _react.useMemo)(() => {
|
|
208
209
|
if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS) {
|
|
209
|
-
|
|
210
|
-
return ((_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type) === _constants.OBS_TYPES.CATEGORICAL || ((_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.type) === _constants.OBS_TYPES.BOOLEAN;
|
|
210
|
+
return (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL || (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.BOOLEAN;
|
|
211
211
|
} else {
|
|
212
212
|
return false;
|
|
213
213
|
}
|
|
214
|
-
}, [settings.colorEncoding,
|
|
215
|
-
(0, _react.useEffect)(() => {
|
|
216
|
-
dispatch({
|
|
217
|
-
type: "set.controls.valueRange",
|
|
218
|
-
valueRange: [valueMin, valueMax]
|
|
219
|
-
});
|
|
220
|
-
}, [dispatch, valueMax, valueMin]);
|
|
214
|
+
}, [settings.colorEncoding, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type]);
|
|
221
215
|
const {
|
|
222
216
|
min,
|
|
223
217
|
max
|
|
@@ -226,7 +220,6 @@ function Scatterplot(_ref) {
|
|
|
226
220
|
max: settings.controls.range[1] * (valueMax - valueMin) + valueMin
|
|
227
221
|
};
|
|
228
222
|
const getFillColor = (0, _react.useCallback)((_d, _ref2) => {
|
|
229
|
-
var _settings$selectedObs6, _settings$selectedObs7;
|
|
230
223
|
let {
|
|
231
224
|
index
|
|
232
225
|
} = _ref2;
|
|
@@ -235,10 +228,10 @@ function Scatterplot(_ref) {
|
|
|
235
228
|
value: (sortedData.values[index] - min) / (max - min),
|
|
236
229
|
categorical: isCategorical,
|
|
237
230
|
grayOut: grayOut
|
|
238
|
-
}, useUnsColors && settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS &&
|
|
239
|
-
colorscale:
|
|
231
|
+
}, useUnsColors && settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && selectedObs !== null && selectedObs !== void 0 && selectedObs.colors ? {
|
|
232
|
+
colorscale: selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.colors
|
|
240
233
|
} : {})) || [0, 0, 0, 100];
|
|
241
|
-
}, [isPending, sortedObsIndices, getColor, sortedData.values, min, max, isCategorical, useUnsColors, settings.colorEncoding,
|
|
234
|
+
}, [isPending, sortedObsIndices, getColor, sortedData.values, min, max, isCategorical, useUnsColors, settings.colorEncoding, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.colors]);
|
|
242
235
|
|
|
243
236
|
// @TODO: add support for pseudospatial hover to reflect in radius
|
|
244
237
|
const getRadius = (0, _react.useCallback)((_d, _ref3) => {
|
|
@@ -336,11 +329,9 @@ function Scatterplot(_ref) {
|
|
|
336
329
|
} = _ref5;
|
|
337
330
|
if (!object || (object === null || object === void 0 ? void 0 : object.type) === "Feature") return;
|
|
338
331
|
const text = [];
|
|
339
|
-
if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS &&
|
|
340
|
-
name: settings.selectedObs.name
|
|
341
|
-
})) {
|
|
332
|
+
if (settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS && selectedObs && !_lodash.default.includes(settings.labelObs, selectedObs.name)) {
|
|
342
333
|
var _data$values;
|
|
343
|
-
text.push(getLabel(
|
|
334
|
+
text.push(getLabel(selectedObs, (_data$values = data.values) === null || _data$values === void 0 ? void 0 : _data$values[getOriginalIndex(index)]));
|
|
344
335
|
}
|
|
345
336
|
if (settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR && settings.selectedVar) {
|
|
346
337
|
var _data$values2;
|
|
@@ -348,7 +339,7 @@ function Scatterplot(_ref) {
|
|
|
348
339
|
}
|
|
349
340
|
if (settings.labelObs.length) {
|
|
350
341
|
text.push(..._lodash.default.map(labelObsData.data, (v, k) => {
|
|
351
|
-
const labelObs =
|
|
342
|
+
const labelObs = settings.data.obs[k];
|
|
352
343
|
return getLabel(labelObs, v[getOriginalIndex(index)]);
|
|
353
344
|
}));
|
|
354
345
|
}
|
|
@@ -418,7 +409,7 @@ function Scatterplot(_ref) {
|
|
|
418
409
|
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
|
|
419
410
|
icon: _freeSolidSvgIcons.faTriangleExclamation
|
|
420
411
|
}), "\xA0Error loading data"), /*#__PURE__*/_react.default.createElement(_Toolbox.Toolbox, {
|
|
421
|
-
mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ?
|
|
412
|
+
mode: settings.colorEncoding === _constants.COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.name : null,
|
|
422
413
|
obsLength: parseInt((_data$positions = data.positions) === null || _data$positions === void 0 ? void 0 : _data$positions.length),
|
|
423
414
|
slicedLength: parseInt(slicedLength)
|
|
424
415
|
})), /*#__PURE__*/_react.default.createElement(_Legend.Legend, {
|
|
@@ -8,17 +8,23 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _material = require("@mui/material");
|
|
9
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
10
10
|
var _constants = require("../../constants/constants");
|
|
11
|
+
var _FilterContext = require("../../context/FilterContext");
|
|
11
12
|
var _SettingsContext = require("../../context/SettingsContext");
|
|
13
|
+
var _Resolver = require("../../utils/Resolver");
|
|
12
14
|
var _Controls = require("../controls/Controls");
|
|
13
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
16
|
const ScatterplotControls = () => {
|
|
15
|
-
var _settings$selectedObs;
|
|
16
17
|
const settings = (0, _SettingsContext.useSettings)();
|
|
17
18
|
const dispatch = (0, _SettingsContext.useSettingsDispatch)();
|
|
18
19
|
const [sliderValue, setSliderValue] = _react.default.useState(settings.controls.range || [0, 1]);
|
|
19
|
-
const
|
|
20
|
+
const {
|
|
21
|
+
valueMin,
|
|
22
|
+
valueMax
|
|
23
|
+
} = (0, _FilterContext.useFilteredData)();
|
|
24
|
+
const selectedObs = (0, _Resolver.useSelectedObs)();
|
|
25
|
+
const isCategorical = settings.colorEncoding === _constants.COLOR_ENCODINGS.OBS ? (selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.type) === _constants.OBS_TYPES.CATEGORICAL : false;
|
|
20
26
|
const valueLabelFormat = value => {
|
|
21
|
-
return (value * (
|
|
27
|
+
return (value * (valueMax - valueMin) + valueMin).toFixed(2);
|
|
22
28
|
};
|
|
23
29
|
const marks = [{
|
|
24
30
|
value: 0,
|
|
@@ -20,6 +20,7 @@ var _FilterContext = require("../../context/FilterContext");
|
|
|
20
20
|
var _SettingsContext = require("../../context/SettingsContext");
|
|
21
21
|
var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
22
22
|
var _requests = require("../../utils/requests");
|
|
23
|
+
var _Resolver = require("../../utils/Resolver");
|
|
23
24
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
25
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
25
26
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -38,7 +39,7 @@ const useVarMean = function (varKeys) {
|
|
|
38
39
|
url: dataset.url,
|
|
39
40
|
varKeys: _lodash.default.map(varKeys, v => v.isSet ? {
|
|
40
41
|
name: v.name,
|
|
41
|
-
indices: v.vars.map(
|
|
42
|
+
indices: v.vars.map(vv => vv.index)
|
|
42
43
|
} : v.index),
|
|
43
44
|
obsIndices: obsIndices,
|
|
44
45
|
varNamesCol: dataset.varNamesCol
|
|
@@ -48,7 +49,7 @@ const useVarMean = function (varKeys) {
|
|
|
48
49
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
49
50
|
varKeys: _lodash.default.map(varKeys, v => v.isSet ? {
|
|
50
51
|
name: v.name,
|
|
51
|
-
indices: v.vars.map(
|
|
52
|
+
indices: v.vars.map(vv => vv.index)
|
|
52
53
|
} : v.index),
|
|
53
54
|
obsIndices: obsIndices
|
|
54
55
|
});
|
|
@@ -67,42 +68,43 @@ const sortMeans = (i, means) => {
|
|
|
67
68
|
};
|
|
68
69
|
exports.sortMeans = sortMeans;
|
|
69
70
|
function VarNamesList(_ref) {
|
|
70
|
-
var _settings$selectedVar, _settings$selectedVar2;
|
|
71
71
|
let {
|
|
72
72
|
mode = _constants.SELECTION_MODES.SINGLE,
|
|
73
73
|
displayName = "genes"
|
|
74
74
|
} = _ref;
|
|
75
75
|
const settings = (0, _SettingsContext.useSettings)();
|
|
76
76
|
const dispatch = (0, _SettingsContext.useSettingsDispatch)();
|
|
77
|
-
const
|
|
77
|
+
const selectedVar = (0, _Resolver.useSelectedVar)();
|
|
78
|
+
const selectedMultiVar = (0, _Resolver.useSelectedMultiVar)();
|
|
79
|
+
const settingsVars = (0, _Resolver.useSettingsVars)();
|
|
80
|
+
const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name) : selectedMultiVar.map(i => i.matrix_index || i.name));
|
|
78
81
|
const [sortedVars, setSortedVars] = (0, _react.useState)([]);
|
|
79
82
|
(0, _react.useEffect)(() => {
|
|
80
83
|
if (mode === _constants.SELECTION_MODES.SINGLE) {
|
|
81
|
-
|
|
82
|
-
setActive(((_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.matrix_index) || ((_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.name));
|
|
84
|
+
setActive((selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) || (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name));
|
|
83
85
|
}
|
|
84
|
-
}, [mode,
|
|
86
|
+
}, [mode, selectedVar]);
|
|
85
87
|
(0, _react.useEffect)(() => {
|
|
86
88
|
if (mode === _constants.SELECTION_MODES.MULTIPLE) {
|
|
87
|
-
setActive(
|
|
89
|
+
setActive(selectedMultiVar.map(i => i.matrix_index || i.name));
|
|
88
90
|
}
|
|
89
|
-
}, [mode,
|
|
90
|
-
const varMeans = useVarMean(
|
|
91
|
+
}, [mode, selectedMultiVar]);
|
|
92
|
+
const varMeans = useVarMean(settingsVars, settings.varSort.var.sort === _constants.VAR_SORT.MATRIX);
|
|
91
93
|
|
|
92
94
|
// @TODO: deferr sortedVars ?
|
|
93
95
|
(0, _react.useEffect)(() => {
|
|
94
96
|
if (settings.varSort.var.sort === _constants.VAR_SORT.MATRIX) {
|
|
95
97
|
if (!varMeans.isPending && !varMeans.serverError && varMeans.fetchedData) {
|
|
96
|
-
setSortedVars(_lodash.default.orderBy(
|
|
98
|
+
setSortedVars(_lodash.default.orderBy(settingsVars, o => {
|
|
97
99
|
return sortMeans(o, varMeans.fetchedData);
|
|
98
100
|
}, settings.varSort.var.sortOrder));
|
|
99
101
|
}
|
|
100
102
|
} else if (settings.varSort.var.sort === _constants.VAR_SORT.NAME) {
|
|
101
|
-
setSortedVars(_lodash.default.orderBy(
|
|
103
|
+
setSortedVars(_lodash.default.orderBy(settingsVars, "name", settings.varSort.var.sortOrder));
|
|
102
104
|
} else {
|
|
103
|
-
setSortedVars(
|
|
105
|
+
setSortedVars(settingsVars);
|
|
104
106
|
}
|
|
105
|
-
}, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData,
|
|
107
|
+
}, [settings.varSort.var.sort, settings.varSort.var.sortOrder, varMeans.isPending, varMeans.serverError, varMeans.fetchedData, settingsVars]);
|
|
106
108
|
const makeListItem = item => {
|
|
107
109
|
return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ListGroup.Item, {
|
|
108
110
|
key: item.matrix_index
|
|
@@ -16,6 +16,7 @@ var _FilterContext = require("../../context/FilterContext");
|
|
|
16
16
|
var _SettingsContext = require("../../context/SettingsContext");
|
|
17
17
|
var _LoadingIndicators = require("../../utils/LoadingIndicators");
|
|
18
18
|
var _requests = require("../../utils/requests");
|
|
19
|
+
var _Resolver = require("../../utils/Resolver");
|
|
19
20
|
var _Toolbar = require("../toolbar/Toolbar");
|
|
20
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -25,7 +26,6 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
25
26
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
26
27
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
27
28
|
function Violin(_ref) {
|
|
28
|
-
var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
|
|
29
29
|
let {
|
|
30
30
|
mode = _constants.VIOLIN_MODES.MULTIKEY,
|
|
31
31
|
showObsBtn = false,
|
|
@@ -45,6 +45,9 @@ function Violin(_ref) {
|
|
|
45
45
|
const [data, setData] = (0, _react.useState)([]);
|
|
46
46
|
const [layout, setLayout] = (0, _react.useState)({});
|
|
47
47
|
const [hasSelections, setHasSelections] = (0, _react.useState)(false);
|
|
48
|
+
const selectedMultiVar = (0, _Resolver.useSelectedMultiVar)();
|
|
49
|
+
const selectedVar = (0, _Resolver.useSelectedVar)();
|
|
50
|
+
const selectedObs = (0, _Resolver.useSelectedObs)();
|
|
48
51
|
const [params, setParams] = (0, _react.useState)(_objectSpread({
|
|
49
52
|
url: dataset.url,
|
|
50
53
|
mode: mode,
|
|
@@ -52,22 +55,19 @@ function Violin(_ref) {
|
|
|
52
55
|
varNamesCol: dataset.varNamesCol
|
|
53
56
|
}, {
|
|
54
57
|
[_constants.VIOLIN_MODES.MULTIKEY]: {
|
|
55
|
-
varKeys:
|
|
58
|
+
varKeys: selectedMultiVar.map(i => i.isSet ? {
|
|
56
59
|
name: i.name,
|
|
57
60
|
indices: i.vars.map(v => v.index)
|
|
58
61
|
} : i.index),
|
|
59
62
|
obsKeys: [] // @TODO: implement
|
|
60
63
|
},
|
|
61
64
|
[_constants.VIOLIN_MODES.GROUPBY]: {
|
|
62
|
-
varKey:
|
|
63
|
-
name:
|
|
64
|
-
indices:
|
|
65
|
-
} :
|
|
66
|
-
obsCol:
|
|
67
|
-
obsValues: !(
|
|
68
|
-
var _settings$selectedObs4;
|
|
69
|
-
return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
|
|
70
|
-
}),
|
|
65
|
+
varKey: selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet ? {
|
|
66
|
+
name: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name,
|
|
67
|
+
indices: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars.map(v => v.index)
|
|
68
|
+
} : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.index,
|
|
69
|
+
obsCol: selectedObs,
|
|
70
|
+
obsValues: !(selectedObs !== null && selectedObs !== void 0 && selectedObs.omit.length) ? null : _lodash.default.difference(selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.values, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.omit),
|
|
71
71
|
obsIndices: isSliced ? [...(obsIndices || [])] : null
|
|
72
72
|
}
|
|
73
73
|
}[mode]));
|
|
@@ -75,7 +75,7 @@ function Violin(_ref) {
|
|
|
75
75
|
|
|
76
76
|
(0, _react.useEffect)(() => {
|
|
77
77
|
if (mode === _constants.VIOLIN_MODES.MULTIKEY) {
|
|
78
|
-
if (
|
|
78
|
+
if (selectedMultiVar.length) {
|
|
79
79
|
setHasSelections(true);
|
|
80
80
|
} else {
|
|
81
81
|
setHasSelections(false);
|
|
@@ -84,7 +84,7 @@ function Violin(_ref) {
|
|
|
84
84
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
85
85
|
url: dataset.url,
|
|
86
86
|
mode: mode,
|
|
87
|
-
varKeys:
|
|
87
|
+
varKeys: selectedMultiVar.map(i => i.isSet ? {
|
|
88
88
|
name: i.name,
|
|
89
89
|
indices: i.vars.map(v => v.index)
|
|
90
90
|
} : i.index),
|
|
@@ -93,32 +93,28 @@ function Violin(_ref) {
|
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
95
|
} else if (mode === _constants.VIOLIN_MODES.GROUPBY) {
|
|
96
|
-
if (
|
|
96
|
+
if (selectedObs && selectedVar) {
|
|
97
97
|
setHasSelections(true);
|
|
98
98
|
} else {
|
|
99
99
|
setHasSelections(false);
|
|
100
100
|
}
|
|
101
101
|
setParams(p => {
|
|
102
|
-
var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8, _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
|
|
103
102
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
104
103
|
url: dataset.url,
|
|
105
104
|
mode: mode,
|
|
106
|
-
varKey:
|
|
107
|
-
name:
|
|
108
|
-
indices:
|
|
109
|
-
} :
|
|
110
|
-
obsCol:
|
|
111
|
-
obsValues: !(
|
|
112
|
-
var _settings$selectedObs8;
|
|
113
|
-
return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
|
|
114
|
-
}),
|
|
105
|
+
varKey: selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet ? {
|
|
106
|
+
name: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name,
|
|
107
|
+
indices: selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars.map(v => v.index)
|
|
108
|
+
} : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.index,
|
|
109
|
+
obsCol: selectedObs,
|
|
110
|
+
obsValues: !(selectedObs !== null && selectedObs !== void 0 && selectedObs.omit.length) ? null : _lodash.default.difference(selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.values, selectedObs === null || selectedObs === void 0 ? void 0 : selectedObs.omit),
|
|
115
111
|
obsIndices: isSliced ? [...(obsIndices || [])] : null,
|
|
116
112
|
scale: settings.controls.scale.violinplot,
|
|
117
113
|
varNamesCol: dataset.varNamesCol
|
|
118
114
|
});
|
|
119
115
|
});
|
|
120
116
|
}
|
|
121
|
-
}, [settings.controls.scale.violinplot,
|
|
117
|
+
}, [settings.controls.scale.violinplot, selectedMultiVar, selectedObs, selectedVar, dataset.url, dataset.varNamesCol, obsIndices, isSliced, mode]);
|
|
122
118
|
const {
|
|
123
119
|
fetchedData,
|
|
124
120
|
isPending,
|
|
@@ -60,7 +60,7 @@ const persistOptions = {
|
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
buster: "1.4.1-dev.2025-08-13.
|
|
63
|
+
buster: "1.4.1-dev.2025-08-13.8f63c242" || "0.0.0"
|
|
64
64
|
// @TODO: add maxAge and api version numbers as buster
|
|
65
65
|
};
|
|
66
66
|
const initialDataset = {
|
|
@@ -84,13 +84,13 @@ function DatasetProvider(_ref2) {
|
|
|
84
84
|
}, dataset_params));
|
|
85
85
|
return /*#__PURE__*/_react.default.createElement(DatasetContext.Provider, {
|
|
86
86
|
value: dataset
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
|
|
88
|
+
client: queryClient,
|
|
89
|
+
persistOptions: persistOptions
|
|
87
90
|
}, /*#__PURE__*/_react.default.createElement(_SettingsContext.SettingsProvider, {
|
|
88
91
|
dataset_url: dataset.url,
|
|
89
92
|
defaultSettings: dataset.defaultSettings,
|
|
90
93
|
canOverrideSettings: dataset.canOverrideSettings
|
|
91
|
-
}, /*#__PURE__*/_react.default.createElement(_reactQueryPersistClient.PersistQueryClientProvider, {
|
|
92
|
-
client: queryClient,
|
|
93
|
-
persistOptions: persistOptions
|
|
94
94
|
}, /*#__PURE__*/_react.default.createElement(_FilterContext.FilterProvider, null, /*#__PURE__*/_react.default.createElement(_ZarrDataContext.ZarrDataProvider, null, children)))));
|
|
95
95
|
}
|
|
96
96
|
function useDataset() {
|