@haniffalab/cherita-react 1.2.0 → 1.3.0-dev.2025-05-29.ee7e9b72

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 (91) hide show
  1. package/dist/cjs/components/controls/Controls.js +60 -0
  2. package/dist/cjs/components/dotplot/Dotplot.js +47 -38
  3. package/dist/cjs/components/dotplot/DotplotControls.js +77 -114
  4. package/dist/cjs/components/full-page/FullPage.js +29 -33
  5. package/dist/cjs/components/full-page/FullPagePseudospatial.js +30 -33
  6. package/dist/cjs/components/heatmap/Heatmap.js +33 -22
  7. package/dist/cjs/components/heatmap/HeatmapControls.js +2 -19
  8. package/dist/cjs/components/matrixplot/Matrixplot.js +35 -24
  9. package/dist/cjs/components/matrixplot/MatrixplotControls.js +4 -34
  10. package/dist/cjs/components/obs-list/ObsItem.js +63 -51
  11. package/dist/cjs/components/obs-list/ObsList.js +53 -48
  12. package/dist/cjs/components/obsm-list/ObsmList.js +17 -12
  13. package/dist/cjs/components/offcanvas/index.js +14 -11
  14. package/dist/cjs/components/pseudospatial/Pseudospatial.js +78 -68
  15. package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +27 -21
  16. package/dist/cjs/components/scatterplot/Scatterplot.js +82 -76
  17. package/dist/cjs/components/scatterplot/ScatterplotControls.js +18 -31
  18. package/dist/cjs/components/scatterplot/SpatialControls.js +53 -23
  19. package/dist/cjs/components/scatterplot/Toolbox.js +1 -18
  20. package/dist/cjs/components/search-bar/SearchBar.js +156 -59
  21. package/dist/cjs/components/search-bar/SearchInfo.js +182 -0
  22. package/dist/cjs/components/search-bar/SearchResults.js +90 -60
  23. package/dist/cjs/components/var-list/VarItem.js +52 -75
  24. package/dist/cjs/components/var-list/VarList.js +47 -172
  25. package/dist/cjs/components/var-list/VarListToolbar.js +7 -8
  26. package/dist/cjs/components/var-list/VarSet.js +66 -57
  27. package/dist/cjs/components/violin/Violin.js +54 -43
  28. package/dist/cjs/components/violin/ViolinControls.js +4 -20
  29. package/dist/cjs/context/DatasetContext.js +26 -513
  30. package/dist/cjs/context/FilterContext.js +9 -8
  31. package/dist/cjs/context/SettingsContext.js +539 -0
  32. package/dist/cjs/context/ZarrDataContext.js +1 -2
  33. package/dist/cjs/helpers/color-helper.js +8 -8
  34. package/dist/cjs/helpers/zarr-helper.js +19 -16
  35. package/dist/cjs/utils/Filter.js +25 -21
  36. package/dist/cjs/utils/Histogram.js +4 -3
  37. package/dist/cjs/utils/ImageViewer.js +1 -2
  38. package/dist/cjs/utils/Legend.js +18 -12
  39. package/dist/cjs/utils/LoadingIndicators.js +1 -1
  40. package/dist/cjs/utils/VirtualizedList.js +16 -13
  41. package/dist/cjs/utils/errors.js +20 -22
  42. package/dist/cjs/utils/requests.js +13 -10
  43. package/dist/cjs/utils/zarrData.js +31 -50
  44. package/dist/css/cherita.css +84 -24
  45. package/dist/css/cherita.css.map +1 -1
  46. package/dist/esm/components/controls/Controls.js +51 -0
  47. package/dist/esm/components/dotplot/Dotplot.js +47 -37
  48. package/dist/esm/components/dotplot/DotplotControls.js +77 -112
  49. package/dist/esm/components/full-page/FullPage.js +29 -32
  50. package/dist/esm/components/full-page/FullPagePseudospatial.js +30 -32
  51. package/dist/esm/components/heatmap/Heatmap.js +32 -20
  52. package/dist/esm/components/heatmap/HeatmapControls.js +3 -20
  53. package/dist/esm/components/matrixplot/Matrixplot.js +34 -22
  54. package/dist/esm/components/matrixplot/MatrixplotControls.js +5 -35
  55. package/dist/esm/components/obs-list/ObsItem.js +63 -49
  56. package/dist/esm/components/obs-list/ObsList.js +53 -47
  57. package/dist/esm/components/obsm-list/ObsmList.js +17 -11
  58. package/dist/esm/components/offcanvas/index.js +14 -11
  59. package/dist/esm/components/pseudospatial/Pseudospatial.js +77 -66
  60. package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +27 -20
  61. package/dist/esm/components/scatterplot/Scatterplot.js +81 -74
  62. package/dist/esm/components/scatterplot/ScatterplotControls.js +18 -29
  63. package/dist/esm/components/scatterplot/SpatialControls.js +54 -23
  64. package/dist/esm/components/scatterplot/Toolbox.js +1 -18
  65. package/dist/esm/components/search-bar/SearchBar.js +156 -59
  66. package/dist/esm/components/search-bar/SearchInfo.js +173 -0
  67. package/dist/esm/components/search-bar/SearchResults.js +91 -60
  68. package/dist/esm/components/var-list/VarItem.js +53 -76
  69. package/dist/esm/components/var-list/VarList.js +47 -171
  70. package/dist/esm/components/var-list/VarListToolbar.js +6 -6
  71. package/dist/esm/components/var-list/VarSet.js +67 -57
  72. package/dist/esm/components/violin/Violin.js +53 -41
  73. package/dist/esm/components/violin/ViolinControls.js +5 -21
  74. package/dist/esm/context/DatasetContext.js +25 -510
  75. package/dist/esm/context/FilterContext.js +8 -6
  76. package/dist/esm/context/SettingsContext.js +528 -0
  77. package/dist/esm/helpers/color-helper.js +8 -8
  78. package/dist/esm/helpers/zarr-helper.js +19 -16
  79. package/dist/esm/utils/Filter.js +25 -21
  80. package/dist/esm/utils/Histogram.js +4 -3
  81. package/dist/esm/utils/Legend.js +17 -10
  82. package/dist/esm/utils/LoadingIndicators.js +1 -1
  83. package/dist/esm/utils/VirtualizedList.js +15 -11
  84. package/dist/esm/utils/errors.js +20 -22
  85. package/dist/esm/utils/requests.js +13 -10
  86. package/dist/esm/utils/zarrData.js +33 -51
  87. package/package.json +6 -3
  88. package/scss/cherita.scss +50 -9
  89. package/scss/components/layouts.scss +24 -13
  90. package/scss/components/lists.scss +10 -0
  91. package/scss/components/plots.scss +3 -5
