// for debug purposes const t = today(); var exercises = {}; const exercisesString = localStorage.getItem("exercises"); if (exercisesString != null) { exercises = JSON.parse(exercisesString); } if (exercises[t] == null) { exercises[t] = []; } function updateExercises() { var exerciseList = document.querySelectorAll("#exercise-list > li"); exercises[t] = []; for (const element of exerciseList) { exercises[t].push({ exerciseType: element.childNodes[1].childNodes[1].value, repetitionType: element.childNodes[1].childNodes[2].value, reps: element.childNodes[2].childNodes[1].value, weight: element.childNodes[3].childNodes[1].value }); } if (exercisesEdited(exercises[t])) { var workoutSelectionArea = document.getElementById("workout-selection-area"); workoutSelectionArea.innerHTML = ''; } if (exercises[t] != null && exercises[t] != {}) { localStorage.setItem("exercises", JSON.stringify(exercises)); } } function swap_right(i) { if (0 <= i && i < exercises[t].length && 0 <= i + 1 && i + 1 < exercises[t].length) { [exercises[t][i], exercises[t][i + 1]] = [exercises[t][i + 1], exercises[t][i]] } } var exerciseList = document.getElementById("exercise-list"); function setExercises() { exerciseList.innerHTML = '' for (let i = 0; i < exercises[t].length; i++) { var li = document.createElement("li"); var upDownDiv = document.createElement("div"); // Up Button var upButton = document.createElement("button"); upButton.textContent = "▲" upButton.id = "up"; upButton.onclick = () => { swap_right(i - 1); setExercises(exercises[t]); localStorage.setItem("exercises", JSON.stringify(exercises)); }; upDownDiv.appendChild(upButton); // Down Button var downButton = document.createElement("button"); downButton.textContent = "▼" downButton.id = "down"; downButton.onclick = () => { swap_right(i); setExercises(exercises[t]); localStorage.setItem("exercises", JSON.stringify(exercises)); }; upDownDiv.appendChild(downButton); li.appendChild(upDownDiv); var exerciseSelectorDiv = document.createElement("div"); exerciseSelectorDiv.appendChild(document.createTextNode("Exercise ")); // Select Exercise Type var exType = document.createElement("select"); exType.onchange = updateExercises; exerciseTypes.forEach(exercise => { exType.add(new Option(exercise.name, exercise.name)); }); exType.value = exercises[t][i].exerciseType exerciseSelectorDiv.appendChild(exType); // Select Repetition Type var repType = document.createElement("select"); repetitionTypes.forEach(repetitionType => { repType.add(new Option(repetitionType, repetitionType)); }); repType.onchange = updateExercises; repType.value = exercises[t][i].repetitionType exerciseSelectorDiv.appendChild(repType); li.appendChild(exerciseSelectorDiv); var repDiv = document.createElement("div"); repDiv.appendChild(document.createTextNode("Reps done: ")); var reps = document.createElement("input"); reps.setAttribute("type", "number"); reps.value = exercises[t][i].reps; reps.onchange = updateExercises; repDiv.appendChild(reps); li.appendChild(repDiv); var weightDiv = document.createElement("div"); weightDiv.appendChild(document.createTextNode("Weight done: ")); var weight = document.createElement("input"); weight.setAttribute("type", "number"); weight.value = exercises[t][i].weight; weight.onchange = updateExercises; weightDiv.appendChild(weight); li.appendChild(weightDiv); // Delete Button var deleteButton = document.createElement("button"); deleteButton.textContent = "Delete" deleteButton.id = "delete-button"; deleteButton.onclick = () => { exercises[t].splice(i, 1); setExercises(exercises[t]); localStorage.setItem("exercises", JSON.stringify(exercises)); } li.appendChild(deleteButton); exerciseList.appendChild(li); } } function exercisesEdited(exercises) { for (const element of exercises) { if (element.reps != "" && element.reps != null) { return true; } if (element.weight != "" && element.weight != null) { return true; } }; return false; } function today() { d = new Date; return d.toISOString().split('T')[0]; } var addExerciseButton = document.getElementById("add-exercise"); addExerciseButton.onclick = () => { exercises[t].push({ exerciseType: exerciseTypes[0].name, repetitionType: repetitionTypes[0], reps: "", weight: "" }); setExercises(exercises); } function loadPredefinedWorkouts(workoutType) { if (!exercisesEdited(exercises[t])) { switch (workoutType) { case ("monday"): exercises[t] = [ { exerciseType: "Squat", repetitionType: "3-5", reps: "", weight: "" }, { exerciseType: "Military Press", repetitionType: "5-8", reps: "", weight: "" }, { exerciseType: "Pull Up Under Grip", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Butterfly", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Pull Up Under Grip", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Reverse Butterfly", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Triceps Machine", repetitionType: "5-8", reps: "", weight: "" }, ]; break; case ("wednesday"): exercises[t] = [ { exerciseType: "Bench Press", repetitionType: "3-5", reps: "", weight: "" }, { exerciseType: "Cable Row w/ Neutral Grip", repetitionType: "5-8", reps: "", weight: "" }, { exerciseType: "Leg Press", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Shoulder Press Machine", repetitionType: "5-8", reps: "", weight: "" }, { exerciseType: "Lat Pulldown Wide", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Side Raise", repetitionType: "8-12", reps: "", weight: "" } ]; break; case ("friday"): exercises[t] = [ { exerciseType: "Deadlift", repetitionType: "3-5", reps: "", weight: "" }, { exerciseType: "Incline Bench Press Dumbbell", repetitionType: "5-8", reps: "", weight: "" }, { exerciseType: "Pull Up Over Grip", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Dips", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Machine Row w/ Neutral Grip", repetitionType: "5-8", reps: "", weight: "" }, { exerciseType: "Face Pull", repetitionType: "8-12", reps: "", weight: "" }, { exerciseType: "Biceps Curl", repetitionType: "5-8", reps: "", weight: "" } ]; break; default: exercises[t] = []; break; } setExercises(exercises[t]); } } var predefinedWorkoutButtons = document.querySelectorAll("button.loadPredefinedWorkout"); for (let button of predefinedWorkoutButtons) { button.onclick = () => { loadPredefinedWorkouts(button.id); } } setExercises(exercises[t]); var body = document.querySelector("body"); var pre = document.createElement("pre"); const jsn = JSON.parse(localStorage.getItem("exercises")); if (jsn != null) { var s = ""; for (let [date, value] of Object.entries(jsn).sort().reverse()) { s += date + "\n"; for (let exercise of value) { if (exercise.reps != "" || exercise.weight != "") { s += " " + exercise.exerciseType + ": " + exercise.weight + "kg x " + exercise.reps + " of " + exercise.repetitionType + "\n"; } } } pre.textContent = s; body.appendChild(pre); }