Compare commits
No commits in common. "master" and "44d1ae511150d311fee772b457fad936767ebb9a" have entirely different histories.
master
...
44d1ae5111
36
src/App.tsx
36
src/App.tsx
@ -2,28 +2,13 @@ import { useState } from "react";
|
||||
import Exercises from "./components/Exercises";
|
||||
import Header from "./components/Header";
|
||||
import WorkoutSelector from "./components/WorkoutSelector";
|
||||
import { CurrentExerciseType, ExerciseInfosType } from "./types";
|
||||
import { CurrentExerciseType } from "./types";
|
||||
|
||||
export enum Stat { Reps, Sets, Weight, Time, Steps, MaxHR, AvgHR, StepsPerMin };
|
||||
|
||||
export function statLength() {
|
||||
return Object.keys(Stat).length / 2;
|
||||
}
|
||||
|
||||
export const exerciseInfos: ExerciseInfosType = {
|
||||
"Squat": {
|
||||
defaultStats: [Stat.Reps, Stat.Sets, Stat.Weight]
|
||||
},
|
||||
"Deadlift": {
|
||||
defaultStats: [Stat.Reps, Stat.Sets, Stat.Weight]
|
||||
},
|
||||
"Bench Press": {
|
||||
defaultStats: [Stat.Reps, Stat.Sets, Stat.Weight]
|
||||
}
|
||||
}
|
||||
enum Stat { Reps, Sets, Weight, Time, Steps, MaxHR, AvgHR, StepsPerMin };
|
||||
|
||||
function App() {
|
||||
const [currentExercises, setExercises] = useState<CurrentExerciseType[]>([
|
||||
const [currentExercises, setExercises]: [CurrentExerciseType[], any] = useState([
|
||||
{
|
||||
name: "Squat",
|
||||
stats: { "Weight": 10 }
|
||||
@ -43,20 +28,15 @@ function App() {
|
||||
{
|
||||
name: "Squat",
|
||||
stats: {}
|
||||
}]);
|
||||
}])
|
||||
}
|
||||
|
||||
function addStat(addIndex: number) {
|
||||
const l = statLength();
|
||||
for (let i = 0; i < l; i++) {
|
||||
if (currentExercises[addIndex].stats[Stat[i]] === undefined) {
|
||||
var newExercises = [...currentExercises];
|
||||
newExercises[addIndex].stats[Stat[i]] = null;
|
||||
setExercises(newExercises);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const checkStat in Stat) {
|
||||
//console.log(checkStat, typeof (checkStat));
|
||||
}
|
||||
console.log(currentExercises[addIndex].stats)
|
||||
//setExercises([..])
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,13 +1,10 @@
|
||||
import { exerciseInfos } from "../App";
|
||||
import { CurrentExerciseType } from "../types";
|
||||
import InputStat from "./InputStat";
|
||||
|
||||
function Exercise({ currentExercise, deleteCurrentExercise, addStat }: { currentExercise: CurrentExerciseType, deleteCurrentExercise: () => void, addStat: () => void }) {
|
||||
return (
|
||||
<div>
|
||||
Exercise :<select>
|
||||
{Object.keys(exerciseInfos).map((exerciseName, index) => <option key={index} value={exerciseName}>{exerciseName}</option>)}
|
||||
</select>
|
||||
Exercise :<select></select>
|
||||
{Object.entries(currentExercise.stats).map(([stat, value], index) => <InputStat key={index} stat={stat} />)}
|
||||
<button onClick={addStat}>Add Stat</button>
|
||||
<button onClick={deleteCurrentExercise}>Delete</button>
|
||||
|
@ -1,10 +1,7 @@
|
||||
import { Stat, statLength } from "../App";
|
||||
function InputStat({ stat, statType }: { stat: string, statType?: string }) {
|
||||
return (
|
||||
<div>
|
||||
<select>
|
||||
{Object.keys(Stat).filter((_, index) => index < statLength()).map((_, index) => <option key={index} value={Stat[index]}>{Stat[index]}</option>)}
|
||||
</select>: <input type={(statType === undefined ? 'number' : statType)} />
|
||||
<select>{stat}</select>: <input type={(statType === undefined ? 'number' : statType)} />
|
||||
</div >
|
||||
);
|
||||
}
|
||||
|
8
src/types.d.ts
vendored
8
src/types.d.ts
vendored
@ -1,8 +1,4 @@
|
||||
export type CurrentExerciseType = {
|
||||
name: string,
|
||||
stats: { [stat: string]: any },
|
||||
};
|
||||
|
||||
export type ExerciseInfosType = {
|
||||
[key: string]: { defaultStats: Stat[] }
|
||||
}
|
||||
stats: { [stat: Stat]: any },
|
||||
};
|
Loading…
Reference in New Issue
Block a user