@@ -19,14 +19,18 @@ var _Scatterplot = require("../scatterplot/Scatterplot");
19
19
  var _ScatterplotControls = require("../scatterplot/ScatterplotControls");
20
20
  var _SearchBar = require("../search-bar/SearchBar");
21
21
  var _VarList = require("../var-list/VarList");
22
- 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); }
23
- 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; }
22
+ const _excluded = ["children", "varMode", "searchDiseases"];
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ 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); }
25
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
26
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
24
27
  function FullPage(_ref) {
25
28
  let {
26
- children,
27
- varMode = _constants.SELECTION_MODES.SINGLE,
28
- ...props
29
- } = _ref;
29
+ children,
30
+ varMode = _constants.SELECTION_MODES.SINGLE,
31
+ searchDiseases = false
32
+ } = _ref,
33
+ props = _objectWithoutProperties(_ref, _excluded);
30
34
  const appRef = (0, _react.useRef)();
31
35
  const [appDimensions, setAppDimensions] = (0, _react.useState)({
32
36
  width: 0,
@@ -72,34 +76,14 @@ function FullPage(_ref) {
72
76
  style: {
73
77
  height: appDimensions.height
74
78
  }
75
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar, {
76
- expand: "sm",
77
- bg: "primary",
78
- className: "cherita-navbar"
79
79
  }, /*#__PURE__*/_react.default.createElement("div", {
80
- className: "container-fluid"
81
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Toggle, {
82
- "aria-controls": "navbarScroll"
83
- }), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Navbar.Collapse, {
84
- id: "navbarScroll"
85
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav, {
86
- className: "me-auto my-0",
87
- navbarScroll: true
88
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, {
89
- className: "d-block d-lg-none"
90
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
91
- onClick: () => setShowObs(true)
92
- }, "Observations")), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
93
- onClick: () => setShowVars(true)
94
- }, "Features"))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav, {
95
- className: "d-flex"
96
- }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Item, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Nav.Link, {
97
- onClick: () => setShowControls(true)
98
- }, "Controls")))))), /*#__PURE__*/_react.default.createElement("div", {
99
80
  className: "cherita-app-obs modern-scrollbars border-end h-100"
100
81
  }, /*#__PURE__*/_react.default.createElement(_ObsList.ObsColsList, props)), /*#__PURE__*/_react.default.createElement("div", {
101
82
  className: "cherita-app-canvas flex-grow-1"
102
- }, children), /*#__PURE__*/_react.default.createElement("div", {
83
+ }, children({
84
+ setShowObs,
85
+ setShowVars
86
+ })), /*#__PURE__*/_react.default.createElement("div", {
103
87
  className: "cherita-app-sidebar p-3"
104
88
  }, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Card.Header, {
105
89
  className: "d-flex justify-content-evenly align-items-center"
@@ -120,7 +104,7 @@ function FullPage(_ref) {
120
104
  })), /*#__PURE__*/_react.default.createElement("div", {
121
105
  className: "sidebar-features modern-scrollbars"
122
106
  }, /*#__PURE__*/_react.default.createElement(_SearchBar.SearchBar, {
123
- searchDiseases: true,
107
+ searchDiseases: searchDiseases,
124
108
  searchVar: true
125
109
  }), /*#__PURE__*/_react.default.createElement(_VarList.VarNamesList, {
126
110
  mode: varMode
@@ -140,7 +124,8 @@ function FullPage(_ref) {
140
124
  handleClose: () => setShowObs(false)
141
125
  }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasVars, {
142
126
  show: showVars,
143
- handleClose: () => setShowVars(false)
127
+ handleClose: () => setShowVars(false),
128
+ mode: varMode
144
129
  }), /*#__PURE__*/_react.default.createElement(_offcanvas.OffcanvasControls, {
145
130
  show: showControls,
146
131
  handleClose: () => setShowControls(false),
@@ -156,5 +141,17 @@ function FullPage(_ref) {
156
141
  }))));
