@haniffalab/cherita-react 0.2.0-dev.2024-09-26.775b9a06 → 0.2.0-dev.2024-09-26.1ea62883
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/App.scss +77 -8
- package/dist/components/Offcanvas/index.js +6 -2
- package/dist/components/dotplot/Dotplot.js +22 -5
- package/dist/components/dotplot/DotplotControls.js +11 -10
- package/dist/components/heatmap/Heatmap.js +22 -5
- package/dist/components/matrixplot/Matrixplot.js +22 -5
- package/dist/components/matrixplot/MatrixplotControls.js +8 -7
- package/dist/components/obs-list/ObsItem.js +394 -0
- package/dist/components/obs-list/ObsList.js +116 -299
- package/dist/components/obs-list/ObsToolbar.js +76 -0
- package/dist/components/scatterplot/Legend.js +4 -3
- package/dist/components/scatterplot/Scatterplot.js +129 -61
- package/dist/components/scatterplot/Toolbox.js +3 -2
- package/dist/components/search-bar/SearchBar.js +18 -2
- package/dist/components/search-bar/SearchResults.js +8 -8
- package/dist/components/var-list/VarItem.js +316 -0
- package/dist/components/var-list/VarList.js +167 -149
- package/dist/components/var-list/VarSet.js +214 -0
- package/dist/components/violin/Violin.js +46 -13
- package/dist/components/violin/ViolinControls.js +13 -18
- package/dist/constants/constants.js +41 -29
- package/dist/context/DatasetContext.js +91 -31
- package/dist/context/FilterContext.js +76 -0
- package/dist/helpers/map-helper.js +20 -15
- package/dist/helpers/zarr-helper.js +35 -13
- package/dist/index.js +7 -0
- package/dist/utils/VirtualizedList.js +69 -0
- package/dist/utils/requests.js +2 -2
- package/dist/utils/search.js +3 -56
- package/dist/utils/string.js +18 -0
- package/package.json +3 -2
- package/dist/components/obs-list/ObsValueList.js +0 -101
package/dist/App.scss
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
// Theme CSS
|
|
2
|
+
$accordion-button-active-bg: #e7edf0;
|
|
3
|
+
|
|
1
4
|
@import "bootstrap/scss/bootstrap";
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
input[type="checkbox"], .cursor-pointer {
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
}
|
|
4
9
|
|
|
5
10
|
.loading-spinner {
|
|
6
11
|
@extend .bg-light;
|
|
@@ -78,12 +83,6 @@
|
|
|
78
83
|
height: 100%;
|
|
79
84
|
}
|
|
80
85
|
|
|
81
|
-
.cherita-alert {
|
|
82
|
-
position: absolute;
|
|
83
|
-
z-index: 10;
|
|
84
|
-
bottom: 40px;
|
|
85
|
-
left: 20px;
|
|
86
|
-
}
|
|
87
86
|
.cherita-spatial-controls {
|
|
88
87
|
position: absolute;
|
|
89
88
|
z-index: 10;
|
|
@@ -110,6 +109,15 @@
|
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
111
|
|
|
112
|
+
.cherita-toolbox-footer {
|
|
113
|
+
display: flex;
|
|
114
|
+
flex-direction: column;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cherita-toolbox-footer .alert {
|
|
118
|
+
width: fit-content;
|
|
119
|
+
}
|
|
120
|
+
|
|
113
121
|
.cherita-toolbox {
|
|
114
122
|
order: 1;
|
|
115
123
|
}
|
|
@@ -126,7 +134,7 @@
|
|
|
126
134
|
}
|
|
127
135
|
|
|
128
136
|
.cherita-accordion-active .accordion-button {
|
|
129
|
-
background-color:
|
|
137
|
+
background-color: rgb(204, 227, 237)
|
|
130
138
|
}
|
|
131
139
|
|
|
132
140
|
.obs-value-list-check {
|
|
@@ -187,4 +195,65 @@
|
|
|
187
195
|
.cm-small {
|
|
188
196
|
height: 15px;
|
|
189
197
|
width: 15px;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.obs-distribution {
|
|
201
|
+
width: 100%;
|
|
202
|
+
height: 4rem;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.obs-continuous-stats {
|
|
206
|
+
font-weight: lighter;
|
|
207
|
+
margin: 0;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.value-count-badge {
|
|
211
|
+
color: black !important;
|
|
212
|
+
background-color: rgb(222, 222, 222) !important;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.value-pct-gauge-container {
|
|
216
|
+
width: 1.5rem;
|
|
217
|
+
height: 1.5rem;
|
|
218
|
+
padding: 0.2rem;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.feature-histogram-container {
|
|
222
|
+
height: 1.25rem;
|
|
223
|
+
width: 5rem;
|
|
224
|
+
display: flex;
|
|
225
|
+
align-items: center;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.feature-histogram {
|
|
229
|
+
@extend .feature-histogram-container;
|
|
230
|
+
background-color: rgb(222, 222, 222);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.feature-histogram-tooltip .MuiChartsTooltip-markCell,.MuiChartsTooltip-labelCell {
|
|
234
|
+
display: none;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.feature-histogram-tooltip .MuiChartsTooltip-valueCell {
|
|
238
|
+
padding: 0.5rem !important;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.feature-histogram-tooltip .MuiChartsTooltip-valueCell > p {
|
|
242
|
+
font-size: 0.85rem !important;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.feature-histogram-tooltip td > p {
|
|
246
|
+
font-size: 0.85rem !important;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.feature-disease-info {
|
|
250
|
+
font-weight: lighter;
|
|
251
|
+
border-top: 1px solid var(list-group-border-color);
|
|
252
|
+
border-right: 0;
|
|
253
|
+
border-left: 0;
|
|
254
|
+
border-bottom: 0;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.feature-disease-info table {
|
|
258
|
+
margin: 0;
|
|
190
259
|
}
|
|
@@ -20,7 +20,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
20
20
|
function OffcanvasObs(_ref) {
|
|
21
21
|
let {
|
|
22
22
|
show,
|
|
23
|
-
handleClose
|
|
23
|
+
handleClose,
|
|
24
|
+
...props
|
|
24
25
|
} = _ref;
|
|
25
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Offcanvas.default, {
|
|
26
27
|
show: show,
|
|
@@ -33,7 +34,10 @@ function OffcanvasObs(_ref) {
|
|
|
33
34
|
children: "Categories"
|
|
34
35
|
})
|
|
35
36
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Offcanvas.default.Body, {
|
|
36
|
-
|
|
37
|
+
className: "p-0",
|
|
38
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ObsList.ObsColsList, {
|
|
39
|
+
...props
|
|
40
|
+
})
|
|
37
41
|
})]
|
|
38
42
|
});
|
|
39
43
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Dotplot = Dotplot;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
9
10
|
var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
|
|
10
11
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
@@ -15,6 +16,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
15
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
18
|
function Dotplot() {
|
|
19
|
+
var _dataset$selectedObs, _dataset$selectedObs2, _dataset$selectedObs3;
|
|
18
20
|
const ENDPOINT = "dotplot";
|
|
19
21
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
20
22
|
const dispatch = (0, _DatasetContext.useDatasetDispatch)();
|
|
@@ -24,8 +26,15 @@ function Dotplot() {
|
|
|
24
26
|
const [hasSelections, setHasSelections] = (0, _react.useState)(false);
|
|
25
27
|
const [params, setParams] = (0, _react.useState)({
|
|
26
28
|
url: dataset.url,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
obsCol: dataset.selectedObs,
|
|
30
|
+
obsValues: !((_dataset$selectedObs = dataset.selectedObs) !== null && _dataset$selectedObs !== void 0 && _dataset$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.codes), (_dataset$selectedObs3 = dataset.selectedObs) === null || _dataset$selectedObs3 === void 0 ? void 0 : _dataset$selectedObs3.omit).map(c => {
|
|
31
|
+
var _dataset$selectedObs4;
|
|
32
|
+
return (_dataset$selectedObs4 = dataset.selectedObs) === null || _dataset$selectedObs4 === void 0 ? void 0 : _dataset$selectedObs4.codesMap[c];
|
|
33
|
+
}),
|
|
34
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
35
|
+
name: i.name,
|
|
36
|
+
indices: i.vars.map(v => v.index)
|
|
37
|
+
} : i.index),
|
|
29
38
|
standardScale: dataset.controls.standardScale,
|
|
30
39
|
meanOnlyExpressed: dataset.controls.meanOnlyExpressed,
|
|
31
40
|
expressionCutoff: dataset.controls.expressionCutoff,
|
|
@@ -40,11 +49,19 @@ function Dotplot() {
|
|
|
40
49
|
setHasSelections(false);
|
|
41
50
|
}
|
|
42
51
|
setParams(p => {
|
|
52
|
+
var _dataset$selectedObs5, _dataset$selectedObs6, _dataset$selectedObs7;
|
|
43
53
|
return {
|
|
44
54
|
...p,
|
|
45
55
|
url: dataset.url,
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
obsCol: dataset.selectedObs,
|
|
57
|
+
obsValues: !((_dataset$selectedObs5 = dataset.selectedObs) !== null && _dataset$selectedObs5 !== void 0 && _dataset$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs6 = dataset.selectedObs) === null || _dataset$selectedObs6 === void 0 ? void 0 : _dataset$selectedObs6.codes), (_dataset$selectedObs7 = dataset.selectedObs) === null || _dataset$selectedObs7 === void 0 ? void 0 : _dataset$selectedObs7.omit).map(c => {
|
|
58
|
+
var _dataset$selectedObs8;
|
|
59
|
+
return (_dataset$selectedObs8 = dataset.selectedObs) === null || _dataset$selectedObs8 === void 0 ? void 0 : _dataset$selectedObs8.codesMap[c];
|
|
60
|
+
}),
|
|
61
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
62
|
+
name: i.name,
|
|
63
|
+
indices: i.vars.map(v => v.index)
|
|
64
|
+
} : i.index),
|
|
48
65
|
standardScale: dataset.controls.standardScale,
|
|
49
66
|
meanOnlyExpressed: dataset.controls.meanOnlyExpressed,
|
|
50
67
|
expressionCutoff: dataset.controls.expressionCutoff,
|
|
@@ -68,7 +85,7 @@ function Dotplot() {
|
|
|
68
85
|
isPending,
|
|
69
86
|
serverError
|
|
70
87
|
} = (0, _requests.useDebouncedFetch)(ENDPOINT, params, 500, {
|
|
71
|
-
enabled: !!params.
|
|
88
|
+
enabled: !!params.obsCol && !!params.varKeys.length
|
|
72
89
|
});
|
|
73
90
|
(0, _react.useEffect)(() => {
|
|
74
91
|
if (hasSelections && !isPending && !serverError) {
|
|
@@ -19,7 +19,6 @@ function DotplotControls() {
|
|
|
19
19
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
20
20
|
const dispatch = (0, _DatasetContext.useDatasetDispatch)();
|
|
21
21
|
const [controls, setControls] = (0, _react.useState)({
|
|
22
|
-
standardScale: dataset.controls.standardScale,
|
|
23
22
|
expressionCutoff: dataset.controls.expressionCutoff,
|
|
24
23
|
colorAxis: {
|
|
25
24
|
cmin: dataset.controls.colorAxis.cmin,
|
|
@@ -32,9 +31,10 @@ function DotplotControls() {
|
|
|
32
31
|
colorAxis: {
|
|
33
32
|
cmin: dataset.controls.colorAxis.cmin,
|
|
34
33
|
cmax: dataset.controls.colorAxis.cmax
|
|
35
|
-
}
|
|
34
|
+
},
|
|
35
|
+
expressionCutoff: dataset.controls.expressionCutoff
|
|
36
36
|
}));
|
|
37
|
-
}, [dataset.controls.colorAxis.cmin, dataset.controls.colorAxis.cmax]);
|
|
37
|
+
}, [dataset.controls.colorAxis.cmin, dataset.controls.colorAxis.cmax, dataset.controls.expressionCutoff]);
|
|
38
38
|
const colorScaleList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default.Item, {
|
|
39
39
|
active: dataset.controls.colorScale === key,
|
|
40
40
|
onClick: () => {
|
|
@@ -45,16 +45,17 @@ function DotplotControls() {
|
|
|
45
45
|
},
|
|
46
46
|
children: key
|
|
47
47
|
}, key));
|
|
48
|
-
const standardScaleList = _constants.
|
|
49
|
-
active: dataset.controls.
|
|
48
|
+
const standardScaleList = _lodash.default.values(_constants.DOTPLOT_SCALES).map(scale => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default.Item, {
|
|
49
|
+
active: dataset.controls.scale.dotplot === scale,
|
|
50
50
|
onClick: () => {
|
|
51
51
|
dispatch({
|
|
52
|
-
type: "set.controls.
|
|
53
|
-
|
|
52
|
+
type: "set.controls.scale",
|
|
53
|
+
plot: "dotplot",
|
|
54
|
+
scale: scale
|
|
54
55
|
});
|
|
55
56
|
},
|
|
56
|
-
children:
|
|
57
|
-
},
|
|
57
|
+
children: scale.name
|
|
58
|
+
}, scale.value));
|
|
58
59
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ButtonToolbar, {
|
|
59
60
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ButtonGroup, {
|
|
60
61
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dropdown.default, {
|
|
@@ -74,7 +75,7 @@ function DotplotControls() {
|
|
|
74
75
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default.Toggle, {
|
|
75
76
|
id: "dropdownStandardScale",
|
|
76
77
|
variant: "light",
|
|
77
|
-
children: dataset.controls.
|
|
78
|
+
children: dataset.controls.scale.dotplot.name
|
|
78
79
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default.Menu, {
|
|
79
80
|
children: standardScaleList
|
|
80
81
|
})]
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Heatmap = Heatmap;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
9
10
|
var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
|
|
10
11
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
@@ -15,6 +16,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
15
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
18
|
function Heatmap() {
|
|
19
|
+
var _dataset$selectedObs, _dataset$selectedObs2, _dataset$selectedObs3;
|
|
18
20
|
const ENDPOINT = "heatmap";
|
|
19
21
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
20
22
|
const colorscale = (0, _react.useRef)(dataset.controls.colorScale);
|
|
@@ -23,8 +25,15 @@ function Heatmap() {
|
|
|
23
25
|
const [hasSelections, setHasSelections] = (0, _react.useState)(false);
|
|
24
26
|
const [params, setParams] = (0, _react.useState)({
|
|
25
27
|
url: dataset.url,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
obsCol: dataset.selectedObs,
|
|
29
|
+
obsValues: !((_dataset$selectedObs = dataset.selectedObs) !== null && _dataset$selectedObs !== void 0 && _dataset$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.codes), (_dataset$selectedObs3 = dataset.selectedObs) === null || _dataset$selectedObs3 === void 0 ? void 0 : _dataset$selectedObs3.omit).map(c => {
|
|
30
|
+
var _dataset$selectedObs4;
|
|
31
|
+
return (_dataset$selectedObs4 = dataset.selectedObs) === null || _dataset$selectedObs4 === void 0 ? void 0 : _dataset$selectedObs4.codesMap[c];
|
|
32
|
+
}),
|
|
33
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
34
|
+
name: i.name,
|
|
35
|
+
indices: i.vars.map(v => v.index)
|
|
36
|
+
} : i.index),
|
|
28
37
|
varNamesCol: dataset.varNamesCol
|
|
29
38
|
});
|
|
30
39
|
(0, _react.useEffect)(() => {
|
|
@@ -34,11 +43,19 @@ function Heatmap() {
|
|
|
34
43
|
setHasSelections(false);
|
|
35
44
|
}
|
|
36
45
|
setParams(p => {
|
|
46
|
+
var _dataset$selectedObs5, _dataset$selectedObs6, _dataset$selectedObs7;
|
|
37
47
|
return {
|
|
38
48
|
...p,
|
|
39
49
|
url: dataset.url,
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
obsCol: dataset.selectedObs,
|
|
51
|
+
obsValues: !((_dataset$selectedObs5 = dataset.selectedObs) !== null && _dataset$selectedObs5 !== void 0 && _dataset$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs6 = dataset.selectedObs) === null || _dataset$selectedObs6 === void 0 ? void 0 : _dataset$selectedObs6.codes), (_dataset$selectedObs7 = dataset.selectedObs) === null || _dataset$selectedObs7 === void 0 ? void 0 : _dataset$selectedObs7.omit).map(c => {
|
|
52
|
+
var _dataset$selectedObs8;
|
|
53
|
+
return (_dataset$selectedObs8 = dataset.selectedObs) === null || _dataset$selectedObs8 === void 0 ? void 0 : _dataset$selectedObs8.codesMap[c];
|
|
54
|
+
}),
|
|
55
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
56
|
+
name: i.name,
|
|
57
|
+
indices: i.vars.map(v => v.index)
|
|
58
|
+
} : i.index),
|
|
42
59
|
varNamesCol: dataset.varNamesCol
|
|
43
60
|
};
|
|
44
61
|
});
|
|
@@ -59,7 +76,7 @@ function Heatmap() {
|
|
|
59
76
|
isPending,
|
|
60
77
|
serverError
|
|
61
78
|
} = (0, _requests.useDebouncedFetch)(ENDPOINT, params, 500, {
|
|
62
|
-
enabled: !!params.
|
|
79
|
+
enabled: !!params.obsCol && !!params.varKeys.length
|
|
63
80
|
});
|
|
64
81
|
(0, _react.useEffect)(() => {
|
|
65
82
|
if (hasSelections && !isPending && !serverError) {
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Matrixplot = Matrixplot;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
9
|
var _reactBootstrap = require("react-bootstrap");
|
|
9
10
|
var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
|
|
10
11
|
var _DatasetContext = require("../../context/DatasetContext");
|
|
@@ -15,6 +16,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
15
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
18
|
function Matrixplot() {
|
|
19
|
+
var _dataset$selectedObs, _dataset$selectedObs2, _dataset$selectedObs3;
|
|
18
20
|
const ENDPOINT = "matrixplot";
|
|
19
21
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
20
22
|
const colorscale = (0, _react.useRef)(dataset.controls.colorScale);
|
|
@@ -23,8 +25,15 @@ function Matrixplot() {
|
|
|
23
25
|
const [hasSelections, setHasSelections] = (0, _react.useState)(false);
|
|
24
26
|
const [params, setParams] = (0, _react.useState)({
|
|
25
27
|
url: dataset.url,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
obsCol: dataset.selectedObs,
|
|
29
|
+
obsValues: !((_dataset$selectedObs = dataset.selectedObs) !== null && _dataset$selectedObs !== void 0 && _dataset$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs2 = dataset.selectedObs) === null || _dataset$selectedObs2 === void 0 ? void 0 : _dataset$selectedObs2.codes), (_dataset$selectedObs3 = dataset.selectedObs) === null || _dataset$selectedObs3 === void 0 ? void 0 : _dataset$selectedObs3.omit).map(c => {
|
|
30
|
+
var _dataset$selectedObs4;
|
|
31
|
+
return (_dataset$selectedObs4 = dataset.selectedObs) === null || _dataset$selectedObs4 === void 0 ? void 0 : _dataset$selectedObs4.codesMap[c];
|
|
32
|
+
}),
|
|
33
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
34
|
+
name: i.name,
|
|
35
|
+
indices: i.vars.map(v => v.index)
|
|
36
|
+
} : i.index),
|
|
28
37
|
standardScale: dataset.controls.standardScale,
|
|
29
38
|
varNamesCol: dataset.varNamesCol
|
|
30
39
|
});
|
|
@@ -35,11 +44,19 @@ function Matrixplot() {
|
|
|
35
44
|
setHasSelections(false);
|
|
36
45
|
}
|
|
37
46
|
setParams(p => {
|
|
47
|
+
var _dataset$selectedObs5, _dataset$selectedObs6, _dataset$selectedObs7;
|
|
38
48
|
return {
|
|
39
49
|
...p,
|
|
40
50
|
url: dataset.url,
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
obsCol: dataset.selectedObs,
|
|
52
|
+
obsValues: !((_dataset$selectedObs5 = dataset.selectedObs) !== null && _dataset$selectedObs5 !== void 0 && _dataset$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.values((_dataset$selectedObs6 = dataset.selectedObs) === null || _dataset$selectedObs6 === void 0 ? void 0 : _dataset$selectedObs6.codes), (_dataset$selectedObs7 = dataset.selectedObs) === null || _dataset$selectedObs7 === void 0 ? void 0 : _dataset$selectedObs7.omit).map(c => {
|
|
53
|
+
var _dataset$selectedObs8;
|
|
54
|
+
return (_dataset$selectedObs8 = dataset.selectedObs) === null || _dataset$selectedObs8 === void 0 ? void 0 : _dataset$selectedObs8.codesMap[c];
|
|
55
|
+
}),
|
|
56
|
+
varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
|
|
57
|
+
name: i.name,
|
|
58
|
+
indices: i.vars.map(v => v.index)
|
|
59
|
+
} : i.index),
|
|
43
60
|
standardScale: dataset.controls.standardScale,
|
|
44
61
|
varNamesCol: dataset.varNamesCol
|
|
45
62
|
};
|
|
@@ -61,7 +78,7 @@ function Matrixplot() {
|
|
|
61
78
|
isPending,
|
|
62
79
|
serverError
|
|
63
80
|
} = (0, _requests.useDebouncedFetch)(ENDPOINT, params, 500, {
|
|
64
|
-
enabled: !!params.
|
|
81
|
+
enabled: !!params.obsCol && !!params.varKeys.length
|
|
65
82
|
});
|
|
66
83
|
(0, _react.useEffect)(() => {
|
|
67
84
|
if (hasSelections && !isPending && !serverError) {
|
|
@@ -25,16 +25,17 @@ function MatrixplotControls() {
|
|
|
25
25
|
},
|
|
26
26
|
children: key
|
|
27
27
|
}, key));
|
|
28
|
-
const standardScaleList = _constants.
|
|
29
|
-
active: dataset.controls.
|
|
28
|
+
const standardScaleList = _lodash.default.values(_constants.MATRIXPLOT_SCALES).map(scale => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
|
|
29
|
+
active: dataset.controls.scale.matrixplot.name === scale.name,
|
|
30
30
|
onClick: () => {
|
|
31
31
|
dispatch({
|
|
32
|
-
type: "set.controls.
|
|
33
|
-
|
|
32
|
+
type: "set.controls.scale",
|
|
33
|
+
plot: "matrixplot",
|
|
34
|
+
scale: scale
|
|
34
35
|
});
|
|
35
36
|
},
|
|
36
|
-
children:
|
|
37
|
-
},
|
|
37
|
+
children: scale.name
|
|
38
|
+
}, scale.value));
|
|
38
39
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ButtonToolbar, {
|
|
39
40
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ButtonGroup, {
|
|
40
41
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Dropdown, {
|
|
@@ -54,7 +55,7 @@ function MatrixplotControls() {
|
|
|
54
55
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Toggle, {
|
|
55
56
|
id: "dropdownStandardScale",
|
|
56
57
|
variant: "light",
|
|
57
|
-
children: dataset.controls.
|
|
58
|
+
children: dataset.controls.scale.matrixplot.name
|
|
58
59
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Menu, {
|
|
59
60
|
children: standardScaleList
|
|
60
61
|
})]
|