From a2ba88ef29f6ada66985fc7f39e4ef3c1308a970 Mon Sep 17 00:00:00 2001 From: MKStoler1024 <158786854+MKStoler1024@users.noreply.github.com> Date: Wed, 26 Feb 2025 22:58:40 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8F=B2=E8=AF=97=E7=BA=A7?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=8B=86=E5=88=86=E5=A4=9A=E5=B9=B4=E7=8B=AE?= =?UTF-8?q?=E5=B1=B1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exam/{script.js => Scripts/examInfo.js} | 91 ++----------------------- exam/Scripts/main.js | 13 ++++ exam/Scripts/settings.js | 42 ++++++++++++ exam/Scripts/utils.js | 21 ++++++ exam/{styles.css => Styles/dark.css} | 2 +- exam/index.html | 7 +- time/index.html | 2 - 7 files changed, 87 insertions(+), 91 deletions(-) rename exam/{script.js => Scripts/examInfo.js} (66%) create mode 100644 exam/Scripts/main.js create mode 100644 exam/Scripts/settings.js create mode 100644 exam/Scripts/utils.js rename exam/{styles.css => Styles/dark.css} (98%) diff --git a/exam/script.js b/exam/Scripts/examInfo.js similarity index 66% rename from exam/script.js rename to exam/Scripts/examInfo.js index 5af39d1..5d8ed38 100644 --- a/exam/script.js +++ b/exam/Scripts/examInfo.js @@ -7,42 +7,26 @@ document.addEventListener("DOMContentLoaded", () => { const remainingTimeElem = document.getElementById("remaining-time"); const statusElem = document.getElementById("status"); const examTableBodyElem = document.getElementById("exam-table-body"); - const fullscreenBtn = document.getElementById("fullscreen-btn"); - const settingsBtn = document.getElementById("settings-btn"); - const settingsModal = document.getElementById("settings-modal"); - const closeSettingsBtn = document.getElementById("close-settings-btn"); - const saveSettingsBtn = document.getElementById("save-settings-btn"); - const offsetTimeInput = document.getElementById("offset-time"); - const roomInput = document.getElementById("room-input"); - const roomElem = document.getElementById("room"); - const zoomInput = document.getElementById("zoom-input"); - - let offsetTime = getCookie("offsetTime") || 0; - let room = getCookie("room") || ""; - let zoomLevel = getCookie("zoomLevel") || 1; - - offsetTime = parseInt(offsetTime); - roomElem.textContent = room; + const roomElem = document.getElementById("room"); // 添加这一行 + let offsetTime = getCookie("offsetTime") || 0; // 添加这一行 function fetchData() { - return fetch('exam_config.json', { cache: "no-store" }) // 不保留缓存 + return fetch('exam_config.json', { cache: "no-store" }) .then(response => response.json()) .then(data => { displayExamInfo(data); updateCurrentTime(); updateExamInfo(data); - setInterval(() => updateCurrentTime(), 1000); // Update current time every second - setInterval(() => updateExamInfo(data), 1000); // Update exam info every second + setInterval(() => updateCurrentTime(), 1000); + setInterval(() => updateExamInfo(data), 1000); }) .catch(error => console.error('Error fetching exam data:', error)); } function displayExamInfo(data) { - // Display exam name const examNameText = data.examName; const roomText = roomElem.textContent; examNameElem.innerHTML = `${examNameText} ${roomText}`; - // Display message messageElem.textContent = data.message; } @@ -51,11 +35,6 @@ document.addEventListener("DOMContentLoaded", () => { currentTimeElem.textContent = now.toLocaleTimeString('zh-CN', { hour12: false }); } - function formatTimeWithoutSeconds(time) { - // Convert time to string and remove seconds if present - return time.slice(0, -3); - } - function updateExamInfo(data) { const now = new Date(new Date().getTime() + offsetTime * 1000); let currentExam = null; @@ -135,7 +114,6 @@ document.addEventListener("DOMContentLoaded", () => { statusElem.style.color = "#3946AF"; } - // Update next exams table examTableBodyElem.innerHTML = ""; data.examInfos.forEach(exam => { const start = new Date(exam.start); @@ -160,64 +138,5 @@ document.addEventListener("DOMContentLoaded", () => { }); } - // Fullscreen functionality - fullscreenBtn.addEventListener("click", () => { - if (!document.fullscreenElement) { - document.documentElement.requestFullscreen(); - } else { - if (document.exitFullscreen) { - document.exitFullscreen(); - } - } - }); - - // Open settings modal - settingsBtn.addEventListener("click", () => { - offsetTimeInput.value = offsetTime; - roomInput.value = room; - zoomInput.value = zoomLevel; - settingsModal.style.display = "block"; - }); - - // Close settings modal - closeSettingsBtn.addEventListener("click", () => { - settingsModal.style.display = "none"; - }); - - // Save settings - saveSettingsBtn.addEventListener("click", () => { - offsetTime = parseInt(offsetTimeInput.value); - room = roomInput.value; - zoomLevel = parseFloat(zoomInput.value); - setCookie("offsetTime", offsetTime, 365); - setCookie("room", room, 365); - setCookie("zoomLevel", zoomLevel, 365); - roomElem.textContent = room; - document.body.style.zoom = zoomLevel; - settingsModal.style.display = "none"; - }); - - document.body.style.zoom = zoomLevel; - - // Utility function to set a cookie - function setCookie(name, value, days) { - const d = new Date(); - d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); - const expires = "expires=" + d.toUTCString(); - document.cookie = name + "=" + value + ";" + expires + ";path=/"; - } - - // Utility function to get a cookie - function getCookie(name) { - const nameEQ = name + "="; - const ca = document.cookie.split(';'); - for (let i = 0; i < ca.length; i++) { - let c = ca[i]; - while (c.charAt(0) === ' ') c = c.substring(1, c.length); - if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); - } - return null; - } - fetchData(); }); diff --git a/exam/Scripts/main.js b/exam/Scripts/main.js new file mode 100644 index 0000000..9646020 --- /dev/null +++ b/exam/Scripts/main.js @@ -0,0 +1,13 @@ +document.addEventListener("DOMContentLoaded", () => { + const fullscreenBtn = document.getElementById("fullscreen-btn"); + + fullscreenBtn.addEventListener("click", () => { + if (!document.fullscreenElement) { + document.documentElement.requestFullscreen(); + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } + } + }); +}); diff --git a/exam/Scripts/settings.js b/exam/Scripts/settings.js new file mode 100644 index 0000000..caf49e3 --- /dev/null +++ b/exam/Scripts/settings.js @@ -0,0 +1,42 @@ +document.addEventListener("DOMContentLoaded", () => { + const settingsBtn = document.getElementById("settings-btn"); + const settingsModal = document.getElementById("settings-modal"); + const closeSettingsBtn = document.getElementById("close-settings-btn"); + const saveSettingsBtn = document.getElementById("save-settings-btn"); + const offsetTimeInput = document.getElementById("offset-time"); + const roomInput = document.getElementById("room-input"); + const roomElem = document.getElementById("room"); + const zoomInput = document.getElementById("zoom-input"); + + let offsetTime = getCookie("offsetTime") || 0; + let room = getCookie("room") || ""; + let zoomLevel = getCookie("zoomLevel") || 1; + + offsetTime = parseInt(offsetTime); + roomElem.textContent = room; + + settingsBtn.addEventListener("click", () => { + offsetTimeInput.value = offsetTime; + roomInput.value = room; + zoomInput.value = zoomLevel; + settingsModal.style.display = "block"; + }); + + closeSettingsBtn.addEventListener("click", () => { + settingsModal.style.display = "none"; + }); + + saveSettingsBtn.addEventListener("click", () => { + offsetTime = parseInt(offsetTimeInput.value); + room = roomInput.value; + zoomLevel = parseFloat(zoomInput.value); + setCookie("offsetTime", offsetTime, 365); + setCookie("room", room, 365); + setCookie("zoomLevel", zoomLevel, 365); + roomElem.textContent = room; + document.body.style.zoom = zoomLevel; + settingsModal.style.display = "none"; + }); + + document.body.style.zoom = zoomLevel; +}); diff --git a/exam/Scripts/utils.js b/exam/Scripts/utils.js new file mode 100644 index 0000000..b2d9f95 --- /dev/null +++ b/exam/Scripts/utils.js @@ -0,0 +1,21 @@ +function setCookie(name, value, days) { + const d = new Date(); + d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); + const expires = "expires=" + d.toUTCString(); + document.cookie = name + "=" + value + ";" + expires + ";path=/"; +} + +function getCookie(name) { + const nameEQ = name + "="; + const ca = document.cookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); + } + return null; +} + +function formatTimeWithoutSeconds(time) { + return time.slice(0, -3); +} diff --git a/exam/styles.css b/exam/Styles/dark.css similarity index 98% rename from exam/styles.css rename to exam/Styles/dark.css index d235218..5a52578 100644 --- a/exam/styles.css +++ b/exam/Styles/dark.css @@ -2,7 +2,7 @@ body { font-family: 'HarmonyOS Sans SC Regular', 'Roboto', Arial, sans-serif; margin: 0; padding: 0; - background: url('../background.jpg') no-repeat center center fixed; + background: url('../../background.jpg') no-repeat center center fixed; /* 更新路径 */ background-size: cover; animation: fadeIn 1s; color: #e0e0e0; diff --git a/exam/index.html b/exam/index.html index 9b5e941..567a787 100644 --- a/exam/index.html +++ b/exam/index.html @@ -4,7 +4,7 @@