script.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // Clock
  2. var dat = document.querySelector("#date-and-time");
  3. var tz = Intl.DateTimeFormat().resolvedOptions().timeZone
  4. function updateTime() {
  5. var currentTime = new Date().toLocaleString(navigator.languages[0], {"timezone": tz});
  6. dat.textContent = currentTime;
  7. }
  8. setInterval(updateTime, 1000);
  9. // Drag elements (base code from https://www.geeksforgeeks.org/html/draggable-element-using-javascript/)
  10. const dragElements = document.querySelectorAll(".draggable");
  11. function onMouseDrag(event, element) {
  12. let leftValue = parseInt(window.getComputedStyle(element).left);
  13. let topValue = parseInt(window.getComputedStyle(element).top);
  14. if (0 < (leftValue + event.movementX) && (leftValue + event.movementX) < (window.window.innerWidth - element.offsetWidth)) {
  15. element.style.left = `${leftValue + event.movementX}px`;
  16. }
  17. if (0 < (topValue + event.movementY) && (topValue + event.movementY) < (window.window.innerHeight - element.offsetHeight)) {
  18. element.style.top = `${topValue + event.movementY}px`;
  19. }
  20. }
  21. dragElements.forEach((element) => {
  22. if (document.getElementById(element.id + "-header"))
  23. document.getElementById(element.id + "-header").addEventListener("mousedown", (e) => {
  24. const onMove = (event) => onMouseDrag(event, element);
  25. document.addEventListener("mousemove", onMove);
  26. document.addEventListener("mouseup", () => {
  27. document.removeEventListener("mousemove", onMove);
  28. }, { once: true });
  29. });
  30. if (document.getElementById(element.id + "-open")) {
  31. document.getElementById(element.id + "-open").addEventListener("click", () => {
  32. openWindow(element);
  33. document.getElementById(element.id + "-open").classList.toggle("closed");
  34. })
  35. }
  36. if (document.getElementById(element.id + "-close")) {
  37. document.getElementById(element.id + "-close").addEventListener("click", () => {
  38. closeWindow(element);
  39. document.getElementById(element.id + "-open").classList.add("closed");
  40. })
  41. }
  42. });
  43. // Open & close windows
  44. var dock = document.getElementById("dock-div");
  45. var topbar = document.getElementById("topbar-div");
  46. function closeWindow(elt) {
  47. elt.classList.add("hidden");
  48. }
  49. var biggestIndex = 0;
  50. function openWindow(elt) {
  51. elt.classList.toggle("hidden");
  52. biggestIndex ++;
  53. elt.style.zIndex = biggestIndex;
  54. dock.style.zIndex = biggestIndex + 1;
  55. topbar.style.zIndex = biggestIndex + 1;
  56. }
  57. // Bell
  58. var bellbtn = document.getElementById("notif-btn");
  59. var bellsound = new Audio("../sounds/ding.mp3");
  60. bellbtn.addEventListener("click", function() {
  61. bellsound.play();
  62. });
  63. // Book list app
  64. var booktitle = document.getElementById("current-book-title");
  65. var bookauthor = document.getElementById("current-book-author");
  66. var bookend = document.getElementById("current-book-end-date");
  67. var bookpubdate = document.getElementById("current-book-publication-date");
  68. var bookcomments = document.getElementById("current-book-comments");
  69. var booklisticon = document.getElementById("booklist-div-icon");
  70. var currentbookid = books.length - 1;
  71. function updateBook(id) {
  72. booktitle.textContent = books[id].title;
  73. bookauthor.textContent = "Written by " + books[id].author;
  74. bookend.textContent = "I finished it on " + books[id].end_date;
  75. bookpubdate.textContent = "It was published on " + books[id].publication_date;
  76. bookcomments.textContent = books[id].comments;
  77. booklisticon.textContent = books[id].icon;
  78. }
  79. function previousBook() {
  80. if (currentbookid > 0) {
  81. currentbookid --;
  82. updateBook(currentbookid);
  83. } else {
  84. alert("It was the first book !");
  85. }
  86. }
  87. function nextBook() {
  88. if (currentbookid < books.length - 1) {
  89. currentbookid ++;
  90. updateBook(currentbookid);
  91. } else {
  92. alert("It is the last book !");
  93. }
  94. }
  95. document.getElementById("next-book-btn").addEventListener("click", nextBook);
  96. document.getElementById("previous-book-btn").addEventListener("click", previousBook);
  97. updateBook(currentbookid);