@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.
Files changed (32) hide show
  1. package/dist/App.scss +77 -8
  2. package/dist/components/Offcanvas/index.js +6 -2
  3. package/dist/components/dotplot/Dotplot.js +22 -5
  4. package/dist/components/dotplot/DotplotControls.js +11 -10
  5. package/dist/components/heatmap/Heatmap.js +22 -5
  6. package/dist/components/matrixplot/Matrixplot.js +22 -5
  7. package/dist/components/matrixplot/MatrixplotControls.js +8 -7
  8. package/dist/components/obs-list/ObsItem.js +394 -0
  9. package/dist/components/obs-list/ObsList.js +116 -299
  10. package/dist/components/obs-list/ObsToolbar.js +76 -0
  11. package/dist/components/scatterplot/Legend.js +4 -3
  12. package/dist/components/scatterplot/Scatterplot.js +129 -61
  13. package/dist/components/scatterplot/Toolbox.js +3 -2
  14. package/dist/components/search-bar/SearchBar.js +18 -2
  15. package/dist/components/search-bar/SearchResults.js +8 -8
  16. package/dist/components/var-list/VarItem.js +316 -0
  17. package/dist/components/var-list/VarList.js +167 -149
  18. package/dist/components/var-list/VarSet.js +214 -0
  19. package/dist/components/violin/Violin.js +46 -13
  20. package/dist/components/violin/ViolinControls.js +13 -18
  21. package/dist/constants/constants.js +41 -29
  22. package/dist/context/DatasetContext.js +91 -31
  23. package/dist/context/FilterContext.js +76 -0
  24. package/dist/helpers/map-helper.js +20 -15
  25. package/dist/helpers/zarr-helper.js +35 -13
  26. package/dist/index.js +7 -0
  27. package/dist/utils/VirtualizedList.js +69 -0
  28. package/dist/utils/requests.js +2 -2
  29. package/dist/utils/search.js +3 -56
  30. package/dist/utils/string.js +18 -0
  31. package/package.json +3 -2
  32. 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
- // Theme CSS
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: $accordion-button-active-bg
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
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ObsList.ObsColsList, {})
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
- selectedObs: dataset.selectedObs,
28
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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
- selectedObs: dataset.selectedObs,
47
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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.selectedObs && !!params.selectedMultiVar.length
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.DOTPLOT_STANDARDSCALES.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default.Item, {
49
- active: dataset.controls.standardScale === item.value,
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.standardScale",
53
- standardScale: item.value
52
+ type: "set.controls.scale",
53
+ plot: "dotplot",
54
+ scale: scale
54
55
  });
55
56
  },
56
- children: item.name
57
- }, item.value));
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.standardScale
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
- selectedObs: dataset.selectedObs,
27
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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
- selectedObs: dataset.selectedObs,
41
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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.selectedObs && !!params.selectedMultiVar.length
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
- selectedObs: dataset.selectedObs,
27
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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
- selectedObs: dataset.selectedObs,
42
- selectedMultiVar: dataset.selectedMultiVar.map(i => i.index),
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.selectedObs && !!params.selectedMultiVar.length
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.MATRIXPLOT_STANDARDSCALES.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Item, {
29
- active: dataset.controls.standardScale === item.name,
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.standardScale",
33
- standardScale: item.value
32
+ type: "set.controls.scale",
33
+ plot: "matrixplot",
34
+ scale: scale
34
35
  });
35
36
  },
36
- children: item.name
37
- }, item.value));
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.standardScale
58
+ children: dataset.controls.scale.matrixplot.name
58
59
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Dropdown.Menu, {
59
60
  children: standardScaleList
60
61
  })]