Skip to content

Commit 85e4352

Browse files
committed
feat: add onset-offset labelling and analysis panels to TGA layout
1 parent b8cb082 commit 85e4352

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+107800
-207
lines changed

dist/actions/offset.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.sweepOffset = exports.rmOneOffset = exports.clearOffsetAll = void 0;
7+
var _action_type = require("../constants/action_type");
8+
const sweepOffset = payload => ({
9+
type: _action_type.OFFSET.SWEEP,
10+
payload
11+
});
12+
exports.sweepOffset = sweepOffset;
13+
const clearOffsetAll = payload => ({
14+
type: _action_type.OFFSET.CLEAR_ALL,
15+
payload
16+
});
17+
exports.clearOffsetAll = clearOffsetAll;
18+
const rmOneOffset = payload => ({
19+
type: _action_type.OFFSET.RM_ONE,
20+
payload
21+
});
22+
exports.rmOneOffset = rmOneOffset;
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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 _withStyles = _interopRequireDefault(require("@mui/styles/withStyles"));
14+
var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
15+
var _offset = require("../../actions/offset");
16+
var _ui = require("../../actions/ui");
17+
var _list_ui = require("../../constants/list_ui");
18+
var _cfg = _interopRequireDefault(require("../../helpers/cfg"));
19+
var _tri_btn = _interopRequireDefault(require("./tri_btn"));
20+
var _common = require("./common");
21+
/* eslint-disable import/no-extraneous-dependencies */
22+
/* eslint-disable react/function-component-definition, react/no-unused-prop-types, */
23+
24+
const styles = () => ({
25+
field: {
26+
width: 80
27+
},
28+
txtIcon: {},
29+
..._common.commonStyle
30+
});
31+
const Offset = _ref => {
32+
let {
33+
classes,
34+
isDisableSt,
35+
isFocusAddOffsetSt,
36+
isFocusRmOffsetSt,
37+
setUiSweepTypeAct,
38+
clearOffsetAllAct,
39+
curveSt,
40+
// eslint-disable-next-line no-unused-vars
41+
offsetSt
42+
} = _ref;
43+
const onSweepOffsetAdd = () => setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.OFFSET_ADD);
44+
const onSweepOffsetRm = () => setUiSweepTypeAct(_list_ui.LIST_UI_SWEEP_TYPE.OFFSET_RM);
45+
const {
46+
curveIdx
47+
} = curveSt;
48+
const onClearAll = () => clearOffsetAllAct({
49+
curveIdx
50+
});
51+
return /*#__PURE__*/_react.default.createElement("span", {
52+
className: classes.group
53+
}, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
54+
title: /*#__PURE__*/_react.default.createElement("span", {
55+
className: "txt-sv-tp"
56+
}, "Add On- and Offsets")
57+
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
58+
className: (0, _classnames.default)((0, _common.focusStyle)(isFocusAddOffsetSt, classes)),
59+
disabled: isDisableSt,
60+
onClick: onSweepOffsetAdd
61+
}, /*#__PURE__*/_react.default.createElement("span", {
62+
className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-addpeak')
63+
}, "O+")))), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
64+
title: /*#__PURE__*/_react.default.createElement("span", {
65+
className: "txt-sv-tp"
66+
}, "Remove On- and Offsets")
67+
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
68+
className: (0, _classnames.default)((0, _common.focusStyle)(isFocusRmOffsetSt, classes)),
69+
disabled: isDisableSt,
70+
onClick: onSweepOffsetRm
71+
}, /*#__PURE__*/_react.default.createElement("span", {
72+
className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-addpeak')
73+
}, "O-")))), /*#__PURE__*/_react.default.createElement(_tri_btn.default, {
74+
content: {
75+
tp: 'Clear All On/offsets'
76+
},
77+
cb: onClearAll
78+
}, /*#__PURE__*/_react.default.createElement("span", {
79+
className: (0, _classnames.default)(classes.txt, 'txt-sv-bar-addpeak')
80+
}, "OX")));
81+
};
82+
const mapStateToProps = state => ({
83+
isDisableSt: _cfg.default.btnCmdOffset(state.layout),
84+
isFocusAddOffsetSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.OFFSET_ADD,
85+
isFocusRmOffsetSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.OFFSET_RM,
86+
curveSt: state.curve,
87+
offsetSt: state.offset.present
88+
});
89+
const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
90+
setUiSweepTypeAct: _ui.setUiSweepType,
91+
clearOffsetAllAct: _offset.clearOffsetAll
92+
}, dispatch);
93+
Offset.propTypes = {
94+
classes: _propTypes.default.object.isRequired,
95+
isDisableSt: _propTypes.default.bool.isRequired,
96+
isFocusAddOffsetSt: _propTypes.default.bool.isRequired,
97+
isFocusRmOffsetSt: _propTypes.default.bool.isRequired,
98+
setUiSweepTypeAct: _propTypes.default.func.isRequired,
99+
clearOffsetAllAct: _propTypes.default.func.isRequired,
100+
curveSt: _propTypes.default.object.isRequired,
101+
offsetSt: _propTypes.default.object.isRequired
102+
};
103+
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _withStyles.default)(styles)(Offset));

