Skip to content

Commit

Permalink
ExerciseType added
Browse files Browse the repository at this point in the history
  • Loading branch information
vrnvu committed Apr 29, 2024
1 parent fe95a81 commit 7372901
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 90 deletions.
2 changes: 1 addition & 1 deletion src/App.tsx
Expand Up @@ -5,7 +5,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"

import PlanView from './views/PlanView'
import ProgramView from './views/ProgramView'
import { UserConfigProvider } from './context/UserConfigContext'
import { UserConfigProvider } from './contexts/UserConfigContext'


function App() {
Expand Down
21 changes: 14 additions & 7 deletions src/components/Cluster.tsx
Expand Up @@ -15,11 +15,18 @@ import {
TableHeader,
TableRow,
} from "@/components/ui/table"
import { UserConfig, useUserConfig } from "@/context/UserConfigContext";
import { ExerciseType, UserConfig, useUserConfig } from "@/contexts/UserConfigContext";

export interface ClusterProps {}
export default function Cluster({}: ClusterProps) {
const userConfig: UserConfig = useUserConfig();
const [benchPress, setBenchPress] = userConfig.exercises.get(ExerciseType.BENCH_PRESS)!;
const [backSquat, setBackSquat] = userConfig.exercises.get(ExerciseType.BACK_SQUAT)!;
const [weightedPullups, setWeightedPullups] = userConfig.exercises.get(ExerciseType.WEIGHTED_PULLUPS)!;

const [lastBenchPress, setLastBenchPress] = userConfig.lastExercises.get(ExerciseType.BENCH_PRESS)!;
const [lastBackSquat, setLastBackSquat] = userConfig.lastExercises.get(ExerciseType.BACK_SQUAT)!;
const [lastWeightedPullups, setLastWeightedPullups] = userConfig.lastExercises.get(ExerciseType.WEIGHTED_PULLUPS)!;

return (
<Card>
Expand All @@ -45,13 +52,13 @@ export default function Cluster({}: ClusterProps) {
<Label htmlFor="ex-1" className="sr-only">
Current 1RM
</Label>
<Input id="ex-1" type="number" min={0} defaultValue={userConfig.benchPress} onChange={(e) => userConfig.setBenchPress(e.target.valueAsNumber)}/>
<Input id="ex-1" type="number" min={0} defaultValue={benchPress} onChange={(e) => setBenchPress(e.target.valueAsNumber)}/>
</TableCell>
<TableCell>
<Label htmlFor="last-ex-1" className="sr-only">
Last 1RM
</Label>
<Input id="last-ex-1" type="number" min={0} defaultValue={userConfig.lastBenchPress} onChange={(e) => userConfig.setLastBenchPress(e.target.valueAsNumber)}/>
<Input id="last-ex-1" type="number" min={0} defaultValue={lastBenchPress} onChange={(e) => setLastBenchPress(e.target.valueAsNumber)}/>
</TableCell>
</TableRow>

Expand All @@ -61,13 +68,13 @@ export default function Cluster({}: ClusterProps) {
<Label htmlFor="ex-2" className="sr-only">
Current 1RM
</Label>
<Input id="ex-2" type="number" min={0} defaultValue={userConfig.backSquat} onChange={(e) => userConfig.setBackSquat(e.target.valueAsNumber)}/>
<Input id="ex-2" type="number" min={0} defaultValue={backSquat} onChange={(e) => setBackSquat(e.target.valueAsNumber)}/>
</TableCell>
<TableCell>
<Label htmlFor="last-ex-2" className="sr-only">
Last 1RM
</Label>
<Input id="last-ex-2" type="number" min={0} defaultValue={userConfig.lastBackSquat} onChange={(e) => userConfig.setLastBackSquat(e.target.valueAsNumber)}/>
<Input id="last-ex-2" type="number" min={0} defaultValue={lastBackSquat} onChange={(e) => setLastBackSquat(e.target.valueAsNumber)}/>
</TableCell>
</TableRow>

Expand All @@ -77,13 +84,13 @@ export default function Cluster({}: ClusterProps) {
<Label htmlFor="ex-3" className="sr-only">
Current 1RM
</Label>
<Input id="ex-3" type="number" min={0} defaultValue={userConfig.weightedPullups} onChange={(e) => userConfig.setWeightedPullups(e.target.valueAsNumber)}/>
<Input id="ex-3" type="number" min={0} defaultValue={weightedPullups} onChange={(e) => setWeightedPullups(e.target.valueAsNumber)}/>
</TableCell>
<TableCell>
<Label htmlFor="last-ex-3" className="sr-only">
Last 1RM
</Label>
<Input id="last-ex-2" type="number" min={0} defaultValue={userConfig.lastWeightedPullups} onChange={(e) => userConfig.setLastWeightedPullups(e.target.valueAsNumber)}/>
<Input id="last-ex-2" type="number" min={0} defaultValue={lastWeightedPullups} onChange={(e) => setLastWeightedPullups(e.target.valueAsNumber)}/>
</TableCell>
</TableRow>
</TableBody>
Expand Down
71 changes: 0 additions & 71 deletions src/context/UserConfigContext.tsx

This file was deleted.

47 changes: 47 additions & 0 deletions src/contexts/UserConfigContext.tsx
@@ -0,0 +1,47 @@
import React, { Dispatch, SetStateAction } from "react";
import { createContext, useState } from "react";

export enum ExerciseType {
BENCH_PRESS,
BACK_SQUAT,
WEIGHTED_PULLUPS
}

export interface UserConfig {
exercises: Map<ExerciseType, [number, Dispatch<SetStateAction<number>>]>;
lastExercises: Map<ExerciseType, [number, Dispatch<SetStateAction<number>>]>;
}

const UserConfigContext = createContext<UserConfig | undefined>(undefined);

export const useUserConfig: () => UserConfig = () => {
const userConfig = React.useContext(UserConfigContext);
if (userConfig == undefined) {
throw new Error("UserConfig context not initialized");
}

return userConfig;
}

export function UserConfigProvider({ children }: { children: React.ReactNode }) {
const exercises = new Map<ExerciseType, [number, Dispatch<SetStateAction<number>>]>();
exercises.set(ExerciseType.BENCH_PRESS, useState<number>(0));
exercises.set(ExerciseType.BACK_SQUAT, useState<number>(0));
exercises.set(ExerciseType.WEIGHTED_PULLUPS, useState<number>(0));

const lastExercises = new Map<ExerciseType, [number, Dispatch<SetStateAction<number>>]>();
lastExercises.set(ExerciseType.BENCH_PRESS, useState<number>(0));
lastExercises.set(ExerciseType.BACK_SQUAT, useState<number>(0));
lastExercises.set(ExerciseType.WEIGHTED_PULLUPS, useState<number>(0));

const userConfig: UserConfig = {
exercises,
lastExercises,
};

return (
<UserConfigContext.Provider value={userConfig}>
{children}
</UserConfigContext.Provider>
);
}
15 changes: 8 additions & 7 deletions src/views/PlanView.tsx
@@ -1,19 +1,20 @@
import Cluster from "@/components/Cluster";
import Component from "@/components/Component";
import { UserConfig, useUserConfig } from "@/context/UserConfigContext";
import { ExerciseType, UserConfig, useUserConfig } from "@/contexts/UserConfigContext";

export interface PlanViewProps {}
export default function PlanView({}: PlanViewProps) {
const userConfig: UserConfig = useUserConfig();

const benchPress = userConfig.benchPress;
const backSquat = userConfig.backSquat;
const weightedPullups = userConfig.weightedPullups;
const benchPress = userConfig.exercises.get(ExerciseType.BENCH_PRESS)![0];
const backSquat = userConfig.exercises.get(ExerciseType.BACK_SQUAT)![0];
const weightedPullups = userConfig.exercises.get!(ExerciseType.WEIGHTED_PULLUPS)![0];
const total = benchPress + backSquat + weightedPullups;

const lastBenchPress = userConfig.lastBenchPress;
const lastBackSquat = userConfig.lastBackSquat;
const lastWeightedPullups = userConfig.lastWeightedPullups;
const lastBenchPress = userConfig.lastExercises.get(ExerciseType.BENCH_PRESS)![0];
const lastBackSquat = userConfig.lastExercises.get(ExerciseType.BACK_SQUAT)![0];
const lastWeightedPullups = userConfig.lastExercises.get!(ExerciseType.WEIGHTED_PULLUPS)![0];

const lastTotal = lastBenchPress + lastBackSquat + lastWeightedPullups;

const benchIncrease = Math.round(((benchPress - lastBenchPress)/ lastBenchPress) * 100);
Expand Down
8 changes: 4 additions & 4 deletions src/views/ProgramView.tsx
Expand Up @@ -8,16 +8,16 @@ import {
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion"
import { UserConfig, useUserConfig } from "@/context/UserConfigContext";
import { ExerciseType, UserConfig, useUserConfig } from "@/contexts/UserConfigContext";

export interface ProgramViewProps {}
export default function ProgramView({}: ProgramViewProps) {
const userConfig: UserConfig = useUserConfig();

const exercieses: StrengthExercise[] = [
{name: "Bench press", sets: "3x5", weight: userConfig.benchPress},
{name: "Back squat", sets: "3x5", weight: userConfig.backSquat},
{name: "Weighted pullups", sets: "3x5", weight: userConfig.weightedPullups}
{name: "Bench press", sets: "3x5", weight: userConfig.exercises.get(ExerciseType.BENCH_PRESS)![0]},
{name: "Back squat", sets: "3x5", weight: userConfig.exercises.get(ExerciseType.BACK_SQUAT)![0]},
{name: "Weighted pullups", sets: "3x5", weight: userConfig.exercises.get(ExerciseType.WEIGHTED_PULLUPS)![0]}
];

const weekIds = ["item-1", "item-2", "item-3", "item-4", "item-5", "item-6", "item-7"];
Expand Down

0 comments on commit 7372901

Please sign in to comment.