157
142
  }
158
143
  function FullPagePseudospatial(props) {
159
- return /*#__PURE__*/_react.default.createElement(FullPage, props, /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, null));
144
+ return /*#__PURE__*/_react.default.createElement(FullPage, _extends({}, props, {
145
+ varMode: _constants.SELECTION_MODES.SINGLE
146
+ }), _ref2 => {
147
+ let {
148
+ setShowObs,
149
+ setShowVars
150
+ } = _ref2;
151
+ return /*#__PURE__*/_react.default.createElement(_Scatterplot.Scatterplot, {
152
+ setShowObs: setShowObs,
153
+ setShowVars: setShowVars,
154
+ isFullscreen: true
155
+ });
156
+ });
160
157
  }
@@ -10,27 +10,37 @@ var _reactBootstrap = require("react-bootstrap");
10
10
  var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
11
11
  var _DatasetContext = require("../../context/DatasetContext");
12
12
  var _FilterContext = require("../../context/FilterContext");
13
+ var _SettingsContext = require("../../context/SettingsContext");
13
14
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
14
15
  var _requests = require("../../utils/requests");
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
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); }
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
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ 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; }
19
+ 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; }
20
+ 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; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
22
+ 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); }
18
23
  function Heatmap() {
24
+ var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
19
25
  const ENDPOINT = "heatmap";
20
26
  const dataset = (0, _DatasetContext.useDataset)();
27
+ const settings = (0, _SettingsContext.useSettings)();
21
28
  const {
22
29
  obsIndices,
23
30
  isSliced
24
31
  } = (0, _FilterContext.useFilteredData)();
25
- const colorscale = (0, _react.useRef)(dataset.controls.colorScale);
32
+ const colorscale = (0, _react.useRef)(settings.controls.colorScale);
26
33
  const [data, setData] = (0, _react.useState)([]);
27
34
  const [layout, setLayout] = (0, _react.useState)({});
28
35
  const [hasSelections, setHasSelections] = (0, _react.useState)(false);
29
36
  const [params, setParams] = (0, _react.useState)({
30
37
  url: dataset.url,
31
- obsCol: dataset.selectedObs,
32
- obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c]),
33
- varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
38
+ obsCol: settings.selectedObs,
39
+ obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.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 => {
40
+ var _settings$selectedObs4;
41
+ return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
42
+ }),
43
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
34
44
  name: i.name,
