Skip to content

Commit 63b1cfb

Browse files
committed
Add links to reach the progression editor
1 parent eaba4fc commit 63b1cfb

File tree

4 files changed

+86
-25
lines changed

4 files changed

+86
-25
lines changed

src/components/WorkoutRoutines/Detail/DayDetails.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ import { Day } from "components/WorkoutRoutines/models/Day";
2525
import { Slot } from "components/WorkoutRoutines/models/Slot";
2626
import { useEditDayQuery, useRoutineDetailQuery } from "components/WorkoutRoutines/queries";
2727
import { useEditRoutineQuery } from "components/WorkoutRoutines/queries/routines";
28-
import { useDeleteSlotQuery, useEditSlotQuery } from "components/WorkoutRoutines/queries/slots";
28+
import { useDeleteSlotQuery } from "components/WorkoutRoutines/queries/slots";
2929
import { DayForm } from "components/WorkoutRoutines/widgets/forms/DayForm";
3030
import { SlotForm } from "components/WorkoutRoutines/widgets/forms/SlotForm";
3131
import React, { useState } from "react";
3232
import { useTranslation } from "react-i18next";
33+
import { Link } from "react-router-dom";
3334
import { SNACKBAR_AUTO_HIDE_DURATION } from "utils/consts";
35+
import { makeLink, WgerLink } from "utils/url";
3436

