workoutMenu.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. },
  42. finish: function(workout){
  43. const session = JSON.parse(localStorage.getItem(workout.id));
  44. session.end = new Date();
  45. fetch("/session", {
  46. method: "POST",
  47. headers: {
  48. "Content-Type": "application/json"
  49. },
  50. body: JSON.stringify(session)
  51. })
  52. .then(r=>r.json())
  53. .then((response)=>{
  54. if(response.error){
  55. notify("error", response.error.message);
  56. }else{
  57. notify("success", "Workout saved");
  58. }
  59. localStorage.removeItem(workout.id);
  60. document.getElementById("resumeWorkoutContainer").style.display = "none";
  61. changePage("session", workout);
  62. })
  63. .catch((err)=>{
  64. notify("error", "ERROR: unable to start workout");
  65. });
  66. },
  67. discard: function(workout){
  68. localStorage.removeItem(workout.id);
  69. document.getElementById("resumeWorkoutContainer").style.display = "none";
  70. changePage("session", workout);
  71. },
  72. resume: function(workout){
  73. document.getElementById("resumeWorkoutContainer").style.display = "none";
  74. changePage("session", workout);
  75. }
  76. }