@complat/react-spectra-editor 1.0.1 → 1.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/README.md CHANGED
@@ -38,6 +38,21 @@ $ yarn start
38
38
 
39
39
  [demo & step-by-step manual](https://github.com/ComPlat/react-spectra-editor/blob/master/DEMO_MANUAL.md)
40
40
 
41
+ ### Testing
42
+ #### Unit test
43
+ ```
44
+ $ yarn test
45
+ ```
46
+
47
+ #### E2E test
48
+ ```
49
+ $ yarn start
50
+ ```
51
+
52
+ Open another terminal
53
+ ```
54
+ $ yarn e2e
55
+ ```
41
56
 
42
57
 
43
58
  ## Acknowledgments
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _react = require("@testing-library/react");
4
+ var _comps = require("../../../../components/common/comps");
5
+ require("@testing-library/jest-dom");
6
+ describe('common/comps', () => {
7
+ it('.TabLabel()', () => {
8
+ const labelStr = 'test label';
9
+ function TestComponent(_ref) {
10
+ let {} = _ref;
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ "data-testid": "test-div"
13
+ }, (0, _comps.TabLabel)({
14
+ tabLabel: 'mytestclass'
15
+ }, labelStr));
16
+ }
17
+ const {
18
+ queryByTestId,
19
+ queryByText
20
+ } = (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
21
+ const renderedComponent = queryByTestId('test-div');
22
+ expect(renderedComponent).toBeInTheDocument();
23
+ const renderedLabel = queryByText(labelStr);
24
+ expect(renderedLabel).toHaveClass('mytestclass txt-tab-label');
25
+ });
26
+ });
@@ -4,26 +4,192 @@ var _react = require("@testing-library/react");
4
4
  require("@testing-library/jest-dom");
5
5
  var _draw = require("../../../../components/common/draw");
6
6
  var _react2 = require("react");
