@complat/react-spectra-editor 1.7.0 → 1.8.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/CHANGELOG.md +28 -0
- package/LICENSE +21 -662
- package/README.md +5 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp.js +2329 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_2.js +2874 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_mz_chemstation.js +3242 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_tic_chemstation.js +854 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_tic_neg.js +1233 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_tic_pos.js +1233 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_uvvis.js +48908 -0
- package/dist/__tests__/fixtures/lc_ms_jcamp_uvvis_chemstation.js +15424 -0
- package/dist/__tests__/units/components/cmd_bar/r05_submit_btn.test.js +158 -3
- package/dist/__tests__/units/components/d3_line_rect.test.js +85 -0
- package/dist/__tests__/units/components/d3_multi/multi_focus.test.js +43 -0
- package/dist/__tests__/units/components/hplc_viewer.test.js +123 -0
- package/dist/__tests__/units/components/panel/info.test.js +55 -15
- package/dist/__tests__/units/features/lc-ms/parsing/lcmsCategory.test.js +73 -0
- package/dist/__tests__/units/features/lc-ms/submit/peaks.test.js +310 -0
- package/dist/actions/curve.js +5 -2
- package/dist/actions/hplc_ms.js +66 -0
- package/dist/actions/integration.js +17 -2
- package/dist/actions/ui.js +39 -11
- package/dist/app.js +21 -8
- package/dist/components/cmd_bar/01_viewer.js +15 -11
- package/dist/components/cmd_bar/03_peak.js +25 -16
- package/dist/components/cmd_bar/04_integration.js +116 -17
- package/dist/components/cmd_bar/08_peak_group.js +83 -0
- package/dist/components/cmd_bar/collapsible_toolbar_group.js +101 -0
- package/dist/components/cmd_bar/common.js +4 -3
- package/dist/components/cmd_bar/index.js +76 -18
- package/dist/components/cmd_bar/r01_layout.js +6 -0
- package/dist/components/cmd_bar/r02_scan.js +15 -11
- package/dist/components/cmd_bar/r03_threshold.js +19 -3
- package/dist/components/cmd_bar/r04_submit.js +61 -6
- package/dist/components/cmd_bar/r05_submit_btn.js +60 -13
- package/dist/components/cmd_bar/r06_predict_btn.js +4 -4
- package/dist/components/cmd_bar/r07_wavelength_btn.js +10 -9
- package/dist/components/cmd_bar/r09_detector.js +2 -2
- package/dist/components/cmd_bar/tri_btn.js +4 -1
- package/dist/components/common/draw.js +6 -5
- package/dist/components/d3_line/index.js +70 -15
- package/dist/components/d3_line/line_focus.js +104 -67
- package/dist/components/d3_line_rect/index.js +836 -0
- package/dist/components/d3_line_rect/line_focus.js +526 -0
- package/dist/components/d3_line_rect/multi_focus.js +433 -0
- package/dist/components/d3_line_rect/rect_focus.js +247 -0
- package/dist/components/d3_multi/index.js +154 -163
- package/dist/components/d3_multi/multi_focus.js +117 -68
- package/dist/components/d3_rect/index.js +6 -0
- package/dist/components/d3_rect/rect_focus.js +17 -5
- package/dist/components/hplc_viewer.js +169 -0
- package/dist/components/lc_ms_uv_tools_bar.js +175 -0
- package/dist/components/multi_jcamps_viewer.js +17 -5
- package/dist/components/panel/compare.js +84 -62
- package/dist/components/panel/cyclic_voltamery_data.js +15 -14
- package/dist/components/panel/graph_selection.js +32 -30
- package/dist/components/panel/index.js +28 -22
- package/dist/components/panel/info.js +90 -31
- package/dist/constants/action_type.js +23 -2
- package/dist/constants/list_graph.js +16 -0
- package/dist/constants/list_layout.js +2 -1
- package/dist/constants/list_ui.js +5 -2
- package/dist/features/lc-ms/entities/extractEntityLCMS.js +187 -0
- package/dist/features/lc-ms/parsing/chemstation.js +108 -0
- package/dist/features/lc-ms/parsing/index.js +46 -0
- package/dist/features/lc-ms/parsing/lcmsCategory.js +44 -0
- package/dist/features/lc-ms/parsing/lcmsJcampInfo.js +18 -0
- package/dist/features/lc-ms/parsing/lcmsMsPage.js +241 -0
- package/dist/features/lc-ms/parsing/pageValue.js +27 -0
- package/dist/features/lc-ms/submit/index.js +24 -0
- package/dist/features/lc-ms/submit/peaks.js +66 -0
- package/dist/features/lc-ms/ui/wavelengthSelect.js +54 -0
- package/dist/fn.js +4 -1
- package/dist/helpers/brush.js +74 -19
- package/dist/helpers/calc.js +4 -2
- package/dist/helpers/cfg.js +5 -4
- package/dist/helpers/chem.js +449 -71
- package/dist/helpers/compass.js +181 -17
- package/dist/helpers/extractEntityLCMS.js +24 -0
- package/dist/helpers/extractParams.js +118 -33
- package/dist/helpers/extractPeaksEdit.js +29 -9
- package/dist/helpers/format.js +189 -4
- package/dist/helpers/init.js +25 -5
- package/dist/helpers/integration.js +130 -17
- package/dist/helpers/integration_draft.js +43 -0
- package/dist/helpers/integration_focus.js +155 -0
- package/dist/helpers/integration_jcamp.js +68 -0
- package/dist/helpers/integration_split.js +202 -0
- package/dist/helpers/mount.js +8 -1
- package/dist/helpers/sweep.js +39 -0
- package/dist/index.js +284 -26
- package/dist/layer_content.js +17 -3
- package/dist/layer_init.js +124 -14
- package/dist/layer_prism.js +31 -5
- package/dist/reducers/index.js +3 -1
- package/dist/reducers/reducer_curve.js +54 -36
- package/dist/reducers/reducer_hplc_ms/hydrate.js +289 -0
- package/dist/reducers/reducer_hplc_ms/index.js +122 -0
- package/dist/reducers/reducer_hplc_ms/persistence.js +74 -0
- package/dist/reducers/reducer_hplc_ms/tic.js +70 -0
- package/dist/reducers/reducer_hplc_ms/utils.js +70 -0
- package/dist/reducers/reducer_hplc_ms/uvvis.js +377 -0
- package/dist/reducers/reducer_integration.js +265 -7
- package/dist/reducers/reducer_layout.js +1 -1
- package/dist/reducers/reducer_submit.js +2 -1
- package/dist/reducers/reducer_ui.js +149 -13
- package/dist/reducers/undo_redo_config.js +2 -2
- package/dist/sagas/saga_lcms_ui.js +85 -0
- package/dist/sagas/saga_ui.js +177 -74
- package/dist/setupTests.js +5 -5
- package/package.json +10 -7
package/dist/layer_init.js
CHANGED
|
@@ -11,18 +11,34 @@ var _reactRedux = require("react-redux");
|
|
|
11
11
|
var _redux = require("redux");
|
|
12
12
|
var _styles = require("@mui/styles");
|
|
13
13
|
var _submit = require("./actions/submit");
|
|
14
|
+
var _layout = require("./actions/layout");
|
|
14
15
|
var _manager = require("./actions/manager");
|
|
15
16
|
var _meta = require("./actions/meta");
|
|
16
17
|
var _jcamp = require("./actions/jcamp");
|
|
17
18
|
var _layer_prism = _interopRequireDefault(require("./layer_prism"));
|
|
18
19
|
var _format = _interopRequireDefault(require("./helpers/format"));
|
|
20
|
+
var _extractEntityLCMS = require("./helpers/extractEntityLCMS");
|
|
19
21
|
var _multi_jcamps_viewer = _interopRequireDefault(require("./components/multi_jcamps_viewer"));
|
|
22
|
+
var _hplc_viewer = _interopRequireDefault(require("./components/hplc_viewer"));
|
|
20
23
|
var _curve = require("./actions/curve");
|
|
24
|
+
var _hplc_ms = require("./actions/hplc_ms");
|
|
21
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
26
|
/* eslint-disable prefer-object-spread, default-param-last */
|
|
23
27
|
|
|
24
28
|
const styles = () => ({});
|
|
25
29
|
class LayerInit extends _react.default.Component {
|
|
30
|
+
static entitySignature(e) {
|
|
31
|
+
if (!e) return 'none';
|
|
32
|
+
const id = e.idDt ?? e.id ?? e.datasetId;
|
|
33
|
+
if (id != null && id !== '') return `id:${id}`;
|
|
34
|
+
const firstFeature = (Array.isArray(e.features) ? e.features[0] : null) || (Array.isArray(e.spectra) ? e.spectra[0] : null) || null;
|
|
35
|
+
const data0 = firstFeature?.data?.[0];
|
|
36
|
+
const xs = data0?.x;
|
|
37
|
+
const xLen = Array.isArray(xs) ? xs.length : 0;
|
|
38
|
+
const xHead = Array.isArray(xs) && xs.length > 0 ? xs[0] : '';
|
|
39
|
+
const xTail = Array.isArray(xs) && xs.length > 0 ? xs[xs.length - 1] : '';
|
|
40
|
+
return `sig:${e.layout || ''}|${e.title || ''}|${xLen}|${xHead}|${xTail}`;
|
|
41
|
+
}
|
|
26
42
|
constructor(props) {
|
|
27
43
|
super(props);
|
|
28
44
|
this.normChange = this.normChange.bind(this);
|
|
@@ -38,15 +54,40 @@ class LayerInit extends _react.default.Component {
|
|
|
38
54
|
this.updateMultiEntities();
|
|
39
55
|
}
|
|
40
56
|
componentDidUpdate(prevProps) {
|
|
57
|
+
const {
|
|
58
|
+
others,
|
|
59
|
+
multiEntities,
|
|
60
|
+
entity,
|
|
61
|
+
operations
|
|
62
|
+
} = this.props;
|
|
41
63
|
this.normChange(prevProps);
|
|
42
|
-
|
|
43
|
-
|
|
64
|
+
if (prevProps.operations !== operations || prevProps.entity !== entity) {
|
|
65
|
+
this.initReducer();
|
|
66
|
+
}
|
|
67
|
+
if (prevProps.others !== others) {
|
|
68
|
+
this.updateOthers();
|
|
69
|
+
}
|
|
70
|
+
if (prevProps.multiEntities !== multiEntities || prevProps.entity !== entity) {
|
|
71
|
+
this.updateMultiEntities();
|
|
72
|
+
}
|
|
44
73
|
}
|
|
45
74
|
normChange(prevProps) {
|
|
46
75
|
const {
|
|
47
|
-
entity
|
|
76
|
+
entity,
|
|
77
|
+
multiEntities,
|
|
78
|
+
clearHplcMsStateAct
|
|
48
79
|
} = this.props;
|
|
49
80
|
if (prevProps.entity !== entity) {
|
|
81
|
+
const prevIsLcms = _format.default.isLCMsLayout(prevProps.entity?.layout);
|
|
82
|
+
const nextIsLcms = _format.default.isLCMsLayout(entity?.layout);
|
|
83
|
+
const lcmsSessionActive = prevIsLcms && nextIsLcms && Array.isArray(multiEntities) && (0, _extractEntityLCMS.isLcMsGroup)(multiEntities);
|
|
84
|
+
if ((prevIsLcms || nextIsLcms) && !lcmsSessionActive) {
|
|
85
|
+
const prevSig = LayerInit.entitySignature(prevProps.entity);
|
|
86
|
+
const nextSig = LayerInit.entitySignature(entity);
|
|
87
|
+
if (prevSig !== nextSig) {
|
|
88
|
+
clearHplcMsStateAct();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
50
91
|
this.execReset();
|
|
51
92
|
}
|
|
52
93
|
}
|
|
@@ -60,14 +101,17 @@ class LayerInit extends _react.default.Component {
|
|
|
60
101
|
resetInitCommonWithIntergationAct,
|
|
61
102
|
resetDetectorAct,
|
|
62
103
|
updateDSCMetaDataAct,
|
|
63
|
-
resetMultiplicityAct
|
|
104
|
+
resetMultiplicityAct,
|
|
105
|
+
updateLayoutAct
|
|
64
106
|
} = this.props;
|
|
107
|
+
if (!entity || !entity.layout) return;
|
|
65
108
|
resetInitCommonAct();
|
|
66
109
|
resetDetectorAct();
|
|
67
110
|
const {
|
|
68
111
|
layout,
|
|
69
|
-
features
|
|
112
|
+
features = {}
|
|
70
113
|
} = entity;
|
|
114
|
+
updateLayoutAct(layout);
|
|
71
115
|
if (_format.default.isMsLayout(layout)) {
|
|
72
116
|
// const { autoPeak, editPeak } = features; // TBD
|
|
73
117
|
const autoPeak = features.autoPeak || features[0];
|
|
@@ -108,14 +152,18 @@ class LayerInit extends _react.default.Component {
|
|
|
108
152
|
operations,
|
|
109
153
|
updateOperationAct
|
|
110
154
|
} = this.props;
|
|
111
|
-
|
|
155
|
+
if (Array.isArray(operations) && operations.length > 0) {
|
|
156
|
+
updateOperationAct(operations[0]);
|
|
157
|
+
}
|
|
112
158
|
}
|
|
113
159
|
updateOthers() {
|
|
114
160
|
const {
|
|
115
161
|
others,
|
|
116
162
|
addOthersAct
|
|
117
163
|
} = this.props;
|
|
118
|
-
|
|
164
|
+
if (others) {
|
|
165
|
+
addOthersAct(others);
|
|
166
|
+
}
|
|
119
167
|
}
|
|
120
168
|
updateMultiEntities() {
|
|
121
169
|
const {
|
|
@@ -123,9 +171,37 @@ class LayerInit extends _react.default.Component {
|
|
|
123
171
|
setAllCurvesAct,
|
|
124
172
|
entity
|
|
125
173
|
} = this.props;
|
|
174
|
+
if (!entity || !entity.layout) return;
|
|
175
|
+
const lcmsCurveMeta = () => {
|
|
176
|
+
const uvvisFromMulti = Array.isArray(multiEntities) ? multiEntities.find(e => (0, _extractEntityLCMS.getLcMsInfo)(e).kind === 'uvvis') : null;
|
|
177
|
+
const mzFromMulti = Array.isArray(multiEntities) ? multiEntities.find(e => (0, _extractEntityLCMS.getLcMsInfo)(e).kind === 'mz') : null;
|
|
178
|
+
const idDt = uvvisFromMulti?.idDt ?? uvvisFromMulti?.id ?? uvvisFromMulti?.datasetId ?? entity?.idDt ?? entity?.id ?? entity?.datasetId ?? null;
|
|
179
|
+
const lcmsUvvisWavelength = entity?.lcms_uvvis_wavelength ?? entity?.lcmsUvvisWavelength ?? uvvisFromMulti?.lcms_uvvis_wavelength ?? uvvisFromMulti?.lcmsUvvisWavelength;
|
|
180
|
+
const lcmsMzPage = entity?.lcms_mz_page ?? entity?.lcmsMzPage ?? mzFromMulti?.lcms_mz_page ?? mzFromMulti?.lcmsMzPage ?? uvvisFromMulti?.lcms_mz_page ?? uvvisFromMulti?.lcmsMzPage;
|
|
181
|
+
const mzInfo = mzFromMulti ? (0, _extractEntityLCMS.getLcMsInfo)(mzFromMulti) : null;
|
|
182
|
+
const lcmsPolarity = entity?.lcms_polarity ?? entity?.lcmsPolarity ?? entity?.ticPolarity ?? mzFromMulti?.lcms_polarity ?? mzFromMulti?.lcmsPolarity ?? (mzInfo?.kind === 'mz' ? mzInfo.polarity : null);
|
|
183
|
+
const out = {};
|
|
184
|
+
if (idDt != null) out.idDt = idDt;
|
|
185
|
+
if (lcmsUvvisWavelength != null && lcmsUvvisWavelength !== '') {
|
|
186
|
+
out.lcmsUvvisWavelength = lcmsUvvisWavelength;
|
|
187
|
+
}
|
|
188
|
+
if (lcmsMzPage != null && lcmsMzPage !== '') {
|
|
189
|
+
out.lcmsMzPage = lcmsMzPage;
|
|
190
|
+
}
|
|
191
|
+
if (lcmsPolarity != null && lcmsPolarity !== '') {
|
|
192
|
+
out.lcmsPolarity = lcmsPolarity;
|
|
193
|
+
}
|
|
194
|
+
return Object.keys(out).length ? out : undefined;
|
|
195
|
+
};
|
|
126
196
|
const isMultiSpectra = Array.isArray(multiEntities) && multiEntities.length > 1;
|
|
127
197
|
if (isMultiSpectra) {
|
|
128
|
-
|
|
198
|
+
const meta = _format.default.isLCMsLayout(entity.layout) ? lcmsCurveMeta() : undefined;
|
|
199
|
+
setAllCurvesAct(multiEntities, meta);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (_format.default.isLCMsLayout(entity.layout)) {
|
|
203
|
+
const payload = Array.isArray(multiEntities) && multiEntities.length > 0 ? multiEntities : [entity];
|
|
204
|
+
setAllCurvesAct(payload, lcmsCurveMeta());
|
|
129
205
|
return;
|
|
130
206
|
}
|
|
131
207
|
if (_format.default.isCyclicVoltaLayout(entity.layout)) {
|
|
@@ -151,15 +227,35 @@ class LayerInit extends _react.default.Component {
|
|
|
151
227
|
onDescriptionChanged,
|
|
152
228
|
multiEntities,
|
|
153
229
|
entityFileNames,
|
|
154
|
-
userManualLink
|
|
230
|
+
userManualLink,
|
|
231
|
+
onLcmsPageRequest
|
|
155
232
|
} = this.props;
|
|
156
|
-
const target = entity.spectra[0];
|
|
157
233
|
const {
|
|
158
234
|
layout
|
|
159
235
|
} = entity;
|
|
160
|
-
const
|
|
161
|
-
const
|
|
236
|
+
const hasMultiEntities = Array.isArray(multiEntities) && multiEntities.length > 0;
|
|
237
|
+
const hasLcmsEntity = hasMultiEntities && multiEntities.some(multiEntity => _format.default.isLCMsLayout(multiEntity?.layout));
|
|
238
|
+
const isDetectedLcmsGroup = hasLcmsEntity && (0, _extractEntityLCMS.isLcMsGroup)(multiEntities);
|
|
239
|
+
// For multi mode, trust multiEntities over single entity to avoid mixed-layout misrouting.
|
|
240
|
+
const isLcms = hasMultiEntities ? isDetectedLcmsGroup : _format.default.isLCMsLayout(layout);
|
|
241
|
+
const target = isLcms ? null : entity.spectra && Array.isArray(entity.spectra) && entity.spectra[0] || null;
|
|
242
|
+
const xxLabel = !xLabel && xLabel === '' && target && target.xUnit ? `X (${target.xUnit})` : xLabel;
|
|
243
|
+
const yyLabel = !yLabel && yLabel === '' && target && target.yUnit ? `Y (${target.yUnit})` : yLabel;
|
|
162
244
|
const isMultiSpectra = Array.isArray(multiEntities) && multiEntities.length > 1;
|
|
245
|
+
if (isLcms) {
|
|
246
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_hplc_viewer.default, {
|
|
247
|
+
entityFileNames: entityFileNames,
|
|
248
|
+
userManualLink: userManualLink,
|
|
249
|
+
molSvg: molSvg,
|
|
250
|
+
forecast: forecast,
|
|
251
|
+
operations: operations,
|
|
252
|
+
descriptions: descriptions,
|
|
253
|
+
canChangeDescription: canChangeDescription,
|
|
254
|
+
onDescriptionChanged: onDescriptionChanged,
|
|
255
|
+
editorOnly: editorOnly,
|
|
256
|
+
onLcmsPageRequest: onLcmsPageRequest
|
|
257
|
+
});
|
|
258
|
+
}
|
|
163
259
|
if (isMultiSpectra) {
|
|
164
260
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_multi_jcamps_viewer.default, {
|
|
165
261
|
multiEntities: multiEntities,
|
|
@@ -167,6 +263,8 @@ class LayerInit extends _react.default.Component {
|
|
|
167
263
|
userManualLink: userManualLink,
|
|
168
264
|
molSvg: molSvg,
|
|
169
265
|
exactMass: exactMass,
|
|
266
|
+
forecast: forecast,
|
|
267
|
+
editorOnly: editorOnly,
|
|
170
268
|
operations: operations,
|
|
171
269
|
descriptions: descriptions,
|
|
172
270
|
canChangeDescription: canChangeDescription,
|
|
@@ -180,6 +278,8 @@ class LayerInit extends _react.default.Component {
|
|
|
180
278
|
userManualLink: userManualLink,
|
|
181
279
|
molSvg: molSvg,
|
|
182
280
|
exactMass: exactMass,
|
|
281
|
+
forecast: forecast,
|
|
282
|
+
editorOnly: editorOnly,
|
|
183
283
|
operations: operations,
|
|
184
284
|
descriptions: descriptions,
|
|
185
285
|
canChangeDescription: canChangeDescription,
|
|
@@ -197,6 +297,8 @@ class LayerInit extends _react.default.Component {
|
|
|
197
297
|
molSvg: molSvg,
|
|
198
298
|
editorOnly: editorOnly,
|
|
199
299
|
exactMass: exactMass,
|
|
300
|
+
entityFileNames: entityFileNames,
|
|
301
|
+
userManualLink: userManualLink,
|
|
200
302
|
canChangeDescription: canChangeDescription,
|
|
201
303
|
onDescriptionChanged: onDescriptionChanged
|
|
202
304
|
});
|
|
@@ -213,10 +315,12 @@ const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
|
|
|
213
315
|
resetDetectorAct: _manager.resetDetector,
|
|
214
316
|
resetMultiplicityAct: _manager.resetMultiplicity,
|
|
215
317
|
updateOperationAct: _submit.updateOperation,
|
|
318
|
+
updateLayoutAct: _layout.updateLayout,
|
|
216
319
|
updateMetaPeaksAct: _meta.updateMetaPeaks,
|
|
217
320
|
addOthersAct: _jcamp.addOthers,
|
|
218
321
|
setAllCurvesAct: _curve.setAllCurves,
|
|
219
|
-
updateDSCMetaDataAct: _meta.updateDSCMetaData
|
|
322
|
+
updateDSCMetaDataAct: _meta.updateDSCMetaData,
|
|
323
|
+
clearHplcMsStateAct: _hplc_ms.clearHplcMsState
|
|
220
324
|
}, dispatch);
|
|
221
325
|
LayerInit.propTypes = {
|
|
222
326
|
entity: _propTypes.default.object.isRequired,
|
|
@@ -239,17 +343,23 @@ LayerInit.propTypes = {
|
|
|
239
343
|
resetInitMsAct: _propTypes.default.func.isRequired,
|
|
240
344
|
resetInitCommonWithIntergationAct: _propTypes.default.func.isRequired,
|
|
241
345
|
updateOperationAct: _propTypes.default.func.isRequired,
|
|
346
|
+
updateLayoutAct: _propTypes.default.func.isRequired,
|
|
242
347
|
updateMetaPeaksAct: _propTypes.default.func.isRequired,
|
|
243
348
|
addOthersAct: _propTypes.default.func.isRequired,
|
|
244
349
|
canChangeDescription: _propTypes.default.bool.isRequired,
|
|
245
350
|
onDescriptionChanged: _propTypes.default.func,
|
|
246
351
|
// eslint-disable-line
|
|
352
|
+
onLcmsPageRequest: _propTypes.default.func,
|
|
247
353
|
setAllCurvesAct: _propTypes.default.func.isRequired,
|
|
248
354
|
userManualLink: _propTypes.default.object,
|
|
249
355
|
// eslint-disable-line
|
|
250
356
|
resetDetectorAct: _propTypes.default.func.isRequired,
|
|
251
357
|
resetMultiplicityAct: _propTypes.default.func.isRequired,
|
|
252
|
-
updateDSCMetaDataAct: _propTypes.default.func.isRequired
|
|
358
|
+
updateDSCMetaDataAct: _propTypes.default.func.isRequired,
|
|
359
|
+
clearHplcMsStateAct: _propTypes.default.func.isRequired
|
|
360
|
+
};
|
|
361
|
+
LayerInit.defaultProps = {
|
|
362
|
+
onLcmsPageRequest: null
|
|
253
363
|
};
|
|
254
364
|
var _default = exports.default = (0, _reactRedux.connect)(
|
|
255
365
|
// eslint-disable-line
|
package/dist/layer_prism.js
CHANGED
|
@@ -22,6 +22,13 @@ react/function-component-definition, react/require-default-props
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
const styles = () => ({});
|
|
25
|
+
const getThresholdState = state => {
|
|
26
|
+
const curveIdx = state?.curve?.curveIdx;
|
|
27
|
+
const thresholdList = state?.threshold?.list;
|
|
28
|
+
if (!Array.isArray(thresholdList)) return {};
|
|
29
|
+
if (!Number.isInteger(curveIdx)) return thresholdList[0] || {};
|
|
30
|
+
return thresholdList[curveIdx] || thresholdList[0] || {};
|
|
31
|
+
};
|
|
25
32
|
const LayerPrism = ({
|
|
26
33
|
entity,
|
|
27
34
|
cLabel,
|
|
@@ -36,16 +43,25 @@ const LayerPrism = ({
|
|
|
36
43
|
thresSt,
|
|
37
44
|
scanSt,
|
|
38
45
|
uiSt,
|
|
46
|
+
curveSt,
|
|
47
|
+
integrationSt,
|
|
39
48
|
canChangeDescription,
|
|
40
|
-
onDescriptionChanged
|
|
49
|
+
onDescriptionChanged,
|
|
50
|
+
entityFileNames,
|
|
51
|
+
userManualLink
|
|
41
52
|
}) => {
|
|
42
53
|
const {
|
|
43
54
|
topic,
|
|
44
55
|
feature,
|
|
45
56
|
hasEdit,
|
|
46
|
-
integration
|
|
57
|
+
integration: initialIntegration,
|
|
58
|
+
features
|
|
47
59
|
} = (0, _extractParams.extractParams)(entity, thresSt, scanSt);
|
|
48
60
|
if (!topic) return null;
|
|
61
|
+
const curveIdx = curveSt && Number.isFinite(curveSt.curveIdx) ? curveSt.curveIdx : 0;
|
|
62
|
+
const liveIntegrations = integrationSt && Array.isArray(integrationSt.integrations) ? integrationSt.integrations : null;
|
|
63
|
+
const liveIntegration = liveIntegrations ? liveIntegrations[curveIdx] : null;
|
|
64
|
+
const integration = liveIntegration || initialIntegration;
|
|
49
65
|
const {
|
|
50
66
|
viewer
|
|
51
67
|
} = uiSt;
|
|
@@ -67,6 +83,7 @@ const LayerPrism = ({
|
|
|
67
83
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_layer_content.default, {
|
|
68
84
|
topic: topic,
|
|
69
85
|
feature: feature,
|
|
86
|
+
features: features || [],
|
|
70
87
|
cLabel: cLabel,
|
|
71
88
|
xLabel: xLabel,
|
|
72
89
|
yLabel: yLabel,
|
|
@@ -95,6 +112,7 @@ const LayerPrism = ({
|
|
|
95
112
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_layer_content.default, {
|
|
96
113
|
topic: topic,
|
|
97
114
|
feature: feature,
|
|
115
|
+
features: features || [],
|
|
98
116
|
cLabel: cLabel,
|
|
99
117
|
xLabel: xLabel,
|
|
100
118
|
yLabel: yLabel,
|
|
@@ -111,6 +129,8 @@ const LayerPrism = ({
|
|
|
111
129
|
editorOnly: editorOnly,
|
|
112
130
|
molSvg: molSvg,
|
|
113
131
|
exactMass: exactMass,
|
|
132
|
+
entityFileNames: entityFileNames,
|
|
133
|
+
userManualLink: userManualLink,
|
|
114
134
|
descriptions: descriptions,
|
|
115
135
|
canChangeDescription: canChangeDescription,
|
|
116
136
|
onDescriptionChanged: onDescriptionChanged
|
|
@@ -124,8 +144,10 @@ const mapStateToProps = (state, props) => (
|
|
|
124
144
|
// eslint-disable-line
|
|
125
145
|
{
|
|
126
146
|
scanSt: state.scan,
|
|
127
|
-
thresSt: state
|
|
128
|
-
uiSt: state.ui
|
|
147
|
+
thresSt: getThresholdState(state),
|
|
148
|
+
uiSt: state.ui,
|
|
149
|
+
curveSt: state.curve,
|
|
150
|
+
integrationSt: state.integration.present
|
|
129
151
|
});
|
|
130
152
|
const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({}, dispatch);
|
|
131
153
|
LayerPrism.propTypes = {
|
|
@@ -142,8 +164,12 @@ LayerPrism.propTypes = {
|
|
|
142
164
|
thresSt: _propTypes.default.object.isRequired,
|
|
143
165
|
scanSt: _propTypes.default.object.isRequired,
|
|
144
166
|
uiSt: _propTypes.default.object.isRequired,
|
|
167
|
+
curveSt: _propTypes.default.object.isRequired,
|
|
168
|
+
integrationSt: _propTypes.default.object.isRequired,
|
|
145
169
|
canChangeDescription: _propTypes.default.bool.isRequired,
|
|
146
|
-
onDescriptionChanged: _propTypes.default.func
|
|
170
|
+
onDescriptionChanged: _propTypes.default.func,
|
|
171
|
+
entityFileNames: _propTypes.default.array,
|
|
172
|
+
userManualLink: _propTypes.default.object
|
|
147
173
|
};
|
|
148
174
|
var _default = exports.default = (0, _reactRedux.connect)(
|
|
149
175
|
// eslint-disable-line
|
package/dist/reducers/index.js
CHANGED
|
@@ -26,6 +26,7 @@ var _reducer_voltammetry = _interopRequireDefault(require("./reducer_voltammetry
|
|
|
26
26
|
var _reducer_curve = _interopRequireDefault(require("./reducer_curve"));
|
|
27
27
|
var _reducer_axes = _interopRequireDefault(require("./reducer_axes"));
|
|
28
28
|
var _reducer_detector = _interopRequireDefault(require("./reducer_detector"));
|
|
29
|
+
var _reducer_hplc_ms = _interopRequireDefault(require("./reducer_hplc_ms"));
|
|
29
30
|
const rootReducer = (0, _redux.combineReducers)({
|
|
30
31
|
threshold: _reducer_threshold.default,
|
|
31
32
|
editPeak: _reducer_edit_peak.default,
|
|
@@ -46,6 +47,7 @@ const rootReducer = (0, _redux.combineReducers)({
|
|
|
46
47
|
cyclicvolta: _reducer_voltammetry.default,
|
|
47
48
|
curve: _reducer_curve.default,
|
|
48
49
|
axesUnits: _reducer_axes.default,
|
|
49
|
-
detector: _reducer_detector.default
|
|
50
|
+
detector: _reducer_detector.default,
|
|
51
|
+
hplcMs: _reducer_hplc_ms.default
|
|
50
52
|
});
|
|
51
53
|
var _default = exports.default = rootReducer;
|
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _action_type = require("../constants/action_type");
|
|
9
9
|
var _extractParams = require("../helpers/extractParams");
|
|
10
|
+
var _extractEntityLCMS = require("../helpers/extractEntityLCMS");
|
|
11
|
+
var _list_layout = require("../constants/list_layout");
|
|
10
12
|
var _chem = require("../helpers/chem");
|
|
11
13
|
var _format = _interopRequireDefault(require("../helpers/format"));
|
|
12
14
|
/* eslint-disable prefer-object-spread, default-param-last, max-len */
|
|
@@ -20,44 +22,60 @@ const setAllCurves = (state, action) => {
|
|
|
20
22
|
const {
|
|
21
23
|
payload
|
|
22
24
|
} = action;
|
|
23
|
-
if (payload) {
|
|
24
|
-
|
|
25
|
-
const {
|
|
26
|
-
topic,
|
|
27
|
-
feature,
|
|
28
|
-
hasEdit,
|
|
29
|
-
integration,
|
|
30
|
-
multiplicity
|
|
31
|
-
} = (0, _extractParams.extractParams)(entity, {
|
|
32
|
-
isEdit: true
|
|
33
|
-
});
|
|
34
|
-
// const layout = entity.layout;
|
|
35
|
-
const {
|
|
36
|
-
layout
|
|
37
|
-
} = entity;
|
|
38
|
-
const maxminPeak = (0, _chem.Convert2MaxMinPeak)(layout, feature, 0);
|
|
39
|
-
const color = _format.default.mutiEntitiesColors(idx);
|
|
40
|
-
return {
|
|
41
|
-
layout,
|
|
42
|
-
topic,
|
|
43
|
-
feature,
|
|
44
|
-
hasEdit,
|
|
45
|
-
integration,
|
|
46
|
-
multiplicity,
|
|
47
|
-
maxminPeak,
|
|
48
|
-
color,
|
|
49
|
-
curveIdx: idx
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
return Object.assign({}, state, {
|
|
53
|
-
curveIdx: 0,
|
|
54
|
-
listCurves: entities
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return Object.assign({}, state, {
|
|
25
|
+
if (!payload) return {
|
|
26
|
+
...state,
|
|
58
27
|
curveIdx: 0,
|
|
59
|
-
listCurves:
|
|
28
|
+
listCurves: []
|
|
29
|
+
};
|
|
30
|
+
const isLcmsGroup = (0, _extractEntityLCMS.isLcMsGroup)(payload);
|
|
31
|
+
const entities = payload.map((entity, idx) => {
|
|
32
|
+
const lcmsInfo = (0, _extractEntityLCMS.getLcMsInfo)(entity);
|
|
33
|
+
const layout = isLcmsGroup && lcmsInfo.kind !== 'unknown' ? _list_layout.LIST_LAYOUT.LC_MS : entity.layout;
|
|
34
|
+
const extracted = (0, _extractParams.extractParams)(entity, {
|
|
35
|
+
isEdit: true
|
|
36
|
+
}, null, {
|
|
37
|
+
forceLcms: isLcmsGroup && lcmsInfo.kind !== 'unknown'
|
|
38
|
+
});
|
|
39
|
+
const {
|
|
40
|
+
topic,
|
|
41
|
+
feature,
|
|
42
|
+
hasEdit,
|
|
43
|
+
integration,
|
|
44
|
+
multiplicity,
|
|
45
|
+
features,
|
|
46
|
+
entity: entityFromExtract,
|
|
47
|
+
spectra
|
|
48
|
+
} = extracted;
|
|
49
|
+
let finalFeatures = features;
|
|
50
|
+
if (!finalFeatures || Array.isArray(finalFeatures) && finalFeatures.length === 0) {
|
|
51
|
+
finalFeatures = entityFromExtract?.features || entity.features || [];
|
|
52
|
+
}
|
|
53
|
+
const maxminPeak = (0, _chem.Convert2MaxMinPeak)(layout, feature, 0);
|
|
54
|
+
const color = _format.default.mutiEntitiesColors(idx);
|
|
55
|
+
return {
|
|
56
|
+
layout,
|
|
57
|
+
lcmsKind: lcmsInfo.kind,
|
|
58
|
+
lcmsPolarity: lcmsInfo.polarity,
|
|
59
|
+
topic,
|
|
60
|
+
feature,
|
|
61
|
+
hasEdit,
|
|
62
|
+
integration,
|
|
63
|
+
multiplicity,
|
|
64
|
+
maxminPeak,
|
|
65
|
+
color,
|
|
66
|
+
curveIdx: idx,
|
|
67
|
+
features: finalFeatures,
|
|
68
|
+
entity: entityFromExtract || entity,
|
|
69
|
+
spectra: spectra || entity.spectra
|
|
70
|
+
};
|
|
60
71
|
});
|
|
72
|
+
const maxIdx = entities.length - 1;
|
|
73
|
+
const safeCurveIdx = Math.min(state.curveIdx || 0, maxIdx);
|
|
74
|
+
return {
|
|
75
|
+
...state,
|
|
76
|
+
curveIdx: safeCurveIdx,
|
|
77
|
+
listCurves: entities
|
|
78
|
+
};
|
|
61
79
|
};
|
|
62
80
|
const curveReducer = (state = initialState, action) => {
|
|
63
81
|
switch (action.type) {
|