@haniffalab/cherita-react 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/dotplot/Dotplot.js +4 -5
- package/dist/cjs/components/dotplot/DotplotControls.js +7 -3
- package/dist/cjs/components/heatmap/Heatmap.js +4 -5
- package/dist/cjs/components/icons/HeatmapIcon.js +2 -2
- package/dist/cjs/components/matrixplot/Matrixplot.js +4 -5
- package/dist/cjs/components/obs-list/ObsItem.js +7 -7
- package/dist/cjs/components/offcanvas/OffCanvas.js +7 -4
- package/dist/cjs/components/plot/PlotTypeSelector.js +49 -10
- package/dist/cjs/components/pseudospatial/Pseudospatial.js +8 -5
- package/dist/cjs/components/scatterplot/Scatterplot.js +134 -136
- package/dist/cjs/components/scatterplot/ScatterplotLayer.js +144 -0
- package/dist/cjs/components/scatterplot/SpatialControls.js +7 -4
- package/dist/cjs/components/scatterplot/Toolbox.js +8 -4
- package/dist/cjs/components/search-bar/SearchBar.js +51 -29
- package/dist/cjs/components/search-bar/SearchInfo.js +2 -2
- package/dist/cjs/components/search-bar/SearchResults.js +9 -6
- package/dist/cjs/components/toolbar/Toolbar.js +10 -65
- package/dist/cjs/components/var-list/VarItem.js +4 -6
- package/dist/cjs/components/var-list/VarList.js +17 -9
- package/dist/cjs/components/var-list/VarListToolbar.js +1 -1
- package/dist/cjs/components/var-list/VarSet.js +7 -5
- package/dist/cjs/components/violin/Violin.js +6 -7
- package/dist/cjs/constants/constants.js +6 -3
- package/dist/cjs/context/DatasetContext.js +11 -2
- package/dist/cjs/context/SettingsContext.js +27 -2
- package/dist/cjs/helpers/color-helper.js +17 -12
- package/dist/cjs/index.js +0 -7
- package/dist/cjs/utils/Legend.js +6 -5
- package/dist/cjs/utils/requests.js +2 -2
- package/dist/cjs/views/ObservationFeature/StandardView.js +1 -1
- package/dist/cjs/views/PerturbationMap/ObsExplorer.js +11 -9
- package/dist/cjs/views/PerturbationMap/StandardView.js +2 -1
- package/dist/cjs/workers/scatterplotData.js +16 -0
- package/dist/esm/components/dotplot/Dotplot.js +5 -6
- package/dist/esm/components/dotplot/DotplotControls.js +6 -3
- package/dist/esm/components/heatmap/Heatmap.js +5 -6
- package/dist/esm/components/icons/HeatmapIcon.js +2 -2
- package/dist/esm/components/matrixplot/Matrixplot.js +5 -6
- package/dist/esm/components/obs-list/ObsItem.js +7 -7
- package/dist/esm/components/offcanvas/OffCanvas.js +7 -4
- package/dist/esm/components/plot/PlotTypeSelector.js +49 -10
- package/dist/esm/components/pseudospatial/Pseudospatial.js +8 -5
- package/dist/esm/components/scatterplot/Scatterplot.js +132 -134
- package/dist/esm/components/scatterplot/ScatterplotLayer.js +137 -0
- package/dist/esm/components/scatterplot/SpatialControls.js +7 -4
- package/dist/esm/components/scatterplot/Toolbox.js +8 -4
- package/dist/esm/components/search-bar/SearchBar.js +52 -30
- package/dist/esm/components/search-bar/SearchInfo.js +2 -2
- package/dist/esm/components/search-bar/SearchResults.js +9 -6
- package/dist/esm/components/toolbar/Toolbar.js +9 -63
- package/dist/esm/components/var-list/VarItem.js +4 -6
- package/dist/esm/components/var-list/VarList.js +17 -9
- package/dist/esm/components/var-list/VarListToolbar.js +1 -1
- package/dist/esm/components/var-list/VarSet.js +7 -5
- package/dist/esm/components/violin/Violin.js +7 -8
- package/dist/esm/constants/constants.js +5 -2
- package/dist/esm/context/DatasetContext.js +11 -2
- package/dist/esm/context/SettingsContext.js +27 -2
- package/dist/esm/helpers/color-helper.js +17 -12
- package/dist/esm/index.js +0 -1
- package/dist/esm/utils/Legend.js +6 -5
- package/dist/esm/utils/requests.js +2 -2
- package/dist/esm/views/ObservationFeature/StandardView.js +1 -1
- package/dist/esm/views/PerturbationMap/ObsExplorer.js +11 -9
- package/dist/esm/views/PerturbationMap/StandardView.js +2 -1
- package/dist/esm/workers/scatterplotData.js +10 -0
- package/package.json +6 -3
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Toolbox = Toolbox;
|
|
7
7
|
var _reactBootstrap = require("react-bootstrap");
|
|
8
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
8
9
|
var _string = require("../../utils/string");
|
|
9
10
|
var _ObsmList = require("../obsm-list/ObsmList");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -15,6 +16,9 @@ function Toolbox(_ref) {
|
|
|
15
16
|
slicedLength,
|
|
16
17
|
setHasObsm
|
|
17
18
|
} = _ref;
|
|
19
|
+
const {
|
|
20
|
+
obsLabel
|
|
21
|
+
} = (0, _DatasetContext.useDataset)();
|
|
18
22
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
19
23
|
className: "cherita-toolbox",
|
|
20
24
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ButtonGroup, {
|
|
@@ -24,7 +28,7 @@ function Toolbox(_ref) {
|
|
|
24
28
|
placement: "top",
|
|
25
29
|
overlay: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Tooltip, {
|
|
26
30
|
id: "tooltip-dropped-mode",
|
|
27
|
-
children: ["You have selected ", (0, _string.formatNumerical)(slicedLength), " out of", ' ', (0, _string.formatNumerical)(obsLength), "
|
|
31
|
+
children: ["You have selected ", (0, _string.formatNumerical)(slicedLength), " out of", ' ', (0, _string.formatNumerical)(obsLength), " ", obsLabel.plural]
|
|
28
32
|
}),
|
|
29
33
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
|
|
30
34
|
size: "sm",
|
|
@@ -33,13 +37,13 @@ function Toolbox(_ref) {
|
|
|
33
37
|
cursor: 'default'
|
|
34
38
|
},
|
|
35
39
|
"aria-disabled": "true",
|
|
36
|
-
children: [(0, _string.formatNumerical)(slicedLength), " of ", (0, _string.formatNumerical)(obsLength), ' ',
|
|
40
|
+
children: [(0, _string.formatNumerical)(slicedLength), " of ", (0, _string.formatNumerical)(obsLength), ' ', obsLabel.plural]
|
|
37
41
|
})
|
|
38
42
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
|
|
39
43
|
placement: "top",
|
|
40
44
|
overlay: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Tooltip, {
|
|
41
45
|
id: "tooltip-dropped-mode",
|
|
42
|
-
children: ["You are viewing ", (0, _string.formatNumerical)(obsLength), "
|
|
46
|
+
children: ["You are viewing ", (0, _string.formatNumerical)(obsLength), " ", obsLabel.plural]
|
|
43
47
|
}),
|
|
44
48
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
|
|
45
49
|
size: "sm",
|
|
@@ -48,7 +52,7 @@ function Toolbox(_ref) {
|
|
|
48
52
|
cursor: 'default'
|
|
49
53
|
},
|
|
50
54
|
"aria-disabled": "true",
|
|
51
|
-
children: [(0, _string.formatNumerical)(obsLength), "
|
|
55
|
+
children: [(0, _string.formatNumerical)(obsLength), " ", obsLabel.plural]
|
|
52
56
|
})
|
|
53
57
|
}))]
|
|
54
58
|
})
|
|
@@ -18,6 +18,7 @@ var _Tab = _interopRequireDefault(require("react-bootstrap/Tab"));
|
|
|
18
18
|
var _SearchInfo = require("./SearchInfo");
|
|
19
19
|
var _SearchResults = require("./SearchResults");
|
|
20
20
|
var _constants = require("../../constants/constants");
|
|
21
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
23
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
23
24
|
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; }
|
|
@@ -25,27 +26,39 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
25
26
|
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; }
|
|
26
27
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
27
28
|
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); }
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
function useVarSelect() {
|
|
30
|
+
const pendingVars = (0, _react.useRef)(new Map());
|
|
31
|
+
const debouncedSelect = (0, _react.useMemo)(() => _lodash.default.debounce(dispatch => {
|
|
32
|
+
const vars = [...pendingVars.current.values()];
|
|
33
|
+
pendingVars.current.clear();
|
|
34
|
+
dispatch({
|
|
35
|
+
type: 'select.multivar.batch',
|
|
36
|
+
vars: vars
|
|
37
|
+
});
|
|
38
|
+
const lastItem = vars[vars.length - 1];
|
|
39
|
+
if (lastItem) {
|
|
40
|
+
dispatch({
|
|
41
|
+
type: 'select.var',
|
|
42
|
+
var: lastItem
|
|
43
|
+
});
|
|
44
|
+
dispatch({
|
|
45
|
+
type: 'set.colorEncoding',
|
|
46
|
+
value: _constants.COLOR_ENCODINGS.VAR
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}, 500), []);
|
|
50
|
+
const onVarSelect = (0, _react.useCallback)((dispatch, item) => {
|
|
51
|
+
dispatch({
|
|
52
|
+
type: 'add.var',
|
|
53
|
+
var: item
|
|
54
|
+
});
|
|
55
|
+
pendingVars.current.set(item.name, item);
|
|
56
|
+
debouncedSelect(dispatch);
|
|
57
|
+
}, [debouncedSelect]);
|
|
58
|
+
return {
|
|
59
|
+
onVarSelect,
|
|
60
|
+
debouncedSelect
|
|
61
|
+
};
|
|
49
62
|
}
|
|
50
63
|
function addVarSet(dispatch, _ref) {
|
|
51
64
|
let {
|
|
@@ -73,7 +86,7 @@ function SearchModal(_ref2) {
|
|
|
73
86
|
text,
|
|
74
87
|
setText,
|
|
75
88
|
displayText,
|
|
76
|
-
|
|
89
|
+
handleVarSelect,
|
|
77
90
|
searchVar,
|
|
78
91
|
searchDiseases,
|
|
79
92
|
searchObs
|
|
@@ -93,6 +106,7 @@ function SearchModal(_ref2) {
|
|
|
93
106
|
const [varResultsLength, setVarResultsLength] = (0, _react.useState)(null);
|
|
94
107
|
const [diseaseResultsLength, setDiseaseResultsLength] = (0, _react.useState)(null);
|
|
95
108
|
const [obsResultsLength, setObsResultsLength] = (0, _react.useState)(null);
|
|
109
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
96
110
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Modal, {
|
|
97
111
|
show: show,
|
|
98
112
|
onHide: handleClose,
|
|
@@ -168,7 +182,7 @@ function SearchModal(_ref2) {
|
|
|
168
182
|
children: [searchVar && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nav.default.Item, {
|
|
169
183
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Nav.default.Link, {
|
|
170
184
|
eventKey: FEATURE_TYPE.VAR,
|
|
171
|
-
children: [
|
|
185
|
+
children: [_lodash.default.capitalize(dataset.varLabel.plural), ' ', !!varResultsLength && "(".concat(varResultsLength, ")")]
|
|
172
186
|
})
|
|
173
187
|
}), searchDiseases && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nav.default.Item, {
|
|
174
188
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Nav.default.Link, {
|
|
@@ -178,7 +192,7 @@ function SearchModal(_ref2) {
|
|
|
178
192
|
}), searchObs && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nav.default.Item, {
|
|
179
193
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Nav.default.Link, {
|
|
180
194
|
eventKey: FEATURE_TYPE.OBS,
|
|
181
|
-
children: [
|
|
195
|
+
children: [_lodash.default.capitalize(dataset.obsLabel.plural), ' ', !!obsResultsLength && "(".concat(obsResultsLength, ")")]
|
|
182
196
|
})
|
|
183
197
|
})]
|
|
184
198
|
})
|
|
@@ -190,7 +204,7 @@ function SearchModal(_ref2) {
|
|
|
190
204
|
eventKey: FEATURE_TYPE.VAR,
|
|
191
205
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchResults.VarSearchResults, {
|
|
192
206
|
text: text,
|
|
193
|
-
handleSelect:
|
|
207
|
+
handleSelect: handleVarSelect,
|
|
194
208
|
selectedResult: selectedResult.var,
|
|
195
209
|
setSelectedResult: item => setSelectedResult(prev => {
|
|
196
210
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
@@ -215,7 +229,6 @@ function SearchModal(_ref2) {
|
|
|
215
229
|
eventKey: FEATURE_TYPE.OBS,
|
|
216
230
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchResults.ObsSearchResults, {
|
|
217
231
|
text: text,
|
|
218
|
-
handleSelect: handleSelect,
|
|
219
232
|
selectedResult: selectedResult.obs,
|
|
220
233
|
setSelectedResult: item => setSelectedResult(prev => {
|
|
221
234
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
@@ -238,7 +251,7 @@ function SearchModal(_ref2) {
|
|
|
238
251
|
if (tab === FEATURE_TYPE.DISEASE) {
|
|
239
252
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchInfo.DiseaseInfo, {
|
|
240
253
|
disease: selectedResult.disease,
|
|
241
|
-
handleSelect:
|
|
254
|
+
handleSelect: handleVarSelect,
|
|
242
255
|
addVarSet: addVarSet
|
|
243
256
|
});
|
|
244
257
|
} else if (tab === FEATURE_TYPE.OBS) {
|
|
@@ -267,8 +280,13 @@ function SearchBar(_ref3) {
|
|
|
267
280
|
searchObs = false
|
|
268
281
|
} = _ref3;
|
|
269
282
|
const [text, setText] = (0, _react.useState)('');
|
|
270
|
-
const
|
|
283
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
284
|
+
const displayText = [...(searchVar ? [dataset.varLabel.plural] : []), ...(searchDiseases ? ['diseases'] : []), ...(searchObs ? [dataset.obsLabel.plural] : [])].join(' and ');
|
|
271
285
|
const [showModal, setShowModal] = (0, _react.useState)(false);
|
|
286
|
+
const {
|
|
287
|
+
onVarSelect,
|
|
288
|
+
debouncedSelect
|
|
289
|
+
} = useVarSelect();
|
|
272
290
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
273
291
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Form, {
|
|
274
292
|
onSubmit: e => {
|
|
@@ -294,7 +312,11 @@ function SearchBar(_ref3) {
|
|
|
294
312
|
searchVar: searchVar,
|
|
295
313
|
searchDiseases: searchDiseases,
|
|
296
314
|
searchObs: searchObs,
|
|
297
|
-
|
|
315
|
+
handleVarSelect: onVarSelect,
|
|
316
|
+
handleClose: () => {
|
|
317
|
+
debouncedSelect.flush();
|
|
318
|
+
setShowModal(false);
|
|
319
|
+
}
|
|
298
320
|
})]
|
|
299
321
|
});
|
|
300
322
|
}
|
|
@@ -184,8 +184,8 @@ function DiseaseInfo(_ref2) {
|
|
|
184
184
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
185
185
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
|
|
186
186
|
children: disease.disease_name
|
|
187
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
188
|
-
children: "Implicated
|
|
187
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("h6", {
|
|
188
|
+
children: ["Implicated ", dataset.varLabel.plural]
|
|
189
189
|
}), isPending ? /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
190
190
|
children: "Loading..."
|
|
191
191
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
@@ -11,6 +11,7 @@ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
|
11
11
|
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
var _reactBootstrap = require("react-bootstrap");
|
|
14
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
14
15
|
var _SettingsContext = require("../../context/SettingsContext");
|
|
15
16
|
var _search = require("../../utils/search");
|
|
16
17
|
var _VirtualizedList = require("../../utils/VirtualizedList");
|
|
@@ -98,9 +99,10 @@ function SearchResultsBase(_ref) {
|
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
function VarSearchResults(props) {
|
|
102
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
101
103
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SearchResultsBase, _objectSpread(_objectSpread({}, props), {}, {
|
|
102
104
|
searchHook: _search.useVarSearch,
|
|
103
|
-
emptyLabel: "Search
|
|
105
|
+
emptyLabel: "Search for ".concat(dataset.varLabel.plural),
|
|
104
106
|
itemRenderer: _ref2 => {
|
|
105
107
|
var _item$index, _item$index2;
|
|
106
108
|
let {
|
|
@@ -138,17 +140,18 @@ function VarSearchResults(props) {
|
|
|
138
140
|
}));
|
|
139
141
|
}
|
|
140
142
|
function ObsSearchResults(props) {
|
|
143
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
141
144
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SearchResultsBase, _objectSpread(_objectSpread({}, props), {}, {
|
|
142
145
|
searchHook: _search.useObsSearch,
|
|
143
|
-
emptyLabel: "Search
|
|
146
|
+
emptyLabel: "Search for ".concat(dataset.obsLabel.plural),
|
|
144
147
|
itemRenderer: _ref3 => {
|
|
145
148
|
let {
|
|
146
149
|
item,
|
|
147
150
|
dispatch,
|
|
148
|
-
handleClose,
|
|
149
151
|
selectedResult,
|
|
150
152
|
setSelectedResult,
|
|
151
|
-
isStale
|
|
153
|
+
isStale,
|
|
154
|
+
handleClose
|
|
152
155
|
} = _ref3;
|
|
153
156
|
const onObsSelect = (dispatch, item, closeModal) => {
|
|
154
157
|
dispatch({
|
|
@@ -172,7 +175,7 @@ function ObsSearchResults(props) {
|
|
|
172
175
|
variant: "outline-secondary",
|
|
173
176
|
title: "Add to list",
|
|
174
177
|
disabled: isStale,
|
|
175
|
-
onClick: () => onObsSelect(dispatch, item,
|
|
178
|
+
onClick: () => onObsSelect(dispatch, item, handleClose),
|
|
176
179
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
177
180
|
icon: _freeSolidSvgIcons.faPlus
|
|
178
181
|
})
|
|
@@ -186,7 +189,7 @@ function ObsSearchResults(props) {
|
|
|
186
189
|
function DiseasesSearchResults(props) {
|
|
187
190
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SearchResultsBase, _objectSpread(_objectSpread({}, props), {}, {
|
|
188
191
|
searchHook: _search.useDiseaseSearch,
|
|
189
|
-
emptyLabel: "Search diseases",
|
|
192
|
+
emptyLabel: "Search for diseases",
|
|
190
193
|
overscan: 250,
|
|
191
194
|
estimateSize: () => 32,
|
|
192
195
|
itemRenderer: _ref4 => {
|
|
@@ -3,81 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.PlotlyToolbar = exports.PlotlyModebarControls = void 0;
|
|
7
7
|
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
8
8
|
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
9
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
10
|
var _reactBootstrap = require("react-bootstrap");
|
|
11
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
10
12
|
var _usePlotVisibility = _interopRequireDefault(require("../../utils/usePlotVisibility"));
|
|
11
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const
|
|
14
|
-
let {
|
|
15
|
-
setShowCategories,
|
|
16
|
-
setShowSearch,
|
|
17
|
-
setShowControls,
|
|
18
|
-
Fullscreen
|
|
19
|
-
} = _ref;
|
|
20
|
-
const {
|
|
21
|
-
showCategoriesBtn,
|
|
22
|
-
showSearchBtn
|
|
23
|
-
} = (0, _usePlotVisibility.default)(isFullscreen);
|
|
24
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar, {
|
|
25
|
-
expand: "md",
|
|
26
|
-
bg: "primary",
|
|
27
|
-
variant: "dark",
|
|
28
|
-
className: "cherita-navbar",
|
|
29
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Container, {
|
|
30
|
-
fluid: true,
|
|
31
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar.Toggle, {
|
|
32
|
-
"aria-controls": "navbarScroll"
|
|
33
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Navbar.Collapse, {
|
|
34
|
-
id: "navbarScroll",
|
|
35
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav, {
|
|
36
|
-
navbarScroll: true,
|
|
37
|
-
children: [showCategoriesBtn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
|
|
38
|
-
className: "me-2",
|
|
39
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
|
|
40
|
-
onClick: () => setShowCategories(true),
|
|
41
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
42
|
-
icon: _freeSolidSvgIcons.faList,
|
|
43
|
-
className: "me-2"
|
|
44
|
-
}), "Explore Categories"]
|
|
45
|
-
})
|
|
46
|
-
}), showSearchBtn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
|
|
47
|
-
className: "me-2",
|
|
48
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
|
|
49
|
-
onClick: () => setShowSearch(true),
|
|
50
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
51
|
-
icon: _freeSolidSvgIcons.faSearch,
|
|
52
|
-
className: "me-2"
|
|
53
|
-
}), "Search Genes"]
|
|
54
|
-
})
|
|
55
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Nav.Item, {
|
|
56
|
-
className: "me-2",
|
|
57
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Nav.Link, {
|
|
58
|
-
onClick: () => setShowControls(true),
|
|
59
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
60
|
-
icon: _freeSolidSvgIcons.faSliders,
|
|
61
|
-
className: "me-2"
|
|
62
|
-
}), "Controls"]
|
|
63
|
-
})
|
|
64
|
-
}), ' ']
|
|
65
|
-
})
|
|
66
|
-
})]
|
|
67
|
-
})
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
exports.Toolbar = Toolbar;
|
|
71
|
-
const PlotlyToolbar = _ref2 => {
|
|
15
|
+
const PlotlyToolbar = _ref => {
|
|
72
16
|
let {
|
|
73
17
|
setShowCategories,
|
|
74
18
|
setShowSearch,
|
|
75
19
|
isFullscreen
|
|
76
|
-
} =
|
|
20
|
+
} = _ref;
|
|
77
21
|
const {
|
|
78
22
|
showCategoriesBtn,
|
|
79
23
|
showSearchBtn
|
|
80
24
|
} = (0, _usePlotVisibility.default)(isFullscreen);
|
|
25
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
81
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ButtonGroup, {
|
|
82
27
|
children: [showCategoriesBtn && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
|
|
83
28
|
variant: "primary",
|
|
@@ -90,19 +35,19 @@ const PlotlyToolbar = _ref2 => {
|
|
|
90
35
|
}), showSearchBtn && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Button, {
|
|
91
36
|
variant: "primary",
|
|
92
37
|
onClick: () => setShowSearch(true),
|
|
93
|
-
title: "Search
|
|
38
|
+
title: "Search ".concat(dataset.varLabel.plural),
|
|
94
39
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
95
40
|
icon: _freeSolidSvgIcons.faSearch,
|
|
96
41
|
className: "me-1"
|
|
97
|
-
}),
|
|
42
|
+
}), _lodash.default.capitalize(dataset.varLabel.plural)]
|
|
98
43
|
})]
|
|
99
44
|
});
|
|
100
45
|
};
|
|
101
46
|
exports.PlotlyToolbar = PlotlyToolbar;
|
|
102
|
-
const PlotlyModebarControls =
|
|
47
|
+
const PlotlyModebarControls = _ref2 => {
|
|
103
48
|
let {
|
|
104
49
|
onClick
|
|
105
|
-
} =
|
|
50
|
+
} = _ref2;
|
|
106
51
|
return {
|
|
107
52
|
name: 'Controls',
|
|
108
53
|
icon: {
|
|
@@ -156,7 +156,7 @@ function SelectionItem(_ref3) {
|
|
|
156
156
|
className: "ms-auto d-flex align-items-center gap-1",
|
|
157
157
|
children: [hasDiseaseInfo && /*#__PURE__*/(0, _jsxRuntime.jsx)(_iconsMaterial.MoreVert, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(VarHistogram, {
|
|
158
158
|
item: item
|
|
159
|
-
}), showSetColorEncoding && /*#__PURE__*/(0, _jsxRuntime.
|
|
159
|
+
}), showSetColorEncoding && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
|
|
160
160
|
type: "button",
|
|
161
161
|
variant: isActive ? 'primary' : isNotInData ? 'outline-secondary' : 'outline-primary',
|
|
162
162
|
className: "m-0 p-0 px-1",
|
|
@@ -166,11 +166,9 @@ function SelectionItem(_ref3) {
|
|
|
166
166
|
},
|
|
167
167
|
disabled: isNotInData,
|
|
168
168
|
title: isNotInData ? 'Not present in data' : isMultiple ? isActive ? 'Remove from plot' : 'Add to plot' : 'Set as color encoding',
|
|
169
|
-
children:
|
|
170
|
-
icon: _freeSolidSvgIcons.faDroplet
|
|
171
|
-
})
|
|
172
|
-
icon: _freeSolidSvgIcons.faCheck
|
|
173
|
-
})]
|
|
169
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
170
|
+
icon: isMultiple ? _freeSolidSvgIcons.faCheck : _freeSolidSvgIcons.faDroplet
|
|
171
|
+
})
|
|
174
172
|
}, item.matrix_index), showRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
|
|
175
173
|
type: "button",
|
|
176
174
|
className: "m-0 p-0 px-1",
|
|
@@ -68,25 +68,33 @@ const sortMeans = (i, means) => {
|
|
|
68
68
|
};
|
|
69
69
|
exports.sortMeans = sortMeans;
|
|
70
70
|
function VarNamesList(_ref) {
|
|
71
|
+
var _selectedVar$matrix_i;
|
|
71
72
|
let {
|
|
72
|
-
mode = _constants.SELECTION_MODES.SINGLE
|
|
73
|
-
displayName = 'genes'
|
|
73
|
+
mode = _constants.SELECTION_MODES.SINGLE
|
|
74
74
|
} = _ref;
|
|
75
75
|
const settings = (0, _SettingsContext.useSettings)();
|
|
76
76
|
const dispatch = (0, _SettingsContext.useSettingsDispatch)();
|
|
77
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
77
78
|
const selectedVar = (0, _Resolver.useSelectedVar)();
|
|
78
79
|
const selectedMultiVar = (0, _Resolver.useSelectedMultiVar)();
|
|
79
80
|
const settingsVars = (0, _Resolver.useSettingsVars)();
|
|
80
|
-
const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? (selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index)
|
|
81
|
+
const [active, setActive] = (0, _react.useState)(mode === _constants.SELECTION_MODES.SINGLE ? (_selectedVar$matrix_i = selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) !== null && _selectedVar$matrix_i !== void 0 ? _selectedVar$matrix_i : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name : selectedMultiVar.map(i => {
|
|
82
|
+
var _i$matrix_index;
|
|
83
|
+
return (_i$matrix_index = i.matrix_index) !== null && _i$matrix_index !== void 0 ? _i$matrix_index : i.name;
|
|
84
|
+
}));
|
|
81
85
|
const [sortedVars, setSortedVars] = (0, _react.useState)([]);
|
|
82
86
|
(0, _react.useEffect)(() => {
|
|
83
87
|
if (mode === _constants.SELECTION_MODES.SINGLE) {
|
|
84
|
-
|
|
88
|
+
var _selectedVar$matrix_i2;
|
|
89
|
+
setActive((_selectedVar$matrix_i2 = selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.matrix_index) !== null && _selectedVar$matrix_i2 !== void 0 ? _selectedVar$matrix_i2 : selectedVar === null || selectedVar === void 0 ? void 0 : selectedVar.name);
|
|
85
90
|
}
|
|
86
91
|
}, [mode, selectedVar]);
|
|
87
92
|
(0, _react.useEffect)(() => {
|
|
88
93
|
if (mode === _constants.SELECTION_MODES.MULTIPLE) {
|
|
89
|
-
setActive(selectedMultiVar.map(i =>
|
|
94
|
+
setActive(selectedMultiVar.map(i => {
|
|
95
|
+
var _i$matrix_index2;
|
|
96
|
+
return (_i$matrix_index2 = i.matrix_index) !== null && _i$matrix_index2 !== void 0 ? _i$matrix_index2 : i.name;
|
|
97
|
+
}));
|
|
90
98
|
}
|
|
91
99
|
}, [mode, selectedMultiVar]);
|
|
92
100
|
const varMeans = useVarMean(settingsVars, settings.varSort.var.sort === _constants.VAR_SORT.MATRIX);
|
|
@@ -154,9 +162,9 @@ function VarNamesList(_ref) {
|
|
|
154
162
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
155
163
|
className: "d-flex justify-content-between mb-2",
|
|
156
164
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
|
|
157
|
-
children: _lodash.default.capitalize(
|
|
165
|
+
children: _lodash.default.capitalize(dataset.varLabel.plural)
|
|
158
166
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ButtonGroup.default, {
|
|
159
|
-
"aria-label": "
|
|
167
|
+
"aria-label": "Options",
|
|
160
168
|
size: "sm",
|
|
161
169
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
|
|
162
170
|
variant: "info",
|
|
@@ -185,9 +193,9 @@ function VarNamesList(_ref) {
|
|
|
185
193
|
})]
|
|
186
194
|
})]
|
|
187
195
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
188
|
-
children: !varList.length ? /*#__PURE__*/(0, _jsxRuntime.
|
|
196
|
+
children: !varList.length ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Alert, {
|
|
189
197
|
variant: "light",
|
|
190
|
-
children: "Search for
|
|
198
|
+
children: ["Search for ", dataset.varLabel.plural]
|
|
191
199
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
192
200
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_VarListToolbar.VarListToolbar, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
193
201
|
className: "overflow-auto flex-grow-1 modern-scrollbars",
|
|
@@ -45,7 +45,7 @@ function VarListToolbar(_ref) {
|
|
|
45
45
|
className: "d-flex justify-content-end align-items-center mb-2",
|
|
46
46
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.ToggleButtonGroup, {
|
|
47
47
|
name: "sortfeatures",
|
|
48
|
-
"aria-label": "Sort
|
|
48
|
+
"aria-label": "Sort by",
|
|
49
49
|
size: "sm",
|
|
50
50
|
type: "radio",
|
|
51
51
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ToggleButton, {
|
|
@@ -11,6 +11,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
11
11
|
var _reactBootstrap = require("react-bootstrap");
|
|
12
12
|
var _VarItem = require("./VarItem");
|
|
13
13
|
var _constants = require("../../constants/constants");
|
|
14
|
+
var _DatasetContext = require("../../context/DatasetContext");
|
|
14
15
|
var _SettingsContext = require("../../context/SettingsContext");
|
|
15
16
|
var _SearchBar = require("../search-bar/SearchBar");
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -32,6 +33,7 @@ function SelectionSet(_ref) {
|
|
|
32
33
|
removeSetVar,
|
|
33
34
|
isMultiple = false
|
|
34
35
|
} = _ref;
|
|
36
|
+
const dataset = (0, _DatasetContext.useDataset)();
|
|
35
37
|
const [openSet, setOpenSet] = (0, _react.useState)(false);
|
|
36
38
|
const [showModal, setShowModal] = (0, _react.useState)(false);
|
|
37
39
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
@@ -44,9 +46,9 @@ function SelectionSet(_ref) {
|
|
|
44
46
|
})
|
|
45
47
|
}, v.name);
|
|
46
48
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.ListGroup.Item, {
|
|
47
|
-
children: /*#__PURE__*/(0, _jsxRuntime.
|
|
49
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
48
50
|
className: "text-muted",
|
|
49
|
-
children: "No
|
|
51
|
+
children: ["No ", dataset.varLabel.plural, " in this set"]
|
|
50
52
|
})
|
|
51
53
|
});
|
|
52
54
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
@@ -65,8 +67,8 @@ function SelectionSet(_ref) {
|
|
|
65
67
|
className: "d-flex align-items-center gap-1",
|
|
66
68
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
|
|
67
69
|
placement: "top",
|
|
68
|
-
overlay: /*#__PURE__*/(0, _jsxRuntime.
|
|
69
|
-
children: "This set represents the mean value of its
|
|
70
|
+
overlay: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Tooltip, {
|
|
71
|
+
children: ["This set represents the mean value of its", ' ', dataset.varLabel.plural]
|
|
70
72
|
}),
|
|
71
73
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFontawesome.FontAwesomeIcon, {
|
|
72
74
|
icon: _freeSolidSvgIcons.faCircleInfo
|
|
@@ -137,7 +139,7 @@ function SelectionSet(_ref) {
|
|
|
137
139
|
handleClose: () => setShowModal(false),
|
|
138
140
|
text: searchText,
|
|
139
141
|
setText: setSearchText,
|
|
140
|
-
displayText:
|
|
142
|
+
displayText: dataset.varLabel.plural,
|
|
141
143
|
handleSelect: (d, i) => {
|
|
142
144
|
addVarToSet(d, set, i);
|
|
143
145
|
},
|
|
@@ -34,7 +34,6 @@ function Violin(_ref) {
|
|
|
34
34
|
setShowCategories,
|
|
35
35
|
setShowSearch,
|
|
36
36
|
setShowControls,
|
|
37
|
-
plotType,
|
|
38
37
|
setPlotType,
|
|
39
38
|
isFullscreen = false
|
|
40
39
|
} = _ref;
|
|
@@ -175,7 +174,7 @@ function Violin(_ref) {
|
|
|
175
174
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PlotAlert.PlotAlert, {
|
|
176
175
|
variant: "info",
|
|
177
176
|
heading: "Set up your violin plot",
|
|
178
|
-
plotType:
|
|
177
|
+
plotType: _constants.PLOT_TYPES.VIOLINPLOT,
|
|
179
178
|
setPlotType: setPlotType,
|
|
180
179
|
children: [mode === _constants.VIOLIN_MODES.MULTIKEY && /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
|
|
181
180
|
className: "p-0 m-0",
|
|
@@ -183,8 +182,8 @@ function Violin(_ref) {
|
|
|
183
182
|
variant: "link",
|
|
184
183
|
className: "border-0 p-0 align-baseline",
|
|
185
184
|
onClick: setShowSearch,
|
|
186
|
-
children:
|
|
187
|
-
}) :
|
|
185
|
+
children: dataset.varLabel.plural
|
|
186
|
+
}) : dataset.varLabel.plural, ' ', "to display their ", dataset.valueLabel, " distributions across all", ' ', dataset.obsLabel.plural, "."]
|
|
188
187
|
}), mode === _constants.VIOLIN_MODES.GROUPBY && /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
|
|
189
188
|
className: "p-0 m-0",
|
|
190
189
|
children: ["Select a", ' ', showCategoriesBtn ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Button, {
|
|
@@ -196,15 +195,15 @@ function Violin(_ref) {
|
|
|
196
195
|
variant: "link",
|
|
197
196
|
className: "border-0 p-0 align-baseline",
|
|
198
197
|
onClick: setShowSearch,
|
|
199
|
-
children:
|
|
200
|
-
}) :
|
|
198
|
+
children: dataset.varLabel.singular
|
|
199
|
+
}) : dataset.varLabel.singular, ' ', "to view its distribution within each group."]
|
|
201
200
|
})]
|
|
202
201
|
});
|
|
203
202
|
} else {
|
|
204
203
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PlotAlert.PlotAlert, {
|
|
205
204
|
variant: "danger",
|
|
206
205
|
heading: "Error displaying the violin plot",
|
|
207
|
-
plotType:
|
|
206
|
+
plotType: _constants.PLOT_TYPES.VIOLINPLOT,
|
|
208
207
|
setPlotType: setPlotType,
|
|
209
208
|
children: serverError.message || 'An unexpected error occurred while generating the plot.'
|
|
210
209
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.VIOLIN_MODES = exports.VIOLINPLOT_SCALES = exports.VAR_SORT_ORDER = exports.VAR_SORT = exports.UNSELECTED_POLYGON_FILLCOLOR = exports.SELECTION_MODES = exports.SELECTED_POLYGON_FILLCOLOR = exports.PSEUDOSPATIAL_PLOT_TYPES = exports.PSEUDOSPATIAL_CATEGORICAL_MODES = exports.PLOT_TYPES = exports.PLOTLY_MODEBAR_BUTTONS = exports.OBS_TYPES = exports.MATRIXPLOT_SCALES = exports.LOCAL_STORAGE_KEY = exports.DOTPLOT_SCALES = exports.DEFAULT_OBS_GROUP = exports.DEFAULT_OBSM_KEYS = exports.COLOR_ENCODINGS = exports.BREAKPOINTS = void 0;
|
|
6
|
+
exports.VIOLIN_MODES = exports.VIOLINPLOT_SCALES = exports.VAR_SORT_ORDER = exports.VAR_SORT = exports.UNSELECTED_POLYGON_FILLCOLOR = exports.SELECTION_MODES = exports.SELECTED_POLYGON_FILLCOLOR = exports.PSEUDOSPATIAL_PLOT_TYPES = exports.PSEUDOSPATIAL_CATEGORICAL_MODES = exports.PLOT_TYPES = exports.PLOTLY_MODEBAR_BUTTONS = exports.OBS_TYPES = exports.MATRIXPLOT_SCALES = exports.LOCAL_STORAGE_KEY = exports.GRAY_MIX = exports.GRAY_ALPHA = exports.GRAY = exports.DOTPLOT_SCALES = exports.DEFAULT_OBS_GROUP = exports.DEFAULT_OBSM_KEYS = exports.COLOR_ENCODINGS = exports.BREAKPOINTS = void 0;
|
|
7
7
|
const LOCAL_STORAGE_KEY = exports.LOCAL_STORAGE_KEY = 'CHERITA';
|
|
8
8
|
const PLOT_TYPES = exports.PLOT_TYPES = {
|
|
9
9
|
SCATTERPLOT: 'scatterplot',
|
|
@@ -99,11 +99,14 @@ const PSEUDOSPATIAL_CATEGORICAL_MODES = exports.PSEUDOSPATIAL_CATEGORICAL_MODES
|
|
|
99
99
|
// `default` cols to be shown out of accordion, at top of obslist
|
|
100
100
|
// default values from cellxgene schema
|
|
101
101
|
const DEFAULT_OBS_GROUP = exports.DEFAULT_OBS_GROUP = ['assay', 'cell_type', 'development_stage', 'disease', 'donor_id', 'organism', 'self_reported_ethnicity', 'sex', 'suspension_type', 'tissue', 'tissue_type'];
|
|
102
|
-
const PLOTLY_MODEBAR_BUTTONS = exports.PLOTLY_MODEBAR_BUTTONS = ['toImage', 'zoom2d', 'pan2d', 'zoomIn2d', 'zoomOut2d', 'autoScale2d'
|
|
102
|
+
const PLOTLY_MODEBAR_BUTTONS = exports.PLOTLY_MODEBAR_BUTTONS = ['toImage', 'zoom2d', 'pan2d', 'zoomIn2d', 'zoomOut2d', 'autoScale2d'];
|
|
103
103
|
const BREAKPOINTS = exports.BREAKPOINTS = {
|
|
104
104
|
LG: '(max-width: 991.98px)',
|
|
105
105
|
XL: '(max-width: 1199.98px)'
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
// In order of priority
|
|
109
|
-
const DEFAULT_OBSM_KEYS = exports.DEFAULT_OBSM_KEYS = ['x_umap', 'x_tsne', 'x_scvi', 'x_pca'];
|
|
109
|
+
const DEFAULT_OBSM_KEYS = exports.DEFAULT_OBSM_KEYS = ['x_umap', 'x_tsne', 'x_scvi', 'x_pca'];
|
|
110
|
+
const GRAY = exports.GRAY = [214, 212, 212];
|
|
111
|
+
const GRAY_MIX = exports.GRAY_MIX = 0.95;
|
|
112
|
+
const GRAY_ALPHA = exports.GRAY_ALPHA = 0.75;
|
|
@@ -60,7 +60,7 @@ const persistOptions = {
|
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
buster: "2.
|
|
63
|
+
buster: "2.1.0" || '0.0.0'
|
|
64
64
|
// @TODO: add maxAge and api version numbers as buster
|
|
65
65
|
};
|
|
66
66
|
const initialDataset = {
|
|
@@ -81,7 +81,16 @@ const initialDataset = {
|
|
|
81
81
|
dataUrl: null,
|
|
82
82
|
// for additional data in a remote .parquet file
|
|
83
83
|
dataFilterCols: null // map of obs cols to filter data in .parquet file
|
|
84
|
-
}
|
|
84
|
+
},
|
|
85
|
+
obsLabel: {
|
|
86
|
+
singular: 'cell',
|
|
87
|
+
plural: 'cells'
|
|
88
|
+
},
|
|
89
|
+
varLabel: {
|
|
90
|
+
singular: 'gene',
|
|
91
|
+
plural: 'genes'
|
|
92
|
+
},
|
|
93
|
+
valueLabel: 'expression'
|
|
85
94
|
};
|
|
86
95
|
function DatasetProvider(_ref2) {
|
|
87
96
|
let {
|