7
+ var d3 = _interopRequireWildcard(require("d3"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
7
10
  describe('common/draw', () => {
8
- it('.drawMain()', () => {
9
- function TestComponent(_ref) {
10
- let {} = _ref;
11
- (0, _react2.useEffect)(() => {
12
- (0, _draw.drawMain)('.testsvg', 100, 100);
13
- }, []);
14
- return /*#__PURE__*/React.createElement("div", {
15
- className: "testsvg",
16
- "data-testid": "testsvg"
17
- });
11
+ describe('.drawMain()', () => {
12
+ it('d3 draw main svg view box', () => {
13
+ function TestComponent(_ref) {
14
+ let {} = _ref;
15
+ (0, _react2.useEffect)(() => {
16
+ (0, _draw.drawMain)('.testsvg', 100, 100);
17
+ }, []);
18
+ return /*#__PURE__*/React.createElement("div", {
19
+ className: "testsvg",
20
+ "data-testid": "testsvg"
21
+ });
22
+ }
23
+ const {
24
+ queryByTestId
25
+ } = (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
26
+ const renderResult = queryByTestId('testsvg');
27
+ expect(renderResult).toBeInTheDocument();
28
+ const svgElement = document.querySelector('svg');
29
+ expect(svgElement).toHaveClass('d3Svg');
30
+ expect(svgElement).toHaveAttribute('preserveAspectRatio', 'xMinYMin meet');
31
+ expect(svgElement).toHaveAttribute('viewBox', '0 0 100 100');
32
+ });
33
+ });
34
+ describe('.drawLabel()', () => {
35
+ const rootClass = '.testsvg';
36
+ const xLabelText = 'x label';
37
+ const yLabelText = 'y label';
38
+ const cLabelText = 'c label';
39
+ function drawMyText() {
40
+ let hasMarker = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
41
+ d3.select(rootClass).append('svg').attr('class', 'd3Svg');
42
+ d3.select('.d3Svg').append('text').attr('class', 'xLabel');
43
+ d3.select('.d3Svg').append('text').attr('class', 'yLabel');
44
+ if (hasMarker) {
45
+ d3.select('.d3Svg').append('text').attr('class', 'mark-text');
46
+ }
18
47
  }
19
- const {
20
- queryByTestId
21
- } = (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
22
- const renderResult = queryByTestId('testsvg');
23
- expect(renderResult).toBeInTheDocument();
24
- const svgElement = document.querySelector('svg');
25
- expect(svgElement).toHaveClass('d3Svg');
26
- expect(svgElement).toHaveAttribute('preserveAspectRatio', 'xMinYMin meet');
27
- expect(svgElement).toHaveAttribute('viewBox', '0 0 100 100');
48
+ it('d3 draw only axes label', () => {
49
+ function TestComponent(_ref2) {
50
+ let {} = _ref2;
51
+ (0, _react2.useEffect)(() => {
52
+ drawMyText(false);
53
+ (0, _draw.drawLabel)(rootClass, null, xLabelText, yLabelText);
54
+ }, []);
55
+ return /*#__PURE__*/React.createElement("div", {
56
+ className: "testsvg",
57
+ "data-testid": "testsvg"
58
+ });
59
+ }
60
+ const {
61
+ queryByText
62
+ } = (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
63
+ const xLabel = queryByText(xLabelText);
64
+ expect(xLabel).toBeInTheDocument();
65
+ expect(xLabel).toHaveClass('xLabel');
66
+ const yLabel = queryByText(yLabelText);
67
+ expect(yLabel).toBeInTheDocument();
68
+ expect(yLabel).toHaveClass('yLabel');
69
+ });
70
+ it('d3 draw labels witg c label', () => {
71
+ function TestComponent(_ref3) {
72
+ let {} = _ref3;
73
+ (0, _react2.useEffect)(() => {
74
+ drawMyText(true);
75
+ (0, _draw.drawLabel)(rootClass, cLabelText, xLabelText, yLabelText);
76
+ }, []);
77
+ return /*#__PURE__*/React.createElement("div", {
78
+ className: "testsvg",
79
+ "data-testid": "testsvg"
80
+ });
81
+ }
82
+ const {
83
+ queryByText
84
+ } = (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
85
+ const xLabel = queryByText(xLabelText);
86
+ expect(xLabel).toBeInTheDocument();
87
+ expect(xLabel).toHaveClass('xLabel');
88
+ const yLabel = queryByText(yLabelText);
89
+ expect(yLabel).toBeInTheDocument();
90
+ expect(yLabel).toHaveClass('yLabel');
91
+ const cLabel = queryByText(cLabelText);
92
+ expect(cLabel).toBeInTheDocument();
93
+ expect(cLabel).toHaveClass('mark-text');
94
+ });
95
+ });
96
+ describe('.drawDisplay()', () => {
97
+ it('set display as hidden', () => {
98
+ function TestComponent(_ref4) {
99
+ let {} = _ref4;
100
+ (0, _react2.useEffect)(() => {
101
+ (0, _draw.drawMain)('.testsvg', 100, 100);
102
+ (0, _draw.drawDisplay)('.testsvg', true);
103
+ }, []);
104
+ return /*#__PURE__*/React.createElement("div", {
105
+ className: "testsvg",
106
+ "data-testid": "testsvg"
107
+ });
108
+ }
109
+ (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
110
+ const svgElement = document.querySelector('svg');
111
+ expect(svgElement).toHaveStyle('width: 0');
112
+ });
113
+ it('set display to show', () => {
114
+ function TestComponent(_ref5) {
115
+ let {} = _ref5;
116
+ (0, _react2.useEffect)(() => {
117
+ (0, _draw.drawMain)('.testsvg', 100, 100);
118
+ (0, _draw.drawDisplay)('.testsvg', false);
119
+ }, []);
120
+ return /*#__PURE__*/React.createElement("div", {
121
+ className: "testsvg",
122
+ "data-testid": "testsvg"
123
+ });
124
+ }
125
+ (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
126
+ const svgElement = document.querySelector('svg');
127
+ expect(svgElement).toHaveStyle('width: 100%');
128
+ });
129
+ });
130
+ describe('.drawDestroy()', () => {
131
+ it('d3 remove all svg', () => {
132
+ function TestComponent(_ref6) {
133
+ let {} = _ref6;
134
+ (0, _react2.useEffect)(() => {
135
+ (0, _draw.drawMain)('.testsvg', 100, 100);
136
+ (0, _draw.drawDestroy)('.testsvg');
137
+ }, []);
138
+ return /*#__PURE__*/React.createElement("div", {
139
+ className: "testsvg",
140
+ "data-testid": "testsvg"
141
+ });
142
+ }
143
+ (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
144
+ const svgElement = document.querySelector('svg');
145
+ expect(svgElement).not.toBeInTheDocument();
146
+ });
147
+ });
148
+ describe('.drawArrowOnCurve()', () => {
149
+ it('d3 remove all arrows on curves', () => {
150
+ function TestComponent(_ref7) {
151
+ let {} = _ref7;
152
+ (0, _react2.useEffect)(() => {
153
+ (0, _draw.drawMain)('.testsvg', 100, 100);
154
+ d3.select('.d3Svg').append('defs').append('marker');
155
+ (0, _draw.drawArrowOnCurve)('.testsvg', true);
156
+ }, []);
157
+ return /*#__PURE__*/React.createElement("div", {
158
+ className: "testsvg",
159
+ "data-testid": "testsvg"
160
+ });
161
+ }
162
+ (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
163
+ const svgElement = document.querySelector('marker');
164
+ expect(svgElement).not.toBeInTheDocument();
165
+ });
166
+ it('d3 draw arrows on curves', () => {
167
+ function TestComponent(_ref8) {
168
+ let {} = _ref8;
169
+ (0, _react2.useEffect)(() => {
170
+ (0, _draw.drawMain)('.testsvg', 100, 100);
171
+ d3.select('.d3Svg').append('defs').append('marker');
172
+ (0, _draw.drawArrowOnCurve)('.testsvg', false);
173
+ }, []);
174
+ return /*#__PURE__*/React.createElement("div", {
175
+ className: "testsvg",
176
+ "data-testid": "testsvg"
177
+ });
178
+ }
179
+ (0, _react.render)( /*#__PURE__*/React.createElement(TestComponent, null));
180
+ const arrowLeft = document.querySelector('marker');
181
+ expect(arrowLeft).toBeInTheDocument();
182
+ expect(arrowLeft).toHaveAttribute('id', 'arrow-left');
183
+ expect(arrowLeft).toHaveAttribute('viewBox', '0 0 10 10');
184
+ expect(arrowLeft).toHaveAttribute('refX', '5');
185
+ expect(arrowLeft).toHaveAttribute('refY', '5');
186
+ expect(arrowLeft).toHaveAttribute('markerWidth', '6');
187
+ expect(arrowLeft).toHaveAttribute('markerHeight', '6');
188
+ expect(arrowLeft).toHaveAttribute('orient', 'auto');
189
+ expect(arrowLeft).toHaveAttribute('fill', '#00AA0099');
190
+ const path = arrowLeft.querySelector('path');
191
+ expect(path).toBeInTheDocument();
192
+ expect(path).toHaveAttribute('d', 'M 0 0 L 10 5 L 0 10 z');
193
+ });
28
194
  });
29
195
  });
@@ -22,7 +22,16 @@ const store = mockStore({
22
22
  shift: {
23
23
  shifts: []
24
24
  },
25
- simulation: {}
25
+ simulation: {},
26
+ detector: {
27
+ curves: [{
28
+ curveIdx: 0,
29
+ selectedDetector: {
30
+ name: 'Refractive index',
31
+ label: 'RI'
32
+ }
33
+ }]
34
+ }
26
35
  });
27
36
  const failedStore = mockStore({});
28
37
  const dispatchMock = () => Promise.resolve({});
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.updateDetector = void 0;
7
+ var _action_type = require("../constants/action_type");
8
+ /* eslint-disable import/prefer-default-export */
9
+
10
+ const updateDetector = payload => ({
11
+ type: _action_type.SEC.UPDATE_DETECTOR,
12
+ payload
13
+ });
14
+ exports.updateDetector = updateDetector;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.resetInitNmr = exports.resetInitMs = exports.resetInitCommonWithIntergation = exports.resetInitCommon = exports.resetAll = void 0;
6
+ exports.resetInitNmr = exports.resetInitMs = exports.resetInitCommonWithIntergation = exports.resetInitCommon = exports.resetDetector = exports.resetAll = void 0;
7
7
  var _action_type = require("../constants/action_type");
8
8
  const resetAll = payload => ({
9
9
  type: _action_type.MANAGER.RESETALL,
@@ -29,6 +29,10 @@ const resetInitCommonWithIntergation = payload => ({
29
29
  type: _action_type.MANAGER.RESET_INIT_COMMON_WITH_INTERGATION,
30
30
  payload
31
31
  });
32
+ exports.resetInitCommonWithIntergation = resetInitCommonWithIntergation;
33
+ const resetDetector = () => ({
34
+ type: _action_type.MANAGER.RESET_DETECTOR
35
+ });
32
36
 
33
37
  // eslint-disable-line
34
- exports.resetInitCommonWithIntergation = resetInitCommonWithIntergation;
38
+ exports.resetDetector = resetDetector;
@@ -104,7 +104,7 @@ const Integration = _ref => {
104
104
  className: "txt-sv-tp"
105
105
  }, "Add Integration")
106
106
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
107
- className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddIntgSt, classes)),
107
+ className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddIntgSt, classes), 'btn-add-inter'),
108
108
  disabled: isDisableSt,
109
109
  onClick: onSweepIntegtAdd
110
110
  }, /*#__PURE__*/_react.default.createElement(_react2.default, {
@@ -119,7 +119,7 @@ const Integration = _ref => {
119
119
  className: "txt-sv-tp"
120
120
  }, "Remove Integration")
121
121
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
122
- className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmIntgSt, classes)),
122
+ className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmIntgSt, classes), 'btn-remove-inter'),
123
123
  disabled: isDisableSt,
124
124
  onClick: onSweepIntegtRm
125
125
  }, /*#__PURE__*/_react.default.createElement(_react2.default, {
@@ -134,7 +134,7 @@ const Integration = _ref => {
134
134
  className: "txt-sv-tp"
135
135
  }, "Set Integration Reference")
136
136
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
137
- className: (0, _classnames.default)((0, _common.focusStyle)(isFocusSetRefSt, classes)),
137
+ className: (0, _classnames.default)((0, _common.focusStyle)(isFocusSetRefSt, classes), 'btn-set-inter-ref'),
138
138
  disabled: isDisableSt,
139
139
  onClick: onSweepIntegtSR
140
140
  }, /*#__PURE__*/_react.default.createElement(_react2.default, {
@@ -102,7 +102,7 @@ const Pecker = _ref => {
102
102
  className: "txt-sv-tp"
103
103
  }, "Add Pecker")
104
104
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
105
- className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddPeckerSt, classes), 'btn-sv-bar-addpeak'),
105
+ className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddPeckerSt, classes), 'btn-sv-bar-addpecker'),
106
106
  onClick: onSweepPeckerAdd
107
107
  }, /*#__PURE__*/_react.default.createElement("span", {
108
108
  className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-addpeak')
@@ -111,7 +111,7 @@ const Pecker = _ref => {
111
111
  className: "txt-sv-tp"
112
112
  }, "Remove Pecker")
113
113
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
114
- className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmPeckerSt, classes), 'btn-sv-bar-rmpeak'),
114
+ className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmPeckerSt, classes), 'btn-sv-bar-rmpecker'),
115
115
  onClick: onSweepPeckerDELETE