3537
export const DayDragAndDropGrid = (props: {
3638
routineId: number,
@@ -181,7 +183,6 @@ export const DayDetails = (props: { day: Day, routineId: number, simpleMode: boo
181183

182184
const [t, i18n] = useTranslation();
183185
const deleteSlotQuery = useDeleteSlotQuery(props.routineId);
184-
const editSlotQuery = useEditSlotQuery(props.routineId);
185186
const [openSnackbar, setOpenSnackbar] = useState(false);
186187
const [slotToDelete, setSlotToDelete] = useState<Slot | null>(null);
187188

@@ -192,7 +193,7 @@ export const DayDetails = (props: { day: Day, routineId: number, simpleMode: boo
192193
if (slotToDelete !== null) {
193194
if (reason === 'timeout') {
194195
// Delete on the server
195-
// deleteSlotQuery.mutate(slotToDelete.id);
196+
deleteSlotQuery.mutate(slotToDelete.id);
196197
setSlotToDelete(null);
197198
} else if (reason !== 'clickaway') {
198199
// Undo the deletion - re-add the slot using its sort value
@@ -255,8 +256,14 @@ export const DayDetails = (props: { day: Day, routineId: number, simpleMode: boo
255256
<Button onClick={() => console.log("add superset")} size={"small"}>
256257
add superset
257258
</Button>
258-
<Button onClick={() => console.log("editing progression")} size={"small"}>
259-
edit progression (#{slot.id})
259+
<Button component={Link}
260+
size={"small"}
261+
to={makeLink(WgerLink.ROUTINE_EDIT_PROGRESSION, i18n.language, {
262+
id: props.routineId,
263+
id2: slot.id
264+
})}
265+
>
266+
edit progression
260267
</Button>
261268
</ButtonGroup>
262269

src/components/WorkoutRoutines/Detail/RoutineEdit.tsx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import { Box, Container, FormControlLabel, Stack, Switch, Typography } from "@mui/material";
1+
import { Box, Button, Container, FormControlLabel, Grid, Stack, Switch, Typography } from "@mui/material";
22
import { LoadingPlaceholder } from "components/Core/LoadingWidget/LoadingWidget";
33
import { DayDetails, DayDragAndDropGrid } from "components/WorkoutRoutines/Detail/DayDetails";
44
import { RoutineDetailsCard } from "components/WorkoutRoutines/Detail/RoutineDetailsCard";
55
import { RoutineDetailsTable } from "components/WorkoutRoutines/Detail/RoutineDetailsTable";
66
import { useRoutineDetailQuery } from "components/WorkoutRoutines/queries";
77
import { RoutineForm } from "components/WorkoutRoutines/widgets/forms/RoutineForm";
88
import React from "react";
9-
import { useParams } from "react-router-dom";
9+
import { useTranslation } from "react-i18next";
10+
import { Link, useParams } from "react-router-dom";
11+
import { makeLink, WgerLink } from "utils/url";
1012

1113
export const RoutineEdit = () => {
1214

@@ -28,6 +30,7 @@ export const RoutineEdit = () => {
2830
* tests!
2931
* ...
3032
*/
33+
const { i18n } = useTranslation();
3134

3235
const params = useParams<{ routineId: string }>();
3336
const routineId = params.routineId ? parseInt(params.routineId) : 0;
@@ -42,9 +45,24 @@ export const RoutineEdit = () => {
4245

4346
return <>
4447
<Container maxWidth="lg">
45-
<Typography variant={"h4"}>
46-
Edit {routineQuery.data?.name}
47-
</Typography>
48+
<Grid container>
49+
<Grid xs={10}>
50+
<Typography variant={"h4"}>
51+
Edit {routineQuery.data?.name}
52+
</Typography>
53+
</Grid>
54+
<Grid xs={2}>
55+
<Button
56+
component={Link}
57+
variant={"outlined"}
58+
size={"small"}
59+
to={makeLink(WgerLink.ROUTINE_DETAIL, i18n.language, { id: routineId })}
60+
>
61+
back to routine
62+
</Button>
63+
</Grid>
64+
</Grid>
65+
4866

4967
<FormControlLabel
5068
control={<Switch checked={simpleMode} onChange={() => setSimpleMode(!simpleMode)} />}

src/components/WorkoutRoutines/Detail/SlotProgressionEdit.tsx

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import { Container, Grid, Table, TableBody, TableCell, TableHead, TableRow, Typography } from "@mui/material";
1+
import {
2+
Box,
3+
Button,
4+
Container,
5+
Grid,
6+
Table,
7+
TableBody,
8+
TableCell,
9+
TableHead,
10+
TableRow,
11+
Typography
12+
} from "@mui/material";
213
import { LoadingPlaceholder } from "components/Core/LoadingWidget/LoadingWidget";
314
import { useLanguageQuery } from "components/Exercises/queries";
415
import { Slot } from "components/WorkoutRoutines/models/Slot";
@@ -9,15 +20,18 @@ import {
920
ConfigDetailsNeedsLogsField,
1021
ConfigDetailsOperationField,
1122
ConfigDetailsValueField,
23+
ConfigType,
1224
DeleteConfigDetailsButton
1325
} from "components/WorkoutRoutines/widgets/forms/BaseConfigForm";
1426
import React from "react";
1527
import { useTranslation } from "react-i18next";
16-
import { useParams } from "react-router-dom";
28+
import { Link, useParams } from "react-router-dom";
1729
import { getLanguageByShortName } from "services";
30+
import { makeLink, WgerLink } from "utils/url";
1831

1932
export const ProgressionEdit = (props: {
2033
objectKey: string,
34+
type: ConfigType,
2135
routineId: number,
2236
slotConfig: SlotConfig,
2337
iterations: number[]
@@ -26,7 +40,7 @@ export const ProgressionEdit = (props: {
2640
<React.Fragment>
2741
<Grid item md={12} lg={6}>
2842
<Typography variant="h6" gutterBottom>
29-
{props.objectKey}
43+
{props.type}
3044
</Typography>
3145
<Table size="small">
3246
<TableHead>
@@ -50,10 +64,10 @@ export const ProgressionEdit = (props: {
5064
? <DeleteConfigDetailsButton
5165
configId={config.id}
5266
routineId={props.routineId}
53-
type="weight"
67+
type={props.type}
5468
/>
5569
: <AddConfigDetailsButton
56-
type="weight"
70+
type={props.type}
5771
routineId={props.routineId}
5872
slotConfigId={props.slotConfig.id}
5973
iteration={iteration}
@@ -63,23 +77,23 @@ export const ProgressionEdit = (props: {
6377
<TableCell>
6478
{config && <ConfigDetailsValueField
6579
config={config}
66-
type="weight"
80+
type={props.type}
6781
routineId={props.routineId}
6882
slotConfigId={props.slotConfig.id}
6983
/>}
7084
</TableCell>
7185
<TableCell>
72-
{config && config && <ConfigDetailsOperationField
86+
{config && <ConfigDetailsOperationField
7387
config={config}
74-
type="weight"
88+
type={props.type}
7589
routineId={props.routineId}
7690
slotConfigId={props.slotConfig.id}
7791
/>}
7892
</TableCell>
7993
<TableCell>
8094
{config && <ConfigDetailsNeedsLogsField
8195
config={config}
82-
type="weight"
96+
type={props.type}
8397
routineId={props.routineId}
8498
slotConfigId={props.slotConfig.id}
8599
/>}
@@ -135,54 +149,76 @@ export const SlotProgressionEdit = () => {
135149

136150
return <>
137151
<Container maxWidth="lg"> {/*maxWidth={false}*/}
138-
<Typography variant={"h4"}>
139-
Edit progression for slot #{slotId}
140-
</Typography>
152+
<Grid container>
153+
<Grid xs={10}>
154+
<Typography variant={"h4"}>
155+
Edit progression for slot #{slotId}
156+
</Typography>
157+
</Grid>
158+
<Grid xs={2}>
159+
<Button
160+
component={Link}
161+
variant={"outlined"}
162+
size={"small"}
163+
to={makeLink(WgerLink.ROUTINE_EDIT, i18n.language, { id: routineId })}
164+
>
165+
back to routine edit
166+
</Button>
167+
</Grid>
168+
</Grid>
141169

142170

171+
<Box height={30} />
143172
{slot.configs.map((config) => <React.Fragment key={config.id}>
144173
<Typography variant="h5" gutterBottom>
145174
{config.exercise?.getTranslation(language).name}
146175
</Typography>
147176
<Grid container spacing={2}>
148177
<ProgressionEdit
149178
objectKey={'weightConfigs'}
179+
type="weight"
150180
routineId={routineId}
151181
slotConfig={config}
152182
iterations={iterations}
153183
/>
154184
<ProgressionEdit
155185
objectKey={'maxWeightConfigs'}
186+
type="max-weight"
156187
routineId={routineId}
157188
slotConfig={config}
158189
iterations={iterations}
159190
/>
160191
<ProgressionEdit
161192
objectKey={'repsConfigs'}
193+
type="reps"
162194
routineId={routineId}
163195
slotConfig={config}
164196
iterations={iterations}
165197
/>
166198
<ProgressionEdit
167199
objectKey={'maxRepsConfigs'}
200+
type="max-reps"
168201
routineId={routineId}
169202
slotConfig={config}
170203
iterations={iterations}
171204
/>
172205
<ProgressionEdit
173206
objectKey={'nrOfSetsConfigs'}
207+
type="sets"
174208
routineId={routineId}
175209
slotConfig={config}
176210
iterations={iterations}
177211
/>
178212
<ProgressionEdit
179213
objectKey={'restTimeConfigs'}
214+
type="rest"
180215
routineId={routineId}
181216
slotConfig={config}
182217
iterations={iterations}
183218
/>
184219
<ProgressionEdit
185220
objectKey={'maxRestTimeConfigs'}
221+
type="max-rest"
186222
routineId={routineId}
187223
slotConfig={config}
188224
iterations={iterations}

src/components/WorkoutRoutines/widgets/forms/BaseConfigForm.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const QUERY_MAP: { [key: string]: any } = {
7575
};
7676

7777

78-
type ConfigType = 'weight' | 'max-weight' | 'reps' | 'max-reps' | 'sets' | 'rest' | 'max-rest' | 'rir';
78+
export type ConfigType = 'weight' | 'max-weight' | 'reps' | 'max-reps' | 'sets' | 'rest' | 'max-rest' | 'rir';
7979

8080
export const ConfigDetailsValueField = (props: {
8181
config?: BaseConfig,
@@ -210,11 +210,11 @@ export const ConfigDetailsOperationField = (props: {
210210
const options = [
211211
{
212212
value: '+',
213-
label: '+',
213+
label: 'Add',
214214
},
215215
{
216216
value: '-',
217-
label: '-',
217+
label: 'Substract',
218218
},
219219
{
220220
value: 'r',

0 commit comments

Comments
 (0)