@complat/react-spectra-editor 1.0.0-rc2 → 1.0.0-rc20.patch-1
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 +16 -0
- package/dist/__tests__/fixtures/aif_jcamp_1.js +136 -0
- package/dist/__tests__/fixtures/aif_jcamp_2.js +122 -0
- package/dist/__tests__/fixtures/backup/nmr1h_a.js +3518 -0
- package/dist/__tests__/fixtures/backup/xrd_jcamp_1.js +10705 -0
- package/dist/__tests__/fixtures/cds_jcamp.js +861 -0
- package/dist/__tests__/fixtures/compare_ir_1_jcamp.js +585 -0
- package/dist/__tests__/fixtures/compare_ir_2_jcamp.js +515 -0
- package/dist/__tests__/fixtures/compare_uv_vis_jcamp.js +640 -0
- package/dist/__tests__/fixtures/cyclic_voltammetry_1.js +778 -0
- package/dist/__tests__/fixtures/cyclic_voltammetry_2.js +758 -0
- package/dist/__tests__/fixtures/cyclic_voltammetry_3.js +759 -0
- package/dist/__tests__/fixtures/dls_acf_jcamp.js +148 -0
- package/dist/__tests__/fixtures/dls_intensity_jcamp.js +151 -0
- package/dist/__tests__/fixtures/emissions_jcamp.js +883 -0
- package/dist/__tests__/fixtures/hplc_uvvis_jcamp.js +638 -0
- package/dist/__tests__/fixtures/hplc_uvvis_jcamp_2.js +221 -0
- package/dist/__tests__/fixtures/ir_jcamp.js +148 -0
- package/dist/__tests__/fixtures/ir_result.js +46 -0
- package/dist/__tests__/fixtures/ir_svg.js +8 -0
- package/dist/__tests__/fixtures/ms_jcamp.js +64 -0
- package/dist/__tests__/fixtures/nmr13c_dept_jcamp.js +3543 -0
- package/dist/__tests__/fixtures/nmr13c_jcamp.js +1229 -0
- package/dist/__tests__/fixtures/nmr15n_jcamp.js +7177 -0
- package/dist/__tests__/fixtures/nmr19f_jcamp.js +6560 -0
- package/dist/__tests__/fixtures/nmr1h_2_jcamp.js +2005 -0
- package/dist/__tests__/fixtures/nmr1h_jcamp.js +4516 -0
- package/dist/__tests__/fixtures/nmr29si_jcamp.js +3029 -0
- package/dist/__tests__/fixtures/nmr31p_jcamp.js +3418 -0
- package/dist/__tests__/fixtures/nmr_result.js +68 -0
- package/dist/__tests__/fixtures/nmr_svg.js +8 -0
- package/dist/__tests__/fixtures/phenylalanin.js +142 -0
- package/dist/__tests__/fixtures/qDescValue.js +65 -0
- package/dist/__tests__/fixtures/raman_jcamp.js +410 -0
- package/dist/__tests__/fixtures/sec_1_jcamp.js +425 -0
- package/dist/__tests__/fixtures/sec_2_jcamp.js +407 -0
- package/dist/__tests__/fixtures/sec_3_jcamp.js +408 -0
- package/dist/__tests__/fixtures/sec_4_jcamp.js +407 -0
- package/dist/__tests__/fixtures/tga_jcamp.js +4157 -0
- package/dist/__tests__/fixtures/uv_vis_jcamp.js +249 -0
- package/dist/__tests__/fixtures/xrd_jcamp_1.js +436 -0
- package/dist/__tests__/fixtures/xrd_jcamp_2.js +955 -0
- package/dist/__tests__/fixtures/xrd_jcamp_3.js +1871 -0
- package/dist/__tests__/units/components/panel/graph_selection.test.js +72 -0
- package/dist/__tests__/units/components/panel/peaks.test.js +87 -0
- package/dist/actions/curve.js +15 -14
- package/dist/actions/cyclic_voltammetry.js +40 -60
- package/dist/actions/edit_peak.js +8 -12
- package/dist/actions/forecast.js +16 -24
- package/dist/actions/integration.js +12 -18
- package/dist/actions/jcamp.js +16 -24
- package/dist/actions/layout.js +4 -6
- package/dist/actions/manager.js +20 -30
- package/dist/actions/meta.js +4 -6
- package/dist/actions/multiplicity.js +24 -36
- package/dist/actions/scan.js +12 -18
- package/dist/actions/shift.js +8 -12
- package/dist/actions/status.js +12 -18
- package/dist/actions/submit.js +16 -24
- package/dist/actions/threshold.js +20 -30
- package/dist/actions/ui.js +25 -31
- package/dist/actions/wavelength.js +4 -6
- package/dist/app.js +25 -23
- package/dist/components/cmd_bar/01_viewer.js +24 -34
- package/dist/components/cmd_bar/02_zoom.js +18 -28
- package/dist/components/cmd_bar/03_peak.js +50 -66
- package/dist/components/cmd_bar/04_integration.js +70 -84
- package/dist/components/cmd_bar/05_multiplicity.js +42 -56
- package/dist/components/cmd_bar/06_undo_redo.js +22 -36
- package/dist/components/cmd_bar/07_pecker.js +24 -34
- package/dist/components/cmd_bar/common.js +11 -7
- package/dist/components/cmd_bar/index.js +17 -23
- package/dist/components/cmd_bar/r01_layout.js +79 -56
- package/dist/components/cmd_bar/r02_scan.js +70 -87
- package/dist/components/cmd_bar/r03_threshold.js +54 -68
- package/dist/components/cmd_bar/r04_submit.js +71 -83
- package/dist/components/cmd_bar/r05_submit_btn.js +64 -72
- package/dist/components/cmd_bar/r06_predict_btn.js +142 -152
- package/dist/components/cmd_bar/r07_wavelength_btn.js +28 -36
- package/dist/components/cmd_bar/tri_btn.js +91 -113
- package/dist/components/common/chem.js +2 -3
- package/dist/components/common/comps.js +2 -2
- package/dist/components/common/draw.js +30 -11
- package/dist/components/d3_line/index.js +154 -176
- package/dist/components/d3_line/line_focus.js +595 -739
- package/dist/components/d3_multi/index.js +153 -174
- package/dist/components/d3_multi/multi_focus.js +725 -850
- package/dist/components/d3_rect/index.js +112 -134
- package/dist/components/d3_rect/rect_focus.js +163 -208
- package/dist/components/forecast/comps.js +60 -68
- package/dist/components/forecast/ir_comps.js +49 -56
- package/dist/components/forecast/ir_viewer.js +61 -68
- package/dist/components/forecast/nmr_comps.js +62 -72
- package/dist/components/forecast/nmr_viewer.js +59 -68
- package/dist/components/forecast/section_loading.js +39 -63
- package/dist/components/forecast_viewer.js +109 -119
- package/dist/components/multi_jcamps_viewer.js +97 -113
- package/dist/components/panel/compare.js +183 -192
- package/dist/components/panel/cyclic_voltamery_data.js +149 -165
- package/dist/components/panel/graph_selection.js +143 -132
- package/dist/components/panel/index.js +112 -144
- package/dist/components/panel/info.js +125 -132
- package/dist/components/panel/multiplicity.js +215 -223
- package/dist/components/panel/multiplicity_coupling.js +108 -136
- package/dist/components/panel/multiplicity_select.js +43 -51
- package/dist/components/panel/peaks.js +130 -132
- package/dist/constants/action_type.js +23 -39
- package/dist/constants/list_layout.js +7 -4
- package/dist/constants/list_shift.js +117 -103
- package/dist/constants/list_ui.js +3 -6
- package/dist/constants/list_wavelength.js +7 -8
- package/dist/fn.js +2 -3
- package/dist/helpers/brush.js +49 -65
- package/dist/helpers/calc.js +2 -4
- package/dist/helpers/carbonFeatures.js +22 -20
- package/dist/helpers/cfg.js +49 -67
- package/dist/helpers/chem.js +450 -393
- package/dist/helpers/compass.js +92 -83
- package/dist/helpers/converter.js +52 -65
- package/dist/helpers/extractParams.js +60 -52
- package/dist/helpers/extractPeaksEdit.js +29 -25
- package/dist/helpers/focus.js +2 -6
- package/dist/helpers/format.js +416 -361
- package/dist/helpers/init.js +41 -37
- package/dist/helpers/integration.js +18 -21
- package/dist/helpers/mount.js +57 -61
- package/dist/helpers/multiplicity.js +19 -24
- package/dist/helpers/multiplicity_calc.js +39 -50
- package/dist/helpers/multiplicity_complat.js +21 -47
- package/dist/helpers/multiplicity_manual.js +49 -55
- package/dist/helpers/multiplicity_verify_basic.js +108 -111
- package/dist/helpers/shift.js +15 -23
- package/dist/helpers/zoom.js +7 -11
- package/dist/index.js +680 -630
- package/dist/layer_content.js +40 -43
- package/dist/layer_init.js +162 -184
- package/dist/layer_prism.js +38 -41
- package/dist/reducers/index.js +2 -3
- package/dist/reducers/reducer_curve.js +35 -26
- package/dist/reducers/reducer_edit_peak.js +122 -98
- package/dist/reducers/reducer_forecast.js +57 -44
- package/dist/reducers/reducer_integration.js +135 -103
- package/dist/reducers/reducer_jcamp.js +49 -44
- package/dist/reducers/reducer_layout.js +5 -6
- package/dist/reducers/reducer_manager.js +5 -6
- package/dist/reducers/reducer_meta.js +5 -6
- package/dist/reducers/reducer_multiplicity.js +100 -77
- package/dist/reducers/reducer_scan.js +17 -20
- package/dist/reducers/reducer_shift.js +115 -70
- package/dist/reducers/reducer_simulation.js +7 -8
- package/dist/reducers/reducer_status.js +5 -6
- package/dist/reducers/reducer_submit.js +12 -15
- package/dist/reducers/reducer_threshold.js +5 -6
- package/dist/reducers/reducer_ui.js +5 -6
- package/dist/reducers/reducer_voltammetry.js +156 -96
- package/dist/reducers/reducer_wavelength.js +5 -6
- package/dist/reducers/undo_redo_config.js +3 -5
- package/dist/sagas/index.js +2 -15
- package/dist/sagas/saga_edit_peak.js +54 -68
- package/dist/sagas/saga_manager.js +86 -130
- package/dist/sagas/saga_meta.js +25 -31
- package/dist/sagas/saga_multi_entities.js +40 -103
- package/dist/sagas/saga_multiplicity.js +336 -406
- package/dist/sagas/saga_ui.js +296 -475
- package/dist/setupTests.js +8 -0
- package/dist/third_party/jAnalyzer.js +66 -67
- package/dist/third_party/peakInterval.js +34 -34
- package/package.json +14 -14
- package/dist/components/cmd_bar/03_peak_bk.js +0 -139
- package/dist/components/cmd_bar/04_integration_bk.js +0 -180
- package/dist/components/cmd_bar/05_multiplicity_bk.js +0 -131
- package/dist/components/cmd_bar/r01_layout_bk.js +0 -186
- package/dist/components/cmd_bar/r06_predict_btn_bk.js +0 -220
- package/dist/components/d3_line/line_focus_bk.js +0 -825
- package/dist/components/d3_multi/index_bk.js +0 -210
- package/dist/components/d3_multi/multi_focus_bk.js +0 -533
- package/dist/components/panel/compare_bk.js +0 -256
- package/dist/components/panel/cyclic_voltamery_data_bk.js +0 -292
- package/dist/components/panel/index_bk.js +0 -178
- package/dist/components/panel/info_bk.js +0 -235
- package/dist/components/panel/multiplicity_bk.js +0 -280
- package/dist/helpers/carbonFeatures_bk.js +0 -45
- package/dist/helpers/cfg_bk.js +0 -80
- package/dist/helpers/chem_bk.js +0 -787
- package/dist/helpers/compass_bk.js +0 -149
- package/dist/helpers/converter_bk.js +0 -96
- package/dist/helpers/extractPeaksEdit_bk.js +0 -53
- package/dist/helpers/format_bk.js +0 -497
- package/dist/index_bk.js +0 -640
- package/dist/layer_content_bk.js +0 -105
- package/dist/layer_init_bk.js +0 -235
- package/dist/layer_prism_bk.js +0 -133
- package/dist/reducers/reducer_edit_peak_bk.js +0 -108
- package/dist/reducers/reducer_integration_bk.js +0 -134
- package/dist/reducers/reducer_jcamp_bk.js +0 -71
- package/dist/reducers/reducer_multiplicity_bk.js +0 -126
- package/dist/reducers/reducer_shift_bk.js +0 -88
- package/dist/reducers/reducer_voltammetry_bk.js +0 -287
- package/dist/sagas/saga_edit_peak_bk.js +0 -73
- package/dist/sagas/saga_multi_entities_bk.js +0 -106
- package/dist/sagas/saga_multiplicity_bk.js +0 -351
- package/dist/sagas/saga_ui_bk.js +0 -453
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _enzyme = _interopRequireDefault(require("enzyme"));
|
|
5
|
+
var _enzymeAdapterReact = _interopRequireDefault(require("@wojtekmaj/enzyme-adapter-react-17"));
|
|
6
|
+
_enzyme.default.configure({
|
|
7
|
+
adapter: new _enzymeAdapterReact.default()
|
|
8
|
+
});
|
|
@@ -11,18 +11,18 @@ exports.default = void 0;
|
|
|
11
11
|
* This library implements the J analyser described by Cobas et al in the paper:
|
|
12
12
|
* A two-stage approach to automatic determination of 1H NMR coupling constants
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _default = {
|
|
14
|
+
const patterns = ['s', 'd', 't', 'q', 'quint', 'h', 'sept', 'o', 'n'];
|
|
15
|
+
let symRatio = 1.5;
|
|
16
|
+
let maxErrorIter1 = 2.5; // Hz
|
|
17
|
+
let maxErrorIter2 = 1; // Hz
|
|
18
|
+
var _default = exports.default = {
|
|
19
19
|
/**
|
|
20
20
|
* The compilation process implements at the first stage a normalization procedure described by Golotvin et al.
|
|
21
21
|
* embedding in peak-component-counting method described by Hoyes et al.
|
|
22
22
|
* @param {object} signal
|
|
23
23
|
* @private
|
|
24
24
|
*/
|
|
25
|
-
compilePattern: function
|
|
25
|
+
compilePattern: function (signal) {
|
|
26
26
|
signal.multiplicity = 'm';
|
|
27
27
|
// 1.1 symmetrize
|
|
28
28
|
// It will add a set of peaks(signal.peaksComp) to the signal that will be used during
|
|
@@ -33,15 +33,15 @@ var _default = {
|
|
|
33
33
|
if (signal.symRank >= 0.95 && signal.peaksComp.length < 32) {
|
|
34
34
|
signal.asymmetric = false;
|
|
35
35
|
var i, j, n, P1, n2, maxFlagged;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
let k = 1;
|
|
37
|
+
let Jc = [];
|
|
38
38
|
|
|
39
39
|
// Loop over the possible number of coupling contributing to the multiplet
|
|
40
40
|
for (n = 0; n < 9; n++) {
|
|
41
41
|
// 1.2 Normalize. It makes a deep copy of the peaks before to modify them.
|
|
42
|
-
|
|
42
|
+
let peaks = normalize(signal, n);
|
|
43
43
|
// signal.peaksCompX = peaks;
|
|
44
|
-
|
|
44
|
+
let validPattern = false; // It will change to true, when we find the good patter
|
|
45
45
|
// Lets check if the signal could be a singulet.
|
|
46
46
|
if (peaks.length === 1 && n === 0) {
|
|
47
47
|
validPattern = true;
|
|
@@ -51,16 +51,16 @@ var _default = {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
// 1.3 Establish a range for the Heights Hi [peaks.intensity*0.85,peaks.intensity*1.15];
|
|
54
|
-
|
|
54
|
+
let ranges = getRanges(peaks);
|
|
55
55
|
n2 = Math.pow(2, n);
|
|
56
56
|
|
|
57
57
|
// 1.4 Find a combination of integer heights Hi, one from each Si, that sums to 2^n.
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
let heights = null;
|
|
59
|
+
let counter = 1;
|
|
60
60
|
while (!validPattern && (heights = getNextCombination(ranges, n2)) !== null && counter < 400) {
|
|
61
61
|
// 2.1 Number the components of the multiplet consecutively from 1 to 2n,
|
|
62
62
|
// starting at peak 1
|
|
63
|
-
|
|
63
|
+
let numbering = new Array(heights.length);
|
|
64
64
|
k = 1;
|
|
65
65
|
for (i = 0; i < heights.length; i++) {
|
|
66
66
|
numbering[i] = new Array(heights[i]);
|
|
@@ -76,7 +76,7 @@ var _default = {
|
|
|
76
76
|
numbering[0].splice(0, 1); // Flagged
|
|
77
77
|
numbering[1].splice(0, 1); // Flagged
|
|
78
78
|
k = 1;
|
|
79
|
-
|
|
79
|
+
let nFlagged = 2;
|
|
80
80
|
maxFlagged = Math.pow(2, n) - 1;
|
|
81
81
|
while (Jc.length < n && nFlagged < maxFlagged && k < peaks.length) {
|
|
82
82
|
counter += 1;
|
|
@@ -92,9 +92,9 @@ var _default = {
|
|
|
92
92
|
numbering[k].splice(0, 1); // Flageed
|
|
93
93
|
nFlagged++;
|
|
94
94
|
// Flag the other components of the multiplet
|
|
95
|
-
for (
|
|
95
|
+
for (let u = 2; u <= j; u++) {
|
|
96
96
|
// TODO improve those loops
|
|
97
|
-
|
|
97
|
+
let jSum = 0;
|
|
98
98
|
for (i = 0; i < u; i++) {
|
|
99
99
|
jSum += Jc[i];
|
|
100
100
|
}
|
|
@@ -110,7 +110,7 @@ var _default = {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
// Calculate the ideal patter by using the extracted j-couplings
|
|
113
|
-
|
|
113
|
+
let pattern = idealPattern(Jc);
|
|
114
114
|
// Compare the ideal pattern with the proposed intensities.
|
|
115
115
|
// All the intensities have to match to accept the multiplet
|
|
116
116
|
validPattern = true;
|
|
@@ -138,11 +138,10 @@ var _default = {
|
|
|
138
138
|
* @param {*} signal
|
|
139
139
|
* @param {*} Jc
|
|
140
140
|
*/
|
|
141
|
-
exports.default = _default;
|
|
142
141
|
function updateSignal(signal, Jc) {
|
|
143
142
|
// Update the limits of the signal
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
let peaks = signal.peaksComp; // Always in Hz
|
|
144
|
+
let nbPeaks = peaks.length;
|
|
146
145
|
signal.startX = peaks[0].x / signal.observe - peaks[0].width;
|
|
147
146
|
signal.stopX = peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width;
|
|
148
147
|
|
|
@@ -168,11 +167,11 @@ function updateSignal(signal, Jc) {
|
|
|
168
167
|
* @private
|
|
169
168
|
*/
|
|
170
169
|
function abstractPattern(signal, Jc) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
170
|
+
let tol = 0.05;
|
|
171
|
+
let i;
|
|
172
|
+
let pattern = '';
|
|
173
|
+
let cont = 1;
|
|
174
|
+
let newNmrJs = [];
|
|
176
175
|
if (Jc && Jc.length > 0) {
|
|
177
176
|
Jc.sort(function (a, b) {
|
|
178
177
|
return b - a;
|
|
@@ -213,9 +212,9 @@ function abstractPattern(signal, Jc) {
|
|
|
213
212
|
* @private
|
|
214
213
|
*/
|
|
215
214
|
function idealPattern(Jc) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
215
|
+
let hsum = Math.pow(2, Jc.length);
|
|
216
|
+
let i, j;
|
|
217
|
+
let pattern = [{
|
|
219
218
|
x: 0,
|
|
220
219
|
intensity: hsum
|
|
221
220
|
}];
|
|
@@ -251,10 +250,10 @@ function idealPattern(Jc) {
|
|
|
251
250
|
* @private
|
|
252
251
|
*/
|
|
253
252
|
function getNextCombination(ranges, value) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
253
|
+
let half = Math.ceil(ranges.values.length * 0.5);
|
|
254
|
+
let lng = ranges.values.length;
|
|
255
|
+
let sum = 0;
|
|
256
|
+
let i, ok;
|
|
258
257
|
while (sum !== value) {
|
|
259
258
|
// Update the indexes to point at the next possible combination
|
|
260
259
|
ok = false;
|
|
@@ -286,7 +285,7 @@ function getNextCombination(ranges, value) {
|
|
|
286
285
|
}
|
|
287
286
|
// If the sum is equal to the expected value, fill the array to return
|
|
288
287
|
if (sum === value) {
|
|
289
|
-
|
|
288
|
+
let heights = new Array(lng);
|
|
290
289
|
for (i = 0; i < half; i++) {
|
|
291
290
|
heights[i] = ranges.values[i][ranges.currentIndex[i]];
|
|
292
291
|
heights[lng - i - 1] = ranges.values[i][ranges.currentIndex[i]];
|
|
@@ -304,18 +303,18 @@ function getNextCombination(ranges, value) {
|
|
|
304
303
|
* @private
|
|
305
304
|
*/
|
|
306
305
|
function getRanges(peaks) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
306
|
+
let ranges = new Array(peaks.length);
|
|
307
|
+
let currentIndex = new Array(peaks.length);
|
|
308
|
+
let min, max;
|
|
310
309
|
ranges[0] = [1];
|
|
311
310
|
ranges[peaks.length - 1] = [1];
|
|
312
311
|
currentIndex[0] = -1;
|
|
313
312
|
currentIndex[peaks.length - 1] = 0;
|
|
314
|
-
for (
|
|
313
|
+
for (let i = 1; i < peaks.length - 1; i++) {
|
|
315
314
|
min = Math.round(peaks[i].intensity * 0.85);
|
|
316
315
|
max = Math.round(peaks[i].intensity * 1.15);
|
|
317
316
|
ranges[i] = [];
|
|
318
|
-
for (
|
|
317
|
+
for (let j = min; j <= max; j++) {
|
|
319
318
|
ranges[i].push(j);
|
|
320
319
|
}
|
|
321
320
|
currentIndex[i] = 0;
|
|
@@ -336,12 +335,12 @@ function getRanges(peaks) {
|
|
|
336
335
|
* @private
|
|
337
336
|
*/
|
|
338
337
|
function symmetrizeChoiseBest(signal, maxError, iteration) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
338
|
+
let symRank1 = symmetrize(signal, maxError, iteration);
|
|
339
|
+
let tmpPeaks = signal.peaksComp;
|
|
340
|
+
let tmpMask = signal.mask;
|
|
341
|
+
let cs = signal.delta1;
|
|
343
342
|
signal.delta1 = (signal.peaks[0].x + signal.peaks[signal.peaks.length - 1].x) / 2;
|
|
344
|
-
|
|
343
|
+
let symRank2 = symmetrize(signal, maxError, iteration);
|
|
345
344
|
if (signal.peaksComp.length > tmpPeaks.length) {
|
|
346
345
|
return symRank2;
|
|
347
346
|
} else {
|
|
@@ -363,8 +362,8 @@ function symmetrizeChoiseBest(signal, maxError, iteration) {
|
|
|
363
362
|
*/
|
|
364
363
|
function symmetrize(signal, maxError, iteration) {
|
|
365
364
|
// Before to symmetrize we need to keep only the peaks that possibly conforms the multiplete
|
|
366
|
-
|
|
367
|
-
|
|
365
|
+
let max, min, avg, ratio, avgWidth, i;
|
|
366
|
+
let peaks = new Array(signal.peaks.length);
|
|
368
367
|
// Make a deep copy of the peaks and convert PPM ot HZ
|
|
369
368
|
for (i = 0; i < peaks.length; i++) {
|
|
370
369
|
peaks[i] = {
|
|
@@ -385,15 +384,15 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
385
384
|
}
|
|
386
385
|
}
|
|
387
386
|
signal.peaksComp = peaks;
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
let nbPeaks = peaks.length;
|
|
388
|
+
let mask = new Array(nbPeaks);
|
|
390
389
|
signal.mask = mask;
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
390
|
+
let left = 0;
|
|
391
|
+
let right = peaks.length - 1;
|
|
392
|
+
let cs = signal.delta1 * signal.observe;
|
|
393
|
+
let middle = [(peaks[0].x + peaks[nbPeaks - 1].x) / 2, 1];
|
|
395
394
|
maxError = error(Math.abs(cs - middle[0]));
|
|
396
|
-
|
|
395
|
+
let heightSum = 0;
|
|
397
396
|
// We try to symmetrize the extreme peaks. We consider as candidates for symmetricing those which have
|
|
398
397
|
// ratio smaller than 3
|
|
399
398
|
for (i = 0; i < nbPeaks; i++) {
|
|
@@ -420,8 +419,8 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
420
419
|
left--;
|
|
421
420
|
}
|
|
422
421
|
} else {
|
|
423
|
-
|
|
424
|
-
|
|
422
|
+
let diffL = Math.abs(peaks[left].x - cs);
|
|
423
|
+
let diffR = Math.abs(peaks[right].x - cs);
|
|
425
424
|
if (Math.abs(diffL - diffR) < maxError) {
|
|
426
425
|
avg = Math.min(peaks[left].intensity, peaks[right].intensity);
|
|
427
426
|
avgWidth = Math.min(peaks[left].width, peaks[right].width);
|
|
@@ -463,8 +462,8 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
463
462
|
}
|
|
464
463
|
signal.delta1 = cs / signal.observe;
|
|
465
464
|
// Now, the peak should be symmetric in heights, but we need to know if it is symmetric in x
|
|
466
|
-
|
|
467
|
-
|
|
465
|
+
let symFactor = 0;
|
|
466
|
+
let weight = 0;
|
|
468
467
|
if (peaks.length > 1) {
|
|
469
468
|
for (i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {
|
|
470
469
|
symFactor += (3 + Math.min(Math.abs(peaks[i].x - cs), Math.abs(peaks[peaks.length - 1 - i].x - cs))) / (3 + Math.max(Math.abs(peaks[i].x - cs), Math.abs(peaks[peaks.length - 1 - i].x - cs))) * peaks[i].intensity;
|
|
@@ -476,7 +475,7 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
476
475
|
symFactor = 1;
|
|
477
476
|
}
|
|
478
477
|
}
|
|
479
|
-
|
|
478
|
+
let newSumHeights = 0;
|
|
480
479
|
for (i = 0; i < peaks.length; i++) {
|
|
481
480
|
newSumHeights += peaks[i].intensity;
|
|
482
481
|
}
|
|
@@ -487,7 +486,7 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
487
486
|
} else {
|
|
488
487
|
// Center the given pattern at cs and symmetrize x
|
|
489
488
|
if (peaks.length > 1) {
|
|
490
|
-
|
|
489
|
+
let dxi;
|
|
491
490
|
for (i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {
|
|
492
491
|
dxi = (peaks[i].x - peaks[peaks.length - 1 - i].x) / 2.0;
|
|
493
492
|
peaks[i].x = cs + dxi;
|
|
@@ -504,7 +503,7 @@ function symmetrize(signal, maxError, iteration) {
|
|
|
504
503
|
* @private
|
|
505
504
|
*/
|
|
506
505
|
function error(value) {
|
|
507
|
-
|
|
506
|
+
let maxError = value * 2.5;
|
|
508
507
|
if (maxError < 0.75) {
|
|
509
508
|
maxError = 0.75;
|
|
510
509
|
}
|
|
@@ -523,15 +522,15 @@ function error(value) {
|
|
|
523
522
|
*/
|
|
524
523
|
function normalize(signal, n) {
|
|
525
524
|
// Perhaps this is slow
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
525
|
+
let peaks = JSON.parse(JSON.stringify(signal.peaksComp));
|
|
526
|
+
let norm = 0;
|
|
527
|
+
let norm2 = 0;
|
|
529
528
|
for (var i = 0; i < peaks.length; i++) {
|
|
530
529
|
norm += peaks[i].intensity;
|
|
531
530
|
}
|
|
532
531
|
norm = Math.pow(2, n) / norm;
|
|
533
532
|
signal.mask2 = JSON.parse(JSON.stringify(signal.mask));
|
|
534
|
-
|
|
533
|
+
let index = signal.mask2.length - 1;
|
|
535
534
|
for (i = peaks.length - 1; i >= 0; i--) {
|
|
536
535
|
peaks[i].intensity *= norm;
|
|
537
536
|
while (index >= 0 && signal.mask2[index] === false) {
|
|
@@ -560,9 +559,9 @@ function normalize(signal, n) {
|
|
|
560
559
|
* @return {number}
|
|
561
560
|
*/
|
|
562
561
|
function chemicalShift(peaks, mask) {
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
562
|
+
let sum = 0;
|
|
563
|
+
let cs = 0;
|
|
564
|
+
let i, area;
|
|
566
565
|
if (mask) {
|
|
567
566
|
for (i = 0; i < peaks.length; i++) {
|
|
568
567
|
if (mask[i] === true) {
|
|
@@ -10,7 +10,7 @@ var _mlSavitzkyGolayGeneralized = _interopRequireDefault(require("ml-savitzky-go
|
|
|
10
10
|
|
|
11
11
|
/* eslint-disable no-plusplus, operator-linebreak */
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
const options = {
|
|
14
14
|
sgOptions: {
|
|
15
15
|
windowSize: 9,
|
|
16
16
|
polynomial: 3
|
|
@@ -24,28 +24,28 @@ var options = {
|
|
|
24
24
|
boundaries: false,
|
|
25
25
|
derivativeThreshold: -1
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const getPeakIntervals = entity => {
|
|
28
|
+
const data = entity.spectra[0].data[0];
|
|
29
|
+
const X = data.x;
|
|
30
|
+
const dX = X[1] - X[0];
|
|
31
|
+
const Y = (0, _mlSavitzkyGolayGeneralized.default)(data.y, data.x, {
|
|
32
32
|
windowSize: options.sgOptions.windowSize,
|
|
33
33
|
polynomial: options.sgOptions.polynomial,
|
|
34
34
|
derivative: 0
|
|
35
35
|
});
|
|
36
|
-
|
|
36
|
+
const dY = (0, _mlSavitzkyGolayGeneralized.default)(data.y, data.x, {
|
|
37
37
|
windowSize: options.sgOptions.windowSize,
|
|
38
38
|
polynomial: options.sgOptions.polynomial,
|
|
39
39
|
derivative: 1
|
|
40
40
|
});
|
|
41
|
-
|
|
41
|
+
const ddY = (0, _mlSavitzkyGolayGeneralized.default)(data.y, data.x, {
|
|
42
42
|
windowSize: options.sgOptions.windowSize,
|
|
43
43
|
polynomial: options.sgOptions.polynomial,
|
|
44
44
|
derivative: 2
|
|
45
45
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
for (
|
|
46
|
+
let maxDdy = 0;
|
|
47
|
+
let maxY = 0;
|
|
48
|
+
for (let i = 0; i < Y.length; i++) {
|
|
49
49
|
if (Math.abs(ddY[i]) > maxDdy) {
|
|
50
50
|
maxDdy = Math.abs(ddY[i]);
|
|
51
51
|
}
|
|
@@ -53,24 +53,24 @@ var getPeakIntervals = function getPeakIntervals(entity) {
|
|
|
53
53
|
maxY = Math.abs(Y[i]);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
for (
|
|
56
|
+
let lastMax = null;
|
|
57
|
+
let lastMin = null;
|
|
58
|
+
const minddY = new Array(Y.length - 2);
|
|
59
|
+
const intervalL = new Array(Y.length);
|
|
60
|
+
const intervalR = new Array(Y.length);
|
|
61
|
+
const broadMask = new Array(Y.length - 2);
|
|
62
|
+
let minddYLen = 0;
|
|
63
|
+
let intervalLLen = 0;
|
|
64
|
+
let intervalRLen = 0;
|
|
65
|
+
let broadMaskLen = 0;
|
|
66
|
+
for (let i = 1; i < Y.length - 1; ++i) {
|
|
67
67
|
// filter based on derivativeThreshold
|
|
68
|
-
if (Math.abs(dY[
|
|
68
|
+
if (Math.abs(dY[i]) > options.derivativeThreshold) {
|
|
69
69
|
// Minimum in first derivative
|
|
70
|
-
if (dY[
|
|
70
|
+
if (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1] || dY[i] <= dY[i - 1] && dY[i] < dY[i + 1]) {
|
|
71
71
|
lastMin = {
|
|
72
|
-
x: X[
|
|
73
|
-
index:
|
|
72
|
+
x: X[i],
|
|
73
|
+
index: i
|
|
74
74
|
};
|
|
75
75
|
if (dX > 0 && lastMax !== null) {
|
|
76
76
|
intervalL[intervalLLen++] = lastMax;
|
|
@@ -79,10 +79,10 @@ var getPeakIntervals = function getPeakIntervals(entity) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
// Maximum in first derivative
|
|
82
|
-
if (dY[
|
|
82
|
+
if (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1] || dY[i] > dY[i - 1] && dY[i] >= dY[i + 1]) {
|
|
83
83
|
lastMax = {
|
|
84
|
-
x: X[
|
|
85
|
-
index:
|
|
84
|
+
x: X[i],
|
|
85
|
+
index: i
|
|
86
86
|
};
|
|
87
87
|
if (dX < 0 && lastMin !== null) {
|
|
88
88
|
intervalL[intervalLLen++] = lastMax;
|
|
@@ -91,15 +91,15 @@ var getPeakIntervals = function getPeakIntervals(entity) {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
// Minimum in second derivative
|
|
94
|
-
if (ddY[
|
|
94
|
+
if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {
|
|
95
95
|
// TODO should we change this to have 3 arrays ? Huge overhead creating arrays
|
|
96
|
-
minddY[minddYLen++] =
|
|
97
|
-
broadMask[broadMaskLen++] = Math.abs(ddY[
|
|
96
|
+
minddY[minddYLen++] = i; // ( [X[i], Y[i], i] );
|
|
97
|
+
broadMask[broadMaskLen++] = Math.abs(ddY[i]) <= options.broadRatio * maxDdy;
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
return {
|
|
101
|
-
intervalL
|
|
102
|
-
intervalR
|
|
101
|
+
intervalL,
|
|
102
|
+
intervalR
|
|
103
103
|
};
|
|
104
104
|
};
|
|
105
105
|
exports.getPeakIntervals = getPeakIntervals;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@complat/react-spectra-editor",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc20.patch-1",
|
|
4
4
|
"description": "An editor to View and Edit Chemical Spectra data (NMR, IR and MS, CV, UIVIS, XRD).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@babel/preset-env": "^7.21.5",
|
|
12
12
|
"@babel/preset-react": "^7.18.6",
|
|
13
|
-
"@complat/react-svg-file-zoom-pan": "1.
|
|
13
|
+
"@complat/react-svg-file-zoom-pan": "1.1.2",
|
|
14
14
|
"@material-ui/core": "^4.10.0",
|
|
15
15
|
"@material-ui/icons": "^4.10.0",
|
|
16
16
|
"@mdi/js": "^4.7.95",
|
|
@@ -22,23 +22,22 @@
|
|
|
22
22
|
"@types/react": "^18.0.34",
|
|
23
23
|
"@types/react-dom": "^18.0.11",
|
|
24
24
|
"babel-plugin-transform-object-rest-spread": "^6.26.0",
|
|
25
|
-
"browserslist": "^4.
|
|
25
|
+
"browserslist": "^4.21.5",
|
|
26
26
|
"classnames": "^2.2.6",
|
|
27
|
-
"d3": "^5.
|
|
28
|
-
"d3-brush": "
|
|
27
|
+
"d3": "^5.16.0",
|
|
28
|
+
"d3-brush": "3.0.0",
|
|
29
29
|
"d3-selection": "^2.0.0",
|
|
30
30
|
"d3-tip": "^0.9.1",
|
|
31
31
|
"jcampconverter": "4.1.0",
|
|
32
32
|
"ml-savitzky-golay-generalized": "1.1.1",
|
|
33
33
|
"prop-types": "^15.7.2",
|
|
34
34
|
"react-dropzone": "^8.0.3",
|
|
35
|
-
"react-quill": "^
|
|
35
|
+
"react-quill": "^2.0.0",
|
|
36
36
|
"react-redux": "^7.2.0",
|
|
37
|
-
"react-svg-file-zoom-pan": "^1.0.5",
|
|
38
37
|
"react-svg-inline": "^2.1.1",
|
|
39
38
|
"redux": "^4.1.1",
|
|
40
39
|
"redux-saga": "^1.1.3",
|
|
41
|
-
"redux-undo": "^1.0
|
|
40
|
+
"redux-undo": "^1.1.0",
|
|
42
41
|
"regenerator-transform": "^0.13.3",
|
|
43
42
|
"reselect": "^4.0.0",
|
|
44
43
|
"typescript": "^5.0.4"
|
|
@@ -62,8 +61,12 @@
|
|
|
62
61
|
"@babel/core": "^7.21.8",
|
|
63
62
|
"@babel/preset-env": "^7.21.5",
|
|
64
63
|
"@babel/preset-react": "^7.18.6",
|
|
65
|
-
"@storybook/react": "
|
|
66
|
-
"
|
|
64
|
+
"@storybook/react": "7.0.7",
|
|
65
|
+
"@types/enzyme": "^3.10.13",
|
|
66
|
+
"@wojtekmaj/enzyme-adapter-react-17": "^0.8.0",
|
|
67
|
+
"babel-loader": "8.2.5",
|
|
68
|
+
"enzyme": "^3.11.0",
|
|
69
|
+
"enzyme-to-json": "^3.6.2",
|
|
67
70
|
"eslint-config-airbnb": "^19.0.4",
|
|
68
71
|
"eslint-plugin-import": "^2.25.0",
|
|
69
72
|
"eslint-plugin-jsx-a11y": "^6.5.1",
|
|
@@ -83,10 +86,7 @@
|
|
|
83
86
|
"README.md"
|
|
84
87
|
],
|
|
85
88
|
"browserslist": [
|
|
86
|
-
"
|
|
87
|
-
"not dead",
|
|
88
|
-
"not ie <= 11",
|
|
89
|
-
"not op_mini all"
|
|
89
|
+
"defaults and supports es6-module"
|
|
90
90
|
],
|
|
91
91
|
"publishConfig": {
|
|
92
92
|
"access": "public"
|
|
@@ -1,139 +0,0 @@
|
|
|
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 _reactRedux = require("react-redux");
|
|
10
|
-
var _redux = require("redux");
|
|
11
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
var _styles = require("@material-ui/core/styles");
|
|
14
|
-
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
15
|
-
var _AddLocationOutlined = _interopRequireDefault(require("@material-ui/icons/AddLocationOutlined"));
|
|
16
|
-
var _ui = require("../../actions/ui");
|
|
17
|
-
var _cfg = _interopRequireDefault(require("../../helpers/cfg"));
|
|
18
|
-
var _common = require("./common");
|
|
19
|
-
var _list_ui = require("../../constants/list_ui");
|
|
20
|
-
var styles = function styles() {
|
|
21
|
-
return Object.assign({}, _common.commonStyle);
|
|
22
|
-
};
|
|
23
|
-
var Peak = function Peak(_ref) {
|
|
24
|
-
var classes = _ref.classes,
|
|
25
|
-
setUiSweepTypeAct = _ref.setUiSweepTypeAct,
|
|
26
|
-
isFocusAddPeakSt = _ref.isFocusAddPeakSt,
|
|
27
|
-
disableAddPeakSt = _ref.disableAddPeakSt,
|
|
28
|
-
isFocusRmPeakSt = _ref.isFocusRmPeakSt,
|
|
29
|
-
disableRmPeakSt = _ref.disableRmPeakSt,
|
|
30
|
-
isFocusSetRefSt = _ref.isFocusSetRefSt,
|
|
31
|
-
disableSetRefSt = _ref.disableSetRefSt,
|
|
32
|
-
isHandleMaxAndMinPeaksSt = _ref.isHandleMaxAndMinPeaksSt,
|
|
33
|
-
cyclicVotaSt = _ref.cyclicVotaSt,
|
|
34
|
-
curveSt = _ref.curveSt;
|
|
35
|
-
var onSweepPeakAdd = function onSweepPeakAdd() {
|
|
36
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.PEAK_ADD);
|
|
37
|
-
};
|
|
38
|
-
var onSweepPeakDELETE = function onSweepPeakDELETE() {
|
|
39
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.PEAK_DELETE);
|
|
40
|
-
};
|
|
41
|
-
var onSweepAnchorShift = function onSweepAnchorShift() {
|
|
42
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.ANCHOR_SHIFT);
|
|
43
|
-
};
|
|
44
|
-
if (isHandleMaxAndMinPeaksSt) {
|
|
45
|
-
var curveIdx = curveSt.curveIdx;
|
|
46
|
-
var spectraList = cyclicVotaSt.spectraList;
|
|
47
|
-
var spectra = spectraList[curveIdx];
|
|
48
|
-
if (spectra) {
|
|
49
|
-
var isWorkMaxPeak = spectra.isWorkMaxPeak;
|
|
50
|
-
if (isWorkMaxPeak) {
|
|
51
|
-
onSweepPeakAdd = function onSweepPeakAdd() {
|
|
52
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_ADD_MAX_PEAK, curveIdx);
|
|
53
|
-
};
|
|
54
|
-
onSweepPeakDELETE = function onSweepPeakDELETE() {
|
|
55
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_RM_MAX_PEAK, curveIdx);
|
|
56
|
-
};
|
|
57
|
-
} else {
|
|
58
|
-
onSweepPeakAdd = function onSweepPeakAdd() {
|
|
59
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_ADD_MIN_PEAK, curveIdx);
|
|
60
|
-
};
|
|
61
|
-
onSweepPeakDELETE = function onSweepPeakDELETE() {
|
|
62
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_RM_MIN_PEAK, curveIdx);
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
onSweepAnchorShift = function onSweepAnchorShift() {
|
|
66
|
-
return setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_SET_REF, curveIdx);
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return /*#__PURE__*/_react.default.createElement("span", {
|
|
71
|
-
className: classes.group
|
|
72
|
-
}, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
73
|
-
title: /*#__PURE__*/_react.default.createElement("span", {
|
|
74
|
-
className: "txt-sv-tp"
|
|
75
|
-
}, "Add Peak")
|
|
76
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
|
|
77
|
-
className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddPeakSt, classes), 'btn-sv-bar-addpeak'),
|
|
78
|
-
disabled: disableAddPeakSt,
|
|
79
|
-
onClick: onSweepPeakAdd
|
|
80
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
81
|
-
className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-addpeak')
|
|
82
|
-
}, "P+")))), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
83
|
-
title: /*#__PURE__*/_react.default.createElement("span", {
|
|
84
|
-
className: "txt-sv-tp"
|
|
85
|
-
}, "Remove Peak")
|
|
86
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
|
|
87
|
-
className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmPeakSt, classes), 'btn-sv-bar-rmpeak'),
|
|
88
|
-
disabled: disableRmPeakSt,
|
|
89
|
-
onClick: onSweepPeakDELETE
|
|
90
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
91
|
-
className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-rmpeak')
|
|
92
|
-
}, "P-")))), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
93
|
-
title: /*#__PURE__*/_react.default.createElement("span", {
|
|
94
|
-
className: "txt-sv-tp"
|
|
95
|
-
}, "Set Reference")
|
|
96
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
|
|
97
|
-
className: (0, _classnames.default)((0, _common.focusStyle)(isFocusSetRefSt, classes), 'btn-sv-bar-setref'),
|
|
98
|
-
disabled: disableSetRefSt,
|
|
99
|
-
onClick: onSweepAnchorShift
|
|
100
|
-
}, /*#__PURE__*/_react.default.createElement(_AddLocationOutlined.default, {
|
|
101
|
-
className: classes.icon
|
|
102
|
-
})))));
|
|
103
|
-
};
|
|
104
|
-
var mapStateToProps = function mapStateToProps(state, _) {
|
|
105
|
-
return (
|
|
106
|
-
// eslint-disable-line
|
|
107
|
-
{
|
|
108
|
-
isFocusAddPeakSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.PEAK_ADD || state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_ADD_MAX_PEAK || state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_ADD_MIN_PEAK,
|
|
109
|
-
disableAddPeakSt: _cfg.default.btnCmdAddPeak(state.layout),
|
|
110
|
-
isFocusRmPeakSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.PEAK_DELETE || state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_RM_MAX_PEAK || state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.CYCLIC_VOLTA_RM_MIN_PEAK,
|
|
111
|
-
disableRmPeakSt: _cfg.default.btnCmdRmPeak(state.layout),
|
|
112
|
-
isFocusSetRefSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.ANCHOR_SHIFT,
|
|
113
|
-
disableSetRefSt: _cfg.default.btnCmdSetRef(state.layout),
|
|
114
|
-
isHandleMaxAndMinPeaksSt: !_cfg.default.hidePanelCyclicVolta(state.layout),
|
|
115
|
-
cyclicVotaSt: state.cyclicvolta,
|
|
116
|
-
curveSt: state.curve
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
};
|
|
120
|
-
var mapDispatchToProps = function mapDispatchToProps(dispatch) {
|
|
121
|
-
return (0, _redux.bindActionCreators)({
|
|
122
|
-
setUiSweepTypeAct: _ui.setUiSweepType
|
|
123
|
-
}, dispatch);
|
|
124
|
-
};
|
|
125
|
-
Peak.propTypes = {
|
|
126
|
-
classes: _propTypes.default.object.isRequired,
|
|
127
|
-
isFocusAddPeakSt: _propTypes.default.bool.isRequired,
|
|
128
|
-
disableAddPeakSt: _propTypes.default.bool.isRequired,
|
|
129
|
-
isFocusRmPeakSt: _propTypes.default.bool.isRequired,
|
|
130
|
-
disableRmPeakSt: _propTypes.default.bool.isRequired,
|
|
131
|
-
isFocusSetRefSt: _propTypes.default.bool.isRequired,
|
|
132
|
-
disableSetRefSt: _propTypes.default.bool.isRequired,
|
|
133
|
-
setUiSweepTypeAct: _propTypes.default.func.isRequired,
|
|
134
|
-
isHandleMaxAndMinPeaksSt: _propTypes.default.bool.isRequired,
|
|
135
|
-
cyclicVotaSt: _propTypes.default.object.isRequired,
|
|
136
|
-
curveSt: _propTypes.default.object.isRequired
|
|
137
|
-
};
|
|
138
|
-
var _default = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), (0, _styles.withStyles)(styles))(Peak);
|
|
139
|
-
exports.default = _default;
|