Skip to content

Commit d2c1b9c

Browse files
committed
Add needed queries to add config objects
1 parent 444fecd commit d2c1b9c

File tree

6 files changed

+257
-116
lines changed

6 files changed

+257
-116
lines changed

src/components/WorkoutRoutines/Detail/DayDetails.tsx

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ import {
1919
useTheme
2020
} from "@mui/material";
2121
import Grid from "@mui/material/Grid";
22+
import { SlotDetails } from "components/WorkoutRoutines/Detail/SlotDetails";
2223
import { Day } from "components/WorkoutRoutines/models/Day";
2324
import { Slot } from "components/WorkoutRoutines/models/Slot";
2425
import { useEditDayQuery, useRoutineDetailQuery } from "components/WorkoutRoutines/queries";
2526
import { useEditRoutineQuery } from "components/WorkoutRoutines/queries/routines";
2627
import { useDeleteSlotQuery, useEditSlotQuery } from "components/WorkoutRoutines/queries/slots";
27-
import { ConfigDetailsField } from "components/WorkoutRoutines/widgets/forms/BaseConfigForm";
2828
import { DayForm } from "components/WorkoutRoutines/widgets/forms/DayForm";
29-
import { SlotConfigForm } from "components/WorkoutRoutines/widgets/forms/SlotConfigForm";
3029
import { SlotForm } from "components/WorkoutRoutines/widgets/forms/SlotForm";
3130
import React, { useState } from "react";
3231
import { useTranslation } from "react-i18next";
@@ -233,52 +232,16 @@ export const DayDetails = (props: { day: Day, routineId: number, simpleMode: boo
233232
{props.day.slots.map((slot, index) =>
234233
<div key={`slot-${slot.id}-${index}`}>
235234
<Typography variant={"h5"} gutterBottom>
236-
Set {index + 1} (Slot-ID {slot.id})
235+
Set {index + 1} <small>(Slot-ID {slot.id})</small>
237236
<IconButton onClick={() => handleDeleteSlot(slot.id)}>
238237
<DeleteIcon />
239238
</IconButton>
240239
</Typography>
241240

242241
<SlotForm routineId={props.routineId} slot={slot} key={`slot-form-${slot.id}`} />
243242

244-
{slot.configs.map((slotConfig) =>
245-
<>
246-
<p>
247-
SlotConfigId {slotConfig.id}
248-
</p>
249-
250-
<Typography variant={"h6"} gutterBottom>
251-
{slotConfig.exercise?.getTranslation().name}
252-
</Typography>
253-
254-
<SlotConfigForm routineId={props.routineId} slotConfig={slotConfig} />
255-
256-
{slotConfig.weightConfigs.map((config) =>
257-
<ConfigDetailsField config={config} type="weight" routineId={props.routineId} />
258-
)}
259-
{slotConfig.maxWeightConfigs.map((config) =>
260-
<ConfigDetailsField config={config} type="max-weight" routineId={props.routineId} />
261-
)}
262-
{slotConfig.repsConfigs.map((config) =>
263-
<ConfigDetailsField config={config} type="reps" routineId={props.routineId} />
264-
)}
265-
{slotConfig.maxRepsConfigs.map((config) =>
266-
<ConfigDetailsField config={config} type="max-reps" routineId={props.routineId} />
267-
)}
268-
{slotConfig.nrOfSetsConfigs.map((config) =>
269-
<ConfigDetailsField config={config} type="sets" routineId={props.routineId} />
270-
)}
271-
{slotConfig.restTimeConfigs.map((config) =>
272-
<ConfigDetailsField config={config} type="rest" routineId={props.routineId} />
273-
)}
274-
{slotConfig.maxRestTimeConfigs.map((config) =>
275-
<ConfigDetailsField config={config} type="max-rest" routineId={props.routineId} />
276-
)}
277-
{slotConfig.rirConfigs.map((config) =>
278-
<ConfigDetailsField config={config} type="rir" routineId={props.routineId} />
279-
)}
280-
</>
281-
)}
243+
<SlotDetails slot={slot} routineId={props.routineId} simpleMode={props.simpleMode} />
244+
282245
<Divider sx={{ mt: 2, mb: 2 }} />
283246
</div>
284247
)}
@@ -296,3 +259,5 @@ export const DayDetails = (props: { day: Day, routineId: number, simpleMode: boo
296259
</>
297260
);
298261
};
262+
263+
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import { Box, Grid, Typography } from "@mui/material";
2+
import { Slot } from "components/WorkoutRoutines/models/Slot";
3+
import { ConfigDetailsField } from "components/WorkoutRoutines/widgets/forms/BaseConfigForm";
4+
import { SlotConfigForm } from "components/WorkoutRoutines/widgets/forms/SlotConfigForm";
5+
import React from "react";
6+
7+
export const SlotDetails = (props: { slot: Slot, routineId: number, simpleMode: boolean }) => {
8+
9+
return (
10+
<>
11+
{props.slot.configs.map((slotConfig) => (
12+
<React.Fragment key={slotConfig.id}>
13+
<p>
14+
<small>SlotConfigId {slotConfig.id}</small>
15+
</p>
16+
17+
<Typography variant={"h6"} gutterBottom>
18+
{slotConfig.exercise?.getTranslation().name}
19+
</Typography>
20+
21+
<SlotConfigForm routineId={props.routineId} slotConfig={slotConfig} />
22+
<Box height={40} />
23+
24+
<Grid container spacing={2}>
25+
{props.simpleMode ? (
26+
// Show only weight, reps, and sets in simple mode
27+
<>
28+
{slotConfig.weightConfigs.map((config) => (
29+
<Grid item xs={12} sm={4} key={`weight-${config.id}`}>
30+
<ConfigDetailsField config={config} type="weight" routineId={props.routineId} />
31+
</Grid>
32+
))}
33+
{slotConfig.repsConfigs.map((config) => (
34+
<Grid item xs={12} sm={4} key={`reps-${config.id}`}>
35+
<ConfigDetailsField config={config} type="reps" routineId={props.routineId} />
36+
</Grid>
37+
))}
38+
{slotConfig.nrOfSetsConfigs.map((config) => (
39+
<Grid item xs={12} sm={4} key={`sets-${config.id}`}>
40+
<ConfigDetailsField config={config} type="sets" routineId={props.routineId} />
41+
</Grid>
42+
))}
43+
</>
44+
) : (
45+
// Show all config details in advanced mode, also in a grid
46+
<>
47+
{slotConfig.weightConfigs.map((config) => (
48+
<Grid item xs={12} sm={4} key={`weight-${config.id}`}>
49+
<ConfigDetailsField config={config} type="weight" routineId={props.routineId} />
50+
</Grid>
51+
))}
52+
{slotConfig.maxWeightConfigs.map((config) => (
53+
<Grid item xs={12} sm={4} key={`max-weight-${config.id}`}>
54+
<ConfigDetailsField config={config} type="max-weight"
55+
routineId={props.routineId} />
56+
</Grid>
57+
))}
58+
{slotConfig.repsConfigs.map((config) => (
59+
<Grid item xs={12} sm={4} key={`reps-${config.id}`}>
60+
<ConfigDetailsField config={config} type="reps" routineId={props.routineId} />
61+
</Grid>
62+
))}
63+
{slotConfig.maxRepsConfigs.map((config) => (
64+
<Grid item xs={12} sm={4} key={`max-reps-${config.id}`}>
65+
<ConfigDetailsField config={config} type="max-reps"
66+
routineId={props.routineId} />
67+
</Grid>
68+
))}
69+
{slotConfig.nrOfSetsConfigs.map((config) => (
70+
<Grid item xs={12} sm={4} key={`sets-${config.id}`}>
71+
<ConfigDetailsField config={config} type="sets" routineId={props.routineId} />
72+
</Grid>
73+
))}
74+
{slotConfig.restTimeConfigs.map((config) => (
75+
<Grid item xs={12} sm={4} key={`rest-${config.id}`}>
76+
<ConfigDetailsField config={config} type="rest" routineId={props.routineId} />
77+
</Grid>
78+
))}
79+
{slotConfig.maxRestTimeConfigs.map((config) => (
80+
<Grid item xs={12} sm={4} key={`max-rest-${config.id}`}>
81+
<ConfigDetailsField config={config} type="max-rest"
82+
routineId={props.routineId} />
83+
</Grid>
84+
))}
85+
{slotConfig.rirConfigs.map((config) => (
86+
<Grid item xs={12} sm={4} key={`rir-${config.id}`}>
87+
<ConfigDetailsField config={config} type="rir" routineId={props.routineId} />
88+
</Grid>
89+
))}
90+
</>
91+
)}
92+
</Grid>
93+
</React.Fragment>
94+
))}
95+
</>
96+
);
97+
};

src/components/WorkoutRoutines/queries/configs.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
import { useMutation, useQueryClient } from "@tanstack/react-query";
22
import {
3+
AddBaseConfigParams,
4+
addMaxRepsConfig,
5+
addMaxRestConfig,
6+
addMaxWeightConfig,
7+
addNrOfSetsConfig,
8+
addRepsConfig,
9+
addRestConfig,
10+
addRirConfig,
11+
addWeightConfig,
312
EditBaseConfigParams,
413
editMaxRepsConfig,
514
editMaxRestConfig,
@@ -22,6 +31,15 @@ export const useEditWeightConfigQuery = (routineId: number) => {
2231
});
2332
};
2433

34+
export const useAddWeightConfigQuery = (routineId: number) => {
35+
const queryClient = useQueryClient();
36+
37+
return useMutation({
38+
mutationFn: (data: AddBaseConfigParams) => addWeightConfig(data),
39+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
40+
});
41+
};
42+
2543
export const useEditMaxWeightConfigQuery = (routineId: number) => {
2644
const queryClient = useQueryClient();
2745

@@ -31,6 +49,15 @@ export const useEditMaxWeightConfigQuery = (routineId: number) => {
3149
});
3250
};
3351

