aboutsummaryrefslogtreecommitdiffstats
path: root/static/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/script.js')
-rw-r--r--static/script.js78
1 files changed, 31 insertions, 47 deletions
diff --git a/static/script.js b/static/script.js
index f81f9ef..efd6836 100644
--- a/static/script.js
+++ b/static/script.js
@@ -1,37 +1,35 @@
-import { initTimeVisualizer } from './timeVisualizer.js';
+import { updateTime } from './block_time.js';
+import { updateWeather } from './block_weather.js';
-let polling = true
-const blocks = {
- time: { interval: 30 * 1000, lastUpdate: 0, update: updateTime }, // 30s
- weather: { interval: 30 * 60000, lastUpdate: 0, update: updateWeather } // 30min
- // Add more: { interval: X, lastUpdate: 0, update: updateFunction }
-};
-let lastPoll = 0;
+const config = {
+ polling: true
+}
+
+function init() {
+ const blocks = {
+ time: { interval: 30 * 1000, lastUpdate: 0, update: updateTime }, // 30s
+ weather: { interval: 30 * 60000, lastUpdate: 0, update: updateWeather } // 30min
+ // Add more: { interval: X, lastUpdate: 0, update: updateFunction }
+ };
+
+ initHeaderControls(blocks)
-function updateTime() {
- fetch("/time")
- .then(res => res.json())
- .then(data => {
- document.getElementById("weatherSummary").innerText = data.time;
- });
+ // Initial load
+ // Poll every 500ms to check intervals (fast enough for 1s updates, light on CPU)
+ // maybe the 1s updates should be special case, but for now let's keep it simple
+ reloadAll(blocks);
+ setInterval(() => pollUpdates(blocks), 500);
}
-function updateWeather() {
- const city = document.getElementById("city").value;
- fetch(`/weather?city=${encodeURIComponent(city)}`)
- .then(res => res.json())
- .then(data => {
- if (!data) {
- document.getElementById("weather-summary").innerText = `Error, "${city}" city not found`;
- return
- }
- document.getElementById("weather-summary").innerText = data.summary;
- document.getElementById("weather-icon").src = data.icon_url;
- });
+function reloadAll(blocks) {
+ Object.keys(blocks).forEach(key => {
+ blocks[key].update();
+ blocks[key].lastUpdate = Date.now();
+ });
}
-function pollUpdates() {
- if (!polling) return;
+function pollUpdates(blocks) {
+ if (!config.polling) return;
const now = Date.now();
Object.keys(blocks).forEach(key => {
const block = blocks[key];
@@ -40,27 +38,13 @@ function pollUpdates() {
block.lastUpdate = now;
}
});
- lastPoll = now;
}
-function reloadAll() {
- Object.keys(blocks).forEach(key => {
- blocks[key].update();
- blocks[key].lastUpdate = Date.now();
+function initHeaderControls(blocks) {
+ document.getElementById("reload").addEventListener("click", () => reloadAll(blocks));
+ document.getElementById("pause").addEventListener("change", (e) => {
+ config.polling = e.target.checked;
});
}
-// Header controls
-document.getElementById("reload").addEventListener("click", reloadAll);
-document.getElementById("pause").addEventListener("change", (e) => {
- polling = e.target.checked;
-});
-
-// Initial load
-reloadAll();
-// Poll every 500ms to check intervals (fast enough for 1s updates, light on CPU)
-// maybe the 1s updates should be special case, but for now let's keep it simple
-setInterval(pollUpdates, 500);
-
-// timeVisualizer
-initTimeVisualizer('timeVisualizer');
+init()