35
45
  indices: i.vars.map(v => v.index)
36
46
  } : i.index),
@@ -38,35 +48,36 @@ function Heatmap() {
38
48
  varNamesCol: dataset.varNamesCol
39
49
  });
40
50
  (0, _react.useEffect)(() => {
41
- if (dataset.selectedObs && dataset.selectedMultiVar.length) {
51
+ if (settings.selectedObs && settings.selectedMultiVar.length) {
42
52
  setHasSelections(true);
43
53
  } else {
44
54
  setHasSelections(false);
45
55
  }
46
56
  setParams(p => {
47
- return {
48
- ...p,
57
+ var _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
58
+ return _objectSpread(_objectSpread({}, p), {}, {
49
59
  url: dataset.url,
50
- obsCol: dataset.selectedObs,
51
- obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c]),
52
- varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
60
+ obsCol: settings.selectedObs,
61
+ obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.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
+ }),
65
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
53
66
  name: i.name,
54
67
  indices: i.vars.map(v => v.index)
55
68
  } : i.index),
56
69
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
57
70
  varNamesCol: dataset.varNamesCol
58
- };
71
+ });
59
72
  });
60
- }, [dataset.selectedMultiVar, dataset.selectedObs, dataset.url, dataset.varNamesCol, obsIndices, isSliced]);
73
+ }, [settings.selectedMultiVar, settings.selectedObs, dataset.url, dataset.varNamesCol, obsIndices, isSliced]);
61
74
  const updateColorscale = (0, _react.useCallback)(colorscale => {
62
75
  setLayout(l => {
63
- return {
64
- ...l,
65
- coloraxis: {
66
- ...l.coloraxis,
76
+ return _objectSpread(_objectSpread({}, l), {}, {
77
+ coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
67
78
  colorscale: colorscale
68
- }
69
- };
79
+ })
80
+ });
70
81
  });
71
82
  }, []);
72
83
  const {
@@ -84,9 +95,9 @@ function Heatmap() {
84
95
  }
85
96
  }, [fetchedData, hasSelections, isPending, serverError, updateColorscale]);
86
97
  (0, _react.useEffect)(() => {
87
- colorscale.current = dataset.controls.colorScale;
98
+ colorscale.current = settings.controls.colorScale;
88
99
  updateColorscale(colorscale.current);
89
- }, [dataset.controls.colorScale, updateColorscale]);
100
+ }, [settings.controls.colorScale, updateColorscale]);
90
101
  if (!serverError) {
91
102
  if (hasSelections) {
92
103
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -5,26 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.HeatmapControls = HeatmapControls;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
8
  var _reactBootstrap = require("react-bootstrap");
10
- var _colorscales = require("../../constants/colorscales");
11
- var _DatasetContext = require("../../context/DatasetContext");
9
+ var _Controls = require("../controls/Controls");
12
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
11
  function HeatmapControls() {
14
- const dataset = (0, _DatasetContext.useDataset)();
15
- const dispatch = (0, _DatasetContext.useDatasetDispatch)();
16
- const colormapList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
17
- key: key,
18
- active: dataset.controls.colorScale === key,
19
- onClick: () => {
20
- dispatch({
21
- type: "set.controls.colorScale",
22
- colorScale: key
23
- });
24
- }
25
- }, key));
26
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
27
- id: "dropdownColorscale",
28
- variant: "light"
29
- }, dataset.controls.colorScale), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, colormapList));
12
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form, null, /*#__PURE__*/_react.default.createElement(_Controls.ColorscaleSelect, null)));
30
13
  }
