{"version":3,"sources":["assets/loading.svg","components/Auth/Loading.js","components/Auth/protected-route.js","components/Auth/LoginButton.js","components/Auth/LogoutButton.js","RoutinesExercise.js","Routines.js","ExerciseShow.js","Routine.js","Set.js","Exercise.js","Const.js","Utils.js","ExercisesStore.js","ExercisesLibrary.js","RoutineEdit.js","ExerciseDetail.js","Exercises.js","RoutineCreate.js","Timer.js","RoutineActive.js","LogExercise.js","Log.js","Profile.js","App.js","components/Auth/auth0-provider-with-history.js","index.js"],"names":["module","exports","Loading","className","src","loading","alt","ProtectedRoute","component","args","withAuthenticationRequired","onRedirecting","LoginButton","useAuth0","loginWithRedirect","isAuthenticated","onClick","screen_hint","LogoutButton","logout","RoutinesExercise","props","history","useHistory","useState","routine","exerciseList","useEffect","exercises","forEach","exercise","push","title","totalSets","sum","sets","length","key","id","str","max","suffix","join","substr","lastIndexOf","exerciseTitlesString","isCardio","set","Number","gymEquipment","$numberInt","weight","reps","totalWeight","Routines","routines","setRoutines","user","userID","sub","split","axios","get","then","res","data","console","log","catch","error","to","map","ExerciseShow","numberOfSets","repRange","weightRange","Math","min","Routine","useParams","setRoutine","post","window","confirm","delete","i","Set","location","uid","ShortUniqueId","completed","setComplete","setSetcomplete","setExercise","isDuration","setIsDuration","setIsAssisted","isDistance","handleInputChangeRepsWeights","index","event","target","name","value","bgcolor","onClickRemoveSet","format","duration","placeholder","disabled","onChange","e","type","setSetCompleted","toggleCompleted","Exercise","useLocation","removeExercise","width","WEIGHTUNITS","isBodyweight","weightUnit","isUnilateral","logSet","incomingSet","updatedExercise","setsAdded","updateExercise","removeSet","pathname","onClickAddNewSet","muscleNumberToName","number","equipmentumberToName","ExercisesContext","React","createContext","ExercisesStore","children","availableExercises","setAvailableExercises","Provider","ExerciseLibrary","filter","setFilter","searchValue","setSearchValue","useContext","filteredExercises","setFilteredExercises","selectedExercises","setSelectedExercises","match","RegExp","primary","firstFilteredExercises","selectedvalue","onClickExerciseMobile","checkIfExeciseAlreadyAdded","find","ex","onClickExercise","some","onClickCancel","onClickAddExercise","RoutineEdit","setExercises","isOpen","setOpen","newSet","updatedSets","splice","preventDefault","newRoutine","put","handleSubmit","onClose","Container","Content","ExercisesLibrary","updatedExercises","selectedExercise","initialSet","disableDrag","Backdrop","ExerciseDetail","primaryEquipment","secondaryEquipment","gymEquipment2","concat","getEquipment","secondaryMusclesList","secondary","muscle","secondaryMuscleList","instructions","Exercises","setSelectedExercise","onClickSelectedExerciseMobile","RoutineCreate","userId","newRoutineId","initialFormState","distance","useTimer","initialState","timer","setTimer","isActive","setIsActive","isPaused","setIsPaused","countRef","useRef","handleStart","current","setInterval","handlePause","clearInterval","handleResume","handleReset","RoutineActive","setsToLog","setSetsToLog","s","completedOn","Date","groupSetsToRoutines","setsToExercises","reduce","r","rest","timeTable","Object","values","getSeconds","slice","minutes","floor","getMinutes","getHours","formatTime","LogExercise","showExerciseList","setShowExerciseList","moment","fromNow","time","Log","picture","nickname","email","BarChart","height","uv","pv","amt","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","Tooltip","Bar","fill","App","isLoading","exact","path","Profile","Auth0ProviderWithHistory","domain","clientId","redirectUri","origin","onRedirectCallback","appState","returnTo","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.4f50c62c.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/loading.c5590569.svg\";","import React from \"react\";\nimport loading from \"../../assets/loading.svg\";\n\nconst Loading = () => (\n
\n \"Loading\"\n
\n);\n\nexport default Loading;\n","import React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport { withAuthenticationRequired } from \"@auth0/auth0-react\";\r\nimport Loading from \"./Loading\";\r\n\r\nconst ProtectedRoute = ({ component, ...args }) => (\r\n ,\r\n })}\r\n {...args}\r\n />\r\n);\r\n\r\nexport default ProtectedRoute;","import React from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\n\nconst LoginButton = () => {\n const { loginWithRedirect, isAuthenticated } = useAuth0();\n\n return (\n !isAuthenticated && (\n \n )\n )\n}\n\nexport default LoginButton\n","import React from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\n\nconst LogoutButton = () => {\n const { logout, isAuthenticated } = useAuth0();\n\n return (\n isAuthenticated && (\n logout()}>\n \n \n )\n )\n}\n\nexport default LogoutButton\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {WEIGHTUNITS} from './Const' \n\nconst RoutinesExercise = (props) => {\n const history = useHistory();\n\n const [showExerciseList, setShowExerciseList] = useState(false);\n\n const routine = props.routine;\n const exerciseList = [];\n\n const onClickRoutine = (id) => {\n history.push(`/routine/${id}`);\n };\n\n const exerciseTitlesString = (routine) => {\n const exerciseList = [];\n routine.exercises.forEach((exercise) => {\n exerciseList.push(exercise.title);\n });\n\n const truncate = (str, max, suffix) =>\n str.length < max\n ? str\n : `${str.substr(\n 0,\n str.substr(0, max - suffix.length).lastIndexOf(\" \")\n )}${suffix}`;\n return truncate(exerciseList.join(\", \"), 50, \"...\");\n };\n\n useEffect(() => {\n routine.exercises.forEach((exercise) => {\n exerciseList.push(exercise.title);\n });\n }, [exerciseList, routine.exercises]);\n\n const toggleExerciseList = () => {\n setShowExerciseList(!showExerciseList);\n };\n\n const totalSets = () => {\n var sum = 0;\n routine.exercises.forEach((exercise) => {\n sum += exercise.sets.length;\n });\n return sum;\n };\n\n const totalWeight = () => {\n var sum = 0;\n routine.exercises.forEach((exercise) => {\n if (exercise.isCardio === true) {\n return 0\n }\n exercise.sets.forEach((set) => {\n if (Number(exercise.gymEquipment.$numberInt) === 1) {\n sum += set.weight * set.reps * 2;\n } else {\n sum += set.weight * set.reps;\n }\n });\n\n });\n return Number(sum);\n };\n\n return (\n
\n {routine && (\n
\n onClickRoutine(routine.id)}\n >\n
\n {routine.title}\n
\n \n

\n {/* {showExerciseList && */}\n {exerciseTitlesString(routine)}\n

\n
\n
\n \n {\" \"}\n \n {totalSets()} {totalSets() === 1 ? \"Set\" : \"Sets\"}{\" \"}\n \n \n \n {\" \"}\n \n {totalWeight()} {\" \" + WEIGHTUNITS}{\" \"}\n \n \n
\n
\n
\n )}\n
\n );\n};\n\nexport default RoutinesExercise;\n","import React, { useState, useEffect} from \"react\";\nimport { Link } from \"react-router-dom\";\nimport RoutinesExercise from \"./RoutinesExercise\";\nimport axios from 'axios';\nimport { useAuth0 } from \"@auth0/auth0-react\";\n\n\nconst Routines = () => {\n const [routines, setRoutines] = useState([]);\n const { user } = useAuth0();\n\n useEffect(() => {\n if (user ) {\n const userID = user.sub.split(\"|\")[1];\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getRoutinesByUserId?userID=' + userID)\n .then(res => {\n const data = res.data;\n console.log(data)\n setRoutines(data);\n })\n .catch(error => console.log(error))\n }\n }, [user,setRoutines]);\n\n return (\n <>\n
\n
\n \n New Routine\n \n
\n My Routines\n
\n\n
\n
\n {routines &&\n
\n
\n \n {routines.length > 0 ? (\n routines.map((routine) => (\n \n ))\n ):(\n
\n \n
\n Get started\n
\n

\n Start by creating a new workout routine.\n

\n
\n )}\n
\n
\n \n }\n \n );\n};\n\nexport default Routines;\n","import React from \"react\";\nimport {WEIGHTUNITS} from './Const' \n\n\nconst ExerciseShow = (props) => {\n const exercise = props.exercise;\n\n const numberOfSets = exercise.sets.length;\n\n const repRange = [];\n const weightRange = [];\n\n exercise.sets.forEach((set) => {\n repRange.push(set.reps);\n weightRange.push(set.weight);\n });\n\n return (\n
\n
\n
\n {exercise.title}\n
\n
\n \n {\" \"}\n {numberOfSets} Sets\n \n \n {\" \"}\n \n {Math.min(...repRange)} - {Math.max(...repRange)} reps\n \n \n \n {\" \"}\n \n {Math.min(...weightRange)} - {Math.max(...weightRange)} {\" \" + WEIGHTUNITS}\n \n \n
\n
\n
\n );\n};\n\nexport default ExerciseShow;\n","import React, {useState, useEffect} from \"react\";\nimport { Link, useParams, useHistory } from \"react-router-dom\";\n\nimport ExerciseShow from \"./ExerciseShow\";\nimport axios from 'axios';\n\n\n\nconst Routine = () => {\n const history = useHistory();\n\n const { id } = useParams();\n const [routine, setRoutine] = useState()\n\n useEffect(() => {\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getRoutineById?id=' + id)\n .then(res => {\n const data = res.data;\n setRoutine(data);\n })\n .catch(error => console.log(error))\t}, [id]); \n\n const onClickDeleteRoutine = () => {\n axios.delete('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/deleteRoutine?id=' + id)\n .then(res => {\n\n history.push('/routines');\n })\n .catch(error => console.log(error))\n };\n\n const onClickStartWorkout = () => {\n axios.post('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/setActiveRoutine', routine)\n .then(res => {\n history.push(\"/routine-active\");\n })\n .catch(error => console.log(error)) \n }\n\n return (\n <> \n {routine &&\n <>\n
\n
\n
\n {routine.title}\n
\n
\n
\n\n
\n
\n \n\n
\n
\n\n
\n
\n\n \n {\" \"}\n Edit Routine\n \n
\n
\n\n
\n
\n {\n if (window.confirm(\"Are you sure you want to delete this routine? It will be gone forever\")) {onClickDeleteRoutine(routine.id);}}}\n >{\" \"}\n Delete Routine\n \n
\n
\n\n
\n
\n
\n Exercises\n
\n \n {routine.exercises &&\n routine.exercises.map((exercise,i) => (\n \n ))}\n
\n
\n\n \n }\n \n );\n};\n\nexport default Routine;\n","import React, {useState, useEffect} from \"react\";\nimport ShortUniqueId from 'short-unique-id';\nimport NumberFormat from 'react-number-format';\n\nconst Set = (props) => {\n // const exercise = props.exercise;\n const location = props.location;\n const uid = new ShortUniqueId({ length: 20 })\n\n\n const set = props.set;\n\n const i = props.i;\n\n useEffect(() => {\n set.completed=false;\n if (location === 'routine-active') {\n set.id = uid();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n \n const [setComplete, setSetcomplete] = useState(false)\n const [exercise, setExercise] = useState()\n const [isDuration, setIsDuration] = useState();\n const [isAssisted, setIsAssisted] = useState();\n\n\n useEffect(() => {\n setExercise(props.exercise)\n }, [props.exercise]);\n\n useEffect(() => {\n if (exercise) {\n if (exercise.isDistance === true) {\n setIsDuration(true)\n } else {\n setIsDuration(false)\n }\n if (Number(exercise.gymEquipment.$numberInt === 58)) {\n setIsAssisted(true)\n }\n }\n \n }, [exercise]);\n\n const handleInputChangeRepsWeights = (exercise, index, set, event) => {\n const { name, value } = event.target;\n console.log(name,value)\n set[name] = value;\n props.handleInputChangeRepsWeights(exercise, set);\n };\n\n const toggleCompleted = (exercise, set) => {\n set.completed = !set.completed\n setSetcomplete(!setComplete)\n props.setSetCompleted(exercise, set)\n }\n\n const onClickRemoveSet = (exercise, index) => {\n props.onClickRemoveSet(exercise, index);\n };\n\n return (\n <>\n {set &&\n \n \n \n {!setComplete ? (\n onClickRemoveSet(exercise, set.index)}\n >\n ) : (\n \n )}\n \n \n

\n {i + 1}\n

\n \n \n{isDuration ?\n(\n location !== 'create-routine' ? (\n <>\n {/* handleInputChangeRepsWeights(exercise, i, set, e)}\n /> */}\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n \n) : (\n// handleInputChangeRepsWeights(exercise, i, set, e)}\n// />\n handleInputChangeRepsWeights(exercise, i, set, e)}\n/>\n)\n\n) : (\n location !== 'create-routine' ? (\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n) : (\n handleInputChangeRepsWeights(exercise, i, set, e)}\n/>\n)\n)\n}\n\n\n\n\n \n \n \n\n {isDuration ? (\n location !== 'create-routine' ? (\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n ):(\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n )\n\n\n ):(\n location !== 'create-routine' ? (\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n ):(\n handleInputChangeRepsWeights(exercise, i, set, e)}\n />\n )\n\n )\n\n\n }\n \n {location === 'routine-active' &&\n \n toggleCompleted(exercise, set)}\n >\n \n }\n \n}\n \n );\n};\n\nexport default Set;\n","import React from \"react\";\n\nimport Set from \"./Set\";\nimport { useLocation } from \"react-router-dom\";\nimport {WEIGHTUNITS} from './Const' \nimport {DISTANCEUNITS} from './Const' \n\nconst Exercise = (props) => {\n const exercise = props.exercise;\n const location = useLocation();\n\n\n const onClickAddNewSet = (exercise) => {\n props.onClickAddNewSet(exercise);\n };\n\n const onClickRemoveExercise = (id) => {\n props.removeExercise(id);\n };\n\n const updateExercise = (exercise, incomingSet) => {\n const updatedExercise = { ...exercise };\n const setsAdded = updatedExercise.sets.map((set) =>\n set.index === incomingSet.id ? incomingSet : set\n );\n exercise.sets = setsAdded;\n props.updateExercise(updatedExercise);\n };\n\n const onClickRemoveSet = (exercise, index) => {\n props.removeSet(exercise, index);\n };\n\n const logSet = (exercise, set) => {\n props.logSet(exercise, set) \n }\n\nconst weightUnit = () => {\n if (exercise.isDistance === true) {\n return 'HH:SS';\n }\n if (Number(exercise.gymEquipment.$numberInt) === 1) {\n const output = WEIGHTUNITS + ' (per Arm)'\n return output\n }\n if (exercise.isBodyweight === true) {\n const output = WEIGHTUNITS + '(Added)'\n return output\n }\n return WEIGHTUNITS;\n}\n\n\nconst repsDefinition = () => {\n if (exercise.isDistance === true) {\n return DISTANCEUNITS\n }\n if (exercise.isUnilateral === true) {\n return 'REPS (per Side)'\n }\n return 'REPS'\n}\n\n return (\n
\n
\n {exercise.title}\n \n onClickRemoveExercise(exercise.id)}\n >\n \n
\n \n \n \n \n \n \n \n {location === 'routine-active' &&\n \n }\n \n\n {exercise.sets &&\n exercise.sets.map((set, index) => (\n logSet(exercise, set)}\n handleInputChangeRepsWeights={() => updateExercise(exercise, index)}\n onClickRemoveSet={() => onClickRemoveSet(exercise, index)}\n location={location.pathname.split(\"/\")[1]}\n exercise={exercise}\n />\n ))}\n \n
\n

SET

\n
\n

{weightUnit()}

\n
\n

{repsDefinition()}

\n
\n onClickAddNewSet(exercise)}\n >\n Add Set\n \n
\n );\n};\n\nexport default Exercise;\n","export const WEIGHTUNITS = 'LBS';\r\nexport const DISTANCEUNITS = 'MILES';\r\nexport const BODYWEIGHT = 195;\r\nexport const BODYWEIGHTUNITS = 'LBS';","export const formatTime = (timer) => {\r\n const getSeconds = `0${timer % 60}`.slice(-2);\r\n const minutes = `${Math.floor(timer / 60)}`;\r\n const getMinutes = `0${minutes % 60}`.slice(-2);\r\n const getHours = `0${Math.floor(timer / 3600)}`.slice(-2);\r\n\r\n return `${getHours} : ${getMinutes} : ${getSeconds}`;\r\n};\r\n\r\nexport const muscleNumberToName = (number) => {\r\n switch (Number(number.$numberInt)) {\r\n case 1:\r\n return \"Abs\";\r\n case 2:\r\n return \"Back\";\r\n case 3:\r\n return \"Biceps\";\r\n case 4:\r\n return \"Calves\";\r\n case 5:\r\n return \"Chest\";\r\n case 6:\r\n return \"Glutes\";\r\n case 7:\r\n return \"Hamstrings\";\r\n case 8:\r\n return \"Quadriceps\";\r\n case 9:\r\n return \"Shoulders\";\r\n case 10:\r\n return \"Triceps\";\r\n case 11:\r\n return \"Trapezius\";\r\n case 12:\r\n return \"Lower Back\";\r\n case 13:\r\n return \"Abductors\";\r\n case 14:\r\n return \"Adductors\";\r\n case 15:\r\n return \"Forearms\";\r\n case 16:\r\n return \"Neck\";\r\n default:\r\n return \"Other\";\r\n }\r\n};\r\n\r\nexport const equipmentumberToName = (number) => {\r\n switch (Number(number.$numberInt)) {\r\n case 0:\r\n return \"Barbell\";\r\n case 1:\r\n return \"Dumbbell\";\r\n case 2:\r\n return \"EZ-Bar\";\r\n case 3:\r\n return \"Kettlebell\";\r\n case 4:\r\n return \"Trap Bar\";\r\n case 5:\r\n return \"Bench Press Machine\";\r\n case 6:\r\n return \"Biceps Curl Machine\";\r\n case 7:\r\n return \"Calf Press Machine\";\r\n case 8:\r\n return \"Fly Machine\";\r\n case 9:\r\n return \"Hack Squat Machine\";\r\n case 10:\r\n return \"Leg Curl Machine\";\r\n case 11:\r\n return \"Leg Extension Machine\";\r\n case 12:\r\n return \"Leg PRess Machine\";\r\n case 13:\r\n return \"Preacher Curl Machine\";\r\n case 14:\r\n return \"Row Machine\";\r\n case 15:\r\n return \"Shoulder Press Machine\";\r\n case 16:\r\n return \"Shoulder Shrug Machine\";\r\n case 17:\r\n return \"Squat Machine\";\r\n case 18:\r\n return \"Hip Adductor Machine\";\r\n case 19:\r\n return \"Thigh Adductor Machine\";\r\n case 20:\r\n return \"Triceps Extension Machine\";\r\n case 21:\r\n return \"Freemotion Machine\";\r\n case 22:\r\n return \"Hammerstrength Machine\";\r\n case 23:\r\n return \"Smith Machine\";\r\n case 24:\r\n return \"Crossover Cable\";\r\n case 25:\r\n return \"Hi-Lo Pulley Cable\";\r\n case 26:\r\n return \"Lat Pulldown Cable\";\r\n case 27:\r\n return \"Rope Cable\";\r\n case 28:\r\n return \"Row Cable\";\r\n case 29:\r\n return \"Back Extension Bench\";\r\n case 30:\r\n return \"Decline Bench\";\r\n case 31:\r\n return \"Glute Ham Raise Bench\";\r\n case 32:\r\n return \"Preacher Curl Bench\";\r\n case 33:\r\n return \"Reverse Hyper Bench\";\r\n case 34:\r\n return \"Vertical Bench\";\r\n case 35:\r\n return \"Dip Bar\";\r\n case 36:\r\n return \"Parallette Bars\";\r\n case 37:\r\n return \"Pull Up Bar\";\r\n case 38:\r\n return \"Mini Loop Bands\";\r\n case 39:\r\n return \"Box\";\r\n case 40:\r\n return \"Cone\";\r\n case 41:\r\n return \"Farmer's Walk Handles\";\r\n case 42:\r\n return \"Medicine Ball\";\r\n case 43:\r\n return \"Rings\";\r\n case 44:\r\n return \"Rope\";\r\n case 45:\r\n return \"Sled\";\r\n case 46:\r\n return \"Exercise Ball\";\r\n case 47:\r\n return \"T-Bar\";\r\n case 48:\r\n return \"Tire\";\r\n case 49:\r\n return \"TRX\";\r\n case 50:\r\n return \"Yoke\";\r\n case 51:\r\n return \"Human Body\";\r\n case 52:\r\n return \"Flat Bench\";\r\n case 53:\r\n return \"Incline Bench\";\r\n case 54:\r\n return \"Squat Rack\";\r\n case 55:\r\n return \"Balance Trainer\";\r\n case 56:\r\n return \"Ab Crunch Machine\";\r\n case 57:\r\n return \"Back Extension Machine\";\r\n case 58:\r\n return \"Assisted Weight Machine\";\r\n case 59:\r\n return \"Triceps Dip Machine\";\r\n case 60:\r\n return \"Leg Press\";\r\n case 61:\r\n return \"Battle Ropes\";\r\n case 62:\r\n return \"Glute Kickback Machine\";\r\n case 63:\r\n return \"Foam Roll\";\r\n case 64:\r\n return \"Ab Wheel\";\r\n case 65:\r\n return \"PVC Pipe\";\r\n case 67:\r\n return \"Loop Band\";\r\n case 68:\r\n return \"Handle Bands\";\r\n default:\r\n return \"Other\";\r\n }\r\n};\r\n\r\n//import { equipmentumberToName } from './Utils';\r\n","import React, {useState, useEffect} from 'react'\r\nimport axios from 'axios';\r\n\r\nexport const ExercisesContext = React.createContext();\r\n\r\n\r\nconst ExercisesStore = ({ children }) => {\r\n const [availableExercises, setAvailableExercises] = useState(null);\r\n\r\n useEffect(() => {\r\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getAllExercises')\r\n .then(res => {\r\n const data = res.data;\r\n setAvailableExercises(data);\r\n })\r\n .catch(error => console.log(error))\r\n}, []);\r\n\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\n\r\nexport default ExercisesStore;","import React, { useState, useEffect, Fragment, useContext } from \"react\";\n// import { useExercisesStore } from \"./ExercisesContext\";\n// import axios from 'axios';\nimport { muscleNumberToName } from './Utils';\nimport { ExercisesContext } from \"./ExercisesStore\";\n\nconst ExerciseLibrary = (props) => {\n const location = props.location;\n\n // const exercisesStore = useExercisesStore();\n\n // const [availableExercises, setAvailableExercises] = useState([]);\n const [filter, setFilter] = useState(0);\n const [searchValue, setSearchValue] = useState(\"\");\n const [availableExercises, setAvailableExercises] = useContext(ExercisesContext);\n const [filteredExercises, setFilteredExercises] = useState(availableExercises);\n\n const [selectedExercises, setSelectedExercises] = useState([]);\n\n// useEffect(() => {\n// axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getAllExercises')\n// .then(res => {\n// const data = res.data;\n// setAvailableExercises(data);\n// })\n// .catch(error => console.log(error))\n// }, []);\n\n\n const handleChange = (event) => {\n setFilter(Number(event.target.value));\n };\n\n useEffect(() => {\n if (filter === 0 && searchValue === \"\") {\n setFilteredExercises(availableExercises);\n }\n\n if (searchValue !== \"\" && filter === 0) {\n setFilteredExercises(\n availableExercises.filter((exercise) =>\n exercise.title.match(new RegExp(searchValue, \"i\"))\n )\n );\n }\n\n if (filter !== 0 && searchValue === \"\") {\n setFilteredExercises(\n availableExercises.filter((exercise) => Number(exercise.primary.$numberInt) === filter)\n );\n }\n\n if (filter !== 0 && searchValue !== \"\") {\n const firstFilteredExercises = availableExercises.filter((exercise) => Number(exercise.primary.$numberInt) === filter)\n setFilteredExercises(\n firstFilteredExercises.filter((exercise) =>\n exercise.title.match(new RegExp(searchValue, \"i\"))\n )\n );\n }\n\n }, [availableExercises, filter, searchValue]);\n\n const onClickExercise = (exercise) => {\n if (location === \"exercises\") {\n props.onClickExerciseMobile(exercise);\n }\n\n if (location === \"create-routine\") {\n const checkIfExeciseAlreadyAdded = !selectedExercises.find((ex) => ex.id === exercise.id)\n if (checkIfExeciseAlreadyAdded === true) {\n setSelectedExercises([...selectedExercises, exercise]);\n } else {\n setSelectedExercises(selectedExercises.filter((ex) => ex.id !== exercise.id));\n }\n } \n\n if (location === \"routine-edit\") {\n const checkIfExeciseAlreadyAdded = !selectedExercises.find((ex) => ex.id === exercise.id)\n if (checkIfExeciseAlreadyAdded === true) {\n setSelectedExercises([...selectedExercises, exercise]);\n } else {\n setSelectedExercises(selectedExercises.filter((ex) => ex.id !== exercise.id));\n }\n }\n\n if (location === \"routine-active\") {\n const checkIfExeciseAlreadyAdded = !selectedExercises.find((ex) => ex.id === exercise.id)\n if (checkIfExeciseAlreadyAdded === true) {\n setSelectedExercises([...selectedExercises, exercise]);\n } else {\n setSelectedExercises(selectedExercises.filter((ex) => ex.id !== exercise.id));\n }\n }\n }\n const onClickAddExercise = (selectedExercises) => {\n props.onClickExercise(selectedExercises)\n }\n\n const onClickCancel = () => {\n props.onClickCancel()\n }\n\n \n\n return (\n <>\n \n
\n
\n
\n {/*
*/}\n\n
\n

Exercise Library

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n\n setSearchValue(e.target.value)}\n />\n
\n
\n

Library{location === \"exercises\" && Create Exercise}

\n\n\n
\n {/*
*/}\n\n\n {filteredExercises &&\n filteredExercises.map((exercise, i) => (\n \n onClickExercise(exercise)}\n >\n
ex.id === exercise.id) ? \"verticalLine\" : \"\"}`}>\n

{exercise.title}

\n

\n {muscleNumberToName(exercise.primary)}\n

\n
\n \n {filteredExercises.length !== i + 1 && (\n
\n )}\n
\n ))}\n
\n
\n \n
\n {location !== \"exercises\" &&\n<>\n
\n
\n\n \n onClickCancel()}\n >\n Cancel\n \n
\n
\n onClickAddExercise(selectedExercises)}\n disabled={selectedExercises.length < 1 ? \"disabled\" : null}\n\n >\n {selectedExercises.length > 1 ? \n (\n <>Add Exercises ({selectedExercises.length})\n ):(\n <>Add Exercise ({selectedExercises.length})\n )}\n \n \n
\n
\n \n }\n
\n
\n
\n \n );\n};\n\nexport default ExerciseLibrary;\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory, useParams, useLocation } from \"react-router-dom\";\n\nimport Exercise from \"./Exercise\";\nimport ExercisesLibrary from \"./ExercisesLibrary\";\n\nimport ShortUniqueId from \"short-unique-id\";\nimport Sheet from 'react-modal-sheet';\n\nimport axios from 'axios';\n\n\nconst RoutineEdit = () => {\n const location = useLocation();\n const uid = new ShortUniqueId({ length: 20 });\n\n const history = useHistory();\n\n const { id } = useParams();\n\n const [routine, setRoutine] = useState()\n const [exercises, setExercises] = useState(\"\");\n const [isOpen, setOpen] = useState(false)\n\n\n\n useEffect(() => {\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getRoutineById?id=' + id)\n .then(res => {\n const data = res.data;\n setRoutine(data);\n })\n .catch(error => console.log(error))\t}, [id]); \n\n useEffect(() => {\n if (routine && routine.exercises) {\n setExercises(routine.exercises);\n }\n }, [routine]);\n\n const handleInputChange = (event) => {\n const { name, value } = event.target;\n\n setRoutine({ ...routine, [name]: value });\n };\n\n const updateExercise = (updatedExercise) => {\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n \n\n\n const addExercises = (selectedExercises) => {\n const updatedExercises = []\n selectedExercises.map((selectedExercise) => {\n // console.log(selectedExercise.id.$numberInt)\n const checkIfExeciseAlreadyAdded = exercises.some((ex) => ex.id.$numberInt === selectedExercise.id.$numberInt)\n if (checkIfExeciseAlreadyAdded === false) {\n const updatedExercise = { ...selectedExercise };\n const initialSet = {\n index: 0,\n id: uid(),\n weight: \"\",\n reps: \"\",\n completed: false\n };\n updatedExercise.sets = [];\n updatedExercise.sets.push(initialSet);\n updatedExercises.push(updatedExercise)\n }\n \n })\n // console.log(updatedExercises)\n setExercises([...exercises, ...updatedExercises]);\n setOpen(false)\n };\n\n const onClickCancel = () => {\n setOpen(false)\n }\n\n\n const removeExercise = (id) => {\n setExercises(exercises.filter((exercise) => exercise.id !== id));\n };\n\n const onClickAddNewSet = (exercise) => {\n const updatedExercise = { ...exercise };\n const newSet = {\n index: updatedExercise.sets.length,\n id: uid(),\n weight: \"\",\n reps: \"\",\n completed: false\n };\n updatedExercise.sets.push(newSet);\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const removeSet = (exercise, index) => {\n const updatedExercise = { ...exercise };\n const updatedSets = updatedExercise.sets;\n updatedSets.splice(index, 1);\n updatedExercise.sets = updatedSets;\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n const newRoutine = {...routine}\n newRoutine.exercises = exercises\n axios.put('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/updateRoutine?id=' + id, newRoutine)\n .then(res => {\n history.push(`/routine/${routine.id}`);\n })\n .catch(error => console.log(error))\n}\n\n return (\n
\n {routine &&\n <>\n
\n
\n
\n

\n Edit Routine\n \n handleSubmit(e)}\n >\n Update Routine\n \n \n