116
116
  }, /*#__PURE__*/_react.default.createElement("span", {
117
117
  className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-rmpeak')
@@ -23,6 +23,7 @@ var _r04_submit = _interopRequireDefault(require("./r04_submit"));
23
23
  var _r07_wavelength_btn = _interopRequireDefault(require("./r07_wavelength_btn"));
24
24
  var _pecker = _interopRequireDefault(require("./07_pecker"));
25
25
  var _r08_change_axes = _interopRequireDefault(require("./r08_change_axes"));
26
+ var _r09_detector = _interopRequireDefault(require("./r09_detector"));
26
27
  /* eslint-disable prefer-object-spread, function-paren-newline,
27
28
  react/function-component-definition, react/require-default-props */
28
29
 
@@ -59,7 +60,7 @@ const CmdBar = _ref => {
59
60
  }), /*#__PURE__*/_react.default.createElement(_r01_layout.default, {
60
61
  feature: feature,
61
62
  hasEdit: hasEdit
62
- }), /*#__PURE__*/_react.default.createElement(_r07_wavelength_btn.default, null), /*#__PURE__*/_react.default.createElement(_r08_change_axes.default, null));
63
+ }), /*#__PURE__*/_react.default.createElement(_r07_wavelength_btn.default, null), /*#__PURE__*/_react.default.createElement(_r08_change_axes.default, null), /*#__PURE__*/_react.default.createElement(_r09_detector.default, null));
63
64
  };