@@ -10,65 +10,76 @@ var _reactBootstrap = require("react-bootstrap");
10
10
  var _reactPlotly = _interopRequireDefault(require("react-plotly.js"));
11
11
  var _DatasetContext = require("../../context/DatasetContext");
12
12
  var _FilterContext = require("../../context/FilterContext");
13
+ var _SettingsContext = require("../../context/SettingsContext");
13
14
  var _LoadingIndicators = require("../../utils/LoadingIndicators");
14
15
  var _requests = require("../../utils/requests");
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
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); }
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
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ 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; }
19
+ 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; }
20
+ 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; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
22
+ 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); }
18
23
  function Matrixplot() {
24
+ var _settings$selectedObs, _settings$selectedObs2, _settings$selectedObs3;
19
25
  const ENDPOINT = "matrixplot";
20
26
  const dataset = (0, _DatasetContext.useDataset)();
27
+ const settings = (0, _SettingsContext.useSettings)();
21
28
  const {
22
29
  obsIndices,
23
30
  isSliced
24
31
  } = (0, _FilterContext.useFilteredData)();
25
- const colorscale = (0, _react.useRef)(dataset.controls.colorScale);
32
+ const colorscale = (0, _react.useRef)(settings.controls.colorScale);
26
33
  const [data, setData] = (0, _react.useState)([]);
27
34
  const [layout, setLayout] = (0, _react.useState)({});
28
35
  const [hasSelections, setHasSelections] = (0, _react.useState)(false);
29
36
  const [params, setParams] = (0, _react.useState)({
30
37
  url: dataset.url,
31
- obsCol: dataset.selectedObs,
32
- obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c]),
33
- varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
38
+ obsCol: settings.selectedObs,
39
+ obsValues: !((_settings$selectedObs = settings.selectedObs) !== null && _settings$selectedObs !== void 0 && _settings$selectedObs.omit.length) ? null : _lodash.default.difference(_lodash.default.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 => {
40
+ var _settings$selectedObs4;
41
+ return (_settings$selectedObs4 = settings.selectedObs) === null || _settings$selectedObs4 === void 0 ? void 0 : _settings$selectedObs4.codesMap[c];
42
+ }),
43
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
34
44
  name: i.name,
35
45
  indices: i.vars.map(v => v.index)
36
46
  } : i.index),
37
47
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
38
- standardScale: dataset.controls.standardScale,
48
+ standardScale: settings.controls.scale.matrixplot,
39
49
  varNamesCol: dataset.varNamesCol
40
50
  });
41
51
  (0, _react.useEffect)(() => {
42
- if (dataset.selectedObs && dataset.selectedMultiVar.length) {
52
+ if (settings.selectedObs && settings.selectedMultiVar.length) {
43
53
  setHasSelections(true);
44
54
  } else {
45
55
  setHasSelections(false);
46
56
  }
47
57
  setParams(p => {
48
- return {
49
- ...p,
58
+ var _settings$selectedObs5, _settings$selectedObs6, _settings$selectedObs7;
59
+ return _objectSpread(_objectSpread({}, p), {}, {
50
60
  url: dataset.url,
51
- obsCol: dataset.selectedObs,
52
- obsValues: !dataset.selectedObs?.omit.length ? null : _lodash.default.difference(_lodash.default.values(dataset.selectedObs?.codes), dataset.selectedObs?.omit).map(c => dataset.selectedObs?.codesMap[c]),
53
- varKeys: dataset.selectedMultiVar.map(i => i.isSet ? {
61
+ obsCol: settings.selectedObs,
62
+ obsValues: !((_settings$selectedObs5 = settings.selectedObs) !== null && _settings$selectedObs5 !== void 0 && _settings$selectedObs5.omit.length) ? null : _lodash.default.difference(_lodash.default.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 => {
63
+ var _settings$selectedObs8;
64
+ return (_settings$selectedObs8 = settings.selectedObs) === null || _settings$selectedObs8 === void 0 ? void 0 : _settings$selectedObs8.codesMap[c];
65
+ }),
66
+ varKeys: settings.selectedMultiVar.map(i => i.isSet ? {
54
67
  name: i.name,
55
68
  indices: i.vars.map(v => v.index)
56
69
  } : i.index),
57
70
  obsIndices: isSliced ? [...(obsIndices || [])] : null,
58
- standardScale: dataset.controls.standardScale,
71
+ standardScale: settings.controls.scale.matrixplot,
59
72
  varNamesCol: dataset.varNamesCol
60
- };
73
+ });
61
74
  });
62
- }, [dataset.controls.standardScale, dataset.selectedMultiVar, dataset.selectedObs, dataset.url, dataset.varNamesCol, obsIndices, isSliced]);
75
+ }, [settings.controls.scale.matrixplot, settings.selectedMultiVar, settings.selectedObs, dataset.url, dataset.varNamesCol, obsIndices, isSliced]);
63
76
  const updateColorscale = (0, _react.useCallback)(colorscale => {
64
77
  setLayout(l => {
65
- return {
66
- ...l,
67
- coloraxis: {
68
- ...l.coloraxis,
78
+ return _objectSpread(_objectSpread({}, l), {}, {
79
+ coloraxis: _objectSpread(_objectSpread({}, l.coloraxis), {}, {
69
80
  colorscale: colorscale
70
- }
71
- };
81
+ })
82
+ });
72
83
  });
73
84
  }, []);
74
85
  const {
@@ -86,9 +97,9 @@ function Matrixplot() {
86
97
  }
87
98
  }, [fetchedData, hasSelections, isPending, serverError, updateColorscale]);