\n
\n
\n\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n\n {exercises.length > 0 ? (\n exercises.map((exercise, i) => (\n \n ))\n ) : (\n
\n \n
\n Get started\n
\n

\n Start by adding an exercise to your routine.\n

\n
\n )}\n {/* {isMobile && */}\n
\n
\n setOpen(true)}\n >\n Add Exercises\n \n
\n \n setOpen(false)}\n // disableDrag={true}\n >\n \n {/* */}\n \n \n\n \n \n \n \n
\n {/* } */}\n
\n \n \n
\n \n
\n \n}\n
\n );\n};\n\nexport default RoutineEdit;\n","import React from \"react\";\nimport { muscleNumberToName, equipmentumberToName } from './Utils';\n\nconst ExerciseDetail = (props) => {\n \n const exercise = props.exercise\n\n const secondaryMuscleList = () => {\n const secondaryMusclesList = []\n if (exercise.secondary < 1) {\n return \"None\"\n }\n exercise.secondary.forEach((muscle) => {\n secondaryMusclesList.push(muscleNumberToName(muscle))\n })\n return secondaryMusclesList.join(', ')\n\n }\n\n const getEquipment = () => {\n const primaryEquipment = equipmentumberToName(exercise.gymEquipment);\n const secondaryEquipment = equipmentumberToName(exercise.gymEquipment2)\n if (primaryEquipment === secondaryEquipment)\n { return primaryEquipment }\n return primaryEquipment.concat(\", \", secondaryEquipment)\n }\n\n return (\n <>\n
\n
\n
\n {exercise.title}\n
\n