64
65
  const mapStateToProps = (state, _) => (
65
66
  // eslint-disable-line
@@ -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) => () => {
24
+ const onClickCb = (operation, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, analysis, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt) => () => {
25
25
  operation({
26
26
  peaks: peaksEdit,
27
27
  layout: layoutSt,
@@ -39,7 +39,8 @@ const onClickCb = (operation, peaksEdit, isAscend, isIntensity, scan, thres, lay
39
39
  waveLength: waveLengthSt,
40
40
  cyclicvoltaSt,
41
41
  curveSt,
42
- axesUnitsSt
42
+ axesUnitsSt,
43
+ detectorSt
43
44
  });
44
45
  };
45
46
  const BtnSubmit = _ref => {
@@ -62,7 +63,8 @@ const BtnSubmit = _ref => {
62
63
  waveLengthSt,
63
64
  cyclicvoltaSt,
64
65
  curveSt,
65
- axesUnitsSt
66
+ axesUnitsSt,
67
+ detectorSt
66
68
  } = _ref;
67
69
  const peaksEdit = (0, _extractPeaksEdit.extractPeaksEdit)(feature, editPeakSt, thresSt, shiftSt, layoutSt);
68
70
  // const disBtn = peaksEdit.length === 0 || statusSt.btnSubmit || disabled;
@@ -77,7 +79,7 @@ const BtnSubmit = _ref => {
77
79
  }, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
78
80
  className: (0, _classnames.default)('btn-sv-bar-submit'),
79
81
  color: "primary",
80
- onClick: onClickCb(operation.value, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, forecastSt.predictions, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt)
82
+ onClick: onClickCb(operation.value, peaksEdit, isAscend, isIntensity, scan, thres, layoutSt, shiftSt, forecastSt.predictions, decimalSt, integrationSt, multiplicitySt, allIntegrationSt, aucValues, waveLengthSt, cyclicvoltaSt, curveSt, axesUnitsSt, detectorSt)
81
83
  }, /*#__PURE__*/_react.default.createElement(_PlayCircleOutline.default, {
82
84
  className: classes.icon
83
85
  })));