52+
export const useAddMaxWeightConfigQuery = (routineId: number) => {
53+
const queryClient = useQueryClient();
54+
55+
return useMutation({
56+
mutationFn: (data: AddBaseConfigParams) => addMaxWeightConfig(data),
57+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
58+
});
59+
};
60+
3461
export const useEditRepsConfigQuery = (routineId: number) => {
3562
const queryClient = useQueryClient();
3663

@@ -39,6 +66,14 @@ export const useEditRepsConfigQuery = (routineId: number) => {
3966
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
4067
});
4168
};
69+
export const useAddRepsConfigQuery = (routineId: number) => {
70+
const queryClient = useQueryClient();
71+
72+
return useMutation({
73+
mutationFn: (data: AddBaseConfigParams) => addRepsConfig(data),
74+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
75+
});
76+
};
4277

4378
export const useEditMaxRepsConfigQuery = (routineId: number) => {
4479
const queryClient = useQueryClient();
@@ -48,6 +83,14 @@ export const useEditMaxRepsConfigQuery = (routineId: number) => {
4883
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
4984
});
5085
};
86+
export const useAddMaxRepsConfigQuery = (routineId: number) => {
87+
const queryClient = useQueryClient();
88+
89+
return useMutation({
90+
mutationFn: (data: AddBaseConfigParams) => addMaxRepsConfig(data),
91+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
92+
});
93+
};
5194