Equipment: {getEquipment()}

\n

Primary Muscle: {muscleNumberToName(exercise.primary)}

\n

Secondary Muscles: {secondaryMuscleList()}

\n
\n Instructions:\n
\n

{exercise.instructions}

\n
\n
\n\n
\n
\n props.onClickCancel()}\n >\n Close\n \n
\n
\n \n );\n};\n\nexport default ExerciseDetail;\n\n\n ","import React, { useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport ExercisesLibrary from \"./ExercisesLibrary\";\nimport ExerciseDetail from \"./ExerciseDetail\";\nimport Sheet from \"react-modal-sheet\";\n\nconst Exercises = () => {\n const location = useLocation();\n const [selectedExercise, setSelectedExercise] = useState(\"\");\n const [isOpen, setOpen] = useState(false);\n\n const onClickSelectedExerciseMobile = (exercise) => {\n setOpen(true);\n setSelectedExercise(exercise);\n };\n\n const onClickCancel = () => {\n setOpen(false);\n };\n\n return (\n <>\n
\n
\n \n
\n\n setOpen(false)}>\n \n {/* */}\n \n \n \n \n \n \n
\n \n );\n};\n\nexport default Exercises;\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport ExercisesLibrary from \"./ExercisesLibrary\";\nimport Exercise from \"./Exercise\";\nimport ShortUniqueId from \"short-unique-id\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport axios from 'axios';\nimport Sheet from 'react-modal-sheet';\n\n\nconst RoutineCreate = () => {\n const location = useLocation();\n const { user, isAuthenticated } = useAuth0();\n\n const userId = user.sub.split('|')[1]\n\n const uid = new ShortUniqueId({ length: 20 });\n const history = useHistory();\n const newRoutineId = uid();\n const [isOpen, setOpen] = useState(false)\n\n const initialFormState = { id: newRoutineId, title: \"\" };\n const [routine, setRoutine] = useState(initialFormState);\n const [exercises, setExercises] = useState([]);\n\nconsole.log(exercises)\n\n const handleInputChange = (event) => {\n const { name, value } = event.target;\n\n setRoutine({ ...routine, [name]: value });\n };\n\n const updateExercise = (updatedExercise) => {\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n useEffect(() => {\n setRoutine({ ...routine, exercises: exercises });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [exercises]);\n\n const addExercises = (selectedExercises) => {\n const updatedExercises = []\n selectedExercises.map((selectedExercise) => {\n // console.log(selectedExercise.id.$numberInt)\n const checkIfExeciseAlreadyAdded = exercises.some((ex) => ex.id.$numberInt === selectedExercise.id.$numberInt)\n if (checkIfExeciseAlreadyAdded === false) {\n const updatedExercise = { ...selectedExercise };\n const initialSet = {\n index: 0,\n id: uid(),\n weight: \"\",\n distance: 0,\n reps: \"\",\n completed: false\n };\n updatedExercise.sets = [];\n updatedExercise.sets.push(initialSet);\n updatedExercises.push(updatedExercise)\n }\n \n })\n // console.log(updatedExercises)\n setExercises([...exercises, ...updatedExercises]);\n setOpen(false)\n };\n\n const onClickCancel = () => {\n setOpen(false)\n }\n\n const removeExercise = (id) => {\n setExercises(exercises.filter((exercise) => exercise.id !== id));\n };\n\n const onClickAddNewSet = (exercise) => {\n const updatedExercise = { ...exercise };\n const newSet = {\n index: updatedExercise.sets.length,\n id: uid(),\n weight: \"\",\n distance: 0,\n reps: \"\",\n completed: false\n };\n updatedExercise.sets.push(newSet);\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const removeSet = (exercise, index) => {\n const updatedExercise = { ...exercise };\n const updatedSets = updatedExercise.sets;\n updatedSets.splice(index, 1);\n updatedExercise.sets = updatedSets;\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n const newRoutine = {...routine}\n newRoutine.uid = userId\n axios.post('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/addRoutine', newRoutine)\n .then(res => {\n history.push(`/routine/${routine.id}`);\n })\n .catch(error => console.log(error))\n }\n\n return (\n\n
\n {/* {!isMobile &&\n\n
\n \n
\n } */}\n\n
\n
\n
\n