@@ -98,7 +100,8 @@ const mapStateToProps = (state, props) => (
98
100
  waveLengthSt: state.wavelength,
99
101
  cyclicvoltaSt: state.cyclicvolta,
100
102
  curveSt: state.curve,
101
- axesUnitsSt: state.axesUnits
103
+ axesUnitsSt: state.axesUnits,
104
+ detectorSt: state.detector
102
105
  });
103
106
  const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({}, dispatch);
104
107
  BtnSubmit.propTypes = {
@@ -120,6 +123,7 @@ BtnSubmit.propTypes = {
120
123
  waveLengthSt: _propTypes.default.object.isRequired,
121
124
  cyclicvoltaSt: _propTypes.default.object.isRequired,
122
125
  curveSt: _propTypes.default.object,
123
- axesUnitsSt: _propTypes.default.object.isRequired
126
+ axesUnitsSt: _propTypes.default.object.isRequired,
127
+ detectorSt: _propTypes.default.object.isRequired
124
128
  };
125
129
  var _default = exports.default = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), (0, _styles.withStyles)(styles))(BtnSubmit);
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _reactRedux = require("react-redux");
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ var _redux = require("redux");
13
+ var _material = require("@mui/material");
14
+ var _withStyles = _interopRequireDefault(require("@mui/styles/withStyles"));
15
+ var _detector = require("../../actions/detector");
16
+ var _format = _interopRequireDefault(require("../../helpers/format"));
17
+ var _common = require("./common");
18
+ var _list_detectors = require("../../constants/list_detectors");
19
+ /* eslint-disable prefer-object-spread, react/jsx-one-expression-per-line,
20
+ react/function-component-definition */
21
+
22
+ const styles = () => Object.assign({
23
+ fieldShift: {
24
+ width: 160
25
+ },
26
+ fieldLayout: {
27
+ width: 100
28
+ }
29
+ }, _common.commonStyle);
30
+ const detectorSelect = (classes, detectorSt, curveSt, layoutSt, updateDetectorAct) => {
31
+ if (!_format.default.isSECLayout(layoutSt)) {
32
+ return /*#__PURE__*/_react.default.createElement("i", null);
33
+ }
34
+ const {
35
+ curveIdx
36
+ } = curveSt;
37
+ const {
38
+ curves
39
+ } = detectorSt;
40
+ const getSelectedDetectorForCurve = (_detectorSt, targetCurveIdx) => {
41
+ const targetCurve = curves.find(curve => curve.curveIdx === targetCurveIdx);
42
+ return targetCurve ? targetCurve.selectedDetector : '';
43
+ };
44
+ const selectedDetector = getSelectedDetectorForCurve(detectorSt, curveIdx);
45
+ const onChange = e => updateDetectorAct({
46
+ curveIdx,
47
+ selectedDetector: e.target.value
48
+ });
49
+ return /*#__PURE__*/_react.default.createElement(_material.FormControl, {
50
+ className: (0, _classnames.default)(classes.fieldLayout)
51
+ }, /*#__PURE__*/_react.default.createElement(_material.InputLabel, {
52
+ id: "select-detector-label",
53
+ className: (0, _classnames.default)(classes.selectLabel, 'select-sv-bar-label')
54
+ }, "Detector"), /*#__PURE__*/_react.default.createElement(_material.Select, {
55
+ labelId: "select-detector-label",
56
+ label: "Detector",
57
+ value: selectedDetector,
58
+ onChange: onChange,
59
+ className: (0, _classnames.default)(classes.selectInput, 'input-sv-bar-layout')
60
+ }, /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
61
+ value: ""
62
+ }, /*#__PURE__*/_react.default.createElement("span", {
63
+ className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
64
+ })), _list_detectors.LIST_DETECTORS.map(item => /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
65
+ value: item
66
+ }, /*#__PURE__*/_react.default.createElement("span", {
67
+ className: (0, _classnames.default)(classes.txtOpt, 'option-sv-bar-layout')
68
+ }, item.name)))));
69
+ };
70
+ const Detector = _ref => {
71
+ let {
72
+ classes,
73
+ detectorSt,
74
+ curveSt,
75
+ layoutSt,
76
+ updateDetectorAct
77
+ } = _ref;
78
+ return /*#__PURE__*/_react.default.createElement("span", {
79
+ className: classes.groupRight
80
+ }, detectorSelect(classes, detectorSt, curveSt, layoutSt, updateDetectorAct));
81
+ };
82
+ const mapStateToProps = (state, _props) => (
83
+ // eslint-disable-line
84
+ {
85
+ detectorSt: state.detector,
86
+ curveSt: state.curve,
87
+ layoutSt: state.layout
88
+ });
89
+ const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
90
+ updateDetectorAct: _detector.updateDetector
91
+ }, dispatch);
92
+ Detector.propTypes = {
93
+ classes: _propTypes.default.object.isRequired,
94
+ layoutSt: _propTypes.default.string.isRequired,
95
+ curveSt: _propTypes.default.object.isRequired,
96
+ updateDetectorAct: _propTypes.default.func.isRequired,
97
+ detectorSt: _propTypes.default.object.isRequired
98
+ };
99
+ var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _withStyles.default)(styles)(Detector));