@haniffalab/cherita-react 1.2.0-dev.2025-05-21.e8f5ce54 → 1.2.0-dev.2025-05-21.6154c7e3
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/controls/Controls.js +60 -0
- package/dist/cjs/components/dotplot/Dotplot.js +29 -22
- package/dist/cjs/components/dotplot/DotplotControls.js +62 -99
- 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/heatmap/HeatmapControls.js +2 -19
- package/dist/cjs/components/matrixplot/Matrixplot.js +25 -16
- package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
- 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 +11 -24
- 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 +48 -39
- package/dist/cjs/components/violin/ViolinControls.js +4 -20
- package/dist/cjs/context/DatasetContext.js +17 -11
- package/dist/cjs/context/FilterContext.js +9 -8
- package/dist/cjs/context/SettingsContext.js +172 -240
- 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/controls/Controls.js +51 -0
- package/dist/esm/components/dotplot/Dotplot.js +28 -20
- package/dist/esm/components/dotplot/DotplotControls.js +62 -97
- 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/heatmap/HeatmapControls.js +3 -20
- package/dist/esm/components/matrixplot/Matrixplot.js +24 -14
- package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
- 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 +11 -22
- 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 +47 -37
- package/dist/esm/components/violin/ViolinControls.js +5 -21
- package/dist/esm/context/DatasetContext.js +16 -9
- package/dist/esm/context/FilterContext.js +8 -6
- package/dist/esm/context/SettingsContext.js +171 -238
- 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, 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,
|
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
2
|
import { Box, Slider, Typography } from "@mui/material";
|
|
3
|
-
import
|
|
4
|
-
import { Dropdown } from "react-bootstrap";
|
|
5
|
-
import { COLORSCALES } from "../../constants/colorscales";
|
|
3
|
+
import { Form } from "react-bootstrap";
|
|
6
4
|
import { COLOR_ENCODINGS, OBS_TYPES } from "../../constants/constants";
|
|
7
5
|
import { useSettings, useSettingsDispatch } from "../../context/SettingsContext";
|
|
6
|
+
import { ColorscaleSelect } from "../controls/Controls";
|
|
8
7
|
export const ScatterplotControls = () => {
|
|
8
|
+
var _settings$selectedObs;
|
|
9
9
|
const settings = useSettings();
|
|
10
10
|
const dispatch = useSettingsDispatch();
|
|
11
11
|
const [sliderValue, setSliderValue] = React.useState(settings.controls.range || [0, 1]);
|
|
12
|
-
const isCategorical = settings.colorEncoding === COLOR_ENCODINGS.OBS ? settings.selectedObs
|
|
13
|
-
const colormapList = _.keys(COLORSCALES).map(key => /*#__PURE__*/React.createElement(Dropdown.Item, {
|
|
14
|
-
key: key,
|
|
15
|
-
active: settings.controls.colorScale === key,
|
|
16
|
-
onClick: () => {
|
|
17
|
-
dispatch({
|
|
18
|
-
type: "set.controls.colorScale",
|
|
19
|
-
colorScale: key
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}, key));
|
|
12
|
+
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;
|
|
23
13
|
const valueLabelFormat = value => {
|
|
24
14
|
return (value * (settings.controls.valueRange[1] - settings.controls.valueRange[0]) + settings.controls.valueRange[0]).toFixed(2);
|
|
25
15
|
};
|
|
@@ -48,7 +38,9 @@ export const ScatterplotControls = () => {
|
|
|
48
38
|
}, /*#__PURE__*/React.createElement(Typography, {
|
|
49
39
|
id: "colorscale-range",
|
|
50
40
|
gutterBottom: true
|
|
51
|
-
}, "Colorscale range"), /*#__PURE__*/React.createElement(
|
|
41
|
+
}, "Colorscale range"), /*#__PURE__*/React.createElement("div", {
|
|
42
|
+
className: "px-4"
|
|
43
|
+
}, /*#__PURE__*/React.createElement(Slider, {
|
|
52
44
|
"aria-labelledby": "colorscale-range",
|
|
53
45
|
min: 0,
|
|
54
46
|
max: 1,
|
|
@@ -61,11 +53,8 @@ export const ScatterplotControls = () => {
|
|
|
61
53
|
valueLabelFormat: valueLabelFormat,
|
|
62
54
|
marks: marks,
|
|
63
55
|
disabled: isCategorical
|
|
64
|
-
}));
|
|
65
|
-
return /*#__PURE__*/React.createElement(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}, settings.controls.colorScale), /*#__PURE__*/React.createElement(Dropdown.Menu, null, colormapList)), /*#__PURE__*/React.createElement("div", {
|
|
69
|
-
className: "m-4"
|
|
70
|
-
}, rangeSlider));
|
|
56
|
+
})));
|
|
57
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Form, null, /*#__PURE__*/React.createElement(ColorscaleSelect, null), /*#__PURE__*/React.createElement(Form.Group, {
|
|
58
|
+
className: "mb-2"
|
|
59
|
+
}, rangeSlider)));
|
|
71
60
|
};
|
|
@@ -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, {
|
|
@@ -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, useEffect } from "react";
|
|
2
7
|
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -20,10 +25,9 @@ export function VarInfo(_ref) {
|
|
|
20
25
|
});
|
|
21
26
|
useEffect(() => {
|
|
22
27
|
setParams(p => {
|
|
23
|
-
return {
|
|
24
|
-
...p,
|
|
28
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
25
29
|
geneName: varItem.name
|
|
26
|
-
};
|
|
30
|
+
});
|
|
27
31
|
});
|
|
28
32
|
}, [varItem.name]);
|
|
29
33
|
const {
|
|
@@ -34,7 +38,7 @@ export function VarInfo(_ref) {
|
|
|
34
38
|
refetchOnMount: false,
|
|
35
39
|
enabled: !!dataset.diseaseDatasets.length
|
|
36
40
|
});
|
|
37
|
-
const hasDiseaseInfo = !isPending && !serverError && !!fetchedData
|
|
41
|
+
const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
|
|
38
42
|
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h5", null, varItem.name), !!dataset.diseaseDatasets.length && isPending && /*#__PURE__*/React.createElement("p", null, "Loading..."), hasDiseaseInfo && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h6", null, "Associated diseases"), /*#__PURE__*/React.createElement(VarDiseaseInfo, {
|
|
39
43
|
data: fetchedData
|
|
40
44
|
})));
|
|
@@ -54,13 +58,12 @@ const useVarMean = function (varKeys) {
|
|
|
54
58
|
});
|
|
55
59
|
useEffect(() => {
|
|
56
60
|
setParams(p => {
|
|
57
|
-
return {
|
|
58
|
-
...p,
|
|
61
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
59
62
|
varKeys: _.map(varKeys, v => v.isSet ? {
|
|
60
63
|
name: v.name,
|
|
61
64
|
indices: v.vars.map(v => v.index)
|
|
62
65
|
} : v.index)
|
|
63
|
-
};
|
|
66
|
+
});
|
|
64
67
|
});
|
|
65
68
|
}, [varKeys]);
|
|
66
69
|
return useFetch(ENDPOINT, params, {
|
|
@@ -93,10 +96,9 @@ export function DiseaseInfo(_ref2) {
|
|
|
93
96
|
});
|
|
94
97
|
useEffect(() => {
|
|
95
98
|
setParams(p => {
|
|
96
|
-
return {
|
|
97
|
-
...p,
|
|
99
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
98
100
|
diseaseId: disease.id
|
|
99
|
-
};
|
|
101
|
+
});
|
|
100
102
|
});
|
|
101
103
|
}, [disease]);
|
|
102
104
|
const diseaseData = useFetch(ENDPOINT, params, {
|
|
@@ -108,7 +110,7 @@ export function DiseaseInfo(_ref2) {
|
|
|
108
110
|
setDiseaseVars(diseaseData.fetchedData);
|
|
109
111
|
}
|
|
110
112
|
}, [diseaseData.fetchedData, diseaseData.isPending, diseaseData.serverError]);
|
|
111
|
-
const varMeans = useVarMean(diseaseVars, !!diseaseVars
|
|
113
|
+
const varMeans = useVarMean(diseaseVars, !!(diseaseVars !== null && diseaseVars !== void 0 && diseaseVars.length) && settings.varSort.disease.sort === VAR_SORT.MATRIX);
|
|
112
114
|
useEffect(() => {
|
|
113
115
|
if (settings.varSort.disease.sort === VAR_SORT.MATRIX) {
|
|
114
116
|
if (!varMeans.isPending && !varMeans.serverError) {
|
|
@@ -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, { useDeferredValue, useEffect, useMemo, useState } from "react";
|
|
2
7
|
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -30,10 +35,9 @@ export function VarSearchResults(_ref) {
|
|
|
30
35
|
const setData = text => {
|
|
31
36
|
if (text.length) {
|
|
32
37
|
setParams(p => {
|
|
33
|
-
return {
|
|
34
|
-
...p,
|
|
38
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
35
39
|
text: text
|
|
36
|
-
};
|
|
40
|
+
});
|
|
37
41
|
});
|
|
38
42
|
} else {
|
|
39
43
|
setSuggestions([]);
|
|
@@ -47,7 +51,7 @@ export function VarSearchResults(_ref) {
|
|
|
47
51
|
useEffect(() => {
|
|
48
52
|
if (!isPending && !serverError) {
|
|
49
53
|
setSuggestions(fetchedData);
|
|
50
|
-
setResultsLength(fetchedData
|
|
54
|
+
setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
|
|
51
55
|
}
|
|
52
56
|
}, [fetchedData, isPending, serverError, setResultsLength]);
|
|
53
57
|
const getDataAtIndex = index => deferredData[index];
|
|
@@ -58,7 +62,7 @@ export function VarSearchResults(_ref) {
|
|
|
58
62
|
onClick: () => {
|
|
59
63
|
setSelectedResult(item);
|
|
60
64
|
},
|
|
61
|
-
active: selectedResult
|
|
65
|
+
active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.index) === item.index
|
|
62
66
|
}, /*#__PURE__*/React.createElement("div", {
|
|
63
67
|
className: "d-flex justify-content-between align-items-center w-100"
|
|
64
68
|
}, /*#__PURE__*/React.createElement("div", null, item.name), /*#__PURE__*/React.createElement("div", {
|
|
@@ -80,7 +84,7 @@ export function VarSearchResults(_ref) {
|
|
|
80
84
|
}, /*#__PURE__*/React.createElement(ListGroup, {
|
|
81
85
|
variant: "flush",
|
|
82
86
|
className: "cherita-list"
|
|
83
|
-
}, deferredData
|
|
87
|
+
}, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
|
|
84
88
|
getDataAtIndex: getDataAtIndex,
|
|
85
89
|
count: deferredData.length,
|
|
86
90
|
ItemComponent: ItemComponent,
|
|
@@ -115,10 +119,9 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
115
119
|
const setData = text => {
|
|
116
120
|
if (text.length) {
|
|
117
121
|
setParams(p => {
|
|
118
|
-
return {
|
|
119
|
-
...p,
|
|
122
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
120
123
|
text: text
|
|
121
|
-
};
|
|
124
|
+
});
|
|
122
125
|
});
|
|
123
126
|
} else {
|
|
124
127
|
setSuggestions([]);
|
|
@@ -132,7 +135,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
132
135
|
useEffect(() => {
|
|
133
136
|
if (!isPending && !serverError) {
|
|
134
137
|
setSuggestions(fetchedData);
|
|
135
|
-
setResultsLength(fetchedData
|
|
138
|
+
setResultsLength(fetchedData === null || fetchedData === void 0 ? void 0 : fetchedData.length);
|
|
136
139
|
}
|
|
137
140
|
}, [fetchedData, isPending, serverError, setResultsLength]);
|
|
138
141
|
const getDataAtIndex = index => deferredData[index];
|
|
@@ -143,7 +146,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
143
146
|
onClick: () => {
|
|
144
147
|
setSelectedResult(item);
|
|
145
148
|
},
|
|
146
|
-
active: selectedResult
|
|
149
|
+
active: (selectedResult === null || selectedResult === void 0 ? void 0 : selectedResult.id) === item.id
|
|
147
150
|
}, /*#__PURE__*/React.createElement("div", {
|
|
148
151
|
className: "d-flex justify-content-between align-items-center w-100"
|
|
149
152
|
}, /*#__PURE__*/React.createElement("div", null, item.disease_name)))));
|
|
@@ -152,7 +155,7 @@ export function DiseasesSearchResults(_ref2) {
|
|
|
152
155
|
}, /*#__PURE__*/React.createElement(ListGroup, {
|
|
153
156
|
variant: "flush",
|
|
154
157
|
className: "cherita-list"
|
|
155
|
-
}, deferredData
|
|
158
|
+
}, deferredData !== null && deferredData !== void 0 && deferredData.length ? /*#__PURE__*/React.createElement(VirtualizedList, {
|
|
156
159
|
getDataAtIndex: getDataAtIndex,
|
|
157
160
|
count: deferredData.length,
|
|
158
161
|
ItemComponent: ItemComponent,
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
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; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
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); }
|
|
2
7
|
import React, { useEffect, useState } from "react";
|
|
3
8
|
import { faDroplet, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons";
|
|
4
9
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -31,10 +36,9 @@ function VarHistogram(_ref) {
|
|
|
31
36
|
});
|
|
32
37
|
useEffect(() => {
|
|
33
38
|
setParams(p => {
|
|
34
|
-
return {
|
|
35
|
-
...p,
|
|
39
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
36
40
|
obsIndices: isSliced ? [...(obsIndices || [])] : null
|
|
37
|
-
};
|
|
41
|
+
});
|
|
38
42
|
});
|
|
39
43
|
}, [obsIndices, isSliced]);
|
|
40
44
|
const {
|
|
@@ -107,9 +111,9 @@ export function SelectionItem(_ref3) {
|
|
|
107
111
|
refetchOnMount: false,
|
|
108
112
|
enabled: !!dataset.diseaseDatasets.length
|
|
109
113
|
});
|
|
110
|
-
const hasDiseaseInfo = !isPending && !serverError && !!fetchedData
|
|
114
|
+
const hasDiseaseInfo = !isPending && !serverError && !!(fetchedData !== null && fetchedData !== void 0 && fetchedData.length);
|
|
111
115
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
112
|
-
className:
|
|
116
|
+
className: "d-flex justify-content-between ".concat(hasDiseaseInfo ? "cursor-pointer" : ""),
|
|
113
117
|
onClick: () => {
|
|
114
118
|
setOpenInfo(o => !o);
|
|
115
119
|
}
|
|
@@ -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 { faTimes } from "@fortawesome/free-solid-svg-icons";
|
|
3
8
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
@@ -27,13 +32,12 @@ const useVarMean = function (varKeys) {
|
|
|
27
32
|
});
|
|
28
33
|
useEffect(() => {
|
|
29
34
|
setParams(p => {
|
|
30
|
-
return {
|
|
31
|
-
...p,
|
|
35
|
+
return _objectSpread(_objectSpread({}, p), {}, {
|
|
32
36
|
varKeys: _.map(varKeys, v => v.isSet ? {
|
|
33
37
|
name: v.name,
|
|
34
38
|
indices: v.vars.map(v => v.index)
|
|
35
39
|
} : v.index)
|
|
36
|
-
};
|
|
40
|
+
});
|
|
37
41
|
});
|
|
38
42
|
}, [varKeys]);
|
|
39
43
|
return useFetch(ENDPOINT, params, {
|
|
@@ -47,17 +51,19 @@ const sortMeans = (i, means) => {
|
|
|
47
51
|
return means[i.name] || _.min(_.values(means)) - 1;
|
|
48
52
|
};
|
|
49
53
|
export function VarNamesList(_ref) {
|
|
54
|
+
var _settings$selectedVar, _settings$selectedVar2;
|
|
50
55
|
let {
|
|
51
56
|
mode = SELECTION_MODES.SINGLE,
|
|
52
57
|
displayName = "genes"
|
|
53
58
|
} = _ref;
|
|
54
59
|
const settings = useSettings();
|
|
55
60
|
const dispatch = useSettingsDispatch();
|
|
56
|
-
const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? settings.selectedVar
|
|
61
|
+
const [active, setActive] = useState(mode === SELECTION_MODES.SINGLE ? ((_settings$selectedVar = settings.selectedVar) === null || _settings$selectedVar === void 0 ? void 0 : _settings$selectedVar.matrix_index) || ((_settings$selectedVar2 = settings.selectedVar) === null || _settings$selectedVar2 === void 0 ? void 0 : _settings$selectedVar2.name) : settings.selectedMultiVar.map(i => i.matrix_index || i.name));
|
|
57
62
|
const [sortedVars, setSortedVars] = useState([]);
|
|
58
63
|
useEffect(() => {
|
|
59
64
|
if (mode === SELECTION_MODES.SINGLE) {
|
|
60
|
-
|
|
65
|
+
var _settings$selectedVar3, _settings$selectedVar4;
|
|
66
|
+
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));
|
|
61
67
|
}
|
|
62
68
|
}, [mode, settings.selectedVar]);
|
|
63
69
|
useEffect(() => {
|
|
@@ -108,13 +114,13 @@ export function VarNamesList(_ref) {
|
|
|
108
114
|
});
|
|
109
115
|
const newSetName = () => {
|
|
110
116
|
let n = 1;
|
|
111
|
-
let setName =
|
|
117
|
+
let setName = "Set ".concat(n);
|
|
112
118
|
const nameExists = name => {
|
|
113
119
|
return settings.vars.some(v => v.name === name);
|
|
114
120
|
};
|
|
115
121
|
while (nameExists(setName)) {
|
|
116
122
|
n++;
|
|
117
|
-
setName =
|
|
123
|
+
setName = "Set ".concat(n);
|
|
118
124
|
}
|
|
119
125
|
return setName;
|
|
120
126
|
};
|