\n Create Routine\n \n handleSubmit(e)}\n disabled={routine.title === '' ? \"disabled\" : exercises < 1 ? \"disabled\" : null}\n >\n Save Routine\n \n \n

\n
\n
\n\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n\n {exercises.length > 0 ? (\n exercises.map((exercise,i) => (\n \n ))\n ) : (\n
\n \n
\n Get started\n
\n

\n Start by adding an exercise to your routine.\n

\n
\n )}\n {/* {isMobile && */}\n
\n \n setOpen(true)}\n >\n Add Exercises\n \n \n setOpen(false)}\n // disableDrag={true}\n >\n \n {/* */}\n \n \n\n \n \n \n \n
\n {/* } */}\n
\n
\n
\n
\n );\n};\n\nexport default RoutineCreate;\n","import { useState, useRef } from 'react';\n\nconst useTimer = (initialState = 0) => {\n const [timer, setTimer] = useState(initialState)\n const [isActive, setIsActive] = useState(false)\n const [isPaused, setIsPaused] = useState(false)\n const countRef = useRef(null)\n\n const handleStart = () => {\n setIsActive(true)\n setIsPaused(true)\n countRef.current = setInterval(() => {\n setTimer((timer) => timer + 1)\n }, 1000)\n }\n\n const handlePause = () => {\n if (isPaused) {\n clearInterval(countRef.current)\n setIsPaused(false)\n } else {\n setIsPaused(true)\n countRef.current = setInterval(() => {\n setTimer((timer) => timer + 1)\n }, 1000)\n }\n\n }\n\n const handleResume = () => {\n setIsPaused(true)\n countRef.current = setInterval(() => {\n setTimer((timer) => timer + 1)\n }, 1000)\n }\n\n const handleReset = () => {\n clearInterval(countRef.current)\n setIsActive(false)\n setIsPaused(false)\n setTimer(0)\n }\n\n return { timer, isActive, isPaused, handleStart, handlePause, handleResume, handleReset }\n}\n\nexport default useTimer","import React, { useState, useEffect, useRef } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\n\nimport Exercise from \"./Exercise\";\nimport ExercisesLibrary from \"./ExercisesLibrary\";\n\nimport ShortUniqueId from \"short-unique-id\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\n\nimport axios from \"axios\";\nimport Sheet from \"react-modal-sheet\";\n\nimport useTimer from \"./Timer\";\n\nimport { IsEmpty, Map } from \"react-lodash\"\n\nconst RoutineActive = () => {\n const location = useLocation();\n const uid = new ShortUniqueId({ length: 20 });\n const { user, isAuthenticated } = useAuth0();\n\n const userId = user.sub.split(\"|\")[1];\n\n const history = useHistory();\n\n const [routine, setRoutine] = useState();\n const [exercises, setExercises] = useState(\"\");\n const [setsToLog, setSetsToLog] = useState([]);\n const [isOpen, setOpen] = useState(false);\n\n const {\n timer,\n isActive,\n isPaused,\n handleStart,\n handlePause,\n handleResume,\n handleReset,\n } = useTimer(0);\n\n const formatTime = () => {\n const getSeconds = `0${timer % 60}`.slice(-2);\n const minutes = `${Math.floor(timer / 60)}`;\n const getMinutes = `0${minutes % 60}`.slice(-2);\n const getHours = `0${Math.floor(timer / 3600)}`.slice(-2);\n\n return `${getHours}:${getMinutes}:${getSeconds}`;\n };\n\n useEffect(() => {\n axios\n .get(\n \"https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getActiveRoutine\"\n )\n .then((res) => {\n const data = res.data;\n setRoutine(data);\n })\n .catch((error) => console.log(error));\n }, []);\n\n const logSet = (exercise, set) => {\n const isSetLogged = setsToLog.some((s) => s.id === set.id);\n if (isSetLogged) {\n setSetsToLog(setsToLog.filter((s) => s.id !== set.id));\n } else {\n const newSet = {\n title: exercise.title,\n isCardio: exercise.isCardio,\n gymEquipment: exercise.gymEquipment,\n id: set.id,\n reps: set.reps,\n weight: set.weight,\n completedOn: new Date(),\n };\n setSetsToLog([...setsToLog, newSet]);\n }\n };\n\n useEffect(() => {\n if (routine && routine.exercises) {\n setExercises(routine.exercises);\n }\n }, [routine]);\n\n useEffect(() => {\n handleStart();\n }, []);\n\n const updateExercise = (updatedExercise) => {\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const addExercises = (selectedExercises) => {\n const updatedExercises = [];\n selectedExercises.map((selectedExercise) => {\n // console.log(selectedExercise.id.$numberInt)\n const checkIfExeciseAlreadyAdded = exercises.some(\n (ex) => ex.id.$numberInt === selectedExercise.id.$numberInt\n );\n if (checkIfExeciseAlreadyAdded === false) {\n const updatedExercise = { ...selectedExercise };\n const initialSet = {\n index: 0,\n id: uid(),\n weight: \"\",\n reps: \"\",\n completed: false,\n };\n updatedExercise.sets = [];\n updatedExercise.sets.push(initialSet);\n updatedExercises.push(updatedExercise);\n }\n });\n // console.log(updatedExercises)\n setExercises([...exercises, ...updatedExercises]);\n setOpen(false);\n };\n\n const removeExercise = (id) => {\n setExercises(exercises.filter((exercise) => exercise.id !== id));\n };\n\n const onClickAddNewSet = (exercise) => {\n const updatedExercise = { ...exercise };\n const newSet = {\n index: updatedExercise.sets.length,\n id: uid(),\n reps: \"\",\n weight: \"\",\n completed: false,\n };\n updatedExercise.sets.push(newSet);\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const removeSet = (exercise, index) => {\n const updatedExercise = { ...exercise };\n const updatedSets = updatedExercise.sets;\n updatedSets.splice(index, 1);\n updatedExercise.sets = updatedSets;\n setExercises(\n exercises.map((ex) =>\n ex.id === updatedExercise.id ? updatedExercise : ex\n )\n );\n };\n\n const groupSetsToRoutines = (sets) => {\n const setsToExercises = sets.reduce((r, { title, isCardio, gymEquipment, ...rest }) => {\n const key = `${title}`;\n r[key] = r[key] || { title, isCardio, gymEquipment, sets: [] };\n r[key][\"sets\"].push(rest);\n console.log(r)\n return r;\n }, {});\n\n const timeTable = Object.values(setsToExercises);\n\n return Object.values(timeTable);\n };\n\n\n \n\n const onClickCancel = () => {\n setOpen(false);\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n\n const newRoutine = {\n title: routine.title,\n id: routine.id,\n uid: userId,\n completedOn: new Date(),\n duration: timer,\n exercises: groupSetsToRoutines(setsToLog),\n };\n console.log(newRoutine)\n axios\n .post(\n \"https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/addLoggedRoutine\",\n newRoutine\n )\n .then((res) => {\n handleReset();\n \n history.push(\"/log\");\n })\n .catch((error) => console.log(error));\n };\n\n return (\n <>\n {routine && (\n <>\n
\n
\n
\n\n
\n
\n
\n
\n {/*

\n Active Workout Routine */}\n {/* */}\n handleSubmit(e)}\n >\n Finish Workout Routine\n \n {/* */}\n {/*

*/}\n
\n
\n\n
\n
\n
\n
\n

