Skip to content

Commit 3a1d019

Browse files
authored
Merge pull request #17 from ntindle/basic-same-sizing
2 parents 8d3425b + 12806b1 commit 3a1d019

File tree

8 files changed

+427
-24
lines changed

8 files changed

+427
-24
lines changed

src/components/GridfinityCalculator.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const GridfinityCalculator: React.FC = () => {
2525
customPrinterSize: settings.customPrinterSize,
2626
useHalfSize: settings.useHalfSize,
2727
preferHalfSize: settings.preferHalfSize,
28+
preferUniformBaseplates: settings.preferUniformBaseplates,
2829
numDrawers: settings.numDrawers,
2930
});
3031

@@ -102,6 +103,8 @@ const GridfinityCalculator: React.FC = () => {
102103
setUseHalfSize={settings.setUseHalfSize}
103104
preferHalfSize={settings.preferHalfSize}
104105
setPreferHalfSize={settings.setPreferHalfSize}
106+
preferUniformBaseplates={settings.preferUniformBaseplates}
107+
setPreferUniformBaseplates={settings.setPreferUniformBaseplates}
105108
/>
106109
</CardContent>
107110
</Card>

src/components/GridfinityCalculator/BinOptions.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const BinOptions = ({
77
setUseHalfSize,
88
preferHalfSize,
99
setPreferHalfSize,
10+
preferUniformBaseplates,
11+
setPreferUniformBaseplates,
1012
}) => {
1113
return (
1214
<div className="space-y-6 p-4">
@@ -38,6 +40,16 @@ const BinOptions = ({
3840
}}
3941
/>
4042
</div>
43+
<div className="flex items-center justify-between">
44+
<Label htmlFor="prefer-uniform-baseplates" className="flex-1">
45+
Prefer uniform baseplate sizes
46+
</Label>
47+
<Switch
48+
id="prefer-uniform-baseplates"
49+
checked={preferUniformBaseplates}
50+
onCheckedChange={setPreferUniformBaseplates}
51+
/>
52+
</div>
4153
</div>
4254
</div>
4355
);

src/contexts/SettingsContext.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ export const usePrinterSettings = () => {
6262

6363
// eslint-disable-next-line react-refresh/only-export-components
6464
export const useBinOptions = () => {
65-
const { useHalfSize, setUseHalfSize, preferHalfSize, setPreferHalfSize } = useSettings();
66-
return { useHalfSize, setUseHalfSize, preferHalfSize, setPreferHalfSize };
65+
const { useHalfSize, setUseHalfSize, preferHalfSize, setPreferHalfSize, preferUniformBaseplates, setPreferUniformBaseplates } = useSettings();
66+
return { useHalfSize, setUseHalfSize, preferHalfSize, setPreferHalfSize, preferUniformBaseplates, setPreferUniformBaseplates };
6767
};
6868

6969
// eslint-disable-next-line react-refresh/only-export-components

src/hooks/useGridfinityCalculation.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe.skip('useGridfinityCalculation', () => {
3939
customPrinterSize: null,
4040
useHalfSize: false,
4141
preferHalfSize: false,
42+
preferUniformBaseplates: false,
4243
numDrawers: 1,
4344
})
4445
);
@@ -64,6 +65,7 @@ describe.skip('useGridfinityCalculation', () => {
6465
customPrinterSize: customSize,
6566
useHalfSize: false,
6667
preferHalfSize: false,
68+
preferUniformBaseplates: false,
6769
numDrawers: 1,
6870
})
6971
);
@@ -79,6 +81,7 @@ describe.skip('useGridfinityCalculation', () => {
7981
customPrinterSize: null,
8082
useHalfSize: true,
8183
preferHalfSize: false,
84+
preferUniformBaseplates: false,
8285
numDrawers: 1,
8386
})
8487
);
@@ -95,6 +98,7 @@ describe.skip('useGridfinityCalculation', () => {
9598
customPrinterSize: null,
9699
useHalfSize: false,
97100
preferHalfSize: false,
101+
preferUniformBaseplates: false,
98102
numDrawers: 3,
99103
})
100104
);
@@ -111,6 +115,7 @@ describe.skip('useGridfinityCalculation', () => {
111115
customPrinterSize: null,
112116
useHalfSize: false,
113117
preferHalfSize: false,
118+
preferUniformBaseplates: false,
114119
numDrawers: 1,
115120
}),
116121
{
@@ -138,6 +143,7 @@ describe.skip('useGridfinityCalculation', () => {
138143
customPrinterSize: null,
139144
useHalfSize: false,
140145
preferHalfSize: false,
146+
preferUniformBaseplates: false,
141147
numDrawers: 1,
142148
})
143149
);
@@ -154,6 +160,7 @@ describe.skip('useGridfinityCalculation', () => {
154160
customPrinterSize: null,
155161
useHalfSize: false,
156162
preferHalfSize: false,
163+
preferUniformBaseplates: false,
157164
numDrawers: 1,
158165
})
159166
);
@@ -170,6 +177,7 @@ describe.skip('useGridfinityCalculation', () => {
170177
customPrinterSize: null,
171178
useHalfSize,
172179
preferHalfSize: false,
180+
preferUniformBaseplates: false,
173181
numDrawers: 1,
174182
}),
175183
{

src/hooks/useGridfinityCalculation.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface CalculationInput {
1212
customPrinterSize?: PrinterSize;
1313
useHalfSize: boolean;
1414
preferHalfSize: boolean;
15+
preferUniformBaseplates: boolean;
1516
numDrawers: number;
1617
}
1718

@@ -42,6 +43,7 @@ export const useGridfinityCalculation = ({
4243
customPrinterSize,
4344
useHalfSize,
4445
preferHalfSize,
46+
preferUniformBaseplates,
4547
numDrawers,
4648
}: CalculationInput): CalculationOutput => {
4749
const [result, setResult] = useState<CalculationResultWithDrawers | null>(null);
@@ -63,9 +65,10 @@ export const useGridfinityCalculation = ({
6365
drawerSize,
6466
printerSize,
6567
useHalfSize,
66-
preferHalfSize
68+
preferHalfSize,
69+
preferUniformBaseplates
6770
);
68-
}, [drawerSize, printerSize, useHalfSize, preferHalfSize]);
71+
}, [drawerSize, printerSize, useHalfSize, preferHalfSize, preferUniformBaseplates]);
6972