5295
export const useEditNrOfSetsConfigQuery = (routineId: number) => {
5396
const queryClient = useQueryClient();
@@ -57,6 +100,14 @@ export const useEditNrOfSetsConfigQuery = (routineId: number) => {
57100
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
58101
});
59102
};
103+
export const useAddNrOfSetsConfigQuery = (routineId: number) => {
104+
const queryClient = useQueryClient();
105+
106+
return useMutation({
107+
mutationFn: (data: AddBaseConfigParams) => addNrOfSetsConfig(data),
108+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
109+
});
110+
};
60111

61112
export const useEditRiRConfigQuery = (routineId: number) => {
62113
const queryClient = useQueryClient();
@@ -66,6 +117,14 @@ export const useEditRiRConfigQuery = (routineId: number) => {
66117
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
67118
});
68119
};
120+
export const useAddRiRConfigQuery = (routineId: number) => {
121+
const queryClient = useQueryClient();
122+
123+
return useMutation({
124+
mutationFn: (data: AddBaseConfigParams) => addRirConfig(data),
125+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
126+
});
127+
};
69128

70129
export const useEditRestConfigQuery = (routineId: number) => {
71130
const queryClient = useQueryClient();
@@ -75,6 +134,15 @@ export const useEditRestConfigQuery = (routineId: number) => {
75134
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
76135
});
77136
};
137+
export const useAddRestConfigQuery = (routineId: number) => {
138+
const queryClient = useQueryClient();
139+
140+
return useMutation({
141+
mutationFn: (data: AddBaseConfigParams) => addRestConfig(data),
142+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
143+
});
144+
};
145+
78146
export const useEditMaxRestConfigQuery = (routineId: number) => {
79147
const queryClient = useQueryClient();
80148

@@ -83,5 +151,13 @@ export const useEditMaxRestConfigQuery = (routineId: number) => {
83151
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
84152
});
85153
};
154+
export const useAddMaxRestConfigQuery = (routineId: number) => {
155+
const queryClient = useQueryClient();
156+
157+
return useMutation({
158+
mutationFn: (data: AddBaseConfigParams) => addMaxRestConfig(data),
159+
onSuccess: () => queryClient.invalidateQueries([QueryKey.ROUTINE_DETAIL, routineId])
160+
});
161+
};
86162

87163

src/components/WorkoutRoutines/queries/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ export {
33
} from './routines';
44

55
export {
6+
useAddWeightConfigQuery,
7+
useAddMaxWeightConfigQuery,
8+
useAddRepsConfigQuery,
9+
useAddMaxRepsConfigQuery,
10+
useAddNrOfSetsConfigQuery,
11+
useAddRiRConfigQuery,
12+
useAddRestConfigQuery,
13+
useAddMaxRestConfigQuery,
614
useEditWeightConfigQuery,
715
useEditMaxRepsConfigQuery,
816
useEditMaxRestConfigQuery,

0 commit comments

Comments
 (0)