workoutMenu.js 2.7 KB

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