summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoruser@node5.net <user@node5.net>2026-06-29 23:03:07 +0200
committeruser@node5.net <user@node5.net>2026-06-29 23:03:07 +0200
commitf4835ffdcb80ed5fa711ea9b33b295dae36258b2 (patch)
treee692a6147c1558a824d40b67b5cb7a39b7f402ec /src
parent50ab73d694f474ecb7e61db0d56a9f1ef769e70c (diff)
web: fetch with js to avoid flickering
Diffstat (limited to 'src')
-rw-r--r--src/static/main.js36
-rw-r--r--src/templates/base.html5
-rw-r--r--src/templates/index.html8
-rw-r--r--src/templates/program.html1
-rw-r--r--src/text_tv.py4
5 files changed, 18 insertions, 36 deletions
diff --git a/src/static/main.js b/src/static/main.js
index 7bea389..86cda7e 100644
--- a/src/static/main.js
+++ b/src/static/main.js
@@ -1,31 +1,9 @@
-const url = '/text';
-const parts = ["top", "program"];
-const elements = {};
-
-function get_element(part){
- elements[part] = document.getElementById(part);
-}
-
-const program_element = parts.forEach(get_element);
-
-function set_element_text(part, text){
- elements[part].innerHTML = text;
+async function update() {
+ const html = await (await fetch("/update")).text();
+ document.querySelector("#top").innerHTML = html.split("\n").slice(0, 1)[0];
+ document.querySelector("#program").innerHTML = html.split("\n").slice(1).join("\n");
}
-async function getEvents() {
- try {
- const response = await fetch(url);
- if (!response.ok) {
- throw new Error(`Response status: ${response.status}`);
- }
-
- const events = await response.json();
- console.log(events)
-
- } catch (error) {
- console.error(error.message);
- }
-}
-
-getEvents();
-
+setInterval(() => {
+ update()
+}, 5000);
diff --git a/src/templates/base.html b/src/templates/base.html
index 54c9c5e..c600ebf 100644
--- a/src/templates/base.html
+++ b/src/templates/base.html
@@ -9,12 +9,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="main.js" defer></script>
{% endblock %}
- <meta http-equiv="refresh" content="10">
</head>
<body>
-
+
<div id="root-container">
-
+
{% block content %}
{% endblock %}
diff --git a/src/templates/index.html b/src/templates/index.html
index 85fe385..f076d32 100644
--- a/src/templates/index.html
+++ b/src/templates/index.html
@@ -3,13 +3,13 @@
{% block content %}
<pre class="content grey" id="top">{{parts.top}}</pre>
-
+
<img src="title_headline.png">
- <pre class="content" id="program">{% for event in parts.program %}{% if loop.previtem and loop.previtem.day != event.day %}<br>{{ event.day }}<hr style="margin-bottom: 1em">{% endif %}<div style="position: relative"><div style="display: inline-block; background: #006688; height: 1.2em; width: {{event.progress}}%; position: absolute; left: 0"></div><div style="position: absolute; top: 0px; left: 0px;">{{event.title}} {{ event.time}} {{ event.icon }}</div></div><br style="margin-bottom: 0.25em">{% endfor %}</pre>
+ {% include 'program.html' %}
{#
<img src="news_headline.png">
-
+
<pre class="content" id="news">{{parts.news}}</pre>
-->
<br>
@@ -18,7 +18,7 @@
<label id="news_input_label" for="news_input">Post your own news, or anything you'd like here:</label><br>
<input type="text" id="news_input" name="news_input" maxlength="{{ news_max_length }}" placeholder="Type text here">
<input type="submit" value="Post" />
- </form>
+ </form>
#}
<div style="position: relative">
diff --git a/src/templates/program.html b/src/templates/program.html
new file mode 100644
index 0000000..2b455dc
--- /dev/null
+++ b/src/templates/program.html
@@ -0,0 +1 @@
+<pre class="content" id="program">{% for event in parts.program %}{% if loop.previtem and loop.previtem.day != event.day %}<br>{{ event.day }}<hr style="margin-bottom: 1em">{% endif %}<div style="position: relative"><div style="display: inline-block; background: #006688; height: 1.2em; width: {{event.progress}}%; position: absolute; left: 0"></div><div style="position: absolute; top: 0px; left: 0px;">{{event.title}} {{ event.time}} {{ event.icon }}</div></div><br style="margin-bottom: 0.25em">{% endfor %}</pre>
diff --git a/src/text_tv.py b/src/text_tv.py
index c0baf90..30b885a 100644
--- a/src/text_tv.py
+++ b/src/text_tv.py
@@ -18,6 +18,10 @@ def top():
now = datetime.datetime.now() if not program_parser.override_date else program_parser.override_date
return f'BornHack S105 {now.strftime("%a %d %b %R:%S")} '
+@app.route('/update')
+def update():
+ return top() + '\n' + flask.render_template('program.html', parts=text())
+
@app.route('/program.json')
def program():