Skip to content

Commit 8f134c5

Browse files
feat: improve export publication string options (#3677)
* feat: improve export publication string options * chore: update nmrium core packages * feat: save ACS options in the workspace * fix typo * refactor: create hook for retrieving active nucleus * feat: store ACS option per nucleus --------- Co-authored-by: Michaël Zasso <targos@protonmail.com>
1 parent 97a1387 commit 8f134c5

15 files changed

Lines changed: 191 additions & 123 deletions

package-lock.json

Lines changed: 31 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565
"@emotion/react": "^11.14.0",
6666
"@emotion/styled": "^11.14.1",
6767
"@hookform/resolvers": "^5.2.2",
68-
"@zakodium/nmr-types": "^0.1.1",
69-
"@zakodium/nmrium-core": "^0.1.7",
70-
"@zakodium/nmrium-core-plugins": "^0.1.10",
68+
"@zakodium/nmr-types": "^0.2.0",
69+
"@zakodium/nmrium-core": "^0.2.1",
70+
"@zakodium/nmrium-core-plugins": "^0.3.1",
7171
"@zip.js/zip.js": "^2.8.2",
7272
"cheminfo-font": "^1.13.1",
7373
"cheminfo-types": "^1.8.1",
@@ -123,7 +123,7 @@
123123
"@types/d3-zoom": "^3.0.8",
124124
"@types/dlv": "^1.1.5",
125125
"@types/lodash": "^4.17.20",
126-
"@types/node": "^24.5.2",
126+
"@types/node": "^24.7.0",
127127
"@types/papaparse": "^5.3.16",
128128
"@types/react": "^18.3.13",
129129
"@types/react-dom": "^18.3.1",

src/component/1d/FloatPublicationString.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { useDispatch } from '../context/DispatchContext.js';
1212
import { useGlobal } from '../context/GlobalContext.js';
1313
import type { ActionsButtonsPopoverProps } from '../elements/ActionsButtonsPopover.js';
1414
import { ActionsButtonsPopover } from '../elements/ActionsButtonsPopover.js';
15+
import { useActiveNucleusTab } from '../hooks/useActiveNucleusTab.ts';
1516
import { useCanvasContext } from '../hooks/useCanvasContext.js';
1617
import { usePanelPreferences } from '../hooks/usePanelPreferences.js';
1718
import { useSVGUnitConverter } from '../hooks/useSVGUnitConverter.js';
@@ -305,11 +306,7 @@ function DraggablePublicationString(props: DraggablePublicationStringProps) {
305306

306307
function usePublicationString() {
307308
const spectra = useSpectraByActiveNucleus();
308-
const {
309-
view: {
310-
spectra: { activeTab },
311-
},
312-
} = useChartData();
309+
const activeTab = useActiveNucleusTab();
313310
const rangesPreferences = usePanelPreferences('ranges', activeTab);
314311

315312
const output: Record<string, string> = {};

src/component/1d/FloatingRanges.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { useDispatch } from '../context/DispatchContext.js';
1616
import { useGlobal } from '../context/GlobalContext.js';
1717
import type { ActionsButtonsPopoverProps } from '../elements/ActionsButtonsPopover.js';
1818
import { ActionsButtonsPopover } from '../elements/ActionsButtonsPopover.js';
19+
import { useActiveNucleusTab } from '../hooks/useActiveNucleusTab.ts';
1920
import { usePanelPreferences } from '../hooks/usePanelPreferences.js';
2021
import { useSVGUnitConverter } from '../hooks/useSVGUnitConverter.js';
2122
import useSpectraByActiveNucleus from '../hooks/useSpectraPerNucleus.js';
@@ -50,11 +51,7 @@ interface RangeItem {
5051

5152
function useMapRanges(ranges: Ranges['values']) {
5253
const output: RangeItem[] = [];
53-
const {
54-
view: {
55-
spectra: { activeTab },
56-
},
57-
} = useChartData();
54+
const activeTab = useActiveNucleusTab();
5855
const preferences = usePanelPreferences('ranges', activeTab);
5956
for (const range of ranges) {
6057
const { id, from, to, integration, signals = [] } = range;

src/component/1d/matrix/Boxplot.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useMemo } from 'react';
77

88
import { useChartData } from '../../context/ChartContext.js';
99
import { useScaleChecked } from '../../context/ScaleContext.js';
10+
import { useActiveNucleusTab } from '../../hooks/useActiveNucleusTab.ts';
1011
import { usePanelPreferences } from '../../hooks/usePanelPreferences.js';
1112
import { PathBuilder } from '../../utility/PathBuilder.js';
1213
import { getYScaleWithRation } from '../utilities/scale.js';
@@ -123,11 +124,7 @@ function useBoxPlot() {
123124
}
124125

125126
export function Boxplot() {
126-
const {
127-
view: {
128-
spectra: { activeTab },
129-
},
130-
} = useChartData();
127+
const activeTab = useActiveNucleusTab();
131128
const options = usePanelPreferences('matrixGeneration', activeTab);
132129

133130
if (!options) return;

src/component/1d/matrix/Stocsy.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useMemo } from 'react';
55

66
import { useChartData } from '../../context/ChartContext.js';
77
import { useScaleChecked } from '../../context/ScaleContext.js';
8+
import { useActiveNucleusTab } from '../../hooks/useActiveNucleusTab.ts';
89
import { usePanelPreferences } from '../../hooks/usePanelPreferences.js';
910
import { PathBuilder } from '../../utility/PathBuilder.js';
1011
import { getYScaleWithRation } from '../utilities/scale.js';
@@ -74,11 +75,7 @@ function useSliceStocsyData(options?: StocsyData | null) {
7475
}
7576

7677
export function Stocsy() {
77-
const {
78-
view: {
79-
spectra: { activeTab },
80-
},
81-
} = useChartData();
78+
const activeTab = useActiveNucleusTab();
8279
const options = usePanelPreferences('matrixGeneration', activeTab);
8380

8481
if (!options) return;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { useChartData } from '../context/ChartContext.tsx';
2+
3+
export function useActiveNucleusTab() {
4+
const {
5+
view: {
6+
spectra: { activeTab },
7+
},
8+
} = useChartData();
9+
return activeTab;
10+
}

src/component/hooks/useToggleSpectraVisibility.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import { FaEye, FaEyeSlash, FaMinus, FaPlus } from 'react-icons/fa';
22
import { GrRadialSelected } from 'react-icons/gr';
33
import { TooltipHelpContent } from 'react-science/ui';
44

5-
import { useChartData } from '../context/ChartContext.js';
65
import { useDispatch } from '../context/DispatchContext.js';
76
import type { ToolbarItemProps } from '../panels/header/DefaultPanelHeader.js';
87
import type { SpectraSelectedMode } from '../reducer/actions/SpectraActions.js';
98

9+
import { useActiveNucleusTab } from './useActiveNucleusTab.ts';
10+
1011
interface ToggleSpectraVisibility {
1112
enableShowAll: boolean;
1213
enableShowSelected: boolean;
@@ -26,12 +27,7 @@ export function useToggleSpectraVisibility(
2627
enableShowSelected = true,
2728
} = props;
2829
const dispatch = useDispatch();
29-
const {
30-
view: {
31-
spectra: { activeTab },
32-
},
33-
} = useChartData();
34-
30+
const activeTab = useActiveNucleusTab();
3531
function showSpectraHandler(mode: SpectraSelectedMode) {
3632
dispatch({
3733
type: 'CHANGE_SPECTRA_VISIBILITY_BY_NUCLEUS',

src/component/modal/EditPeakShapeModal.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import { useState } from 'react';
55
import { useForm } from 'react-hook-form';
66
import * as Yup from 'yup';
77

8-
import { useChartData } from '../context/ChartContext.js';
98
import { useDispatch } from '../context/DispatchContext.js';
109
import ActionButtons from '../elements/ActionButtons.js';
1110
import type { LabelStyle } from '../elements/Label.js';
1211
import Label from '../elements/Label.js';
1312
import { NumberInput2Controller } from '../elements/NumberInput2Controller.js';
1413
import { Select2 } from '../elements/Select2.js';
1514
import { StyledDialogBody } from '../elements/StyledDialogBody.js';
15+
import { useActiveNucleusTab } from '../hooks/useActiveNucleusTab.ts';
1616
import { usePanelPreferences } from '../hooks/usePanelPreferences.js';
1717
import { formatNumber } from '../utility/formatNumber.js';
1818

@@ -94,11 +94,7 @@ export function EditPeakShapeModal(props: EditPeakShapeModalProps) {
9494
function InnerEditPeakShapeModal(props: Required<EditPeakShapeModalProps>) {
9595
const { peak, onCloseDialog } = props;
9696
const dispatch = useDispatch();
97-
const {
98-
view: {
99-
spectra: { activeTab },
100-
},
101-
} = useChartData();
97+
const activeTab = useActiveNucleusTab();
10298
const peaksPreferences = usePanelPreferences('peaks', activeTab);
10399

104100
const [kind, setKind] = useState<Kind>(peak.shape?.kind || 'gaussian');

0 commit comments

Comments
 (0)