\n {routine.title}\n

\n

\n \n {/* */}\n {formatTime()} \n \n \n

\n
\n
\n
\n\n {exercises.length > 0 ? (\n exercises.map((exercise, i) => (\n \n ))\n ) : (\n
\n \n
\n Get started\n
\n

\n Start by adding an exercise to your routine.\n

\n
\n )}\n {/* {isMobile && */}\n
\n setOpen(true)}\n >\n Add Exercises\n \n\n setOpen(false)}\n // disableDrag={true}\n >\n \n {/* */}\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n )}\n \n );\n};\n\nexport default RoutineActive;\n","import React, { useState, useEffect } from \"react\";\nimport moment from 'moment'\nimport {WEIGHTUNITS} from './Const' \n\n\n\nconst LogExercise = (props) => {\n\n const [showExerciseList, setShowExerciseList] = useState(false);\n\n const routine = props.routine;\n const exerciseList = [];\n\n const exerciseTitlesString = (routine) => {\n const exerciseList = [];\n routine.exercises.forEach((exercise) => {\n exerciseList.push(exercise.title);\n });\n return exerciseList;\n };\n\n useEffect(() => {\n routine.exercises.forEach((exercise) => {\n exerciseList.push(exercise.title);\n });\n }, [exerciseList, routine.exercises]);\n\n const toggleExerciseList = () => {\n setShowExerciseList(!showExerciseList);\n };\n\n const totalSets = () => {\n var sum = 0;\n routine.exercises.forEach((exercise) => {\n sum += exercise.sets.length\n })\n return sum\n }\n\n const totalWeight = () => {\n var sum = 0;\n routine.exercises.forEach((exercise) => {\n if (exercise.isCardio === true) {\n return 0\n }\n exercise.sets.forEach((set) => {\n if (Number(exercise.gymEquipment.$numberInt) === 1) {\n sum += set.weight * set.reps * 2;\n } else {\n sum += set.weight * set.reps;\n }\n });\n\n });\n return Number(sum);\n };\n\n\n const formatTime = (time) => {\n const getSeconds = `0${(time % 60)}`.slice(-2)\n const minutes = `${Math.floor(time / 60)}`\n const getMinutes = `0${minutes % 60}`.slice(-2)\n const getHours = `0${Math.floor(time / 3600)}`.slice(-2)\n\n return `${getHours}:${getMinutes}:${getSeconds}`\n }\n\n return (\n<>\n \n
\n {routine.title} - {moment(routine.completedOn).fromNow()}\n
\n

