@haniffalab/cherita-react 1.4.1-dev.2025-10-23.e95b5a90 → 1.4.1-dev.2025-10-23.55fbe6ff
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/README.md +1 -1
- package/dist/cjs/components/controls/Controls.js +4 -4
- package/dist/cjs/components/dotplot/Dotplot.js +8 -8
- package/dist/cjs/components/dotplot/DotplotControls.js +5 -5
- package/dist/cjs/components/full-page/FullPage.js +1 -2
- package/dist/cjs/components/full-page/PlotAlert.js +1 -1
- package/dist/cjs/components/full-page/PlotTypeSelector.js +13 -13
- package/dist/cjs/components/heatmap/Heatmap.js +7 -7
- package/dist/cjs/components/icons/DotPlotIcon.js +1 -1
- package/dist/cjs/components/icons/HeatmapIcon.js +1 -1
- package/dist/cjs/components/icons/MatrixPlotIcon.1.js +1 -1
- package/dist/cjs/components/icons/MatrixPlotIcon.js +1 -1
- package/dist/cjs/components/icons/ScatterplotIcon.1.js +1 -1
- package/dist/cjs/components/icons/ScatterplotIcon.js +1 -1
- package/dist/cjs/components/icons/ViolinPlotIcon.js +1 -1
- package/dist/cjs/components/matrixplot/Matrixplot.js +7 -7
- package/dist/cjs/components/obs-list/ObsItem.js +19 -19
- package/dist/cjs/components/obs-list/ObsList.js +17 -17
- package/dist/cjs/components/obsm-list/ObsmList.js +7 -7
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +16 -16
- package/dist/cjs/components/pseudospatial/PseudospatialToolbar.js +10 -10
- package/dist/cjs/components/scatterplot/Scatterplot.js +16 -16
- package/dist/cjs/components/scatterplot/ScatterplotControls.js +1 -1
- package/dist/cjs/components/scatterplot/SpatialControls.js +9 -9
- package/dist/cjs/components/scatterplot/Toolbox.js +4 -4
- package/dist/cjs/components/search-bar/SearchBar.js +14 -14
- package/dist/cjs/components/search-bar/SearchInfo.js +3 -3
- package/dist/cjs/components/search-bar/SearchResults.js +2 -2
- package/dist/cjs/components/toolbar/Toolbar.js +3 -3
- package/dist/cjs/components/var-list/VarItem.js +15 -15
- package/dist/cjs/components/var-list/VarList.js +5 -5
- package/dist/cjs/components/var-list/VarListToolbar.js +4 -4
- package/dist/cjs/components/var-list/VarSet.js +13 -13
- package/dist/cjs/components/violin/Violin.js +10 -10
- package/dist/cjs/constants/colorscales.js +19 -19
- package/dist/cjs/constants/constants.js +47 -47
- package/dist/cjs/context/DatasetContext.js +3 -3
- package/dist/cjs/context/FilterContext.js +2 -2
- package/dist/cjs/context/SettingsContext.js +57 -57
- package/dist/cjs/helpers/color-helper.js +2 -2
- package/dist/cjs/helpers/zarr-helper.js +3 -3
- package/dist/cjs/utils/Filter.js +1 -1
- package/dist/cjs/utils/Histogram.js +2 -2
- package/dist/cjs/utils/ImageViewer.js +2 -2
- package/dist/cjs/utils/Legend.js +1 -1
- package/dist/cjs/utils/LoadingIndicators.js +1 -1
- package/dist/cjs/utils/Resolver.js +7 -7
- package/dist/cjs/utils/Skeleton.js +1 -1
- package/dist/cjs/utils/StyledTooltip.js +5 -5
- package/dist/cjs/utils/VirtualizedList.js +7 -7
- package/dist/cjs/utils/errors.js +15 -15
- package/dist/cjs/utils/requests.js +5 -5
- package/dist/cjs/utils/search.js +4 -4
- package/dist/cjs/utils/string.js +6 -6
- package/dist/cjs/utils/zarrData.js +5 -5
- package/dist/css/cherita.css +21 -20
- package/dist/css/cherita.css.map +1 -1
- package/dist/esm/components/controls/Controls.js +9 -9
- package/dist/esm/components/dotplot/Dotplot.js +21 -21
- package/dist/esm/components/dotplot/DotplotControls.js +9 -9
- package/dist/esm/components/full-page/FullPage.js +22 -23
- package/dist/esm/components/full-page/PlotAlert.js +5 -5
- package/dist/esm/components/full-page/PlotTypeSelector.js +21 -21
- package/dist/esm/components/heatmap/Heatmap.js +20 -20
- package/dist/esm/components/heatmap/HeatmapControls.js +2 -2
- package/dist/esm/components/icons/DotPlotIcon.js +1 -1
- package/dist/esm/components/icons/HeatmapIcon.js +1 -1
- package/dist/esm/components/icons/MatrixPlotIcon.1.js +1 -1
- package/dist/esm/components/icons/MatrixPlotIcon.js +1 -1
- package/dist/esm/components/icons/ScatterplotIcon.1.js +1 -1
- package/dist/esm/components/icons/ScatterplotIcon.js +1 -1
- package/dist/esm/components/icons/ViolinPlotIcon.js +1 -1
- package/dist/esm/components/matrixplot/Matrixplot.js +20 -20
- package/dist/esm/components/matrixplot/MatrixplotControls.js +2 -2
- package/dist/esm/components/obs-list/ObsItem.js +37 -37
- package/dist/esm/components/obs-list/ObsList.js +34 -34
- package/dist/esm/components/obs-list/ObsToolbar.js +1 -1
- package/dist/esm/components/obsm-list/ObsmList.js +15 -15
- package/dist/esm/components/offcanvas/index.js +6 -6
- package/dist/esm/components/pseudospatial/Pseudospatial.js +31 -31
- package/dist/esm/components/pseudospatial/PseudospatialToolbar.js +17 -17
- package/dist/esm/components/scatterplot/Scatterplot.js +38 -38
- package/dist/esm/components/scatterplot/ScatterplotControls.js +9 -9
- package/dist/esm/components/scatterplot/SpatialControls.js +23 -23
- package/dist/esm/components/scatterplot/Toolbox.js +7 -7
- package/dist/esm/components/search-bar/SearchBar.js +27 -27
- package/dist/esm/components/search-bar/SearchInfo.js +14 -14
- package/dist/esm/components/search-bar/SearchResults.js +10 -10
- package/dist/esm/components/toolbar/Toolbar.js +6 -6
- package/dist/esm/components/var-list/VarItem.js +27 -27
- package/dist/esm/components/var-list/VarList.js +21 -21
- package/dist/esm/components/var-list/VarListToolbar.js +10 -10
- package/dist/esm/components/var-list/VarSet.js +22 -22
- package/dist/esm/components/violin/Violin.js +26 -26
- package/dist/esm/components/violin/ViolinControls.js +2 -2
- package/dist/esm/constants/colorscales.js +19 -19
- package/dist/esm/constants/constants.js +47 -47
- package/dist/esm/context/DatasetContext.js +11 -11
- package/dist/esm/context/FilterContext.js +3 -3
- package/dist/esm/context/SettingsContext.js +61 -61
- package/dist/esm/context/ZarrDataContext.js +3 -3
- package/dist/esm/helpers/color-helper.js +5 -5
- package/dist/esm/helpers/map-helper.js +2 -2
- package/dist/esm/helpers/zarr-helper.js +6 -6
- package/dist/esm/index.js +22 -22
- package/dist/esm/utils/Filter.js +8 -8
- package/dist/esm/utils/Histogram.js +6 -6
- package/dist/esm/utils/ImageViewer.js +4 -4
- package/dist/esm/utils/Legend.js +9 -9
- package/dist/esm/utils/LoadingIndicators.js +2 -2
- package/dist/esm/utils/Resolver.js +13 -13
- package/dist/esm/utils/Skeleton.js +2 -2
- package/dist/esm/utils/StyledTooltip.js +6 -6
- package/dist/esm/utils/VirtualizedList.js +9 -9
- package/dist/esm/utils/errors.js +15 -15
- package/dist/esm/utils/requests.js +8 -8
- package/dist/esm/utils/search.js +7 -7
- package/dist/esm/utils/string.js +7 -7
- package/dist/esm/utils/zarrData.js +13 -13
- package/package.json +11 -7
- package/scss/cherita-bootstrap.scss +2 -2
- package/scss/cherita.scss +24 -17
- package/scss/components/accordions.scss +4 -1
- package/scss/components/layouts.scss +13 -12
- package/scss/components/lists.scss +8 -4
- package/scss/components/plotly.scss +1 -0
|
@@ -28,7 +28,7 @@ class ZarrHelper {
|
|
|
28
28
|
const z = await (0, _zarr.openArray)({
|
|
29
29
|
store: url,
|
|
30
30
|
path: path,
|
|
31
|
-
mode:
|
|
31
|
+
mode: 'r'
|
|
32
32
|
});
|
|
33
33
|
return z;
|
|
34
34
|
}
|
|
@@ -60,7 +60,7 @@ const useZarr = function (_ref2) {
|
|
|
60
60
|
isLoading: isPending = false,
|
|
61
61
|
error: serverError = null
|
|
62
62
|
} = (0, _reactQuery.useQuery)(_objectSpread({
|
|
63
|
-
queryKey: [
|
|
63
|
+
queryKey: ['zarr', url, path, s],
|
|
64
64
|
queryFn: () => fetchDataFromZarr(url, path, s, options),
|
|
65
65
|
retry: (failureCount, _ref3) => {
|
|
66
66
|
let {
|
|
@@ -102,7 +102,7 @@ const useMultipleZarr = function (inputs) {
|
|
|
102
102
|
serverError = null
|
|
103
103
|
} = (0, _reactQuery.useQueries)({
|
|
104
104
|
queries: inputs.map(input => _objectSpread({
|
|
105
|
-
queryKey: [
|
|
105
|
+
queryKey: ['zarr', input.url, input.path, input.s],
|
|
106
106
|
queryFn: () => fetchDataFromZarr(input.url, input.path, input.s, options),
|
|
107
107
|
retry: (failureCount, _ref4) => {
|
|
108
108
|
let {
|
package/dist/cjs/utils/Filter.js
CHANGED
|
@@ -151,7 +151,7 @@ const useFilter = data => {
|
|
|
151
151
|
(0, _react.useEffect)(() => {
|
|
152
152
|
if (!isPending && !serverError) {
|
|
153
153
|
filterDataDispatch({
|
|
154
|
-
type:
|
|
154
|
+
type: 'set.obs.indices',
|
|
155
155
|
indices: isSliced ? filteredIndices : null,
|
|
156
156
|
valueMin: valueMin,
|
|
157
157
|
valueMax: valueMax,
|
|
@@ -41,11 +41,11 @@ function Histogram(_ref) {
|
|
|
41
41
|
},
|
|
42
42
|
xAxis: {
|
|
43
43
|
data: _lodash.default.range((_data$bin_edges = data.bin_edges) === null || _data$bin_edges === void 0 ? void 0 : _data$bin_edges.length) || null,
|
|
44
|
-
valueFormatter: v => "Bin [".concat((0, _string.formatNumerical)(data.bin_edges[v][0], _string.FORMATS.EXPONENTIAL), ", ").concat((0, _string.formatNumerical)(data.bin_edges[v][1], _string.FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ?
|
|
44
|
+
valueFormatter: v => "Bin [".concat((0, _string.formatNumerical)(data.bin_edges[v][0], _string.FORMATS.EXPONENTIAL), ", ").concat((0, _string.formatNumerical)(data.bin_edges[v][1], _string.FORMATS.EXPONENTIAL)).concat(v === data.bin_edges.length - 1 ? ']' : ')')
|
|
45
45
|
},
|
|
46
46
|
slotProps: {
|
|
47
47
|
popper: {
|
|
48
|
-
className:
|
|
48
|
+
className: 'feature-histogram-tooltip'
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
})
|
|
@@ -11,11 +11,11 @@ const ImageViewer = _ref => {
|
|
|
11
11
|
let {
|
|
12
12
|
src,
|
|
13
13
|
alt,
|
|
14
|
-
className =
|
|
14
|
+
className = 'img-fluid'
|
|
15
15
|
} = _ref;
|
|
16
16
|
const [error, setError] = (0, _react.useState)(false);
|
|
17
17
|
const handleError = () => {
|
|
18
|
-
console.error(
|
|
18
|
+
console.error('Error loading image from src:', src);
|
|
19
19
|
setError(true);
|
|
20
20
|
};
|
|
21
21
|
if (!error) {
|
package/dist/cjs/utils/Legend.js
CHANGED
|
@@ -25,7 +25,7 @@ exports.LoadingSpinner = LoadingSpinner;
|
|
|
25
25
|
const LoadingLinear = () => {
|
|
26
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
27
27
|
sx: {
|
|
28
|
-
width:
|
|
28
|
+
width: '100%'
|
|
29
29
|
},
|
|
30
30
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.LinearProgress, {})
|
|
31
31
|
});
|
|
@@ -76,7 +76,7 @@ const useResolver = initSettings => {
|
|
|
76
76
|
// all obs should be in initSettings.selectedObs and initSettings.labelObs
|
|
77
77
|
const initObs = _lodash.default.uniqBy(_lodash.default.compact([initSettings.selectedObs, ..._lodash.default.map(initSettings.labelObs, o => ({
|
|
78
78
|
name: o
|
|
79
|
-
}))]),
|
|
79
|
+
}))]), 'name');
|
|
80
80
|
const initObsNames = _lodash.default.map(initObs, o => o.name);
|
|
81
81
|
const [obsParams] = (0, _react.useState)({
|
|
82
82
|
url: dataset.url,
|
|
@@ -89,7 +89,7 @@ const useResolver = initSettings => {
|
|
|
89
89
|
fetchedData: obsData,
|
|
90
90
|
isPending: obsDataPending,
|
|
91
91
|
serverError: obsDataError
|
|
92
|
-
} = (0, _requests.useFetch)(
|
|
92
|
+
} = (0, _requests.useFetch)('obs/cols', obsParams, {
|
|
93
93
|
enabled: !!initObsNames.length
|
|
94
94
|
});
|
|
95
95
|
|
|
@@ -106,7 +106,7 @@ const useResolver = initSettings => {
|
|
|
106
106
|
fetchedData: varData,
|
|
107
107
|
isPending: varDataPending,
|
|
108
108
|
serverError: varDataError
|
|
109
|
-
} = (0, _requests.useFetch)(
|
|
109
|
+
} = (0, _requests.useFetch)('var/cols/names', varParams, {
|
|
110
110
|
enabled: !!varParams.names.length
|
|
111
111
|
});
|
|
112
112
|
|
|
@@ -119,7 +119,7 @@ const useResolver = initSettings => {
|
|
|
119
119
|
fetchedData: pseudospatialData,
|
|
120
120
|
isPending: pseudospatialDataPending,
|
|
121
121
|
serverError: pseudospatialDataError
|
|
122
|
-
} = (0, _requests.useFetch)(
|
|
122
|
+
} = (0, _requests.useFetch)('masks', pseudospatialParams, {
|
|
123
123
|
enabled: pseudospatialEnabled,
|
|
124
124
|
retry: false
|
|
125
125
|
});
|
|
@@ -136,13 +136,13 @@ const useResolver = initSettings => {
|
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
138
|
if (obsDataError) {
|
|
139
|
-
console.error(
|
|
139
|
+
console.error('Error fetching obs data:', obsDataError);
|
|
140
140
|
}
|
|
141
141
|
if (varDataError) {
|
|
142
|
-
console.error(
|
|
142
|
+
console.error('Error fetching var data:', varDataError);
|
|
143
143
|
}
|
|
144
144
|
if (pseudospatialDataError) {
|
|
145
|
-
console.error(
|
|
145
|
+
console.error('Error fetching pseudospatial masks data:', pseudospatialDataError);
|
|
146
146
|
}
|
|
147
147
|
const data = {
|
|
148
148
|
obs: obsData ? _lodash.default.fromPairs(_lodash.default.map(obsData, o => [o.name, o])) : {},
|
|
@@ -30,15 +30,15 @@ const StyledTooltip = exports.StyledTooltip = (0, _material.styled)(_ref => {
|
|
|
30
30
|
} = _ref2;
|
|
31
31
|
return {
|
|
32
32
|
["& .".concat(_material.tooltipClasses.tooltip)]: {
|
|
33
|
-
backgroundColor:
|
|
34
|
-
color:
|
|
33
|
+
backgroundColor: '#000',
|
|
34
|
+
color: '#fff',
|
|
35
35
|
maxWidth: 220,
|
|
36
36
|
fontSize: 13,
|
|
37
37
|
borderRadius: 4,
|
|
38
38
|
padding: theme.spacing(0.5, 1),
|
|
39
|
-
whiteSpace:
|
|
40
|
-
textAlign:
|
|
41
|
-
boxShadow:
|
|
39
|
+
whiteSpace: 'pre-line',
|
|
40
|
+
textAlign: 'center',
|
|
41
|
+
boxShadow: '0 0.25rem 0.75rem rgba(0, 0, 0, 0.1)'
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
});
|
|
@@ -23,7 +23,7 @@ function VirtualizedList(_ref) {
|
|
|
23
23
|
ItemComponent,
|
|
24
24
|
estimateSize = () => 45,
|
|
25
25
|
overscan = 25,
|
|
26
|
-
maxHeight =
|
|
26
|
+
maxHeight = '65vh'
|
|
27
27
|
} = _ref,
|
|
28
28
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
29
29
|
const [parentNode, setParentNode] = (0, _react.useState)(null);
|
|
@@ -43,23 +43,23 @@ function VirtualizedList(_ref) {
|
|
|
43
43
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
44
44
|
ref: refCallback,
|
|
45
45
|
style: {
|
|
46
|
-
overflowY:
|
|
46
|
+
overflowY: 'auto',
|
|
47
47
|
maxHeight: maxHeight
|
|
48
48
|
},
|
|
49
49
|
className: "modern-scrollbars",
|
|
50
50
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
51
51
|
style: {
|
|
52
52
|
height: "".concat(itemVirtualizer.getTotalSize(), "px"),
|
|
53
|
-
width:
|
|
54
|
-
position:
|
|
55
|
-
willChange:
|
|
53
|
+
width: '100%',
|
|
54
|
+
position: 'relative',
|
|
55
|
+
willChange: 'transform'
|
|
56
56
|
},
|
|
57
57
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
58
58
|
style: {
|
|
59
|
-
position:
|
|
59
|
+
position: 'absolute',
|
|
60
60
|
top: 0,
|
|
61
61
|
left: 0,
|
|
62
|
-
width:
|
|
62
|
+
width: '100%',
|
|
63
63
|
transform: "translateY(".concat((_virtualItems$0$start = (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start) !== null && _virtualItems$0$start !== void 0 ? _virtualItems$0$start : 0, "px)")
|
|
64
64
|
},
|
|
65
65
|
children: virtualItems.map(virtualItem => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
package/dist/cjs/utils/errors.js
CHANGED
|
@@ -12,38 +12,38 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
12
12
|
const parseError = err => {
|
|
13
13
|
if (err === DOMException.TIMEOUT_ERR) {
|
|
14
14
|
return {
|
|
15
|
-
message:
|
|
15
|
+
message: 'Timeout error',
|
|
16
16
|
name: err
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
switch (err === null || err === void 0 ? void 0 : err.name) {
|
|
20
|
-
case
|
|
20
|
+
case 'TypeError':
|
|
21
21
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
22
|
-
message:
|
|
22
|
+
message: 'Failed to fetch data from server'
|
|
23
23
|
});
|
|
24
|
-
case
|
|
24
|
+
case 'ReadZarrError':
|
|
25
25
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
26
|
-
message:
|
|
26
|
+
message: 'Failed to read AnnData-Zarr'
|
|
27
27
|
});
|
|
28
|
-
case
|
|
28
|
+
case 'InvalidObs':
|
|
29
29
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
30
|
-
message:
|
|
30
|
+
message: 'Observation not found in dataset'
|
|
31
31
|
});
|
|
32
|
-
case
|
|
32
|
+
case 'InvalidVar':
|
|
33
33
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
34
|
-
message:
|
|
34
|
+
message: 'Feature not found in dataset'
|
|
35
35
|
});
|
|
36
|
-
case
|
|
36
|
+
case 'InvalidKey':
|
|
37
37
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
38
|
-
message:
|
|
38
|
+
message: 'Key not found in dataset'
|
|
39
39
|
});
|
|
40
|
-
case
|
|
40
|
+
case 'BadRequest':
|
|
41
41
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
42
|
-
message:
|
|
42
|
+
message: 'Invalid request to server'
|
|
43
43
|
});
|
|
44
|
-
case
|
|
44
|
+
case 'InternalServerError':
|
|
45
45
|
return _objectSpread(_objectSpread({}, err), {}, {
|
|
46
|
-
message:
|
|
46
|
+
message: 'Server error'
|
|
47
47
|
});
|
|
48
48
|
default:
|
|
49
49
|
return err;
|
|
@@ -22,13 +22,13 @@ async function fetchData(endpoint, params) {
|
|
|
22
22
|
const timeout = setTimeout(() => {
|
|
23
23
|
controller.abort(DOMException.TIMEOUT_ERR);
|
|
24
24
|
}, ms || 300000);
|
|
25
|
-
if (signal) signal.addEventListener(
|
|
25
|
+
if (signal) signal.addEventListener('abort', () => controller.abort());
|
|
26
26
|
const response = await fetch(new URL(endpoint, apiUrl), {
|
|
27
|
-
method:
|
|
28
|
-
mode:
|
|
27
|
+
method: 'POST',
|
|
28
|
+
mode: 'cors',
|
|
29
29
|
headers: {
|
|
30
|
-
|
|
31
|
-
Accept:
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
Accept: 'application/json'
|
|
32
32
|
},
|
|
33
33
|
body: JSON.stringify(params),
|
|
34
34
|
signal: controller.signal
|
package/dist/cjs/utils/search.js
CHANGED
|
@@ -8,12 +8,12 @@ var _react = require("react");
|
|
|
8
8
|
var _requests = require("./requests");
|
|
9
9
|
var _DatasetContext = require("../context/DatasetContext");
|
|
10
10
|
const useDiseaseSearch = () => {
|
|
11
|
-
const ENDPOINT =
|
|
11
|
+
const ENDPOINT = 'diseases';
|
|
12
12
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
13
13
|
const [params, setParams] = (0, _react.useState)({
|
|
14
14
|
url: dataset.url,
|
|
15
15
|
diseaseDatasets: dataset.diseaseDatasets,
|
|
16
|
-
text:
|
|
16
|
+
text: ''
|
|
17
17
|
});
|
|
18
18
|
const data = (0, _requests.useFetch)(ENDPOINT, params, {
|
|
19
19
|
enabled: !!params.text.length,
|
|
@@ -27,12 +27,12 @@ const useDiseaseSearch = () => {
|
|
|
27
27
|
};
|
|
28
28
|
exports.useDiseaseSearch = useDiseaseSearch;
|
|
29
29
|
const useVarSearch = () => {
|
|
30
|
-
const ENDPOINT =
|
|
30
|
+
const ENDPOINT = 'var/names';
|
|
31
31
|
const dataset = (0, _DatasetContext.useDataset)();
|
|
32
32
|
const [params, setParams] = (0, _react.useState)({
|
|
33
33
|
url: dataset.url,
|
|
34
34
|
col: dataset.varNamesCol,
|
|
35
|
-
text:
|
|
35
|
+
text: ''
|
|
36
36
|
});
|
|
37
37
|
const data = (0, _requests.useFetch)(ENDPOINT, params, {
|
|
38
38
|
enabled: !!params.text.length,
|
package/dist/cjs/utils/string.js
CHANGED
|
@@ -9,9 +9,9 @@ exports.formatString = formatString;
|
|
|
9
9
|
var _numbro = _interopRequireDefault(require("numbro"));
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
const FORMATS = exports.FORMATS = {
|
|
12
|
-
EXPONENTIAL:
|
|
13
|
-
ABBREVIATION:
|
|
14
|
-
THOUSAND:
|
|
12
|
+
EXPONENTIAL: 'exponential',
|
|
13
|
+
ABBREVIATION: 'abbreviation',
|
|
14
|
+
THOUSAND: 'thousand'
|
|
15
15
|
};
|
|
16
16
|
function formatThousand(n) {
|
|
17
17
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
|
|
@@ -41,9 +41,9 @@ function formatNumerical(n) {
|
|
|
41
41
|
let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FORMATS.THOUSAND;
|
|
42
42
|
let precision = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
|
|
43
43
|
if (n === 0) {
|
|
44
|
-
return
|
|
44
|
+
return '0';
|
|
45
45
|
} else if (!n || n === undefined || isNaN(n)) {
|
|
46
|
-
return
|
|
46
|
+
return 'NaN';
|
|
47
47
|
}
|
|
48
48
|
switch (format) {
|
|
49
49
|
case FORMATS.EXPONENTIAL:
|
|
@@ -64,5 +64,5 @@ function formatNumerical(n) {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
function formatString(s) {
|
|
67
|
-
return s.trim().replace(/_/g,
|
|
67
|
+
return s.trim().replace(/_/g, ' ');
|
|
68
68
|
}
|
|
@@ -21,7 +21,7 @@ const useObsmData = function () {
|
|
|
21
21
|
obsm = obsm || settings.selectedObsm;
|
|
22
22
|
const obsmParams = (0, _react.useMemo)(() => ({
|
|
23
23
|
url: dataset.url,
|
|
24
|
-
path:
|
|
24
|
+
path: 'obsm/' + obsm,
|
|
25
25
|
s: [null, (0, _zarr.slice)(null, 2)] // load only [:, :2]
|
|
26
26
|
}), [dataset.url, obsm]);
|
|
27
27
|
return (0, _zarrHelper.useZarr)(obsmParams, _zarrHelper.GET_OPTIONS, {
|
|
@@ -43,12 +43,12 @@ const useXData = function () {
|
|
|
43
43
|
const selectedVar = (0, _Resolver.useSelectedVar)();
|
|
44
44
|
const xParams = (0, _react.useMemo)(() => !selectedVar ? [] : !(selectedVar !== null && selectedVar !== void 0 && selectedVar.isSet) ? [{
|
|
45
45
|
url: dataset.url,
|
|
46
|
-
path:
|
|
46
|
+
path: 'X',
|
|
47
47
|
s: [null, selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index]
|
|
48
48
|
}] : _lodash.default.map(selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.vars, v => {
|
|
49
49
|
return {
|
|
50
50
|
url: dataset.url,
|
|
51
|
-
path:
|
|
51
|
+
path: 'X',
|
|
52
52
|
s: [null, v.matrix_index]
|
|
53
53
|
};
|
|
54
54
|
}), [dataset.url, selectedVar]);
|
|
@@ -67,7 +67,7 @@ const useObsData = function () {
|
|
|
67
67
|
var _obs, _obs2;
|
|
68
68
|
return {
|
|
69
69
|
url: dataset.url,
|
|
70
|
-
path:
|
|
70
|
+
path: 'obs/' + ((_obs = obs) === null || _obs === void 0 ? void 0 : _obs.name) + (((_obs2 = obs) === null || _obs2 === void 0 ? void 0 : _obs2.type) === _constants.OBS_TYPES.CATEGORICAL ? '/codes' : '')
|
|
71
71
|
};
|
|
72
72
|
}, [dataset.url, (_obs3 = obs) === null || _obs3 === void 0 ? void 0 : _obs3.name, (_obs4 = obs) === null || _obs4 === void 0 ? void 0 : _obs4.type]);
|
|
73
73
|
return (0, _zarrHelper.useZarr)(obsParams, _zarrHelper.GET_OPTIONS, {
|
|
@@ -82,7 +82,7 @@ const useLabelObsData = () => {
|
|
|
82
82
|
const obs = settings.data.obs[obsName] || null;
|
|
83
83
|
return {
|
|
84
84
|
url: dataset.url,
|
|
85
|
-
path:
|
|
85
|
+
path: 'obs/' + obs.name + (obs.type === _constants.OBS_TYPES.CATEGORICAL ? '/codes' : ''),
|
|
86
86
|
key: obs.name
|
|
87
87
|
};
|
|
88
88
|
}), [dataset.url, settings.data.obs, settings.labelObs]);
|
package/dist/css/cherita.css
CHANGED
|
@@ -11895,7 +11895,7 @@ textarea.form-control-lg {
|
|
|
11895
11895
|
}
|
|
11896
11896
|
|
|
11897
11897
|
.list-group.cherita-list .virtualized-list-wrapper {
|
|
11898
|
-
padding: 0 0.25rem 0.25rem
|
|
11898
|
+
padding: 0 0.25rem 0.25rem;
|
|
11899
11899
|
}
|
|
11900
11900
|
.list-group.cherita-list .list-group-item.unstyled {
|
|
11901
11901
|
background-color: transparent;
|
|
@@ -11915,7 +11915,7 @@ textarea.form-control-lg {
|
|
|
11915
11915
|
|
|
11916
11916
|
.obs-statistics {
|
|
11917
11917
|
border: 0;
|
|
11918
|
-
margin: 0 0.25rem 0.25rem
|
|
11918
|
+
margin: 0 0.25rem 0.25rem;
|
|
11919
11919
|
padding: 0.375rem 0.75rem;
|
|
11920
11920
|
line-height: 1.5;
|
|
11921
11921
|
color: var(--bs-body-color);
|
|
@@ -11939,7 +11939,6 @@ textarea.form-control-lg {
|
|
|
11939
11939
|
flex-direction: column;
|
|
11940
11940
|
overflow: auto;
|
|
11941
11941
|
}
|
|
11942
|
-
|
|
11943
11942
|
.cherita-app .cherita-navbar {
|
|
11944
11943
|
position: absolute;
|
|
11945
11944
|
z-index: 11;
|
|
@@ -11948,16 +11947,12 @@ textarea.form-control-lg {
|
|
|
11948
11947
|
right: 0;
|
|
11949
11948
|
border-radius: 0.25rem;
|
|
11950
11949
|
}
|
|
11951
|
-
@media (
|
|
11950
|
+
@media (width >= 992px) and (width <= 1199px) {
|
|
11952
11951
|
.cherita-app .cherita-navbar {
|
|
11953
|
-
margin-left: calc(33.
|
|
11952
|
+
margin-left: calc(33.3333% + 1rem) !important;
|
|
11954
11953
|
}
|
|
11955
11954
|
}
|
|
11956
11955
|
|
|
11957
|
-
.cherita-app-canvas {
|
|
11958
|
-
position: relative;
|
|
11959
|
-
}
|
|
11960
|
-
|
|
11961
11956
|
.cherita-app-obs {
|
|
11962
11957
|
overflow-y: auto;
|
|
11963
11958
|
}
|
|
@@ -11989,7 +11984,7 @@ textarea.form-control-lg {
|
|
|
11989
11984
|
align-items: center;
|
|
11990
11985
|
width: 100%;
|
|
11991
11986
|
}
|
|
11992
|
-
.cherita-app-sidebar .accordion-header-wrapper
|
|
11987
|
+
.cherita-app-sidebar .accordion-header-wrapper::after {
|
|
11993
11988
|
content: "";
|
|
11994
11989
|
flex-shrink: 0;
|
|
11995
11990
|
width: var(--geeks-accordion-btn-icon-width);
|
|
@@ -12004,7 +11999,7 @@ textarea.form-control-lg {
|
|
|
12004
11999
|
color: var(--geeks-accordion-active-color);
|
|
12005
12000
|
background-color: var(--geeks-accordion-active-bg);
|
|
12006
12001
|
}
|
|
12007
|
-
.cherita-app-sidebar .accordion-header-wrapper:not(.collapsed)
|
|
12002
|
+
.cherita-app-sidebar .accordion-header-wrapper:not(.collapsed)::after {
|
|
12008
12003
|
background-image: var(--geeks-accordion-btn-active-icon);
|
|
12009
12004
|
transform: var(--geeks-accordion-btn-icon-transform);
|
|
12010
12005
|
}
|
|
@@ -12042,6 +12037,9 @@ textarea.form-control-lg {
|
|
|
12042
12037
|
border-left: 1px solid #dee2e6;
|
|
12043
12038
|
}
|
|
12044
12039
|
|
|
12040
|
+
.cherita-app-canvas {
|
|
12041
|
+
position: relative;
|
|
12042
|
+
}
|
|
12045
12043
|
.cherita-app-canvas .cherita-plot {
|
|
12046
12044
|
position: relative;
|
|
12047
12045
|
height: 100%;
|
|
@@ -12077,7 +12075,7 @@ textarea.form-control-lg {
|
|
|
12077
12075
|
max-width: 20%;
|
|
12078
12076
|
position: relative;
|
|
12079
12077
|
}
|
|
12080
|
-
@media (
|
|
12078
|
+
@media (width <= 1400px) {
|
|
12081
12079
|
.cherita-app-container .cherita-app-obs,
|
|
12082
12080
|
.cherita-app-container .cherita-app-sidebar {
|
|
12083
12081
|
max-width: 25%;
|
|
@@ -12269,7 +12267,7 @@ textarea.form-control-lg {
|
|
|
12269
12267
|
display: inline-block;
|
|
12270
12268
|
}
|
|
12271
12269
|
|
|
12272
|
-
@media (
|
|
12270
|
+
@media (width <= 600px) {
|
|
12273
12271
|
.cherita-spatial-footer {
|
|
12274
12272
|
flex-direction: column;
|
|
12275
12273
|
align-items: center;
|
|
@@ -12370,13 +12368,13 @@ textarea.form-control-lg {
|
|
|
12370
12368
|
}
|
|
12371
12369
|
|
|
12372
12370
|
.value-count-badge {
|
|
12373
|
-
color: #
|
|
12371
|
+
color: #000 !important;
|
|
12374
12372
|
background-color: #dedede !important;
|
|
12375
12373
|
font-weight: lighter;
|
|
12376
12374
|
}
|
|
12377
12375
|
|
|
12378
12376
|
.filtered-value-count-badge {
|
|
12379
|
-
color: #
|
|
12377
|
+
color: #fff !important;
|
|
12380
12378
|
font-weight: normal;
|
|
12381
12379
|
}
|
|
12382
12380
|
|
|
@@ -12407,23 +12405,26 @@ textarea.form-control-lg {
|
|
|
12407
12405
|
background-color: #dedede;
|
|
12408
12406
|
}
|
|
12409
12407
|
|
|
12408
|
+
.feature-histogram-tooltip td > p {
|
|
12409
|
+
font-size: 0.85rem !important;
|
|
12410
|
+
}
|
|
12411
|
+
|
|
12412
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
12410
12413
|
.feature-histogram-tooltip .MuiChartsTooltip-markCell,
|
|
12411
12414
|
.MuiChartsTooltip-labelCell {
|
|
12412
12415
|
display: none;
|
|
12413
12416
|
}
|
|
12414
12417
|
|
|
12418
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
12415
12419
|
.feature-histogram-tooltip .MuiChartsTooltip-valueCell {
|
|
12416
12420
|
padding: 0.5rem !important;
|
|
12417
12421
|
}
|
|
12418
12422
|
|
|
12423
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
12419
12424
|
.feature-histogram-tooltip .MuiChartsTooltip-valueCell > p {
|
|
12420
12425
|
font-size: 0.85rem !important;
|
|
12421
12426
|
}
|
|
12422
12427
|
|
|
12423
|
-
.feature-histogram-tooltip td > p {
|
|
12424
|
-
font-size: 0.85rem !important;
|
|
12425
|
-
}
|
|
12426
|
-
|
|
12427
12428
|
.feature-disease-info-list {
|
|
12428
12429
|
max-height: 300px;
|
|
12429
12430
|
overflow-y: auto;
|
|
@@ -12558,7 +12559,7 @@ input[type=checkbox] {
|
|
|
12558
12559
|
z-index: 10;
|
|
12559
12560
|
width: max-content;
|
|
12560
12561
|
}
|
|
12561
|
-
@media (
|
|
12562
|
+
@media (width >= 991px) {
|
|
12562
12563
|
.resampled-tooltip-container {
|
|
12563
12564
|
top: 16px;
|
|
12564
12565
|
left: 16px;
|