88
99
  (0, _react.useEffect)(() => {
89
- colorscale.current = dataset.controls.colorScale;
100
+ colorscale.current = settings.controls.colorScale;
90
101
  updateColorscale(colorscale.current);
91
- }, [dataset.controls.colorScale, updateColorscale]);
102
+ }, [settings.controls.colorScale, updateColorscale]);
92
103
  if (!serverError) {
93
104
  if (hasSelections) {
94
105
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -5,41 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MatrixplotControls = MatrixplotControls;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
8
  var _reactBootstrap = require("react-bootstrap");
10
- var _colorscales = require("../../constants/colorscales");
11
- var _constants = require("../../constants/constants");
12
- var _DatasetContext = require("../../context/DatasetContext");
9
+ var _Controls = require("../controls/Controls");
13
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
11
  function MatrixplotControls() {
15
- const dataset = (0, _DatasetContext.useDataset)();
16
- const dispatch = (0, _DatasetContext.useDatasetDispatch)();
17
- const colorScaleList = _lodash.default.keys(_colorscales.COLORSCALES).map(key => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
18
- key: key,
19
- active: dataset.controls.colorScale === key,
20
- onClick: () => {
21
- dispatch({
22
- type: "set.controls.colorScale",
23
- colorScale: key
24
- });
25
- }
26
- }, key));
27
- const standardScaleList = _lodash.default.values(_constants.MATRIXPLOT_SCALES).map(scale => /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Item, {
28
- key: scale.value,
29
- active: dataset.controls.scale.matrixplot.name === scale.name,
30
- onClick: () => {
31
- dispatch({
32
- type: "set.controls.scale",
33
- plot: "matrixplot",
34
- scale: scale
35
- });
36
- }
37
- }, scale.name));
38
- return /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonToolbar, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
39
- id: "dropdownColorscale",
40
- variant: "light"
41
- }, dataset.controls.colorScale), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, colorScaleList))), /*#__PURE__*/_react.default.createElement(_reactBootstrap.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.InputGroup.Text, null, "Standard scale"), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Toggle, {
42
- id: "dropdownStandardScale",
43
- variant: "light"
44
- }, dataset.controls.scale.matrixplot.name), /*#__PURE__*/_react.default.createElement(_reactBootstrap.Dropdown.Menu, null, standardScaleList)))));
12
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactBootstrap.Form, null, /*#__PURE__*/_react.default.createElement(_Controls.ColorscaleSelect, null), /*#__PURE__*/_react.default.createElement(_Controls.ScaleSelect, {
13
+ plot: "matrixplot"
14
+ })));
45
15
  }