diff --git a/frontend/www/scripts/exercise.js b/frontend/www/scripts/exercise.js index f845fe1844b633cf1b0bf1365eee4323c4c84bcc..1244091271b14ddc8796696d24c6892773ac4e92 100644 --- a/frontend/www/scripts/exercise.js +++ b/frontend/www/scripts/exercise.js @@ -31,49 +31,57 @@ class MuscleGroup { } } +function deleteFormData() { + setReadOnly(true, "#form-exercise"); + okButton.className += " hide"; + deleteButton.className += " hide"; + cancelButton.className += " hide"; + editButton.className = editButton.className.replace(" hide", ""); + + cancelButton.removeEventListener("click", handleCancelButtonDuringEdit); + + oldFormData.delete("name"); + oldFormData.delete("description"); + oldFormData.delete("duration"); + oldFormData.delete("calories"); + oldFormData.delete("muscleGroup"); + oldFormData.delete("unit"); +} + function handleCancelButtonDuringEdit() { - setReadOnly(true, "#form-exercise"); document.querySelector("select").setAttribute("disabled", "") - okButton.className += " hide"; - deleteButton.className += " hide"; - cancelButton.className += " hide"; - editButton.className = editButton.className.replace(" hide", ""); - - cancelButton.removeEventListener("click", handleCancelButtonDuringEdit); - let form = document.querySelector("#form-exercise"); + if (oldFormData.has("name")) form.name.value = oldFormData.get("name"); if (oldFormData.has("description")) form.description.value = oldFormData.get("description"); if (oldFormData.has("duration")) form.duration.value = oldFormData.get("duration"); if (oldFormData.has("calories")) form.calories.value = oldFormData.get("calories"); if (oldFormData.has("muscleGroup")) form.muscleGroup.value = oldFormData.get("muscleGroup"); if (oldFormData.has("unit")) form.unit.value = oldFormData.get("unit"); - - oldFormData.delete("name"); - oldFormData.delete("description"); - oldFormData.delete("duration"); - oldFormData.delete("calories"); - oldFormData.delete("muscleGroup"); - oldFormData.delete("unit"); + deleteFormData(); } function handleCancelButtonDuringCreate() { window.location.replace("exercises.html"); } +function addFormData(form) { + let formData = new FormData(form); + let selectedMuscleGroup = new MuscleGroup(formData.get("muscleGroup")); + let updatedMuscleGroup = selectedMuscleGroup.getMuscleGroupType() + return {"name": formData.get("name"), + "description": formData.get("description"), + "duration": formData.get("duration"), + "calories": formData.get("calories"), + "muscleGroup": updatedMuscleGroup ? updatedMuscleGroup : formData.get("muscleGroup"), + "unit": formData.get("unit")}; +} + async function createExercise() { document.querySelector("select").removeAttribute("disabled") let form = document.querySelector("#form-exercise"); - let formData = new FormData(form); - let body = {"name": formData.get("name"), - "description": formData.get("description"), - "duration": formData.get("duration"), - "calories": formData.get("calories"), - "muscleGroup": formData.get("muscleGroup"), - "unit": formData.get("unit")}; - - let response = await sendRequest("POST", `${HOST}/api/exercises/`, body); + let response = await sendRequest("POST", `${HOST}/api/exercises/`, addFormData(form)); if (response.ok) { window.location.replace("exercises.html"); @@ -139,20 +147,10 @@ async function retrieveExercise(id) { async function updateExercise(id) { let form = document.querySelector("#form-exercise"); - let formData = new FormData(form); - let muscleGroupSelector = document.querySelector("select") muscleGroupSelector.removeAttribute("disabled") - let selectedMuscleGroup = new MuscleGroup(formData.get("muscleGroup")); - - let body = {"name": formData.get("name"), - "description": formData.get("description"), - "duration": formData.get("duration"), - "calories": formData.get("calories"), - "muscleGroup": selectedMuscleGroup.getMuscleGroupType(), - "unit": formData.get("unit")}; - let response = await sendRequest("PUT", `${HOST}/api/exercises/${id}/`, body); + let response = await sendRequest("PUT", `${HOST}/api/exercises/${id}/`, addFormData(form)); if (!response.ok) { let data = await response.json(); @@ -160,22 +158,7 @@ async function updateExercise(id) { document.body.prepend(alert); } else { muscleGroupSelector.setAttribute("disabled", "") - // duplicate code from handleCancelButtonDuringEdit - // you should refactor this - setReadOnly(true, "#form-exercise"); - okButton.className += " hide"; - deleteButton.className += " hide"; - cancelButton.className += " hide"; - editButton.className = editButton.className.replace(" hide", ""); - - cancelButton.removeEventListener("click", handleCancelButtonDuringEdit); - - oldFormData.delete("name"); - oldFormData.delete("description"); - oldFormData.delete("duration"); - oldFormData.delete("calories"); - oldFormData.delete("muscleGroup"); - oldFormData.delete("unit"); + deleteFormData() } }