@complat/react-spectra-editor 1.3.1 → 1.3.4

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.
@@ -31,7 +31,8 @@ const store = mockStore({
31
31
  label: 'RI'
32
32
  }
33
33
  }]
34
- }
34
+ },
35
+ meta: {}
35
36
  });
36
37
  const failedStore = mockStore({});
37
38
  const dispatchMock = () => Promise.resolve({});
@@ -3,10 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.updateMetaPeaks = void 0;
6
+ exports.updateMetaPeaks = exports.updateDSCMetaData = void 0;
7
7
  var _action_type = require("../constants/action_type");
8
8
  const updateMetaPeaks = payload => ({
9
9
  type: _action_type.META.UPDATE_PEAKS,
10
10
  payload
11
11
  });
12
- exports.updateMetaPeaks = updateMetaPeaks;
12
+ exports.updateMetaPeaks = updateMetaPeaks;
13
+ const updateDSCMetaData = payload => ({
14
+ type: _action_type.META.UPDATE_META_DATA,
15
+ payload
16
+ });
17
+ exports.updateDSCMetaData = updateDSCMetaData;
@@ -108,6 +108,10 @@ const layoutSelect = (classes, layoutSt, updateLayoutAct) => {
108
108
  }, /*#__PURE__*/_react.default.createElement("span", {
109
109
  className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
110
110
  }, "TGA (THERMOGRAVIMETRIC ANALYSIS)")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
111
+ value: _list_layout.LIST_LAYOUT.DSC
112
+ }, /*#__PURE__*/_react.default.createElement("span", {
113
+ className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
114
+ }, "DSC (DIFFERENTIAL SCANNING CALORIMETRY)")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
111
115
  value: _list_layout.LIST_LAYOUT.XRD
112
116
  }, /*#__PURE__*/_react.default.createElement("span", {
113
117
  className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
@@ -152,6 +156,10 @@ const layoutSelect = (classes, layoutSt, updateLayoutAct) => {
152
156
  }, /*#__PURE__*/_react.default.createElement("span", {
153
157
  className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
154
158
  }, "SEC")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
159
+ value: _list_layout.LIST_LAYOUT.GC
160
+ }, /*#__PURE__*/_react.default.createElement("span", {
161
+ className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
162
+ }, "GC (GAS CHROMATOGRAPHY)")), /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
155
163
  value: _list_layout.LIST_LAYOUT.AIF
156
164
  }, /*#__PURE__*/_react.default.createElement("span", {
157
165
  className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
@@ -21,7 +21,7 @@ react/function-component-definition, function-call-argument-newline,
21
21
  react/require-default-props */
22
22
 
23
23
  const styles = () => Object.assign({}, _common.commonStyle);
24
- const onClickCb = (operation, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, analysis, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt) => () => {
24
+ const onClickCb = (operation, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, analysis, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt, dscMetaData) => () => {
25
25
  operation({
26
26
  peaks: peaksEdit,
27
27
  layout: layoutSt,
@@ -40,7 +40,8 @@ const onClickCb = (operation, peaksEdit, isAscend, isIntensity, scan, thres, lay
40
40
  cyclicvoltaSt,
41
41
  curveSt,
42
42
  axesUnitsSt,
43
- detectorSt
43
+ detectorSt,
44
+ dscMetaData
44
45
  });
45
46
  };
46
47
  const BtnSubmit = _ref => {
@@ -64,13 +65,17 @@ const BtnSubmit = _ref => {
64
65
  cyclicvoltaSt,
65
66
  curveSt,
66
67
  axesUnitsSt,
67
- detectorSt
68
+ detectorSt,
69
+ metaSt
68
70
  } = _ref;
69
71
  const peaksEdit = (0, _extractPeaksEdit.extractPeaksEdit)(feature, editPeakSt, thresSt, shiftSt, layoutSt);
70
72
  // const disBtn = peaksEdit.length === 0 || statusSt.btnSubmit || disabled;
71
73
  const scan = (0, _chem.Convert2Scan)(feature, scanSt);
72
74
  const thres = (0, _chem.Convert2Thres)(feature, thresSt);
73
75
  const aucValues = (0, _extractPeaksEdit.extractAreaUnderCurve)(allIntegrationSt, integrationSt, layoutSt);
76
+ const {
77
+ dscMetaData
78
+ } = metaSt;
74
79
  if (!operation) return null;
75
80
  return /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
76
81
  title: /*#__PURE__*/_react.default.createElement("span", {
@@ -79,7 +84,7 @@ const BtnSubmit = _ref => {
79
84
  }, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
80
85
  className: (0, _classnames.default)('btn-sv-bar-submit'),
81
86
  color: "primary",
82
- onClick: onClickCb(operation.value, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, forecastSt.predictions, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt)
87
+ onClick: onClickCb(operation.value, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, forecastSt.predictions, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt, dscMetaData)
83
88
  }, /*#__PURE__*/_react.default.createElement(_PlayCircleOutline.default, {
84
89
  className: classes.icon
85
90
  })));
@@ -101,7 +106,8 @@ const mapStateToProps = (state, props) => (
101
106
  cyclicvoltaSt: state.cyclicvolta,
102
107
  curveSt: state.curve,
103
108
  axesUnitsSt: state.axesUnits,
104
- detectorSt: state.detector
109
+ detectorSt: state.detector,
110
+ metaSt: state.meta
105
111
  });
106
112
  const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({}, dispatch);
107
113
  BtnSubmit.propTypes = {
@@ -124,6 +130,7 @@ BtnSubmit.propTypes = {
124
130
  cyclicvoltaSt: _propTypes.default.object.isRequired,
125
131
  curveSt: _propTypes.default.object,
126
132
  axesUnitsSt: _propTypes.default.object.isRequired,
127
- detectorSt: _propTypes.default.object.isRequired
133
+ detectorSt: _propTypes.default.object.isRequired,
134
+ metaSt: _propTypes.default.object.isRequired
128
135
  };
129
136
  var _default = exports.default = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), (0, _styles.withStyles)(styles))(BtnSubmit);
@@ -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.GC, _list_layout.LIST_LAYOUT.EMISSIONS, _list_layout.LIST_LAYOUT.DLS_INTENSITY].indexOf(layoutSt) < 0;
600
600
  }
