@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 +15 -0
- package/dist/__tests__/units/components/common/comps.test.js +26 -0
- package/dist/__tests__/units/components/common/draw.test.js +185 -19
- package/dist/__tests__/units/components/panel/info.test.js +10 -1
- package/dist/actions/detector.js +14 -0
- package/dist/actions/manager.js +6 -2
- package/dist/components/cmd_bar/04_integration.js +3 -3
- package/dist/components/cmd_bar/07_pecker.js +2 -2
- package/dist/components/cmd_bar/index.js +2 -1
- package/dist/components/cmd_bar/r05_submit_btn.js +10 -6
- package/dist/components/cmd_bar/r09_detector.js +99 -0
- package/dist/components/d3_line/line_focus.js +33 -33
- package/dist/components/d3_multi/multi_focus.js +41 -41
- package/dist/components/d3_rect/rect_focus.js +4 -4
- package/dist/components/panel/cyclic_voltamery_data.js +3 -1
- package/dist/components/panel/info.js +26 -4
- package/dist/constants/action_type.js +6 -2
- package/dist/constants/list_detectors.js +15 -0
- package/dist/helpers/brush.js +7 -7
- package/dist/helpers/chem.js +5 -2
- package/dist/helpers/compass.js +16 -14
- package/dist/helpers/mount.js +2 -2
- package/dist/helpers/zoom.js +4 -4
- package/dist/index.js +7 -0
- package/dist/layer_init.js +7 -2
- package/dist/reducers/index.js +3 -1
- package/dist/reducers/reducer_detector.js +52 -0
- package/package.json +10 -5
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
(0,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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;
|
package/dist/actions/manager.js
CHANGED
|
@@ -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.
|
|
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-
|
|
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-
|
|
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));
|