workoutMenu.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. export default {
  2. render: function(workout){
  3. document.getElementById("workoutMenuTitle").textContent = workout.name;
  4. this.buttons(workout);
  5. },
  6. buttons: function(workout){
  7. document.getElementById("menuStartWorkout").addEventListener("click", ()=>{
  8. const existingWorkout = localStorage.getItem(workout.id);
  9. if(existingWorkout === null){
  10. changePage("session", workout);
  11. }else{
  12. const container = document.getElementById("resumeWorkoutContainer");
  13. container.style.display = "flex";
  14. this.addResumeButtons(container, workout);
  15. }
  16. });
  17. document.getElementById("menuReturnHome").addEventListener("click", ()=>{
  18. changePage("home");
  19. });
  20. },
  21. addResumeButtons: function(container, workout){
  22. const buttons = container.querySelectorAll("button");
  23. for(let i = 0; i < buttons.length; i++){
  24. buttons[i].parentElement.removeChild(buttons[i]);
  25. }
  26. const finish = document.createElement("button");
  27. finish.classList.add("button");
  28. finish.textContent = "Save Previous and Start New";
  29. finish.addEventListener("click", ()=>{this.finish(workout)});
  30. container.appendChild(finish);
  31. const discard = document.createElement("button");
  32. discard.classList.add("button");
  33. discard.textContent = "Discard Previous and Start New";
  34. discard.addEventListener("click", ()=>{this.discard(workout)});
  35. container.appendChild(discard);
  36. const resume = document.createElement("button");
  37. resume.classList.add("button");
  38. resume.textContent = "Resume Previous Workout";
  39. resume.addEventListener("click", ()=>{this.resume(workout)});
  40. container.appendChild(resume);
  41. const cancel = document.createElement("button");
  42. cancel.classList.add("button");
  43. cancel.textContent = "Cancel";
  44. cancel.addEventListener("click", this.cancel);
  45. container.appendChild(cancel);
  46. },
  47. finish: function(workout){
  48. const session = JSON.parse(localStorage.getItem(workout.id));
  49. session.end = new Date();
  50. fetch("/session", {
  51. method: "POST",
  52. headers: {
  53. "Content-Type": "application/json"
  54. },
  55. body: JSON.stringify(session)
  56. })
  57. .then(r=>r.json())
  58. .then((response)=>{
  59. if(response.error){
  60. notify("error", response.error.message);
  61. }else{
  62. notify("success", "Workout saved");
  63. }
  64. localStorage.removeItem(workout.id);
  65. document.getElementById("resumeWorkoutContainer").style.display = "none";
  66. changePage("session", workout);
  67. })
  68. .catch((err)=>{
  69. notify("error", "ERROR: unable to start workout");
  70. });
  71. },
  72. discard: function(workout){
  73. localStorage.removeItem(workout.id);
  74. document.getElementById("resumeWorkoutContainer").style.display = "none";
  75. changePage("session", workout);
  76. },
  77. resume: function(workout){
  78. document.getElementById("resumeWorkoutContainer").style.display = "none";
  79. changePage("session", workout);
  80. },
  81. cancel: function(){
  82. document.getElementById("resumeWorkoutContainer").style.display = "none";
  83. }
  84. }