601
601
  create(_ref) {
602
602
  let {
@@ -171,16 +171,17 @@ class MultiFocus {
171
171
  if (idx === jcampIdx) {
172
172
  this.data = [...currData];
173
173
  this.pathColor = color;
174
- filterSubLayoutValue = feature.xUnit;
174
+ filterSubLayoutValue = _format.default.isSECLayout(layout) ? feature.xUnit : feature.yUnit;
175
175
  } else {
176
+ const filterValue = _format.default.isSECLayout(layout) ? feature.xUnit : feature.yUnit;
176
177
  this.otherLineData.push({
177
178
  data: currData,
178
179
  color,
179
- filterSublayout: feature.xUnit
180
+ filterSublayout: filterValue
180
181
  });
181
182
  }
182
183
  });
183
- if (_format.default.isSECLayout(layout)) {
184
+ if (_format.default.isSECLayout(layout) || _format.default.isGCLayout(layout)) {
184
185
  this.otherLineData = this.otherLineData.filter(data => {
185
186
  return data.filterSublayout === filterSubLayoutValue;
186
187
  });
@@ -785,7 +786,7 @@ class MultiFocus {
785
786
  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)})`);
786
787
  }
787
788
  reverseXAxis(layoutSt) {
788
- 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;
789
+ 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.GC, _list_layout.LIST_LAYOUT.AIF].indexOf(layoutSt) < 0;
789
790
  }
790
791
  create(_ref) {
791
792
  let {
@@ -17,6 +17,7 @@ var _index3 = _interopRequireDefault(require("./d3_multi/index"));
17
17
  var _curve = require("../actions/curve");
18
18
  var _cyclic_voltammetry = require("../actions/cyclic_voltammetry");
19
19
  var _list_layout = require("../constants/list_layout");
20
+ var _format = _interopRequireDefault(require("../helpers/format"));
20
21
  /* eslint-disable react/default-props-match-prop-types,
21
22
  react/require-default-props, react/no-unused-prop-types, react/jsx-boolean-value,
22
23
  prefer-object-spread */
@@ -63,10 +64,12 @@ class MultiJcampsViewer extends _react.default.Component {
63
64
  userManualLink,
64
65
  molSvg,
65
66
  theoryMass,
66
- layoutSt
67
+ layoutSt,
68
+ integrationSt
67
69
  } = this.props;
68
70
  if (!entities || entities.length === 0) return /*#__PURE__*/_react.default.createElement("div", null);
69
- const seperatedSubLayouts = seperatingSubLayout(entities, 'xUnit', layoutSt);
71
+ const separateCondition = _format.default.isGCLayout(layoutSt) ? 'yUnit' : 'xUnit';
72
+ const seperatedSubLayouts = seperatingSubLayout(entities, separateCondition, layoutSt);
70
73
  const {
71
74
  curveIdx
72
75
  } = curveSt;
@@ -75,6 +78,10 @@ class MultiJcampsViewer extends _react.default.Component {
75
78
  feature,
76
79
  topic
77
80
  } = entity;
81
+ const {
82
+ integrations
83
+ } = integrationSt;
84
+ const currentIntegration = integrations[curveIdx];
78
85
  return /*#__PURE__*/_react.default.createElement("div", {
79
86
  className: classes.root
80
87
  }, /*#__PURE__*/_react.default.createElement(_index2.default, {
@@ -107,6 +114,7 @@ class MultiJcampsViewer extends _react.default.Component {
107
114
  molSvg: molSvg,
108
115
  theoryMass: theoryMass,
109
116
  subLayoutsInfo: seperatedSubLayouts,
117
+ integration: currentIntegration,
110
118
  descriptions: "",
111
119
  canChangeDescription: () => {},
112
120
  onDescriptionChanged: () => {}
@@ -119,7 +127,8 @@ const mapStateToProps = (state, _) => (
119
127
  curveSt: state.curve,
120
128
  cyclicVoltaSt: state.cyclicvolta,
121
129
  entities: state.curve.listCurves,
122
- layoutSt: state.layout
130
+ layoutSt: state.layout,
131
+ integrationSt: state.integration.present
123
132
  });
124
133
  const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
125
134
  setAllCurvesAct: _curve.setAllCurves,
@@ -143,7 +152,8 @@ MultiJcampsViewer.propTypes = {
143
152
  userManualLink: _propTypes.default.object,
144
153
  entities: _propTypes.default.array,
145
154
  layoutSt: _propTypes.default.string.isRequired,
146
- theoryMass: _propTypes.default.string
155
+ theoryMass: _propTypes.default.string,
156
+ integrationSt: _propTypes.default.object.isRequired
147
157
  };
148
158
  MultiJcampsViewer.defaultProps = {
149
159
  multiEntities: [],
@@ -61,10 +61,13 @@ const GraphSelectionPanel = _ref => {
61
61
  toggleShowAllCurveAct
62
62
  } = _ref;
63
63
  let subLayoutValues = [];
64
- if (subLayoutsInfo !== undefined && subLayoutsInfo !== null) {
64
+ if (subLayoutsInfo) {
65
65
  subLayoutValues = Object.keys(subLayoutsInfo);
66
66
  }
67
67
  const [selectedSubLayout, setSelectedSublayout] = (0, _react.useState)(subLayoutValues[0]);
68
+ (0, _react.useEffect)(() => {
69
+ setSelectedSublayout(subLayoutValues[0]);
70
+ }, subLayoutValues);
68
71
  if (!curveSt) {
69
72
  return /*#__PURE__*/_react.default.createElement("span", null);
70
73
  }
@@ -144,13 +147,19 @@ const GraphSelectionPanel = _ref => {
144
147
  onChange: onChangeTabSubLayout
145
148
  }, subLayoutValues.map((subLayout, i) => {
146
149
  let subLayoutName = '';
147
- switch (subLayout) {
150
+ switch (subLayout.toUpperCase()) {
148
151
  case 'G/MOL':
149
152
  subLayoutName = 'MWD';
150
153
  break;
151
154
  case 'MILLILITERS':
152
155
  subLayoutName = 'ELU';
153
156
  break;
157
+ case 'INTENSITY':
158
+ subLayoutName = 'Chromatogram';
159
+ break;
160
+ case 'DEGREES CELSIUS':
161
+ subLayoutName = 'Temperature';
162
+ break;
154
163
  default:
155
164
  break;
156
165
  }
@@ -16,6 +16,7 @@ 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
21
  react/require-default-props, max-len */
21
22
 
@@ -163,7 +164,61 @@ SECData.propTypes = {
163
164
  detector: _propTypes.default.object.isRequired,
164
165
  secData: _propTypes.default.object.isRequired
165
166
  };
166
- const InfoPanel = _ref2 => {
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 => {
167
222
  let {
168
223
  classes,
169
224
  expand,
@@ -180,8 +235,10 @@ const InfoPanel = _ref2 => {
180
235
  onExapnd,
181
236
  canChangeDescription,
182
237
  onDescriptionChanged,
183
- detectorSt
184
- } = _ref2;
238
+ detectorSt,
239
+ metaSt,
240
+ updateDSCMetaDataAct
241
+ } = _ref3;
185
242
  if (!feature) return null;
186
243
  const {
187
244
  title,
@@ -189,6 +246,9 @@ const InfoPanel = _ref2 => {
189
246
  solventName,
190
247
  secData
191
248
  } = feature;
249
+ const {
250
+ dscMetaData
251
+ } = metaSt;
192
252
  const {
193
253
  curveIdx
194
254
  } = curveSt;
@@ -274,7 +334,12 @@ const InfoPanel = _ref2 => {
274
334
  className: (0, _classnames.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt')
275
335
  }, "Area under curve (AUC):"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("span", {
276
336
  className: (0, _classnames.default)(classes.tTxt, classes.tTxtSim, 'txt-sv-panel-txt')
277
- }, aucValue(integration))) : null), !_format.default.isCyclicVoltaLayout(layoutSt) ? /*#__PURE__*/_react.default.createElement(_reactQuill.default, {
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, {
278
343
  className: (0, _classnames.default)(classes.quill, 'card-sv-quill'),
279
344
  value: descriptions,
280
345
  modules: {
@@ -297,9 +362,12 @@ const mapStateToProps = (state, props) => (
297
362
  simulationSt: state.simulation,
298
363
  shiftSt: state.shift,
299
364
  curveSt: state.curve,
300
- detectorSt: state.detector
365
+ detectorSt: state.detector,
366
+ metaSt: state.meta
301
367
  });
302
- const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({}, dispatch);
368
+ const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
369
+ updateDSCMetaDataAct: _meta.updateDSCMetaData
370
+ }, dispatch);
303
371
  InfoPanel.propTypes = {
304
372
  classes: _propTypes.default.object.isRequired,
305
373
  expand: _propTypes.default.bool.isRequired,
@@ -316,7 +384,9 @@ InfoPanel.propTypes = {
316
384
  canChangeDescription: _propTypes.default.bool.isRequired,
317
385
  onDescriptionChanged: _propTypes.default.func,
318
386
  theoryMass: _propTypes.default.string,
319
- detectorSt: _propTypes.default.object.isRequired
387
+ detectorSt: _propTypes.default.object.isRequired,
388
+ metaSt: _propTypes.default.object.isRequired,
389
+ updateDSCMetaDataAct: _propTypes.default.func.isRequired
320
390
  };
321
391
  var _default = exports.default = (0, _reactRedux.connect)(
322
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',
@@ -25,5 +25,7 @@ const LIST_LAYOUT = exports.LIST_LAYOUT = {
25
25
  AIF: 'AIF',
26
26
  EMISSIONS: 'Emissions',
27
27
  DLS_ACF: 'DLS ACF',
28
- DLS_INTENSITY: 'DLS intensity'
28
+ DLS_INTENSITY: 'DLS intensity',
29
+ DSC: 'DIFFERENTIAL SCANNING CALORIMETRY',
30
+ GC: 'GAS CHROMATOGRAPHY'
29
31
  };
@@ -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) || _format.default.isGCLayout(layoutSt);
10
10
  const hideCmdAnaViewer = () => false;
11
11
  const btnCmdAddPeak = layoutSt => _format.default.isMsLayout(layoutSt);
12
12
  const btnCmdRmPeak = layoutSt => _format.default.isMsLayout(layoutSt);
@@ -350,6 +350,9 @@ const readLayout = jcamp => {
350
350
  if (dataType.includes('THERMOGRAVIMETRIC ANALYSIS')) {
351
351
  return _list_layout.LIST_LAYOUT.TGA;
352
352
  }
353
+ if (dataType.includes('DIFFERENTIAL SCANNING CALORIMETRY')) {
354
+ return _list_layout.LIST_LAYOUT.DSC;
355
+ }
353
356
  if (dataType.includes('X-RAY DIFFRACTION')) {
354
357
  return _list_layout.LIST_LAYOUT.XRD;
355
358
  }
@@ -365,6 +368,9 @@ const readLayout = jcamp => {
365
368
  if (dataType.includes('SIZE EXCLUSION CHROMATOGRAPHY')) {
366
369
  return _list_layout.LIST_LAYOUT.SEC;
367
370
  }
371
+ if (dataType.includes('GAS CHROMATOGRAPHY')) {
372
+ return _list_layout.LIST_LAYOUT.GC;
373
+ }
368
374
  if (dataType.includes('SORPTION-DESORPTION MEASUREMENT')) {
369
375
  return _list_layout.LIST_LAYOUT.AIF;
370
376
  }
@@ -514,7 +520,8 @@ const buildPeakFeature = function (jcamp, layout, peakUp, s, thresRef) {
514
520
  solventName: info['.SOLVENTNAME'],
515
521
  upperThres,
516
522
  lowerThres,
517
- volammetryData: extractVoltammetryData(jcamp)
523
+ volammetryData: extractVoltammetryData(jcamp),
524
+ scanRate: +info.$CSSCANRATE || 0.1
518
525
  }, s);
519
526
  };
520
527
  const maxArray = arr => {
@@ -683,6 +690,7 @@ const extrFeaturesNi = (jcamp, layout, peakUp, spectra) => {
683
690
  nfs.simulation = buildSimFeature(jcamp);
684
691
  return nfs;
685
692
  }
693
+
686
694
  // workaround for legacy design
687
695
  const features = jcamp.spectra.map(s => {
688
696
  const thresRef = calcThresRef(s, peakUp);
@@ -768,7 +776,6 @@ const extrFeaturesCylicVolta = (jcamp, layout, peakUp) => {
768
776
  mw: MW
769
777
  };
770
778
  }
771
- // const detector = Format.isSECLayout(layout) && jcamp.info.$DETECTOR ? jcamp.info.$DETECTOR : '';
772
779
  return Object.assign({}, base, cpo, bnd, {
773
780
  detector,
774
781
  secData
@@ -818,7 +825,7 @@ const extractTemperature = jcamp => {
818
825
  const ExtractJcamp = source => {
819
826
  const jcamp = _jcampconverter.default.convert(source, {
820
827
  xy: true,
821
- 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)/ // eslint-disable-line
828
+ 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
822
829
  });
823
830
  const layout = readLayout(jcamp);
824
831
  const peakUp = !_format.default.isIrLayout(layout);
@@ -835,10 +842,26 @@ const ExtractJcamp = source => {
835
842
  layout,
836
843
  temperature
837
844
  };
838
- } else if (_format.default.isCyclicVoltaLayout(layout) || _format.default.isSECLayout(layout) || _format.default.isAIFLayout(layout) || _format.default.isCDSLayout(layout)) {
845
+ } else if (_format.default.isCyclicVoltaLayout(layout) || _format.default.isSECLayout(layout) || _format.default.isAIFLayout(layout) || _format.default.isCDSLayout(layout) || _format.default.isGCLayout(layout)) {
839
846
  features = extrFeaturesCylicVolta(jcamp, layout, peakUp);
840
847
  } else {
841
848
  features = extrFeaturesNi(jcamp, layout, peakUp, spectra);
849
+ if (_format.default.isDSCLayout(layout)) {
850
+ const {
851
+ info
852
+ } = jcamp;
853
+ const {
854
+ MELTINGPOINT,
855
+ TG
856
+ } = info;
857
+ const dscMetaData = {
858
+ meltingPoint: MELTINGPOINT,
859
+ tg: TG
860
+ };
861
+ features = Object.assign({}, features, {
862
+ dscMetaData
863
+ });
864
+ }
842
865
  }
843
866
  // const features = Format.isMsLayout(layout)
844
867
  // ? extrFeaturesMs(jcamp, layout, peakUp)
@@ -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));
@@ -59,8 +59,15 @@ const extractAreaUnderCurve = (allIntegrationSt, presentIntegrationSt, layoutSt)
59
59
  if (_format.default.isHplcUvVisLayout(layoutSt) && Array.isArray(allIntegrationSt) && presentIntegrationSt) {
60
60
  const results = [];
61
61
  allIntegrationSt.forEach(inte => {
62
- const aucVal = getAUCValue(inte, layoutSt);
63
- results.push(aucVal);
62
+ const {
63
+ integrations
64
+ } = inte;
65
+ const subResults = [];
66
+ integrations.forEach(subInte => {
67
+ const aucVal = getAUCValue(subInte, layoutSt);
68
+ subResults.push(aucVal);
69
+ });
70
+ results.push(subResults);
64
71
  });
65
72
  return results;
66
73
  }