Skip to content

Commit 763e920

Browse files
authored
feat: add tools bar panel (#3996)
Closes: #3948
1 parent 7ae1471 commit 763e920

File tree

5 files changed

+204
-10
lines changed

5 files changed

+204
-10
lines changed

src/component/modal/setting/tanstack_general_settings/general_settings_dialog_body.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { NucleiTab } from './tabs/nuclei_tab.js';
1515
import { PanelsTab } from './tabs/panels_tab.js';
1616
import { SpectraColorsTab } from './tabs/spectra_colors_tab.tsx';
1717
import { TitleBlockTab } from './tabs/title_block_tab.js';
18+
import { ToolsTab } from './tabs/tools_tab.tsx';
1819
import { defaultGeneralSettingsFormValues } from './validation.js';
1920

2021
const Tabs = styled(BPTabs)`
@@ -66,6 +67,8 @@ export const GeneralSettingsDialogBody = withForm({
6667

6768
<Tab id="panels" title="Panels" panel={<PanelsTab form={form} />} />
6869

70+
<Tab id="tools" title="Tools" panel={<ToolsTab form={form} />} />
71+
6972
<Tab
7073
title="Databases"
7174
id="databases"

src/component/modal/setting/tanstack_general_settings/tabs/panels_tab.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,6 @@ const SpectraSettings = withFieldGroup({
4646
<Select label="Processing" items={displayPanelsStatus} />
4747
)}
4848
</AppField>
49-
<AppField name="multipleSpectraAnalysisPanel">
50-
{({ Select }) => (
51-
<Select
52-
label="Multiple spectra analysis"
53-
items={displayPanelsStatus}
54-
/>
55-
)}
56-
</AppField>
5749
</Section>
5850
);
5951
},
@@ -65,7 +57,7 @@ const Spectra1dSettings = withFieldGroup({
6557
const { Section, AppField } = group;
6658

6759
return (
68-
<Section title="Spectra 1D">
60+
<Section title="1D Spectra">
6961
<AppField name="peaksPanel">
7062
{({ Select }) => <Select label="Peaks" items={displayPanelsStatus} />}
7163
</AppField>
@@ -92,6 +84,14 @@ const Spectra1dSettings = withFieldGroup({
9284
<Select label="Spectrum simulation" items={displayPanelsStatus} />
9385
)}
9486
</AppField>
87+
<AppField name="multipleSpectraAnalysisPanel">
88+
{({ Select }) => (
89+
<Select
90+
label="Multiple spectra analysis"
91+
items={displayPanelsStatus}
92+
/>
93+
)}
94+
</AppField>
9595
</Section>
9696
);
9797
},
@@ -103,7 +103,7 @@ const Spectra2dSettings = withFieldGroup({
103103
const { Section, AppField } = group;
104104

105105
return (
106-
<Section title="Spectra 2D">
106+
<Section title="2D Spectra">
107107
<AppField name="zonesPanel">
108108
{({ Select }) => <Select label="Zones" items={displayPanelsStatus} />}
109109
</AppField>
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
import { withFieldGroup, withForm } from 'react-science/ui';
2+
3+
import { defaultGeneralSettingsFormValues } from '../validation.ts';
4+
5+
export const ToolsTab = withForm({
6+
defaultValues: defaultGeneralSettingsFormValues,
7+
render: ({ form }) => {
8+
return (
9+
<>
10+
<ChartTools form={form} fields="display.toolBarButtons" />
11+
<ImportExportTools form={form} fields="display.toolBarButtons" />
12+
<Spectra1DManipulationTools
13+
form={form}
14+
fields="display.toolBarButtons"
15+
/>
16+
<Spectra2DManipulationTools
17+
form={form}
18+
fields="display.toolBarButtons"
19+
/>
20+
</>
21+
);
22+
},
23+
});
24+
25+
const ChartTools = withFieldGroup({
26+
defaultValues: defaultGeneralSettingsFormValues.display.toolBarButtons,
27+
render: ({ group }) => {
28+
const { Section, AppField } = group;
29+
30+
return (
31+
<Section title="Chart">
32+
<AppField name="zoom">
33+
{({ Checkbox }) => <Checkbox label="Zoom in" />}
34+
</AppField>
35+
<AppField name="zoomOut">
36+
{({ Checkbox }) => <Checkbox label="Zoom out" />}
37+
</AppField>
38+
<AppField name="inset">
39+
{({ Checkbox }) => <Checkbox label="Inset" />}
40+
</AppField>
41+
<AppField name="spectraStackAlignments">
42+
{({ Checkbox }) => <Checkbox label="Stack alignments" />}
43+
</AppField>
44+
<AppField name="spectraCenterAlignments">
45+
{({ Checkbox }) => <Checkbox label="Center alignments" />}
46+
</AppField>
47+
<AppField name="realImaginary">
48+
{({ Checkbox }) => <Checkbox label="Real / Imaginary" />}
49+
</AppField>
50+
</Section>
51+
);
52+
},
53+
});
54+
55+
const ImportExportTools = withFieldGroup({
56+
defaultValues: defaultGeneralSettingsFormValues.display.toolBarButtons,
57+
render: ({ group }) => {
58+
const { Section, AppField } = group;
59+
60+
return (
61+
<Section title="Import / Export">
62+
<AppField name="import">
63+
{({ Checkbox }) => <Checkbox label="Import" />}
64+
</AppField>
65+
<AppField name="exportAs">
66+
{({ Checkbox }) => <Checkbox label="Export as" />}
67+
</AppField>
68+
</Section>
69+
);
70+
},
71+
});
72+
73+
const Spectra1DManipulationTools = withFieldGroup({
74+
defaultValues: defaultGeneralSettingsFormValues.display.toolBarButtons,
75+
render: ({ group }) => {
76+
const { Section, AppField } = group;
77+
78+
return (
79+
<Section title="1D Spectra">
80+
<AppField name="peakPicking">
81+
{({ Checkbox }) => <Checkbox label="Peak picking" />}
82+
</AppField>
83+
<AppField name="integral">
84+
{({ Checkbox }) => <Checkbox label="Integrals" />}
85+
</AppField>
86+
<AppField name="zonePicking">
87+
{({ Checkbox }) => <Checkbox label="Zone picking" />}
88+
</AppField>
89+
<AppField name="rangePicking">
90+
{({ Checkbox }) => <Checkbox label="Range picking" />}
91+
</AppField>
92+
<AppField name="zeroFilling">
93+
{({ Checkbox }) => <Checkbox label="Zero filling" />}
94+
</AppField>
95+
<AppField name="slicing">
96+
{({ Checkbox }) => <Checkbox label="Slicing" />}
97+
</AppField>
98+
<AppField name="apodization">
99+
{({ Checkbox }) => <Checkbox label="Apodization" />}
100+
</AppField>
101+
<AppField name="phaseCorrection">
102+
{({ Checkbox }) => <Checkbox label="Phase correction" />}
103+
</AppField>
104+
<AppField name="baselineCorrection">
105+
{({ Checkbox }) => <Checkbox label="Baseline correction" />}
106+
</AppField>
107+
<AppField name="fft">
108+
{({ Checkbox }) => <Checkbox label="Fourier transform" />}
109+
</AppField>
110+
<AppField name="exclusionZones">
111+
{({ Checkbox }) => <Checkbox label="Exclusion zones" />}
112+
</AppField>
113+
<AppField name="autoRangeAndZonePicking">
114+
{({ Checkbox }) => <Checkbox label="Auto range and zone picking" />}
115+
</AppField>
116+
<AppField name="multipleSpectraAnalysis">
117+
{({ Checkbox }) => <Checkbox label="Multiple spectra integration" />}
118+
</AppField>
119+
</Section>
120+
);
121+
},
122+
});
123+
124+
const Spectra2DManipulationTools = withFieldGroup({
125+
defaultValues: defaultGeneralSettingsFormValues.display.toolBarButtons,
126+
render: ({ group }) => {
127+
const { Section, AppField } = group;
128+
129+
return (
130+
<Section title="2D Spectra">
131+
<AppField name="zeroFillingDimension1">
132+
{({ Checkbox }) => <Checkbox label="Zero filling direct" />}
133+
</AppField>
134+
<AppField name="zeroFillingDimension2">
135+
{({ Checkbox }) => <Checkbox label="Zero filling indirect" />}
136+
</AppField>
137+
<AppField name="apodizationDimension1">
138+
{({ Checkbox }) => <Checkbox label="Apodization direct" />}
139+
</AppField>
140+
<AppField name="apodizationDimension2">
141+
{({ Checkbox }) => <Checkbox label="Apodization indirect" />}
142+
</AppField>
143+
<AppField name="fftDimension1">
144+
{({ Checkbox }) => <Checkbox label="Fourier transform direct" />}
145+
</AppField>
146+
<AppField name="fftDimension2">
147+
{({ Checkbox }) => <Checkbox label="Fourier transform indirect" />}
148+
</AppField>
149+
<AppField name="phaseCorrectionTwoDimensions">
150+
{({ Checkbox }) => <Checkbox label="Phase correction" />}
151+
</AppField>
152+
</Section>
153+
);
154+
},
155+
});

src/component/modal/setting/tanstack_general_settings/validation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { nucleiValidation } from './validation/nuclei_tab_validation.js';
1616
import { displayPanelsValidation } from './validation/panels_tab_validation.js';
1717
import { spectraColorsTabValidation } from './validation/spectra_colors_tab_validation.ts';
1818
import { infoBlockTabValidation } from './validation/title_block_tab_validation.js';
19+
import { toolBarButtonsValidation } from './validation/tools_tab_validation.ts';
1920

2021
/**
2122
* The type for the workspace preferences is `WorkspaceWithSource`
@@ -27,6 +28,7 @@ import { infoBlockTabValidation } from './validation/title_block_tab_validation.
2728
const displayValidation = z.object({
2829
general: displayGeneralValidation,
2930
panels: displayPanelsValidation,
31+
toolBarButtons: toolBarButtonsValidation,
3032
});
3133

3234
export const workspaceValidation = z.object({
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { z } from 'zod';
2+
3+
export const toolBarButtonsValidation = z
4+
.object({
5+
zoom: z.boolean().optional(),
6+
zoomOut: z.boolean().optional(),
7+
import: z.boolean().optional(),
8+
exportAs: z.boolean().optional(),
9+
spectraStackAlignments: z.boolean().optional(),
10+
spectraCenterAlignments: z.boolean().optional(),
11+
realImaginary: z.boolean().optional(),
12+
peakPicking: z.boolean().optional(),
13+
integral: z.boolean().optional(),
14+
zonePicking: z.boolean().optional(),
15+
slicing: z.boolean().optional(),
16+
rangePicking: z.boolean().optional(),
17+
zeroFilling: z.boolean().optional(),
18+
zeroFillingDimension1: z.boolean().optional(),
19+
zeroFillingDimension2: z.boolean().optional(),
20+
apodization: z.boolean().optional(),
21+
apodizationDimension1: z.boolean().optional(),
22+
apodizationDimension2: z.boolean().optional(),
23+
phaseCorrection: z.boolean().optional(),
24+
phaseCorrectionTwoDimensions: z.boolean().optional(),
25+
baselineCorrection: z.boolean().optional(),
26+
fft: z.boolean().optional(),
27+
fftDimension1: z.boolean().optional(),
28+
fftDimension2: z.boolean().optional(),
29+
multipleSpectraAnalysis: z.boolean().optional(),
30+
exclusionZones: z.boolean().optional(),
31+
autoRangeAndZonePicking: z.boolean().optional(),
32+
inset: z.boolean().optional(),
33+
})
34+
.optional();

0 commit comments

Comments
 (0)