{formatTime(routine.duration.$numberInt)}

\n
\n toggleExerciseList()}>\n {\" \"}\n \n {routine.exercises.length}{\" \"}\n {routine.exercises.length === 1 ? \"Exercise\" : \"Exercises\"}{\" \"}\n \n \n \n \n {\" \"}\n \n {totalSets()}{\" \"}\n {totalSets() === 1 ? \"Set\" : \"Sets\"}{\" \"}\n \n \n \n {\" \"}\n \n {totalWeight()}{\" \" + WEIGHTUNITS}\n {/* {totalWeight() === 1 ? \"lbs\" : \"lbs\"}{\" \"} */}\n \n \n
\n
\n {showExerciseList &&\n exerciseTitlesString(routine).map((title, i) => (\n
\n {title}\n
\n ))}\n
\n \n );\n};\n\nexport default LogExercise;\n","import React, { useState, useEffect } from \"react\";\n// import { useLogsStore } from \"./LogsContext\";\nimport LogExercise from \"./LogExercise\";\nimport axios from 'axios';\nimport { useAuth0 } from \"@auth0/auth0-react\";\n\nconst Log = (props) => {\n\n const { user } = useAuth0();\n\n const [routines, setRoutines] = useState([]);\n\n useEffect(() => {\n if (user ) {\n const userID = user.sub.split(\"|\")[1];\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getLoggedRoutinesByUserId?userID=' + userID)\n .then(res => {\n const data = res.data;\n setRoutines(data);\n })\n .catch(error => console.log(error))\n }\n}, [user,setRoutines]);\n\n\n return (\n <>\n
\n
\n