7073
// Update state when calculation changes
7174
useEffect(() => {

src/hooks/useGridfinitySettings.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface GridfinitySettings {
1818
setUseHalfSize: (value: boolean) => void;
1919
preferHalfSize: boolean;
2020
setPreferHalfSize: (value: boolean) => void;
21+
preferUniformBaseplates: boolean;
22+
setPreferUniformBaseplates: (value: boolean) => void;
2123

2224
// Drawer count
2325
numDrawers: number;
@@ -63,6 +65,11 @@ export const useGridfinitySettings = (): GridfinitySettings => {
6365
false
6466
);
6567

68+
const [preferUniformBaseplates, setPreferUniformBaseplates] = usePersistedState<boolean>(
69+
'gridfinity_preferUniformBaseplates',
70+
false
71+
);
72+
6673
// Number of drawers
6774
const [numDrawers, setNumDrawers] = usePersistedState<number>(
6875
'gridfinity_numDrawers',
@@ -98,6 +105,7 @@ export const useGridfinitySettings = (): GridfinitySettings => {
98105
setSelectedPrinter('Bambu Lab A1');
99106
setUseHalfSize(false);
100107
setPreferHalfSize(false);
108+
setPreferUniformBaseplates(false);
101109
setNumDrawers(1);
102110
setUseMm(false);
103111
setCustomPrinterSize({ x: 200, y: 200, z: 200 });
@@ -117,6 +125,8 @@ export const useGridfinitySettings = (): GridfinitySettings => {
117125
setUseHalfSize: handleUseHalfSizeChange,
118126
preferHalfSize,
119127
setPreferHalfSize: handlePreferHalfSizeChange,
128+
preferUniformBaseplates,
129+
setPreferUniformBaseplates,
120130

121131
// Drawer count
122132
numDrawers,

0 commit comments

Comments
 (0)