@complat/react-spectra-editor 1.2.2 → 1.3.2
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/__tests__/fixtures/cyclic_voltammetry_1.js +2 -0
- package/dist/__tests__/fixtures/dsc_jcamp.js +425 -0
- package/dist/__tests__/units/components/cmd_bar/r08_change_axes.test.js +12 -1
- package/dist/__tests__/units/components/panel/info.test.js +2 -1
- package/dist/actions/meta.js +7 -2
- package/dist/components/cmd_bar/07_pecker.js +17 -3
- package/dist/components/cmd_bar/r01_layout.js +4 -0
- package/dist/components/cmd_bar/r05_submit_btn.js +13 -6
- package/dist/components/cmd_bar/r08_change_axes.js +41 -10
- package/dist/components/d3_line/index.js +8 -2
- package/dist/components/d3_line/line_focus.js +1 -1
- package/dist/components/d3_multi/index.js +28 -2
- package/dist/components/d3_multi/multi_focus.js +49 -2
- package/dist/components/panel/cyclic_voltamery_data.js +2 -2
- package/dist/components/panel/info.js +140 -16
- package/dist/constants/action_type.js +3 -1
- package/dist/constants/list_layout.js +2 -1
- package/dist/helpers/cfg.js +1 -1
- package/dist/helpers/chem.js +50 -33
- package/dist/helpers/compass.js +1 -1
- package/dist/helpers/format.js +97 -3
- package/dist/index.js +52 -4
- package/dist/layer_init.js +11 -3
- package/dist/reducers/reducer_axes.js +27 -5
- package/dist/reducers/reducer_meta.js +14 -0
- package/dist/reducers/reducer_voltammetry.js +139 -56
- package/dist/sagas/saga_meta.js +9 -1
- package/dist/sagas/saga_ui.js +1 -0
- package/package.json +2 -2
|
@@ -68,10 +68,13 @@ class ViewerLine extends _react.default.Component {
|
|
|
68
68
|
let xxLabel = xLabel;
|
|
69
69
|
let yyLabel = yLabel;
|
|
70
70
|
if (axesUnitsSt) {
|
|
71
|
+
const {
|
|
72
|
+
axes
|
|
73
|
+
} = axesUnitsSt;
|
|
71
74
|
const {
|
|
72
75
|
xUnit,
|
|
73
76
|
yUnit
|
|
74
|
-
} =
|
|
77
|
+
} = axes[0];
|
|
75
78
|
xxLabel = xUnit === '' ? xLabel : xUnit;
|
|
76
79
|
yyLabel = yUnit === '' ? yLabel : yUnit;
|
|
77
80
|
}
|
|
@@ -123,10 +126,13 @@ class ViewerLine extends _react.default.Component {
|
|
|
123
126
|
let xxLabel = xLabel;
|
|
124
127
|
let yyLabel = yLabel;
|
|
125
128
|
if (axesUnitsSt) {
|
|
129
|
+
const {
|
|
130
|
+
axes
|
|
131
|
+
} = axesUnitsSt;
|
|
126
132
|
const {
|
|
127
133
|
xUnit,
|
|
128
134
|
yUnit
|
|
129
|
-
} =
|
|
135
|
+
} = axes[0];
|
|
130
136
|
xxLabel = xUnit === '' ? xLabel : xUnit;
|
|
131
137
|
yyLabel = yUnit === '' ? yLabel : yUnit;
|
|
132
138
|
}
|
|
@@ -596,7 +596,7 @@ class LineFocus {
|
|
|
596
596
|
return null;
|
|
597
597
|
}
|
|
598
598
|
reverseXAxis(layoutSt) {
|
|
599
|
-
return [_list_layout.LIST_LAYOUT.UVVIS, _list_layout.LIST_LAYOUT.HPLC_UVVIS, _list_layout.LIST_LAYOUT.TGA, _list_layout.LIST_LAYOUT.XRD, _list_layout.LIST_LAYOUT.CYCLIC_VOLTAMMETRY, _list_layout.LIST_LAYOUT.CDS, _list_layout.LIST_LAYOUT.DLS_ACF, _list_layout.LIST_LAYOUT.SEC, _list_layout.LIST_LAYOUT.EMISSIONS, _list_layout.LIST_LAYOUT.DLS_INTENSITY].indexOf(layoutSt) < 0;
|
|
599
|
+
return [_list_layout.LIST_LAYOUT.UVVIS, _list_layout.LIST_LAYOUT.HPLC_UVVIS, _list_layout.LIST_LAYOUT.TGA, _list_layout.LIST_LAYOUT.DSC, _list_layout.LIST_LAYOUT.XRD, _list_layout.LIST_LAYOUT.CYCLIC_VOLTAMMETRY, _list_layout.LIST_LAYOUT.CDS, _list_layout.LIST_LAYOUT.DLS_ACF, _list_layout.LIST_LAYOUT.SEC, _list_layout.LIST_LAYOUT.EMISSIONS, _list_layout.LIST_LAYOUT.DLS_INTENSITY].indexOf(layoutSt) < 0;
|
|
600
600
|
}
|
|
601
601
|
create(_ref) {
|
|
602
602
|
let {
|
|
@@ -69,10 +69,23 @@ class ViewerMulti extends _react.default.Component {
|
|
|
69
69
|
let xxLabel = xLabel;
|
|
70
70
|
let yyLabel = yLabel;
|
|
71
71
|
if (axesUnitsSt) {
|
|
72
|
+
const {
|
|
73
|
+
curveIdx
|
|
74
|
+
} = curveSt;
|
|
75
|
+
const {
|
|
76
|
+
axes
|
|
77
|
+
} = axesUnitsSt;
|
|
78
|
+
let selectedAxes = axes[curveIdx];
|
|
79
|
+
if (!selectedAxes) {
|
|
80
|
+
selectedAxes = {
|
|
81
|
+
xUnit: '',
|
|
82
|
+
yUnit: ''
|
|
83
|
+
};
|
|
84
|
+
}
|
|
72
85
|
const {
|
|
73
86
|
xUnit,
|
|
74
87
|
yUnit
|
|
75
|
-
} =
|
|
88
|
+
} = selectedAxes;
|
|
76
89
|
xxLabel = xUnit === '' ? xLabel : xUnit;
|
|
77
90
|
yyLabel = yUnit === '' ? yLabel : yUnit;
|
|
78
91
|
}
|
|
@@ -122,10 +135,23 @@ class ViewerMulti extends _react.default.Component {
|
|
|
122
135
|
let xxLabel = xLabel;
|
|
123
136
|
let yyLabel = yLabel;
|
|
124
137
|
if (axesUnitsSt) {
|
|
138
|
+
const {
|
|
139
|
+
curveIdx
|
|
140
|
+
} = curveSt;
|
|
141
|
+
const {
|
|
142
|
+
axes
|
|
143
|
+
} = axesUnitsSt;
|
|
144
|
+
let selectedAxes = axes[curveIdx];
|
|
145
|
+
if (!selectedAxes) {
|
|
146
|
+
selectedAxes = {
|
|
147
|
+
xUnit: '',
|
|
148
|
+
yUnit: ''
|
|
149
|
+
};
|
|
150
|
+
}
|
|
125
151
|
const {
|
|
126
152
|
xUnit,
|
|
127
153
|
yUnit
|
|
128
|
-
} =
|
|
154
|
+
} = selectedAxes;
|
|
129
155
|
xxLabel = xUnit === '' ? xLabel : xUnit;
|
|
130
156
|
yyLabel = yUnit === '' ? yLabel : yUnit;
|
|
131
157
|
}
|
|
@@ -388,6 +388,29 @@ class MultiFocus {
|
|
|
388
388
|
yt
|
|
389
389
|
} = (0, _compass.TfRescale)(this);
|
|
390
390
|
const dPks = this.mergedPeaks(editPeakSt);
|
|
391
|
+
const {
|
|
392
|
+
spectraList
|
|
393
|
+
} = this.cyclicvoltaSt;
|
|
394
|
+
const spectra = spectraList[this.jcampIdx];
|
|
395
|
+
let indexOfCVRefPeaks = [];
|
|
396
|
+
if (spectra) {
|
|
397
|
+
const {
|
|
398
|
+
shift,
|
|
399
|
+
hasRefPeak
|
|
400
|
+
} = spectra;
|
|
401
|
+
const {
|
|
402
|
+
ref
|
|
403
|
+
} = shift;
|
|
404
|
+
if (ref && hasRefPeak) {
|
|
405
|
+
const {
|
|
406
|
+
min,
|
|
407
|
+
max
|
|
408
|
+
} = ref;
|
|
409
|
+
indexOfCVRefPeaks = dPks.map((p, index) => {
|
|
410
|
+
return p === min || p === max ? -1 : index;
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
}
|
|
391
414
|
const mpp = this.tags.pPath.selectAll('path').data(dPks);
|
|
392
415
|
mpp.exit().attr('class', 'exit').remove();
|
|
393
416
|
const linePath = [{
|
|
@@ -404,7 +427,25 @@ class MultiFocus {
|
|
|
404
427
|
y: 10
|
|
405
428
|
}];
|
|
406
429
|
const lineSymbol = d3.line().x(d => d.x).y(d => d.y)(linePath);
|
|
407
|
-
|
|
430
|
+
const lineRefPath = [{
|
|
431
|
+
x: -0.5,
|
|
432
|
+
y: 10
|
|
433
|
+
}, {
|
|
434
|
+
x: -4,
|
|
435
|
+
y: -20
|
|
436
|
+
}, {
|
|
437
|
+
x: 4,
|
|
438
|
+
y: -20
|
|
439
|
+
}, {
|
|
440
|
+
x: 0.5,
|
|
441
|
+
y: 10
|
|
442
|
+
}];
|
|
443
|
+
const lineSymbolRef = d3.line().x(d => d.x).y(d => d.y)(lineRefPath);
|
|
444
|
+
mpp.enter().append('path').attr('d', (_, index) => {
|
|
445
|
+
return indexOfCVRefPeaks[index] === -1 ? lineSymbolRef : lineSymbol;
|
|
446
|
+
}).attr('class', 'enter-peak').attr('fill', (_, index) => {
|
|
447
|
+
return indexOfCVRefPeaks[index] === -1 ? 'blue' : 'red';
|
|
448
|
+
}).attr('stroke', 'pink').attr('stroke-width', 3).attr('stroke-opacity', 0.0).merge(mpp).attr('id', d => `mpp${Math.round(1000 * d.x)}`).attr('transform', d => `translate(${xt(d.x)}, ${yt(d.y)})`).on('mouseover', (event, d) => {
|
|
408
449
|
d3.select(`#mpp${Math.round(1000 * d.x)}`).attr('stroke-opacity', '1.0');
|
|
409
450
|
d3.select(`#bpt${Math.round(1000 * d.x)}`).style('fill', 'blue');
|
|
410
451
|
const tipParams = {
|
|
@@ -427,6 +468,12 @@ class MultiFocus {
|
|
|
427
468
|
bpTxt.exit().attr('class', 'exit').remove();
|
|
428
469
|
bpTxt.enter().append('text').attr('class', 'peak-text').attr('font-family', 'Helvetica').style('font-size', '12px').attr('fill', '#228B22').style('text-anchor', 'middle').merge(bpTxt).attr('id', d => `mpp${Math.round(1000 * d.x)}`).text(d => d.x.toFixed(2)).attr('transform', d => `translate(${xt(d.x)}, ${yt(d.y) - 25})`).on('click', (event, d) => this.onClickTarget(event, d));
|
|
429
470
|
}
|
|
471
|
+
mpp.attr('fill', (_, index) => {
|
|
472
|
+
return indexOfCVRefPeaks[index] === -1 ? 'blue' : 'red';
|
|
473
|
+
});
|
|
474
|
+
mpp.attr('d', (_, index) => {
|
|
475
|
+
return indexOfCVRefPeaks[index] === -1 ? lineSymbolRef : lineSymbol;
|
|
476
|
+
});
|
|
430
477
|
}
|
|
431
478
|
drawPeckers() {
|
|
432
479
|
const {
|
|
@@ -738,7 +785,7 @@ class MultiFocus {
|
|
|
738
785
|
ccp.enter().append('path').attr('d', lineSymbol).attr('class', 'enter-ref').attr('fill', 'green').attr('fill-opacity', 0.8).merge(ccp).attr('transform', d => `translate(${xt(d.x)}, ${yt(d.y)})`);
|
|
739
786
|
}
|
|
740
787
|
reverseXAxis(layoutSt) {
|
|
741
|
-
return [_list_layout.LIST_LAYOUT.UVVIS, _list_layout.LIST_LAYOUT.HPLC_UVVIS, _list_layout.LIST_LAYOUT.TGA, _list_layout.LIST_LAYOUT.XRD, _list_layout.LIST_LAYOUT.CYCLIC_VOLTAMMETRY, _list_layout.LIST_LAYOUT.CDS, _list_layout.LIST_LAYOUT.SEC, _list_layout.LIST_LAYOUT.AIF].indexOf(layoutSt) < 0;
|
|
788
|
+
return [_list_layout.LIST_LAYOUT.UVVIS, _list_layout.LIST_LAYOUT.HPLC_UVVIS, _list_layout.LIST_LAYOUT.TGA, _list_layout.LIST_LAYOUT.DSC, _list_layout.LIST_LAYOUT.XRD, _list_layout.LIST_LAYOUT.CYCLIC_VOLTAMMETRY, _list_layout.LIST_LAYOUT.CDS, _list_layout.LIST_LAYOUT.SEC, _list_layout.LIST_LAYOUT.AIF].indexOf(layoutSt) < 0;
|
|
742
789
|
}
|
|
743
790
|
create(_ref) {
|
|
744
791
|
let {
|
|
@@ -188,10 +188,10 @@ const CyclicVoltammetryPanel = _ref => {
|
|
|
188
188
|
}, "Ref"), /*#__PURE__*/_react.default.createElement(_material.TableCell, {
|
|
189
189
|
align: "left",
|
|
190
190
|
className: (0, _classnames.default)(classes.tTxt, classes.square, 'txt-sv-panel-txt')
|
|
191
|
-
}, "
|
|
191
|
+
}, "Anodic"), /*#__PURE__*/_react.default.createElement(_material.TableCell, {
|
|
192
192
|
align: "left",
|
|
193
193
|
className: (0, _classnames.default)(classes.tTxt, classes.square, 'txt-sv-panel-txt')
|
|
194
|
-
}, "
|
|
194
|
+
}, "Cathodic"), /*#__PURE__*/_react.default.createElement(_material.TableCell, {
|
|
195
195
|
align: "left",
|
|
196
196
|
className: (0, _classnames.default)(classes.tTxt, classes.square, 'txt-sv-panel-txt')
|
|
197
197
|
}, "I ", /*#__PURE__*/_react.default.createElement("sub", null, "\u03BB0"), /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
|
|
@@ -16,8 +16,9 @@ var _material = require("@mui/material");
|
|
|
16
16
|
var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
|
|
17
17
|
var _styles = require("@mui/styles");
|
|
18
18
|
var _format = _interopRequireDefault(require("../../helpers/format"));
|
|
19
|
+
var _meta = require("../../actions/meta");
|
|
19
20
|
/* eslint-disable no-mixed-operators, react/function-component-definition,
|
|
20
|
-
react/require-default-props */
|
|
21
|
+
react/require-default-props, max-len */
|
|
21
22
|
|
|
22
23
|
const styles = () => ({
|
|
23
24
|
chip: {
|
|
@@ -109,7 +110,115 @@ const aucValue = integration => {
|
|
|
109
110
|
}
|
|
110
111
|
return values.join(', ');
|
|
111
112
|
};
|
|
112
|
-
const
|
|
113
|
+
const SECData = _ref => {
|
|
114
|
+
let {
|
|
115
|
+
classes,
|
|
116
|
+
layout,
|
|
117
|
+
detector,
|
|
118
|
+
secData
|
|
119
|
+
} = _ref;
|
|
120
|
+
if (_format.default.isSECLayout(layout) && secData) {
|
|
121
|
+
const {
|
|
122
|
+
d,
|
|
123
|
+
mn,
|
|
124
|
+
mp,
|
|
125
|
+
mw
|
|
126
|
+
} = secData;
|
|
127
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
128
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowOdd)
|
|
129
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
130
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
131
|
+
}, "Detector: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
132
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
133
|
+
}, detector)), /*#__PURE__*/_react.default.createElement("div", {
|
|
134
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowEven)
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
136
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
137
|
+
}, "D: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
138
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
139
|
+
}, d)), /*#__PURE__*/_react.default.createElement("div", {
|
|
140
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowOdd)
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
142
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
143
|
+
}, "MN: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
144
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
145
|
+
}, mn)), /*#__PURE__*/_react.default.createElement("div", {
|
|
146
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowEven)
|
|
147
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
148
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
149
|
+
}, "MP: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
150
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
151
|
+
}, mp)), /*#__PURE__*/_react.default.createElement("div", {
|
|
152
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowOdd)
|
|
153
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
154
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
155
|
+
}, "MW: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
156
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
157
|
+
}, mw)));
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
};
|
|
161
|
+
SECData.propTypes = {
|
|
162
|
+
classes: _propTypes.default.object.isRequired,
|
|
163
|
+
layout: _propTypes.default.string.isRequired,
|
|
164
|
+
detector: _propTypes.default.object.isRequired,
|
|
165
|
+
secData: _propTypes.default.object.isRequired
|
|
166
|
+
};
|
|
167
|
+
const DSCData = _ref2 => {
|
|
168
|
+
let {
|
|
169
|
+
classes,
|
|
170
|
+
layout,
|
|
171
|
+
dscMetaData,
|
|
172
|
+
updateAction
|
|
173
|
+
} = _ref2;
|
|
174
|
+
if (_format.default.isDSCLayout(layout) && dscMetaData !== undefined) {
|
|
175
|
+
const {
|
|
176
|
+
meltingPoint,
|
|
177
|
+
tg
|
|
178
|
+
} = dscMetaData;
|
|
179
|
+
const onChange = e => {
|
|
180
|
+
const {
|
|
181
|
+
name,
|
|
182
|
+
value
|
|
183
|
+
} = e.target;
|
|
184
|
+
const dataToUpdate = {
|
|
185
|
+
meltingPoint,
|
|
186
|
+
tg
|
|
187
|
+
};
|
|
188
|
+
dataToUpdate[name] = value;
|
|
189
|
+
updateAction(dataToUpdate);
|
|
190
|
+
};
|
|
191
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
192
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowOdd)
|
|
193
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
194
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
195
|
+
}, "Melting Point: "), /*#__PURE__*/_react.default.createElement("input", {
|
|
196
|
+
type: "text",
|
|
197
|
+
name: "meltingPoint",
|
|
198
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt'),
|
|
199
|
+
value: meltingPoint,
|
|
200
|
+
onChange: onChange
|
|
201
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
202
|
+
className: (0, _classnames.default)(classes.rowRoot, classes.rowEven)
|
|
203
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
204
|
+
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
205
|
+
}, "TG: "), /*#__PURE__*/_react.default.createElement("input", {
|
|
206
|
+
type: "text",
|
|
207
|
+
name: "tg",
|
|
208
|
+
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt'),
|
|
209
|
+
value: tg,
|
|
210
|
+
onChange: onChange
|
|
211
|
+
})));
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
};
|
|
215
|
+
DSCData.propTypes = {
|
|
216
|
+
classes: _propTypes.default.object.isRequired,
|
|
217
|
+
layout: _propTypes.default.string.isRequired,
|
|
218
|
+
dscMetaData: _propTypes.default.object.isRequired,
|
|
219
|
+
updateAction: _propTypes.default.func.isRequired
|
|
220
|
+
};
|
|
221
|
+
const InfoPanel = _ref3 => {
|
|
113
222
|
let {
|
|
114
223
|
classes,
|
|
115
224
|
expand,
|
|
@@ -126,14 +235,20 @@ const InfoPanel = _ref => {
|
|
|
126
235
|
onExapnd,
|
|
127
236
|
canChangeDescription,
|
|
128
237
|
onDescriptionChanged,
|
|
129
|
-
detectorSt
|
|
130
|
-
|
|
238
|
+
detectorSt,
|
|
239
|
+
metaSt,
|
|
240
|
+
updateDSCMetaDataAct
|
|
241
|
+
} = _ref3;
|
|
131
242
|
if (!feature) return null;
|
|
132
243
|
const {
|
|
133
244
|
title,
|
|
134
245
|
observeFrequency,
|
|
135
|
-
solventName
|
|
246
|
+
solventName,
|
|
247
|
+
secData
|
|
136
248
|
} = feature;
|
|
249
|
+
const {
|
|
250
|
+
dscMetaData
|
|
251
|
+
} = metaSt;
|
|
137
252
|
const {
|
|
138
253
|
curveIdx
|
|
139
254
|
} = curveSt;
|
|
@@ -204,13 +319,12 @@ const InfoPanel = _ref => {
|
|
|
204
319
|
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
205
320
|
}, "Theoretical mass: "), /*#__PURE__*/_react.default.createElement("span", {
|
|
206
321
|
className: (0, _classnames.default)(classes.tTxt, 'txt-sv-panel-txt')
|
|
207
|
-
}, `${parseFloat(theoryMass).toFixed(6)} g/mol`)) : null,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}, selectedDetector)) : null, !molSvg ? null : /*#__PURE__*/_react.default.createElement(_reactSvgFileZoomPan.default, {
|
|
322
|
+
}, `${parseFloat(theoryMass).toFixed(6)} g/mol`)) : null, /*#__PURE__*/_react.default.createElement(SECData, {
|
|
323
|
+
classes: classes,
|
|
324
|
+
layout: layoutSt,
|
|
325
|
+
detector: selectedDetector,
|
|
326
|
+
secData: secData
|
|
327
|
+
}), !molSvg ? null : /*#__PURE__*/_react.default.createElement(_reactSvgFileZoomPan.default, {
|
|
214
328
|
svg: molSvg,
|
|
215
329
|
duration: 300,
|
|
216
330
|
resize: true
|
|
@@ -220,7 +334,12 @@ const InfoPanel = _ref => {
|
|
|
220
334
|
className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
|
|
221
335
|
}, "Area under curve (AUC):"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("span", {
|
|
222
336
|
className: (0, _classnames.default)(classes.tTxt, classes.tTxtSim, 'txt-sv-panel-txt')
|
|
223
|
-
}, aucValue(integration))) : null
|
|
337
|
+
}, aucValue(integration))) : null, /*#__PURE__*/_react.default.createElement(DSCData, {
|
|
338
|
+
classes: classes,
|
|
339
|
+
layout: layoutSt,
|
|
340
|
+
dscMetaData: dscMetaData,
|
|
341
|
+
updateAction: updateDSCMetaDataAct
|
|
342
|
+
})), !_format.default.isCyclicVoltaLayout(layoutSt) ? /*#__PURE__*/_react.default.createElement(_reactQuill.default, {
|
|
224
343
|
className: (0, _classnames.default)(classes.quill, 'card-sv-quill'),
|
|
225
344
|
value: descriptions,
|
|
226
345
|
modules: {
|
|
@@ -243,9 +362,12 @@ const mapStateToProps = (state, props) => (
|
|
|
243
362
|
simulationSt: state.simulation,
|
|
244
363
|
shiftSt: state.shift,
|
|
245
364
|
curveSt: state.curve,
|
|
246
|
-
detectorSt: state.detector
|
|
365
|
+
detectorSt: state.detector,
|
|
366
|
+
metaSt: state.meta
|
|
247
367
|
});
|
|
248
|
-
const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
|
|
368
|
+
const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
|
|
369
|
+
updateDSCMetaDataAct: _meta.updateDSCMetaData
|
|
370
|
+
}, dispatch);
|
|
249
371
|
InfoPanel.propTypes = {
|
|
250
372
|
classes: _propTypes.default.object.isRequired,
|
|
251
373
|
expand: _propTypes.default.bool.isRequired,
|
|
@@ -262,7 +384,9 @@ InfoPanel.propTypes = {
|
|
|
262
384
|
canChangeDescription: _propTypes.default.bool.isRequired,
|
|
263
385
|
onDescriptionChanged: _propTypes.default.func,
|
|
264
386
|
theoryMass: _propTypes.default.string,
|
|
265
|
-
detectorSt: _propTypes.default.object.isRequired
|
|
387
|
+
detectorSt: _propTypes.default.object.isRequired,
|
|
388
|
+
metaSt: _propTypes.default.object.isRequired,
|
|
389
|
+
updateDSCMetaDataAct: _propTypes.default.func.isRequired
|
|
266
390
|
};
|
|
267
391
|
var _default = exports.default = (0, _reactRedux.connect)(
|
|
268
392
|
// eslint-disable-line
|
|
@@ -106,7 +106,9 @@ const MULTIPLICITY = exports.MULTIPLICITY = {
|
|
|
106
106
|
};
|
|
107
107
|
const META = exports.META = {
|
|
108
108
|
UPDATE_PEAKS: 'META_UPDATE_PEAKS',
|
|
109
|
-
UPDATE_PEAKS_RDC: 'META_UPDATE_PEAKS_RDC'
|
|
109
|
+
UPDATE_PEAKS_RDC: 'META_UPDATE_PEAKS_RDC',
|
|
110
|
+
UPDATE_META_DATA: 'UPDATE_META_DATA',
|
|
111
|
+
UPDATE_META_DATA_RDC: 'UPDATE_META_DATA_RDC'
|
|
110
112
|
};
|
|
111
113
|
const JCAMP = exports.JCAMP = {
|
|
112
114
|
ADD_OTHERS: 'JCAMP_ADD_OTHERS',
|
package/dist/helpers/cfg.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _format = _interopRequireDefault(require("./format"));
|
|
9
|
-
const btnCmdAnaViewer = layoutSt => _format.default.isMsLayout(layoutSt) || _format.default.isRamanLayout(layoutSt) || _format.default.is19FLayout(layoutSt) || _format.default.isUvVisLayout(layoutSt) || _format.default.isHplcUvVisLayout(layoutSt) || _format.default.isTGALayout(layoutSt) || _format.default.isXRDLayout(layoutSt) || _format.default.is31PLayout(layoutSt) || _format.default.is15NLayout(layoutSt) || _format.default.is29SiLayout(layoutSt) || _format.default.isCyclicVoltaLayout(layoutSt) || _format.default.isCDSLayout(layoutSt) || _format.default.isSECLayout(layoutSt);
|
|
9
|
+
const btnCmdAnaViewer = layoutSt => _format.default.isMsLayout(layoutSt) || _format.default.isRamanLayout(layoutSt) || _format.default.is19FLayout(layoutSt) || _format.default.isUvVisLayout(layoutSt) || _format.default.isHplcUvVisLayout(layoutSt) || _format.default.isTGALayout(layoutSt) || _format.default.isDSCLayout(layoutSt) || _format.default.isXRDLayout(layoutSt) || _format.default.is31PLayout(layoutSt) || _format.default.is15NLayout(layoutSt) || _format.default.is29SiLayout(layoutSt) || _format.default.isCyclicVoltaLayout(layoutSt) || _format.default.isCDSLayout(layoutSt) || _format.default.isSECLayout(layoutSt);
|
|
10
10
|
const hideCmdAnaViewer = () => false;
|
|
11
11
|
const btnCmdAddPeak = layoutSt => _format.default.isMsLayout(layoutSt);
|
|
12
12
|
const btnCmdRmPeak = layoutSt => _format.default.isMsLayout(layoutSt);
|
package/dist/helpers/chem.js
CHANGED
|
@@ -14,7 +14,8 @@ var _list_layout = require("../constants/list_layout");
|
|
|
14
14
|
var _integration = require("./integration");
|
|
15
15
|
/* eslint-disable
|
|
16
16
|
no-mixed-operators, react/function-component-definition,
|
|
17
|
-
prefer-object-spread, camelcase, no-plusplus, prefer-destructuring
|
|
17
|
+
prefer-object-spread, camelcase, no-plusplus, prefer-destructuring,
|
|
18
|
+
max-len */
|
|
18
19
|
|
|
19
20
|
const getTopic = (_, props) => props.topic;
|
|
20
21
|
const getFeature = (_, props) => props.feature;
|
|
@@ -271,32 +272,6 @@ const Convert2MaxMinPeak = (layout, feature, offset) => {
|
|
|
271
272
|
peaks.refIndex = refIndex;
|
|
272
273
|
return peaks;
|
|
273
274
|
}
|
|
274
|
-
|
|
275
|
-
// // let upperThresVal = upperThres;
|
|
276
|
-
// // if (!upperThresVal) {
|
|
277
|
-
// // upperThresVal = 1.0;
|
|
278
|
-
// // }
|
|
279
|
-
|
|
280
|
-
// // let lowerThresVal = lowerThres;
|
|
281
|
-
// // if (!lowerThresVal) {
|
|
282
|
-
// // lowerThresVal = 1.0;
|
|
283
|
-
// // }
|
|
284
|
-
|
|
285
|
-
// // const yUpperThres = parseFloat(upperThresVal) / 100.0 * maxY;
|
|
286
|
-
// // const yLowerThres = parseFloat(lowerThresVal) / 100.0 * minY;
|
|
287
|
-
|
|
288
|
-
// // const corrOffset = offset || 0.0;
|
|
289
|
-
// // for (let i = 0; i < data.y.length; i += 1) {
|
|
290
|
-
// // const y = data.y[i];
|
|
291
|
-
// // const overUpperThres = y >= yUpperThres;
|
|
292
|
-
// // const belowThres = y <= yLowerThres;
|
|
293
|
-
// // const x = data.x[i] - corrOffset;
|
|
294
|
-
// // if (overUpperThres) {
|
|
295
|
-
// // peaks.max.push({ x, y });
|
|
296
|
-
// // } else if (belowThres) {
|
|
297
|
-
// // peaks.min.push({ x, y });
|
|
298
|
-
// // }
|
|
299
|
-
// // }
|
|
300
275
|
return peaks;
|
|
301
276
|
};
|
|
302
277
|
exports.Convert2MaxMinPeak = Convert2MaxMinPeak;
|
|
@@ -375,6 +350,9 @@ const readLayout = jcamp => {
|
|
|
375
350
|
if (dataType.includes('THERMOGRAVIMETRIC ANALYSIS')) {
|
|
376
351
|
return _list_layout.LIST_LAYOUT.TGA;
|
|
377
352
|
}
|
|
353
|
+
if (dataType.includes('DIFFERENTIAL SCANNING CALORIMETRY')) {
|
|
354
|
+
return _list_layout.LIST_LAYOUT.DSC;
|
|
355
|
+
}
|
|
378
356
|
if (dataType.includes('X-RAY DIFFRACTION')) {
|
|
379
357
|
return _list_layout.LIST_LAYOUT.XRD;
|
|
380
358
|
}
|
|
@@ -539,7 +517,8 @@ const buildPeakFeature = function (jcamp, layout, peakUp, s, thresRef) {
|
|
|
539
517
|
solventName: info['.SOLVENTNAME'],
|
|
540
518
|
upperThres,
|
|
541
519
|
lowerThres,
|
|
542
|
-
volammetryData: extractVoltammetryData(jcamp)
|
|
520
|
+
volammetryData: extractVoltammetryData(jcamp),
|
|
521
|
+
scanRate: +info.$CSSCANRATE || 0.1
|
|
543
522
|
}, s);
|
|
544
523
|
};
|
|
545
524
|
const maxArray = arr => {
|
|
@@ -708,6 +687,7 @@ const extrFeaturesNi = (jcamp, layout, peakUp, spectra) => {
|
|
|
708
687
|
nfs.simulation = buildSimFeature(jcamp);
|
|
709
688
|
return nfs;
|
|
710
689
|
}
|
|
690
|
+
|
|
711
691
|
// workaround for legacy design
|
|
712
692
|
const features = jcamp.spectra.map(s => {
|
|
713
693
|
const thresRef = calcThresRef(s, peakUp);
|
|
@@ -773,9 +753,29 @@ const extrFeaturesCylicVolta = (jcamp, layout, peakUp) => {
|
|
|
773
753
|
const lowerThres = _format.default.isXRDLayout(layout) ? 100 : calcLowerThres(s);
|
|
774
754
|
const cpo = buildPeakFeature(jcamp, layout, peakUp, s, 100, upperThres, lowerThres);
|
|
775
755
|
const bnd = getBoundary(s);
|
|
776
|
-
|
|
756
|
+
let detector = '';
|
|
757
|
+
let secData = null;
|
|
758
|
+
if (_format.default.isSECLayout(layout)) {
|
|
759
|
+
const {
|
|
760
|
+
info
|
|
761
|
+
} = jcamp;
|
|
762
|
+
detector = info.$DETECTOR ? info.$DETECTOR : '';
|
|
763
|
+
const {
|
|
764
|
+
D,
|
|
765
|
+
MN,
|
|
766
|
+
MP,
|
|
767
|
+
MW
|
|
768
|
+
} = info;
|
|
769
|
+
secData = {
|
|
770
|
+
d: D,
|
|
771
|
+
mn: MN,
|
|
772
|
+
mp: MP,
|
|
773
|
+
mw: MW
|
|
774
|
+
};
|
|
775
|
+
}
|
|
777
776
|
return Object.assign({}, base, cpo, bnd, {
|
|
778
|
-
detector
|
|
777
|
+
detector,
|
|
778
|
+
secData
|
|
779
779
|
});
|
|
780
780
|
}).filter(r => r != null);
|
|
781
781
|
return features;
|
|
@@ -822,7 +822,7 @@ const extractTemperature = jcamp => {
|
|
|
822
822
|
const ExtractJcamp = source => {
|
|
823
823
|
const jcamp = _jcampconverter.default.convert(source, {
|
|
824
824
|
xy: true,
|
|
825
|
-
keepRecordsRegExp: /(\$CSTHRESHOLD|\$CSSCANAUTOTARGET|\$CSSCANEDITTARGET|\$CSSCANCOUNT|\$CSSOLVENTNAME|\$CSSOLVENTVALUE|\$CSSOLVENTX|\$CSCATEGORY|\$CSITAREA|\$CSITFACTOR|\$OBSERVEDINTEGRALS|\$OBSERVEDMULTIPLETS|\$OBSERVEDMULTIPLETSPEAKS|\.SOLVENTNAME|\.OBSERVEFREQUENCY|\$CSSIMULATIONPEAKS|\$CSUPPERTHRESHOLD|\$CSLOWERTHRESHOLD|\$CSCYCLICVOLTAMMETRYDATA|UNITS|SYMBOL|CSAUTOMETADATA|\$DETECTOR)/ // eslint-disable-line
|
|
825
|
+
keepRecordsRegExp: /(\$CSTHRESHOLD|\$CSSCANAUTOTARGET|\$CSSCANEDITTARGET|\$CSSCANCOUNT|\$CSSOLVENTNAME|\$CSSOLVENTVALUE|\$CSSOLVENTX|\$CSCATEGORY|\$CSITAREA|\$CSITFACTOR|\$OBSERVEDINTEGRALS|\$OBSERVEDMULTIPLETS|\$OBSERVEDMULTIPLETSPEAKS|\.SOLVENTNAME|\.OBSERVEFREQUENCY|\$CSSIMULATIONPEAKS|\$CSUPPERTHRESHOLD|\$CSLOWERTHRESHOLD|\$CSCYCLICVOLTAMMETRYDATA|UNITS|SYMBOL|CSAUTOMETADATA|\$DETECTOR|MN|MW|D|MP|MELTINGPOINT|TG|\$CSSCANRATE|\$CSSPECTRUMDIRECTION)/ // eslint-disable-line
|
|
826
826
|
});
|
|
827
827
|
const layout = readLayout(jcamp);
|
|
828
828
|
const peakUp = !_format.default.isIrLayout(layout);
|
|
@@ -843,6 +843,22 @@ const ExtractJcamp = source => {
|
|
|
843
843
|
features = extrFeaturesCylicVolta(jcamp, layout, peakUp);
|
|
844
844
|
} else {
|
|
845
845
|
features = extrFeaturesNi(jcamp, layout, peakUp, spectra);
|
|
846
|
+
if (_format.default.isDSCLayout(layout)) {
|
|
847
|
+
const {
|
|
848
|
+
info
|
|
849
|
+
} = jcamp;
|
|
850
|
+
const {
|
|
851
|
+
MELTINGPOINT,
|
|
852
|
+
TG
|
|
853
|
+
} = info;
|
|
854
|
+
const dscMetaData = {
|
|
855
|
+
meltingPoint: MELTINGPOINT,
|
|
856
|
+
tg: TG
|
|
857
|
+
};
|
|
858
|
+
features = Object.assign({}, features, {
|
|
859
|
+
dscMetaData
|
|
860
|
+
});
|
|
861
|
+
}
|
|
846
862
|
}
|
|
847
863
|
// const features = Format.isMsLayout(layout)
|
|
848
864
|
// ? extrFeaturesMs(jcamp, layout, peakUp)
|
|
@@ -910,11 +926,12 @@ const GetCyclicVoltaPreviousShift = (cyclicVolta, curveIdx) => {
|
|
|
910
926
|
return 0.0;
|
|
911
927
|
}
|
|
912
928
|
const {
|
|
913
|
-
shift
|
|
929
|
+
shift,
|
|
930
|
+
hasRefPeak
|
|
914
931
|
} = spectraList[curveIdx];
|
|
915
932
|
const {
|
|
916
933
|
prevValue
|
|
917
934
|
} = shift;
|
|
918
|
-
return prevValue;
|
|
935
|
+
return hasRefPeak ? prevValue : -prevValue;
|
|
919
936
|
};
|
|
920
937
|
exports.GetCyclicVoltaPreviousShift = GetCyclicVoltaPreviousShift;
|
package/dist/helpers/compass.js
CHANGED
|
@@ -97,7 +97,7 @@ const MouseMove = (event, focus) => {
|
|
|
97
97
|
dValue = (0, _chem.Convert2DValue)(pt.x).toExponential(2);
|
|
98
98
|
}
|
|
99
99
|
focus.root.select('.cursor-txt-hz').attr('transform', `translate(${tx},${ty - 30})`).text(`2Theta: ${pt.x.toExponential(2)}, d-value: ${dValue}`);
|
|
100
|
-
} else if (_format.default.isTGALayout(layout)) {
|
|
100
|
+
} else if (_format.default.isTGALayout(layout) || _format.default.isDSCLayout(layout)) {
|
|
101
101
|
focus.root.select('.cursor-txt').attr('transform', `translate(${tx},${10})`).text(`X: ${pt.x.toFixed(3)}, Y: ${pt.y.toFixed(3)}`);
|
|
102
102
|
} else {
|
|
103
103
|
focus.root.select('.cursor-txt').attr('transform', `translate(${tx},${10})`).text(pt.x.toFixed(3));
|