editWorkout.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. if(input.value === ""){
  52. notify("error", "Exercise must have a name");
  53. return;
  54. }
  55. const exercise = template.cloneNode(true);
  56. exercise.querySelector("p").textContent = input.value;
  57. exercise.querySelector(".editWorkoutDelete").addEventListener("click", ()=>{
  58. container.removeChild(exercise);
  59. });
  60. exercise.querySelector(".workoutMoveUp").addEventListener("click", (e)=>{
  61. this.moveExercise(e.target.parentElement.parentElement, true);
  62. });
  63. exercise.querySelector(".workoutMoveDown").addEventListener("click", (e)=>{
  64. this.moveExercise(e.target.parentElement.parentElement, true);
  65. });
  66. container.appendChild(exercise);
  67. input.value = "";
  68. }
  69. }