editWorkout.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. export default {
  2. rendered: false,
  3. render: function(workout){
  4. document.querySelector("#editWorkoutPage h1").textContent = workout.name;
  5. this.displayExercises(workout.exercises);
  6. if(!this.rendered){
  7. this.buttons();
  8. this.rendered = true;
  9. }
  10. },
  11. buttons: function(){
  12. document.getElementById("editWorkoutBack").addEventListener("click", ()=>{changePage("home")});
  13. document.getElementById("editWorkoutAddExercise").addEventListener("click", ()=>{
  14. const container = document.getElementById("newExerciseContainer");
  15. container.style.display = "flex";
  16. container.querySelector("input").focus();
  17. });
  18. document.getElementById("newExerciseSubmit").addEventListener("click", this.addExercise.bind(this));
  19. },
  20. displayExercises: function(exercises){
  21. const container = document.getElementById("editWorkoutExercises");
  22. const template = document.getElementById("editWorkoutExercise").content.children[0];
  23. for(let i = 0; i < exercises.length; i++){
  24. const exercise = template.cloneNode(true);
  25. exercise.setAttribute("data-id", exercises[i]._id);
  26. exercise.querySelector("p").textContent = exercises[i].name;
  27. exercise.querySelector(".editWorkoutDelete").addEventListener("click", ()=>{
  28. container.removeChild(exercise);
  29. });
  30. exercise.querySelector(".workoutMoveUp").addEventListener("click", (e)=>{
  31. this.moveExercise(e.target.parentElement.parentElement, true);
  32. });
  33. exercise.querySelector(".workoutMoveDown").addEventListener("click", (e)=>{
  34. this.moveExercise(e.target.parentElement.parentElement, false);
  35. });
  36. container.appendChild(exercise);
  37. }
  38. },
  39. moveExercise: function(elem, moveUp){
  40. const otherElem = moveUp ? elem.previousElementSibling : elem.nextElementSibling;
  41. if(moveUp){
  42. elem.parentElement.insertBefore(elem, otherElem);
  43. }else{
  44. elem.parentElement.insertBefore(otherElem, elem);
  45. }
  46. },
  47. addExercise: function(){
  48. const container = document.getElementById("editWorkoutExercises");
  49. const template = document.getElementById("editWorkoutExercise").content.children[0];
  50. const input = document.getElementById("newExerciseInput");
  51. const exercise = template.cloneNode(true);
  52. exercise.querySelector("p").textContent = input.value;
  53. exercise.querySelector(".editWorkoutDelete").addEventListener("click", ()=>{
  54. container.removeChild(exercise);
  55. });
  56. exercise.querySelector(".workoutMoveUp").addEventListener("click", (e)=>{
  57. this.moveExercise(e.target.parentElement.parentElement, true);
  58. });
  59. exercise.querySelector(".workoutMoveDown").addEventListener("click", (e)=>{
  60. this.moveExercise(e.target.parentElement.parentElement, true);
  61. });
  62. container.appendChild(exercise);
  63. input.value = "";
  64. }
  65. }