sessionData.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. export default {
  2. rendered: false,
  3. render: function({session, workout}){
  4. if(!this.rendered){
  5. this.buttons();
  6. this.rendered = true;
  7. }
  8. const start = new Date(session.start);
  9. const end = new Date(session.start);
  10. document.querySelector("#sessionDataPage h1").textContent = workout.name;
  11. document.getElementById("sessionDataStart").textContent = `Start: ${this.formatDateTime(start)}`;
  12. document.getElementById("sessionDataEnd").textContent = `End: ${this.formatDateTime(start)}`;
  13. document.getElementById("sessionDataLength").textContent = `${this.timeDifference(start, end)}`;
  14. this.displayExercises(session.exercises);
  15. },
  16. buttons: function(workout){
  17. document.getElementById("closeSessionData").addEventListener("click", ()=>{
  18. changePage("sessionHistory");
  19. });
  20. },
  21. displayExercises: function(exercises){
  22. const container = document.getElementById("sessionDataExercises");
  23. for(let i = 0; i < exercises.length; i++){
  24. let exerciseElem;
  25. switch(exercises[i].type){
  26. case "weights":
  27. exerciseElem = this.createWeightsElem(exercises[i]);
  28. break;
  29. }
  30. container.appendChild(exerciseElem);
  31. }
  32. },
  33. createWeightsElem: function(exercise){
  34. const exerciseElem = document.createElement("div");
  35. const exerciseName = document.createElement("h3");
  36. exerciseName.textContent = exercise.name;
  37. exerciseElem.appendChild(exerciseName);
  38. for(let i = 0; i < exercise.sets.length; i++){
  39. const set = document.createElement("p");
  40. set.textContent = `${exercise.sets[i].weight} x ${exercise.sets[i].reps} reps`;
  41. exerciseElem.appendChild(set);
  42. }
  43. return exerciseElem;
  44. },
  45. formatDateTime: function(date){
  46. const d = date.toLocaleDateString("en-US", {
  47. year: "numeric",
  48. month: "long",
  49. day: "numeric"
  50. });
  51. const t = date.toLocaleTimeString("en-US", {hour12: false});
  52. return `${d} ${t}`;
  53. },
  54. timeDifference: function(start, end){
  55. const diff = end - start;
  56. const minutes = Math.floor(diff/ 60000);
  57. return `${Math.floor(minutes / 60)} hours, ${minutes % 60} minutes`;
  58. }
  59. }