dist/components/cmd_bar/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ var _r03_threshold = _interopRequireDefault(require("./r03_threshold"));
2222
var _r04_submit = _interopRequireDefault(require("./r04_submit"));
2323
var _r07_wavelength_btn = _interopRequireDefault(require("./r07_wavelength_btn"));
2424
var _pecker = _interopRequireDefault(require("./07_pecker"));
25+
var _offsets = _interopRequireDefault(require("./08_offsets"));
2526
/* eslint-disable prefer-object-spread, function-paren-newline,
2627
react/function-component-definition, react/require-default-props */
2728

@@ -45,7 +46,7 @@ const CmdBar = _ref => {
4546
jcampIdx: jcampIdx
4647
}), /*#__PURE__*/_react.default.createElement(_pecker.default, {
4748
jcampIdx: jcampIdx
48-
}), /*#__PURE__*/_react.default.createElement(_integration.default, null), /*#__PURE__*/_react.default.createElement(_multiplicity.default, null), /*#__PURE__*/_react.default.createElement(_undo_redo.default, null), /*#__PURE__*/_react.default.createElement(_r04_submit.default, {
49+
}), /*#__PURE__*/_react.default.createElement(_integration.default, null), /*#__PURE__*/_react.default.createElement(_multiplicity.default, null), /*#__PURE__*/_react.default.createElement(_offsets.default, null), /*#__PURE__*/_react.default.createElement(_undo_redo.default, null), /*#__PURE__*/_react.default.createElement(_r04_submit.default, {
4950
operations: operations,
5051
feature: feature,
5152
forecast: forecast,

dist/components/cmd_bar/tri_btn.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class TriBtn extends _react.default.Component {
6464
title: title
6565
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_common.MuButton, {
6666
className: (0, _classnames.default)('btn-sv-bar-one'),
67-
disabled: _cfg.default.btnCmdMpy(layoutSt) && _cfg.default.btnCmdIntg(layoutSt),
67+
disabled: _cfg.default.btnCmdMpy(layoutSt) && _cfg.default.btnCmdIntg(layoutSt) && _cfg.default.btnCmdOffset(layoutSt),
6868
onClick: this.onToggle
6969
}, children)));
7070
}
@@ -79,7 +79,7 @@ class TriBtn extends _react.default.Component {
7979
this.onToggle(e);
8080
};
8181
return /*#__PURE__*/_react.default.createElement("span", {
82-
disabled: _cfg.default.btnCmdMpy(layoutSt) && _cfg.default.btnCmdIntg(layoutSt)
82+
disabled: _cfg.default.btnCmdMpy(layoutSt) && _cfg.default.btnCmdIntg(layoutSt) && _cfg.default.btnCmdOffset(layoutSt)
8383
}, /*#__PURE__*/_react.default.createElement("span", {
8484
className: (0, _classnames.default)(classes.txtLabel, 'txt-sv-bar-desc')
8585
}, "Delete ALL?"), /*#__PURE__*/_react.default.createElement(_common.MuButton, {

dist/components/common/draw.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
Object.defineProperty(exports, "__esModule", {
44
value: true
55
});
6-
exports.drawMain = exports.drawLabel = exports.drawDisplay = exports.drawDestroy = exports.drawArrowOnCurve = void 0;
6+
exports.drawMain = exports.drawLabel = exports.drawDisplay = exports.drawDestroySecondaryAxis = exports.drawDestroy = exports.drawArrowOnCurve = void 0;
77
var d3 = _interopRequireWildcard(require("d3"));
88
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
99
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10-
const drawMain = (klass, w, h) => {
11-
d3.select(klass).append('svg').attr('class', 'd3Svg').attr('preserveAspectRatio', 'xMinYMin meet').attr('viewBox', `0 0 ${w} ${h}`);
10+
const drawMain = (klass, w, h, hasSecondaryY) => {
11+
let width = w;
12+
if (hasSecondaryY) {
13+
width = w * 1.04;
14+
}
15+
d3.select(klass).append('svg').attr('class', 'd3Svg').attr('preserveAspectRatio', 'xMinYMin meet').attr('viewBox', `0 0 ${width} ${h}`);
1216
};
1317
exports.drawMain = drawMain;
1418
const drawLabel = (klass, cLabel, xLabel, yLabel) => {
@@ -29,25 +33,24 @@ const drawDisplay = (klass, isHidden) => {
2933
exports.drawDisplay = drawDisplay;
3034
const drawDestroy = klass => d3.select(`${klass} > *`).remove();
3135
exports.drawDestroy = drawDestroy;
36+
const drawDestroySecondaryAxis = klass => {
37+
const secondaryAxisClass = 'y-secondary-axis';
38+
const secondaryLabelClass = 'secondaryYLabel';
39+
d3.select(`${klass} .${secondaryAxisClass}`).remove();
40+
d3.select(`${klass} .${secondaryLabelClass}`).remove();
41+
};
42+
exports.drawDestroySecondaryAxis = drawDestroySecondaryAxis;
3243
const drawArrowOnCurve = (klass, isHidden) => {
33-
if (isHidden) {
44+
const removeMarkers = () => {
3445
d3.select(klass).selectAll('marker').remove();
46+
};
47+
const createArrowMarker = (id, fillColor) => d3.select(klass).selectAll('defs').append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 5).attr('refY', 5).attr('markerWidth', 6).attr('markerHeight', 6).attr('fill', fillColor);
48+
if (isHidden) {
49+
removeMarkers();
3550
} else {
36-
d3.select(klass).selectAll('marker').remove();
37-
const arrowLeft = d3.select(klass).selectAll('defs').append('marker').attr('id', 'arrow-left').attr('viewBox', '0 0 10 10').attr('refX', 5).attr('refY', 5).attr('markerWidth', 6).attr('markerHeight', 6).attr('orient', 'auto').attr('fill', '#00AA0099');
38-
arrowLeft.append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z');
39-
40-
// const arrowRight = d3.select(klass).selectAll('defs')
41-
// .append('marker')
42-
// .attr('id', 'arrow-right')
43-
// .attr('viewBox', '0 0 10 10')
44-
// .attr('refX', 5)
45-
// .attr('refY', 5)
46-
// .attr('markerWidth', 6)
47-
// .attr('markerHeight', 6)
48-
// .attr('orient', 'auto-start-reverse');
49-
// arrowRight.append('path')
50-
// .attr('d', 'M 0 0 L 10 5 L 0 10 z');
51+
removeMarkers();
52+
createArrowMarker('arrow-left', '#00AA0099').attr('orient', 'auto').append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z');
53+
createArrowMarker('arrow-left-black', 'black').attr('orient', 'auto').append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z');
5154
}
5255
};
5356
exports.drawArrowOnCurve = drawArrowOnCurve;

dist/components/d3_line/index.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ class ViewerLine extends _react.default.Component {
6060
isUiNoBrushSt,
6161
isHidden,
6262
wavelength,
63-
resetAllAct
63+
resetAllAct,
64+
offsetSt,
65+
isUiAddOffsetSt
6466
} = this.props;
6567
(0, _draw.drawDestroy)(this.rootKlass);
6668
resetAllAct(feature);
@@ -81,7 +83,9 @@ class ViewerLine extends _react.default.Component {
8183
sweepExtentSt,
8284
isUiAddIntgSt,
8385
isUiNoBrushSt,
84-
wavelength
86+
wavelength,
87+
offsetSt,
88+
isUiAddOffsetSt
8589
});
8690
(0, _draw.drawLabel)(this.rootKlass, cLabel, xLabel, yLabel);
8791
(0, _draw.drawDisplay)(this.rootKlass, isHidden);
@@ -105,7 +109,9 @@ class ViewerLine extends _react.default.Component {
105109
isUiAddIntgSt,
106110
isUiNoBrushSt,
107111
isHidden,
108-
wavelength
112+
wavelength,
113+
offsetSt,
114+
isUiAddOffsetSt
109115
} = this.props;
110116
this.normChange(prevProps);
111117
const filterSeed = seed;
@@ -124,7 +130,9 @@ class ViewerLine extends _react.default.Component {
124130
sweepExtentSt,
125131
isUiAddIntgSt,
126132
isUiNoBrushSt,
127-
wavelength
133+
wavelength,
134+
offsetSt,
135+
isUiAddOffsetSt
128136
});
129137
(0, _draw.drawLabel)(this.rootKlass, cLabel, xLabel, yLabel);
130138
(0, _draw.drawDisplay)(this.rootKlass, isHidden);
@@ -162,7 +170,9 @@ const mapStateToProps = (state, props) => ({
162170
sweepExtentSt: state.ui.sweepExtent,
163171
isUiAddIntgSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.INTEGRATION_ADD,
164172
isUiNoBrushSt: _list_ui.LIST_NON_BRUSH_TYPES.indexOf(state.ui.sweepType) < 0,
165-
wavelength: state.wavelength
173+
wavelength: state.wavelength,
174+
offsetSt: state.offset.present,
175+
isUiAddOffsetSt: state.ui.sweepType === _list_ui.LIST_UI_SWEEP_TYPE.OFFSET_ADD
166176
});
167177
const mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({
168178
resetAllAct: _manager.resetAll,
@@ -196,6 +206,8 @@ ViewerLine.propTypes = {
196206
selectUiSweepAct: _propTypes.default.func.isRequired,
197207
scrollUiWheelAct: _propTypes.default.func.isRequired,
198208
isHidden: _propTypes.default.bool.isRequired,
199-
wavelength: _propTypes.default.object.isRequired
209+
wavelength: _propTypes.default.object.isRequired,
210+
offsetSt: _propTypes.default.object.isRequired,
211+
isUiAddOffsetSt: _propTypes.default.bool.isRequired
200212
};
201213
var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ViewerLine);

0 commit comments

Comments
 (0)