@haniffalab/cherita-react 1.2.0-dev.2025-05-21.e8f5ce54 → 1.2.0-dev.2025-05-21.e57ef5f2
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 +26 -19
- package/dist/cjs/components/dotplot/DotplotControls.js +17 -19
- package/dist/cjs/components/full-page/FullPage.js +9 -7
- package/dist/cjs/components/full-page/FullPagePseudospatial.js +9 -7
- package/dist/cjs/components/heatmap/Heatmap.js +22 -13
- package/dist/cjs/components/matrixplot/Matrixplot.js +22 -13
- package/dist/cjs/components/obs-list/ObsItem.js +37 -29
- package/dist/cjs/components/obs-list/ObsList.js +47 -44
- package/dist/cjs/components/obsm-list/ObsmList.js +9 -6
- package/dist/cjs/components/offcanvas/index.js +13 -9
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +61 -53
- package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +17 -11
- package/dist/cjs/components/scatterplot/Scatterplot.js +52 -52
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +3 -3
- package/dist/cjs/components/scatterplot/SpatialControls.js +4 -4
- package/dist/cjs/components/search-bar/SearchBar.js +12 -10
- package/dist/cjs/components/search-bar/SearchInfo.js +14 -13
- package/dist/cjs/components/search-bar/SearchResults.js +16 -14
- package/dist/cjs/components/var-list/VarItem.js +10 -7
- package/dist/cjs/components/var-list/VarList.js +14 -9
- package/dist/cjs/components/var-list/VarListToolbar.js +1 -2
- package/dist/cjs/components/var-list/VarSet.js +1 -2
- package/dist/cjs/components/violin/Violin.js +44 -35
- package/dist/cjs/context/DatasetContext.js +17 -11
- package/dist/cjs/context/FilterContext.js +9 -8
- package/dist/cjs/context/SettingsContext.js +169 -237
- package/dist/cjs/context/ZarrDataContext.js +1 -2
- package/dist/cjs/helpers/color-helper.js +3 -3
- package/dist/cjs/helpers/zarr-helper.js +15 -12
- package/dist/cjs/utils/Filter.js +13 -9
- package/dist/cjs/utils/Histogram.js +4 -3
- package/dist/cjs/utils/ImageViewer.js +1 -2
- package/dist/cjs/utils/Legend.js +3 -3
- package/dist/cjs/utils/LoadingIndicators.js +1 -1
- package/dist/cjs/utils/VirtualizedList.js +16 -13
- package/dist/cjs/utils/errors.js +20 -22
- package/dist/cjs/utils/requests.js +13 -10
- package/dist/cjs/utils/zarrData.js +12 -8
- package/dist/css/cherita.css +13 -9
- package/dist/css/cherita.css.map +1 -1
- package/dist/esm/components/dotplot/Dotplot.js +25 -17
- package/dist/esm/components/dotplot/DotplotControls.js +16 -17
- package/dist/esm/components/full-page/FullPage.js +8 -5
- package/dist/esm/components/full-page/FullPagePseudospatial.js +8 -5
- package/dist/esm/components/heatmap/Heatmap.js +21 -11
- package/dist/esm/components/matrixplot/Matrixplot.js +21 -11
- package/dist/esm/components/obs-list/ObsItem.js +36 -27
- package/dist/esm/components/obs-list/ObsList.js +46 -42
- package/dist/esm/components/obsm-list/ObsmList.js +8 -4
- package/dist/esm/components/offcanvas/index.js +13 -9
- package/dist/esm/components/pseudospatial/Pseudospatial.js +60 -51
- package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +16 -9
- package/dist/esm/components/scatterplot/Scatterplot.js +51 -50
- package/dist/esm/components/scatterplot/ScatterplotControls.js +2 -1
- package/dist/esm/components/scatterplot/SpatialControls.js +3 -2
- package/dist/esm/components/search-bar/SearchBar.js +11 -8
- package/dist/esm/components/search-bar/SearchInfo.js +13 -11
- package/dist/esm/components/search-bar/SearchResults.js +15 -12
- package/dist/esm/components/var-list/VarItem.js +9 -5
- package/dist/esm/components/var-list/VarList.js +13 -7
- package/dist/esm/components/violin/Violin.js +43 -33
- package/dist/esm/context/DatasetContext.js +16 -9
- package/dist/esm/context/FilterContext.js +8 -6
- package/dist/esm/context/SettingsContext.js +168 -235
- package/dist/esm/helpers/color-helper.js +3 -3
- package/dist/esm/helpers/zarr-helper.js +15 -12
- package/dist/esm/utils/Filter.js +13 -9
- package/dist/esm/utils/Histogram.js +4 -3
- package/dist/esm/utils/Legend.js +2 -1
- package/dist/esm/utils/LoadingIndicators.js +1 -1
- package/dist/esm/utils/VirtualizedList.js +15 -11
- package/dist/esm/utils/errors.js +20 -22
- package/dist/esm/utils/requests.js +13 -10
- package/dist/esm/utils/zarrData.js +12 -8
- package/package.json +4 -2
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
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); }
|
|
1
6
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
7
|
import { library } from "@fortawesome/fontawesome-svg-core";
|
|
3
8
|
import { faSliders } from "@fortawesome/free-solid-svg-icons";
|
|
@@ -15,6 +20,7 @@ import { LoadingSpinner } from "../../utils/LoadingIndicators";
|
|
|
15
20
|
import { useDebouncedFetch } from "../../utils/requests";
|
|
16
21
|
library.add(faSliders);
|
|
17
22
|
function usePseudospatialData(plotType) {
|
|
23
|
+
var _settings$selectedVar5, _settings$selectedVar6, _settings$selectedVar7, _settings$selectedVar8;
|
|
18
24
|
const ENDPOINT = "pseudospatial";
|
|
19
25
|
const dataset = useDataset();
|
|
20
26
|
const settings = useSettings();
|
|
@@ -35,40 +41,49 @@ function usePseudospatialData(plotType) {
|
|
|
35
41
|
}, [dataset.url, settings.pseudospatial.maskSet, settings.pseudospatial.maskValues, dataset.varNamesCol, isSliced, obsIndices]);
|
|
36
42
|
const getPlotParams = useCallback(() => {
|
|
37
43
|
if (plotType === PLOT_TYPES.GENE) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
var _settings$selectedVar, _settings$selectedVar2, _settings$selectedVar3, _settings$selectedVar4, _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
|
|
45
|
+
return _objectSpread({
|
|
46
|
+
varKey: (_settings$selectedVar = settings.selectedVar) !== null && _settings$selectedVar !== void 0 && _settings$selectedVar.isSet ? {
|
|
47
|
+
name: (_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name,
|
|
48
|
+
indices: (_settings$selectedVar3 = settings.selectedVar) === null || _settings$selectedVar3 === void 0 ? void 0 : _settings$selectedVar3.vars.map(v => v.index)
|
|
49
|
+
} : (_settings$selectedVar4 = settings.selectedVar) === null || _settings$selectedVar4 === void 0 ? void 0 : _settings$selectedVar4.index
|
|
50
|
+
}, settings.sliceBy.obs ? {
|
|
51
|
+
obsCol: settings.selectedObs,
|
|
52
|
+
obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _.difference(_.values((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.codes), (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.omit).map(c => {
|
|
53
|
+
var _settings$selectedObs4;
|
|
54
|
+
return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
|
|
55
|
+
})
|
|
56
|
+
} : {});
|
|
48
57
|
} else if (plotType === PLOT_TYPES.CATEGORICAL) {
|
|
58
|
+
var _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
|
|
49
59
|
return {
|
|
50
60
|
obsCol: settings.selectedObs,
|
|
51
|
-
obsValues: !settings.selectedObs
|
|
61
|
+
obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _.difference(_.values((_settings$selectedObs6 = settings.selectedObs) === null || _settings$selectedObs6 === void 0 ? void 0 : _settings$selectedObs6.codes), (_settings$selectedObs7 = settings.selectedObs) === null || _settings$selectedObs7 === void 0 ? void 0 : _settings$selectedObs7.omit).map(c => {
|
|
62
|
+
var _settings$selectedObs8;
|
|
63
|
+
return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
|
|
64
|
+
}),
|
|
52
65
|
mode: settings.pseudospatial.categoricalMode
|
|
53
66
|
};
|
|
54
67
|
} else if (plotType === "continuous") {
|
|
68
|
+
var _settings$selectedObs9, _settings$selectedObs0, _settings$selectedObs1;
|
|
55
69
|
return {
|
|
56
70
|
obsCol: settings.selectedObs,
|
|
57
|
-
obsValues: !settings.selectedObs
|
|
71
|
+
obsValues: !((_settings$selectedObs9 = settings.selectedObs) !== null && _settings$selectedObs9 !== void 0 && _settings$selectedObs9.omit.length) ? null : _.difference(_.values((_settings$selectedObs0 = settings.selectedObs) === null || _settings$selectedObs0 === void 0 ? void 0 : _settings$selectedObs0.codes), (_settings$selectedObs1 = settings.selectedObs) === null || _settings$selectedObs1 === void 0 ? void 0 : _settings$selectedObs1.omit).map(c => {
|
|
72
|
+
var _settings$selectedObs10;
|
|
73
|
+
return (_settings$selectedObs10 = settings.selectedObs) === null || _settings$selectedObs10 === void 0 ? void 0 : _settings$selectedObs10.codesMap[c];
|
|
74
|
+
})
|
|
58
75
|
};
|
|
59
76
|
}
|
|
60
|
-
}, [settings.pseudospatial.categoricalMode, settings.selectedObs, settings.selectedVar
|
|
77
|
+
}, [settings.pseudospatial.categoricalMode, settings.selectedObs, (_settings$selectedVar5 = settings.selectedVar) === null || _settings$selectedVar5 === void 0 ? void 0 : _settings$selectedVar5.index, (_settings$selectedVar6 = settings.selectedVar) === null || _settings$selectedVar6 === void 0 ? void 0 : _settings$selectedVar6.isSet, (_settings$selectedVar7 = settings.selectedVar) === null || _settings$selectedVar7 === void 0 ? void 0 : _settings$selectedVar7.name, (_settings$selectedVar8 = settings.selectedVar) === null || _settings$selectedVar8 === void 0 ? void 0 : _settings$selectedVar8.vars, settings.sliceBy.obs, plotType]);
|
|
61
78
|
const params = useMemo(() => {
|
|
62
|
-
return {
|
|
63
|
-
...baseParams,
|
|
64
|
-
...getPlotParams()
|
|
65
|
-
};
|
|
79
|
+
return _objectSpread(_objectSpread({}, baseParams), getPlotParams());
|
|
66
80
|
}, [baseParams, getPlotParams]);
|
|
67
81
|
return useDebouncedFetch(ENDPOINT + "/" + plotType, params, 500, {
|
|
68
82
|
enabled: !!plotType && !!settings.pseudospatial.maskSet
|
|
69
83
|
});
|
|
70
84
|
}
|
|
71
85
|
export function Pseudospatial(_ref) {
|
|
86
|
+
var _settings$selectedObs14, _layout$coloraxis3, _layout$coloraxis4;
|
|
72
87
|
let {
|
|
73
88
|
showLegend = true,
|
|
74
89
|
sharedScaleRange = false,
|
|
@@ -85,21 +100,21 @@ export function Pseudospatial(_ref) {
|
|
|
85
100
|
} = useColor();
|
|
86
101
|
const colorscale = useRef(settings.controls.colorScale);
|
|
87
102
|
useEffect(() => {
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
var _settings$selectedObs11, _settings$selectedObs12, _settings$selectedObs13;
|
|
104
|
+
setPlotType(settings.colorEncoding === COLOR_ENCODINGS.VAR ? PLOT_TYPES.GENE : ((_settings$selectedObs11 = settings.selectedObs) === null || _settings$selectedObs11 === void 0 ? void 0 : _settings$selectedObs11.type) === OBS_TYPES.CATEGORICAL || ((_settings$selectedObs12 = settings.selectedObs) === null || _settings$selectedObs12 === void 0 ? void 0 : _settings$selectedObs12.type) === OBS_TYPES.BOOLEAN ? PLOT_TYPES.CATEGORICAL : ((_settings$selectedObs13 = settings.selectedObs) === null || _settings$selectedObs13 === void 0 ? void 0 : _settings$selectedObs13.type) === OBS_TYPES.CONTINUOUS ? PLOT_TYPES.CONTINUOUS : PLOT_TYPES.MASKS);
|
|
105
|
+
}, [settings.colorEncoding, (_settings$selectedObs14 = settings.selectedObs) === null || _settings$selectedObs14 === void 0 ? void 0 : _settings$selectedObs14.type, setPlotType]);
|
|
90
106
|
const updateColorscale = useCallback(colorscale => {
|
|
91
107
|
setLayout(l => {
|
|
92
|
-
return {
|
|
93
|
-
|
|
94
|
-
coloraxis: {
|
|
95
|
-
...l.coloraxis,
|
|
108
|
+
return _objectSpread(_objectSpread({}, l), {}, {
|
|
109
|
+
coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
|
|
96
110
|
colorscale: colorscale
|
|
97
|
-
}
|
|
98
|
-
};
|
|
111
|
+
})
|
|
112
|
+
});
|
|
99
113
|
});
|
|
100
114
|
setData(d => {
|
|
101
|
-
|
|
102
|
-
const
|
|
115
|
+
var _layout$coloraxis, _layout$coloraxis2;
|
|
116
|
+
const min = layout === null || layout === void 0 || (_layout$coloraxis = layout.coloraxis) === null || _layout$coloraxis === void 0 ? void 0 : _layout$coloraxis.cmin;
|
|
117
|
+
const max = layout === null || layout === void 0 || (_layout$coloraxis2 = layout.coloraxis) === null || _layout$coloraxis2 === void 0 ? void 0 : _layout$coloraxis2.cmax;
|
|
103
118
|
return _.map(d, trace => {
|
|
104
119
|
const v = trace.meta.value;
|
|
105
120
|
if (v === null) {
|
|
@@ -108,17 +123,15 @@ export function Pseudospatial(_ref) {
|
|
|
108
123
|
const color = rgbToHex(getColor({
|
|
109
124
|
value: (v - min) / (max - min)
|
|
110
125
|
}));
|
|
111
|
-
return {
|
|
112
|
-
...trace,
|
|
126
|
+
return _objectSpread(_objectSpread({}, trace), {}, {
|
|
113
127
|
fillcolor: color,
|
|
114
|
-
line: {
|
|
115
|
-
...trace.line,
|
|
128
|
+
line: _objectSpread(_objectSpread({}, trace.line), {}, {
|
|
116
129
|
color: color
|
|
117
|
-
}
|
|
118
|
-
};
|
|
130
|
+
})
|
|
131
|
+
});
|
|
119
132
|
});
|
|
120
133
|
});
|
|
121
|
-
}, [getColor, layout
|
|
134
|
+
}, [getColor, layout === null || layout === void 0 || (_layout$coloraxis3 = layout.coloraxis) === null || _layout$coloraxis3 === void 0 ? void 0 : _layout$coloraxis3.cmax, layout === null || layout === void 0 || (_layout$coloraxis4 = layout.coloraxis) === null || _layout$coloraxis4 === void 0 ? void 0 : _layout$coloraxis4.cmin]);
|
|
122
135
|
const {
|
|
123
136
|
fetchedData,
|
|
124
137
|
isPending,
|
|
@@ -153,40 +166,36 @@ export function Pseudospatial(_ref) {
|
|
|
153
166
|
const color = rgbToHex(getColor({
|
|
154
167
|
value: (v - min) / (max - min)
|
|
155
168
|
}));
|
|
156
|
-
return {
|
|
157
|
-
...trace,
|
|
169
|
+
return _objectSpread(_objectSpread({}, trace), {}, {
|
|
158
170
|
fillcolor: color,
|
|
159
|
-
line: {
|
|
160
|
-
...trace.line,
|
|
171
|
+
line: _objectSpread(_objectSpread({}, trace.line), {}, {
|
|
161
172
|
color: color
|
|
162
|
-
}
|
|
163
|
-
};
|
|
173
|
+
})
|
|
174
|
+
});
|
|
164
175
|
});
|
|
165
176
|
});
|
|
166
177
|
setLayout(l => {
|
|
167
|
-
return {
|
|
168
|
-
|
|
169
|
-
coloraxis: {
|
|
170
|
-
...l.coloraxis,
|
|
178
|
+
return _objectSpread(_objectSpread({}, l), {}, {
|
|
179
|
+
coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
|
|
171
180
|
cmin: min,
|
|
172
181
|
cmax: max
|
|
173
|
-
}
|
|
174
|
-
};
|
|
182
|
+
})
|
|
183
|
+
});
|
|
175
184
|
});
|
|
176
185
|
}
|
|
177
186
|
}, [settings.controls.range, settings.controls.valueMax, settings.controls.valueMin, settings.controls.valueRange, getColor, sharedScaleRange]);
|
|
178
187
|
const hasSelections = !!plotType && !!settings.pseudospatial.maskSet;
|
|
179
188
|
const faSlidersPath = faSliders.icon[4];
|
|
180
189
|
if (!serverError) {
|
|
190
|
+
var _layout$coloraxis5, _layout$coloraxis6;
|
|
181
191
|
return /*#__PURE__*/React.createElement("div", {
|
|
182
192
|
className: "cherita-pseudospatial"
|
|
183
193
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, hasSelections && isPending && /*#__PURE__*/React.createElement(LoadingSpinner, null), hasSelections && /*#__PURE__*/React.createElement(Plot, {
|
|
184
194
|
data: data,
|
|
185
|
-
layout: {
|
|
186
|
-
...layout,
|
|
195
|
+
layout: _objectSpread(_objectSpread({}, layout), {}, {
|
|
187
196
|
autosize: true,
|
|
188
197
|
height: height
|
|
189
|
-
},
|
|
198
|
+
}),
|
|
190
199
|
useResizeHandler: true,
|
|
191
200
|
className: "cherita-pseudospatial-plot",
|
|
192
201
|
config: {
|
|
@@ -205,8 +214,8 @@ export function Pseudospatial(_ref) {
|
|
|
205
214
|
}]
|
|
206
215
|
}
|
|
207
216
|
}), hasSelections && showLegend && /*#__PURE__*/React.createElement(Legend, {
|
|
208
|
-
min: layout
|
|
209
|
-
max: layout
|
|
217
|
+
min: layout === null || layout === void 0 || (_layout$coloraxis5 = layout.coloraxis) === null || _layout$coloraxis5 === void 0 ? void 0 : _layout$coloraxis5.cmin,
|
|
218
|
+
max: layout === null || layout === void 0 || (_layout$coloraxis6 = layout.coloraxis) === null || _layout$coloraxis6 === void 0 ? void 0 : _layout$coloraxis6.cmax,
|
|
210
219
|
addText: plotType === PLOT_TYPES.GENE ? " - Mean expression" : plotType === PLOT_TYPES.CATEGORICAL ? " - %" : plotType === PLOT_TYPES.CONTINUOUS ? " - Mean value" : ""
|
|
211
220
|
})));
|
|
212
221
|
} else {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
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); }
|
|
1
6
|
import React, { useEffect, useState } from "react";
|
|
2
7
|
import _ from "lodash";
|
|
3
8
|
import { ButtonGroup, Dropdown, Form } from "react-bootstrap";
|
|
@@ -26,6 +31,7 @@ function CategoricalMode() {
|
|
|
26
31
|
}, _.capitalize(mode.name)), /*#__PURE__*/React.createElement(Dropdown.Menu, null, modeList));
|
|
27
32
|
}
|
|
28
33
|
function MaskSet() {
|
|
34
|
+
var _settings$pseudospati5, _settings$pseudospati6, _maskSets$settings$ps2, _settings$pseudospati7, _settings$pseudospati8, _maskSets$settings$ps3, _settings$pseudospati9;
|
|
29
35
|
const ENDPOINT = "masks";
|
|
30
36
|
const dataset = useDataset();
|
|
31
37
|
const settings = useSettings();
|
|
@@ -36,10 +42,9 @@ function MaskSet() {
|
|
|
36
42
|
});
|
|
37
43
|
useEffect(() => {
|
|
38
44
|
setParams(p => {
|
|
39
|
-
return {
|
|
40
|
-
...p,
|
|
45
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
41
46
|
url: dataset.url
|
|
42
|
-
};
|
|
47
|
+
});
|
|
43
48
|
});
|
|
44
49
|
}, [dataset.url]);
|
|
45
50
|
const {
|
|
@@ -65,9 +70,10 @@ function MaskSet() {
|
|
|
65
70
|
}
|
|
66
71
|
}, _.capitalize(key)));
|
|
67
72
|
const handleMaskChange = mask => {
|
|
68
|
-
|
|
73
|
+
var _settings$pseudospati, _settings$pseudospati2;
|
|
74
|
+
let newMasks = settings.pseudospatial.maskValues || (maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati = settings.pseudospatial) === null || _settings$pseudospati === void 0 ? void 0 : _settings$pseudospati.maskSet]);
|
|
69
75
|
newMasks = newMasks.includes(mask) ? newMasks.filter(m => m !== mask) : [...newMasks, mask];
|
|
70
|
-
if (!_.difference(maskSets
|
|
76
|
+
if (!_.difference(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati2 = settings.pseudospatial) === null || _settings$pseudospati2 === void 0 ? void 0 : _settings$pseudospati2.maskSet], newMasks).length) {
|
|
71
77
|
newMasks = null;
|
|
72
78
|
}
|
|
73
79
|
dispatch({
|
|
@@ -76,7 +82,8 @@ function MaskSet() {
|
|
|
76
82
|
});
|
|
77
83
|
};
|
|
78
84
|
const toggleMasks = () => {
|
|
79
|
-
|
|
85
|
+
var _settings$pseudospati3, _maskSets$settings$ps, _settings$pseudospati4;
|
|
86
|
+
if (!settings.pseudospatial.maskValues || ((_settings$pseudospati3 = settings.pseudospatial.maskValues) === null || _settings$pseudospati3 === void 0 ? void 0 : _settings$pseudospati3.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps = maskSets[(_settings$pseudospati4 = settings.pseudospatial) === null || _settings$pseudospati4 === void 0 ? void 0 : _settings$pseudospati4.maskSet]) === null || _maskSets$settings$ps === void 0 ? void 0 : _maskSets$settings$ps.length)) {
|
|
80
87
|
dispatch({
|
|
81
88
|
type: "set.pseudospatial.maskValues",
|
|
82
89
|
maskValues: []
|
|
@@ -88,7 +95,7 @@ function MaskSet() {
|
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
};
|
|
91
|
-
const masksList = _.map(maskSets
|
|
98
|
+
const masksList = _.map(maskSets === null || maskSets === void 0 ? void 0 : maskSets[(_settings$pseudospati5 = settings.pseudospatial) === null || _settings$pseudospati5 === void 0 ? void 0 : _settings$pseudospati5.maskSet], mask => /*#__PURE__*/React.createElement(Dropdown.ItemText, {
|
|
92
99
|
key: mask
|
|
93
100
|
}, /*#__PURE__*/React.createElement(Form.Check, {
|
|
94
101
|
type: "checkbox",
|
|
@@ -96,8 +103,8 @@ function MaskSet() {
|
|
|
96
103
|
checked: !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues.includes(mask),
|
|
97
104
|
onChange: () => handleMaskChange(mask)
|
|
98
105
|
})));
|
|
99
|
-
const nMasks = settings.pseudospatial.maskValues ? settings.pseudospatial.maskValues
|
|
100
|
-
const toggleAllChecked = !settings.pseudospatial.maskValues || settings.pseudospatial.maskValues
|
|
106
|
+
const nMasks = settings.pseudospatial.maskValues ? (_settings$pseudospati6 = settings.pseudospatial.maskValues) === null || _settings$pseudospati6 === void 0 ? void 0 : _settings$pseudospati6.length : (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps2 = maskSets[(_settings$pseudospati7 = settings.pseudospatial) === null || _settings$pseudospati7 === void 0 ? void 0 : _settings$pseudospati7.maskSet]) === null || _maskSets$settings$ps2 === void 0 ? void 0 : _maskSets$settings$ps2.length) || "No";
|
|
107
|
+
const toggleAllChecked = !settings.pseudospatial.maskValues || ((_settings$pseudospati8 = settings.pseudospatial.maskValues) === null || _settings$pseudospati8 === void 0 ? void 0 : _settings$pseudospati8.length) === (maskSets === null || maskSets === void 0 || (_maskSets$settings$ps3 = maskSets[(_settings$pseudospati9 = settings.pseudospatial) === null || _settings$pseudospati9 === void 0 ? void 0 : _settings$pseudospati9.maskSet]) === null || _maskSets$settings$ps3 === void 0 ? void 0 : _maskSets$settings$ps3.length);
|
|
101
108
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
|
|
102
109
|
variant: "light"
|
|
103
110
|
}, _.capitalize(settings.pseudospatial.maskSet || "Select a mask set")), /*#__PURE__*/React.createElement(Dropdown.Menu, null, /*#__PURE__*/React.createElement(Dropdown.Header, null, "Mask set"), maskSetList)), /*#__PURE__*/React.createElement(Dropdown, null, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
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); }
|
|
1
6
|
import React, { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState } from "react";
|
|
2
7
|
import { ScatterplotLayer } from "@deck.gl/layers";
|
|
3
8
|
import { DeckGL } from "@deck.gl/react";
|
|
@@ -29,6 +34,7 @@ const INITIAL_VIEW_STATE = {
|
|
|
29
34
|
bearing: 0
|
|
30
35
|
};
|
|
31
36
|
export function Scatterplot(_ref) {
|
|
37
|
+
var _settings$selectedObs3, _features$features2, _obsmData$serverError, _xData$serverError, _obsData$serverError, _labelObsData$serverE, _settings$selectedVar, _settings$selectedObs4, _obsmData$data;
|
|
32
38
|
let {
|
|
33
39
|
radius = 30,
|
|
34
40
|
setShowObs,
|
|
@@ -73,12 +79,12 @@ export function Scatterplot(_ref) {
|
|
|
73
79
|
|
|
74
80
|
useEffect(() => {
|
|
75
81
|
if (!obsmData.isPending && !obsmData.serverError) {
|
|
82
|
+
var _deckRef$current, _deckRef$current2;
|
|
76
83
|
setIsRendering(true);
|
|
77
84
|
setData(d => {
|
|
78
|
-
return {
|
|
79
|
-
...d,
|
|
85
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
80
86
|
positions: obsmData.data
|
|
81
|
-
};
|
|
87
|
+
});
|
|
82
88
|
});
|
|
83
89
|
const mapHelper = new MapHelper();
|
|
84
90
|
const {
|
|
@@ -86,35 +92,34 @@ export function Scatterplot(_ref) {
|
|
|
86
92
|
longitude,
|
|
87
93
|
zoom
|
|
88
94
|
} = mapHelper.fitBounds(obsmData.data, {
|
|
89
|
-
width: deckRef
|
|
90
|
-
height: deckRef
|
|
95
|
+
width: deckRef === null || deckRef === void 0 || (_deckRef$current = deckRef.current) === null || _deckRef$current === void 0 || (_deckRef$current = _deckRef$current.deck) === null || _deckRef$current === void 0 ? void 0 : _deckRef$current.width,
|
|
96
|
+
height: deckRef === null || deckRef === void 0 || (_deckRef$current2 = deckRef.current) === null || _deckRef$current2 === void 0 || (_deckRef$current2 = _deckRef$current2.deck) === null || _deckRef$current2 === void 0 ? void 0 : _deckRef$current2.height
|
|
91
97
|
});
|
|
92
98
|
setViewState(v => {
|
|
93
|
-
return {
|
|
94
|
-
...v,
|
|
99
|
+
return _objectSpread(_objectSpread({}, v), {}, {
|
|
95
100
|
longitude: longitude,
|
|
96
101
|
latitude: latitude,
|
|
97
102
|
zoom: zoom
|
|
98
|
-
};
|
|
103
|
+
});
|
|
99
104
|
});
|
|
100
105
|
} else if (!obsmData.isPending && obsmData.serverError) {
|
|
101
106
|
setIsRendering(true);
|
|
102
107
|
setData(d => {
|
|
103
|
-
return {
|
|
104
|
-
...d,
|
|
108
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
105
109
|
positions: []
|
|
106
|
-
};
|
|
110
|
+
});
|
|
107
111
|
});
|
|
108
112
|
}
|
|
109
113
|
}, [settings.selectedObsm, obsmData.data, obsmData.isPending, obsmData.serverError]);
|
|
110
114
|
const getBounds = useCallback(() => {
|
|
115
|
+
var _deckRef$current3, _deckRef$current4;
|
|
111
116
|
const {
|
|
112
117
|
latitude,
|
|
113
118
|
longitude,
|
|
114
119
|
zoom
|
|
115
120
|
} = new MapHelper().fitBounds(data.positions, {
|
|
116
|
-
width: deckRef
|
|
117
|
-
height: deckRef
|
|
121
|
+
width: deckRef === null || deckRef === void 0 || (_deckRef$current3 = deckRef.current) === null || _deckRef$current3 === void 0 || (_deckRef$current3 = _deckRef$current3.deck) === null || _deckRef$current3 === void 0 ? void 0 : _deckRef$current3.width,
|
|
122
|
+
height: deckRef === null || deckRef === void 0 || (_deckRef$current4 = deckRef.current) === null || _deckRef$current4 === void 0 || (_deckRef$current4 = _deckRef$current4.deck) === null || _deckRef$current4 === void 0 ? void 0 : _deckRef$current4.height
|
|
118
123
|
});
|
|
119
124
|
return {
|
|
120
125
|
latitude,
|
|
@@ -128,17 +133,15 @@ export function Scatterplot(_ref) {
|
|
|
128
133
|
if (!xData.isPending && !xData.serverError) {
|
|
129
134
|
// @TODO: add condition to check obs slicing
|
|
130
135
|
setData(d => {
|
|
131
|
-
return {
|
|
132
|
-
...d,
|
|
136
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
133
137
|
values: xData.data
|
|
134
|
-
};
|
|
138
|
+
});
|
|
135
139
|
});
|
|
136
140
|
} else if (!xData.isPending && xData.serverError) {
|
|
137
141
|
setData(d => {
|
|
138
|
-
return {
|
|
139
|
-
...d,
|
|
142
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
140
143
|
values: []
|
|
141
|
-
};
|
|
144
|
+
});
|
|
142
145
|
});
|
|
143
146
|
}
|
|
144
147
|
}
|
|
@@ -148,44 +151,41 @@ export function Scatterplot(_ref) {
|
|
|
148
151
|
setIsRendering(true);
|
|
149
152
|
if (!obsData.isPending && !obsData.serverError) {
|
|
150
153
|
setData(d => {
|
|
151
|
-
return {
|
|
152
|
-
...d,
|
|
154
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
153
155
|
values: obsData.data
|
|
154
|
-
};
|
|
156
|
+
});
|
|
155
157
|
});
|
|
156
158
|
} else if (!obsData.isPending && obsData.serverError) {
|
|
157
159
|
setData(d => {
|
|
158
|
-
return {
|
|
159
|
-
...d,
|
|
160
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
160
161
|
values: []
|
|
161
|
-
};
|
|
162
|
+
});
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
} else if (settings.colorEncoding === COLOR_ENCODINGS.VAR && settings.sliceBy.obs) {
|
|
165
166
|
if (!obsData.isPending && !obsData.serverError) {
|
|
166
167
|
setData(d => {
|
|
167
|
-
return {
|
|
168
|
-
...d,
|
|
168
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
169
169
|
sliceValues: obsData.data
|
|
170
|
-
};
|
|
170
|
+
});
|
|
171
171
|
});
|
|
172
172
|
} else if (!obsData.isPending && obsData.serverError) {
|
|
173
173
|
setData(d => {
|
|
174
|
-
return {
|
|
175
|
-
...d,
|
|
174
|
+
return _objectSpread(_objectSpread({}, d), {}, {
|
|
176
175
|
sliceValues: []
|
|
177
|
-
};
|
|
176
|
+
});
|
|
178
177
|
});
|
|
179
178
|
}
|
|
180
179
|
}
|
|
181
180
|
}, [settings.colorEncoding, obsData.data, obsData.isPending, obsData.serverError, settings.sliceBy.obs]);
|
|
182
181
|
const isCategorical = useMemo(() => {
|
|
183
182
|
if (settings.colorEncoding === COLOR_ENCODINGS.OBS) {
|
|
184
|
-
|
|
183
|
+
var _settings$selectedObs, _settings$selectedObs2;
|
|
184
|
+
return ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === OBS_TYPES.CATEGORICAL || ((_settings$selectedObs2 = settings.selectedObs) === null || _settings$selectedObs2 === void 0 ? void 0 : _settings$selectedObs2.type) === OBS_TYPES.BOOLEAN;
|
|
185
185
|
} else {
|
|
186
186
|
return false;
|
|
187
187
|
}
|
|
188
|
-
}, [settings.colorEncoding, settings.selectedObs
|
|
188
|
+
}, [settings.colorEncoding, (_settings$selectedObs3 = settings.selectedObs) === null || _settings$selectedObs3 === void 0 ? void 0 : _settings$selectedObs3.type]);
|
|
189
189
|
useEffect(() => {
|
|
190
190
|
dispatch({
|
|
191
191
|
type: "set.controls.valueRange",
|
|
@@ -271,17 +271,18 @@ export function Scatterplot(_ref) {
|
|
|
271
271
|
const layers = useDeferredValue(mode === ViewMode ? memoizedLayers.reverse() : memoizedLayers); // draw scatterplot on top of polygons when in ViewMode
|
|
272
272
|
|
|
273
273
|
useEffect(() => {
|
|
274
|
-
|
|
274
|
+
var _features$features;
|
|
275
|
+
if (!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length)) {
|
|
275
276
|
dispatch({
|
|
276
277
|
type: "disable.slice.polygons"
|
|
277
278
|
});
|
|
278
279
|
}
|
|
279
|
-
}, [dispatch, features
|
|
280
|
+
}, [dispatch, features === null || features === void 0 || (_features$features2 = features.features) === null || _features$features2 === void 0 ? void 0 : _features$features2.length]);
|
|
280
281
|
useEffect(() => {
|
|
281
282
|
dispatch({
|
|
282
283
|
type: "set.polygons",
|
|
283
284
|
obsm: settings.selectedObsm,
|
|
284
|
-
polygons: features
|
|
285
|
+
polygons: (features === null || features === void 0 ? void 0 : features.features) || []
|
|
285
286
|
});
|
|
286
287
|
}, [settings.selectedObsm, dispatch, features.features]);
|
|
287
288
|
function onLayerClick(info) {
|
|
@@ -294,9 +295,9 @@ export function Scatterplot(_ref) {
|
|
|
294
295
|
const getLabel = function (o, v) {
|
|
295
296
|
let isVar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
296
297
|
if (isVar || o.type === OBS_TYPES.CONTINUOUS) {
|
|
297
|
-
return
|
|
298
|
+
return "".concat(o.name, ": ").concat(formatNumerical(parseFloat(v)));
|
|
298
299
|
} else {
|
|
299
|
-
return
|
|
300
|
+
return "".concat(o.name, ": ").concat(o.codesMap[v]);
|
|
300
301
|
}
|
|
301
302
|
};
|
|
302
303
|
const getTooltip = _ref5 => {
|
|
@@ -304,15 +305,17 @@ export function Scatterplot(_ref) {
|
|
|
304
305
|
object,
|
|
305
306
|
index
|
|
306
307
|
} = _ref5;
|
|
307
|
-
if (!object || object
|
|
308
|
+
if (!object || (object === null || object === void 0 ? void 0 : object.type) === "Feature") return;
|
|
308
309
|
const text = [];
|
|
309
310
|
if (settings.colorEncoding === COLOR_ENCODINGS.OBS && settings.selectedObs && !_.some(settings.labelObs, {
|
|
310
311
|
name: settings.selectedObs.name
|
|
311
312
|
})) {
|
|
312
|
-
|
|
313
|
+
var _obsData$data;
|
|
314
|
+
text.push(getLabel(settings.selectedObs, (_obsData$data = obsData.data) === null || _obsData$data === void 0 ? void 0 : _obsData$data[index]));
|
|
313
315
|
}
|
|
314
316
|
if (settings.colorEncoding === COLOR_ENCODINGS.VAR && settings.selectedVar) {
|
|
315
|
-
|
|
317
|
+
var _xData$data;
|
|
318
|
+
text.push(getLabel(settings.selectedVar, (_xData$data = xData.data) === null || _xData$data === void 0 ? void 0 : _xData$data[index], true));
|
|
316
319
|
}
|
|
317
320
|
if (settings.labelObs.length) {
|
|
318
321
|
text.push(..._.map(labelObsData.data, (v, k) => {
|
|
@@ -326,16 +329,16 @@ export function Scatterplot(_ref) {
|
|
|
326
329
|
text: text.length ? _.compact(text).join("\n") : null,
|
|
327
330
|
className: grayOut ? "tooltip-grayout" : "deck-tooltip",
|
|
328
331
|
style: !grayOut ? {
|
|
329
|
-
"border-left":
|
|
332
|
+
"border-left": "3px solid ".concat(rgbToHex(getFillColor(null, {
|
|
330
333
|
index
|
|
331
|
-
}))
|
|
334
|
+
})))
|
|
332
335
|
} : {
|
|
333
336
|
"border-left": "none"
|
|
334
337
|
}
|
|
335
338
|
};
|
|
336
339
|
};
|
|
337
340
|
const isPending = (isRendering || xData.isPending || obsmData.isPending) && !obsmData.isPending;
|
|
338
|
-
const error = settings.selectedObsm && obsmData.serverError
|
|
341
|
+
const error = settings.selectedObsm && ((_obsmData$serverError = obsmData.serverError) === null || _obsmData$serverError === void 0 ? void 0 : _obsmData$serverError.length) || settings.colorEncoding === COLOR_ENCODINGS.VAR && ((_xData$serverError = xData.serverError) === null || _xData$serverError === void 0 ? void 0 : _xData$serverError.length) || settings.colorEncoding === COLOR_ENCODINGS.OBS && ((_obsData$serverError = obsData.serverError) === null || _obsData$serverError === void 0 ? void 0 : _obsData$serverError.length) || settings.labelObs.lengh && ((_labelObsData$serverE = labelObsData.serverError) === null || _labelObsData$serverE === void 0 ? void 0 : _labelObsData$serverE.length);
|
|
339
342
|
return /*#__PURE__*/React.createElement("div", {
|
|
340
343
|
className: "cherita-container-scatterplot"
|
|
341
344
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -369,12 +372,10 @@ export function Scatterplot(_ref) {
|
|
|
369
372
|
setFeatures: setFeatures,
|
|
370
373
|
selectedFeatureIndexes: selectedFeatureIndexes,
|
|
371
374
|
resetBounds: () => setViewState(getBounds()),
|
|
372
|
-
increaseZoom: () => setViewState(v => ({
|
|
373
|
-
...v,
|
|
375
|
+
increaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
|
|
374
376
|
zoom: v.zoom + 1
|
|
375
377
|
})),
|
|
376
|
-
decreaseZoom: () => setViewState(v => ({
|
|
377
|
-
...v,
|
|
378
|
+
decreaseZoom: () => setViewState(v => _objectSpread(_objectSpread({}, v), {}, {
|
|
378
379
|
zoom: v.zoom - 1
|
|
379
380
|
})),
|
|
380
381
|
setShowObs: setShowObs,
|
|
@@ -389,8 +390,8 @@ export function Scatterplot(_ref) {
|
|
|
389
390
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
390
391
|
icon: faTriangleExclamation
|
|
391
392
|
}), "\xA0Error loading data"), /*#__PURE__*/React.createElement(Toolbox, {
|
|
392
|
-
mode: settings.colorEncoding === COLOR_ENCODINGS.VAR ? settings.selectedVar
|
|
393
|
-
obsLength: parseInt(obsmData.data
|
|
393
|
+
mode: settings.colorEncoding === COLOR_ENCODINGS.VAR ? (_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.name : settings.colorEncoding === COLOR_ENCODINGS.OBS ? (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.name : null,
|
|
394
|
+
obsLength: parseInt((_obsmData$data = obsmData.data) === null || _obsmData$data === void 0 ? void 0 : _obsmData$data.length),
|
|
394
395
|
slicedLength: parseInt(slicedLength)
|
|
395
396
|
})), /*#__PURE__*/React.createElement(Legend, {
|
|
396
397
|
isCategorical: isCategorical,
|
|
@@ -6,10 +6,11 @@ import { COLORSCALES } from "../../constants/colorscales";
|
|
|
6
6
|
import { COLOR_ENCODINGS, OBS_TYPES } from "../../constants/constants";
|
|
7
7
|
import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
|
|
8
8
|
export const ScatterplotControls = () => {
|
|
9
|
+
var _settings$selectedObs;
|
|
9
10
|
const settings = useSettings();
|
|
10
11
|
const dispatch = useSettingsDispatch();
|
|
11
12
|
const [sliderValue, setSliderValue] = React.useState(settings.controls.range || [0, 1]);
|
|
12
|
-
const isCategorical = settings.colorEncoding === COLOR_ENCODINGS.OBS ? settings.selectedObs
|
|
13
|
+
const isCategorical = settings.colorEncoding === COLOR_ENCODINGS.OBS ? ((_settings$selectedObs = settings.selectedObs) === null || _settings$selectedObs === void 0 ? void 0 : _settings$selectedObs.type) === OBS_TYPES.CATEGORICAL : false;
|
|
13
14
|
const colormapList = _.keys(COLORSCALES).map(key => /*#__PURE__*/React.createElement(Dropdown.Item, {
|
|
14
15
|
key: key,
|
|
15
16
|
active: settings.controls.colorScale === key,
|
|
@@ -13,6 +13,7 @@ import { OffcanvasControls } from "../offcanvas";
|
|
|
13
13
|
import { ScatterplotControls } from "./ScatterplotControls";
|
|
14
14
|
import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
|
|
15
15
|
export function SpatialControls(_ref) {
|
|
16
|
+
var _features$features;
|
|
16
17
|
let {
|
|
17
18
|
mode,
|
|
18
19
|
setMode,
|
|
@@ -140,7 +141,7 @@ export function SpatialControls(_ref) {
|
|
|
140
141
|
onSelect: onSelect
|
|
141
142
|
}, /*#__PURE__*/React.createElement(Dropdown.Toggle, {
|
|
142
143
|
id: "dropdown-autoclose-outside",
|
|
143
|
-
className:
|
|
144
|
+
className: "caret-off ".concat(mode === DrawPolygonByDraggingMode || mode === ModifyMode ? "active" : "")
|
|
144
145
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
145
146
|
icon: faDrawPolygon
|
|
146
147
|
})), /*#__PURE__*/React.createElement(Dropdown.Menu, null, /*#__PURE__*/React.createElement(Dropdown.Header, null, "Polygon tools"), /*#__PURE__*/React.createElement(Dropdown.Item, {
|
|
@@ -158,7 +159,7 @@ export function SpatialControls(_ref) {
|
|
|
158
159
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
159
160
|
icon: faTrash,
|
|
160
161
|
className: "nav-icon"
|
|
161
|
-
}), "Delete polygons"))), !!features
|
|
162
|
+
}), "Delete polygons"))), !!(features !== null && features !== void 0 && (_features$features = features.features) !== null && _features$features !== void 0 && _features$features.length) && polygonControls, /*#__PURE__*/React.createElement(Button, {
|
|
162
163
|
onClick: handleShowControls
|
|
163
164
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
164
165
|
icon: faSliders
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
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); }
|
|
1
6
|
import React, { useState } from "react";
|
|
2
7
|
import CloseIcon from "@mui/icons-material/Close";
|
|
3
8
|
import SearchIcon from "@mui/icons-material/Search";
|
|
@@ -111,9 +116,9 @@ export function SearchModal(_ref2) {
|
|
|
111
116
|
className: "flex-column"
|
|
112
117
|
}, searchVar && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
|
|
113
118
|
eventKey: FEATURE_TYPE.VAR
|
|
114
|
-
}, "Genes", " ", !!varResultsLength &&
|
|
119
|
+
}, "Genes", " ", !!varResultsLength && "(".concat(varResultsLength, ")"))), searchDiseases && /*#__PURE__*/React.createElement(Nav.Item, null, /*#__PURE__*/React.createElement(Nav.Link, {
|
|
115
120
|
eventKey: FEATURE_TYPE.DISEASE
|
|
116
|
-
}, "Diseases", " ", !!diseaseResultsLength &&
|
|
121
|
+
}, "Diseases", " ", !!diseaseResultsLength && "(".concat(diseaseResultsLength, ")"))))), /*#__PURE__*/React.createElement(Col, {
|
|
117
122
|
sm: 9,
|
|
118
123
|
className: "py-3"
|
|
119
124
|
}, /*#__PURE__*/React.createElement(Tab.Content, null, searchVar && /*#__PURE__*/React.createElement(Tab.Pane, {
|
|
@@ -123,10 +128,9 @@ export function SearchModal(_ref2) {
|
|
|
123
128
|
handleSelect: handleSelect,
|
|
124
129
|
selectedResult: selectedResult.var,
|
|
125
130
|
setSelectedResult: item => setSelectedResult(prev => {
|
|
126
|
-
return {
|
|
127
|
-
...prev,
|
|
131
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
128
132
|
var: item
|
|
129
|
-
};
|
|
133
|
+
});
|
|
130
134
|
}),
|
|
131
135
|
setResultsLength: setVarResultsLength
|
|
132
136
|
})), searchDiseases && /*#__PURE__*/React.createElement(Tab.Pane, {
|
|
@@ -135,10 +139,9 @@ export function SearchModal(_ref2) {
|
|
|
135
139
|
text: text,
|
|
136
140
|
selectedResult: selectedResult.disease,
|
|
137
141
|
setSelectedResult: item => setSelectedResult(prev => {
|
|
138
|
-
return {
|
|
139
|
-
...prev,
|
|
142
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
140
143
|
disease: item
|
|
141
|
-
};
|
|
144
|
+
});
|
|
142
145
|
}),
|
|
143
146
|
setResultsLength: setDiseaseResultsLength
|
|
144
147
|
}))))))), /*#__PURE__*/React.createElement(Col, {
|