\n Completed Routines\n

\n
\n
\n
\n
\n \n \n {routines.length > 0 ? (\n \n routines.map((routine, i) => (\n
\n
\n \n
\n
\n )\n \n )\n \n\n\n \n ):(\n
\n \n
\n Get started\n
\n

\n Complete your first workout\n

\n
\n )}\n \n
\n
\n \n );\n};\n\nexport default Log;","import React, { useState, useEffect } from \"react\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport axios from 'axios';\nimport LogExercise from \"./LogExercise\";\nimport {\n Bar,\n BarChart,\n LineChart,\n Line,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip\n} from \"recharts\";\n\nconst Log = (props) => {\n\n const [routines, setRoutines] = useState([]);\n const { user, isAuthenticated } = useAuth0();\n\n useEffect(() => {\n if (user ) {\n const userID = user.sub.split(\"|\")[1];\n axios.get('https://us-east-1.aws.data.mongodb-api.com/app/fitness-chtxe/endpoint/getLoggedRoutinesByUserId?userID=' + userID)\n .then(res => {\n const data = res.data;\n setRoutines(data);\n })\n .catch(error => console.log(error))\n }\n}, [user,setRoutines]);\n\n const data = [\n {\n name: \"Page A\",\n uv: 4000,\n pv: 2400,\n amt: 2400,\n },\n {\n name: \"Page B\",\n uv: 3000,\n pv: 1398,\n amt: 2210,\n },\n {\n name: \"Page C\",\n uv: 2000,\n pv: 9800,\n amt: 2290,\n },\n {\n name: \"Page D\",\n uv: 2780,\n pv: 3908,\n amt: 2000,\n },\n {\n name: \"Page E\",\n uv: 1890,\n pv: 4800,\n amt: 2181,\n },\n {\n name: \"Page F\",\n uv: 2390,\n pv: 3800,\n amt: 2500,\n },\n {\n name: \"Page G\",\n uv: 3490,\n pv: 4300,\n amt: 2100,\n },\n ];\n\n return (\n <>\n
\n
\n
\n
\n {isAuthenticated && ( \n
\n
\n {user.name}\n
\n
\n\n
Name: {user.nickname}
\n

Email: {user.email}

\n

UID: {user.sub.split('|')[1]}

\n
\n
\n )}\n
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
\n \n \n \n \n \n \n {/* */}\n \n
\n
\n \n
\n
\n
\n
\n \n );\n};\n\nexport default Log;","import React from \"react\";\nimport \"./App.css\";\nimport { BrowserRouter, Switch, Link } from 'react-router-dom';\nimport ProtectedRoute from \"./components/Auth/protected-route\"\nimport Loading from \"./components/Auth/Loading\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\n\nimport LoginButton from './components/Auth/LoginButton'\nimport LogoutButton from \"./components/Auth/LogoutButton\";\n\n\nimport Routines from './Routines'\nimport Routine from './Routine'\nimport RoutineEdit from \"./RoutineEdit\";\nimport Exercises from \"./Exercises\";\nimport ExerciseDetail from \"./ExerciseDetail\";\nimport RoutineCreate from './RoutineCreate'\nimport RoutineActive from \"./RoutineActive\";\nimport Log from './Log'\nimport Profile from './Profile'\n\nfunction App() {\n\n const { isLoading } = useAuth0();\n const { user, isAuthenticated } = useAuth0();\n\n\n if (isLoading) {\n return ;\n }\n return (\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n\n );\n}\n\nexport default App;\n","import React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Auth0Provider } from \"@auth0/auth0-react\";\r\n\r\nconst Auth0ProviderWithHistory = ({ children }) => {\r\n // const domain = process.env.REACT_APP_AUTH0_DOMAIN;\r\n // const clientId = process.env.REACT_APP_AUTH0_CLIENT_ID;\r\n\r\n const history = useHistory();\r\n\r\n const onRedirectCallback = (appState) => {\r\n history.push(appState?.returnTo || window.location.pathname);\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Auth0ProviderWithHistory;","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport Auth0ProviderWithHistory from \"./components/Auth/auth0-provider-with-history\";\n// import RoutinesStore from \"./RoutinesStore\";\nimport ExercisesStore from \"./ExercisesStore\";\nimport \"./index.css\";\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);"],"sourceRoot":""}