Prepare for dhcp

This commit is contained in:
L3D 2024-10-30 20:00:01 +01:00
parent eb9b54c181
commit 790dd404e6
Signed by: L3D
GPG Key ID: CD08445BFF4313D1
56 changed files with 1258 additions and 727 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
DHCP24 Infobeamer

View File

@ -33,13 +33,7 @@ let clock_update = sc.configure(serv, clk);
let cfg = {
"roomName": "Festsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
"roomName": "A002"
};

View File

@ -1,55 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as domman from "../dom/schedule.js";
import * as clk from "../dom/clock.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, domman);
let clock_update = sc.configure(serv, clk);
let cfg = {
"roomName": "Bankettsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
};
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
clock_update(storage, ti, cfg);
// update_screen();
// setTimeout(main_loop, 1 * 1000);
setTimeout(main_loop, 1 * 50);
};
main_loop();

View File

@ -1,55 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as domman from "../dom/schedule.js";
import * as clk from "../dom/clock.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, domman);
let clock_update = sc.configure(serv, clk);
let cfg = {
"roomName": "Tanzsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
};
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
clock_update(storage, ti, cfg);
// update_screen();
// setTimeout(main_loop, 1 * 1000);
setTimeout(main_loop, 1 * 50);
};
main_loop();

View File

@ -20,7 +20,7 @@ let storage = {
};
let cfg = {
"roomName": "Festsaal"
"roomName": "A002"
};

View File

@ -1,42 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/speaker-info.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Bankettsaal"
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -1,42 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/speaker-info.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Tanzsaal"
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -20,7 +20,7 @@ let storage = {
};
let cfg = {
"roomName": "Festsaal"
"roomName": "A002"
};

View File

@ -1,42 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/talk-info.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Bankettsaal"
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -1,42 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/talk-info.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Tanzsaal"
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -20,13 +20,7 @@ let storage = {
};
let cfg = {
"roomName": "Festsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
"roomName": "Festsaal"
};

View File

@ -1,48 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/upcoming-talk.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Bankettsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -1,48 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as dom from "../dom/upcoming-talk.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let cfg = {
"roomName": "Tanzsaal",
"music": {
"artist": "luss",
"title": "dub techno session #5",
"licence": "CC-BY",
"url": "https://lussdub.bandcamp.com/"
}
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, dom);
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
setTimeout(main_loop, 1 * 1000);
};
main_loop();

View File

@ -31,7 +31,7 @@ let screen_update = sc.configure(serv, domman);
let cfg = {
"roomName": "Festsaal",
"roomName": "A002"
};

View File

@ -1,45 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as domman from "../dom/voc-schedule-hall.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, domman);
let cfg = {
"roomName": "Bankettsaal",
};
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
// update_screen();
setTimeout(main_loop, 1 * 100);
};
main_loop();

View File

@ -1,45 +0,0 @@
'use strict';
import * as fe from "../core/fetcher.js";
import * as ti from "../core/time.js";
import * as sc from "../core/screen.js";
// Import services
import * as serv from "../services/service.js";
// Import views
import * as domman from "../dom/voc-schedule-hall.js";
// Empty JSON lists for data
let storage = {
scheduleData: undefined
};
let do_fetch = fe.configure({}, serv);
do_fetch(storage);
// Main Loop
let screen_update = sc.configure(serv, domman);
let cfg = {
"roomName": "Tanzsaal",
};
// Just do it
function main_loop() {
screen_update(storage, ti, cfg);
// update_screen();
setTimeout(main_loop, 1 * 100);
};
main_loop();

View File

@ -1,6 +1,6 @@
baseURL = "https://files.chvoc.ch/"
baseURL = "https://dhcp24.winkekatze.tv/"
languageCode = 'de-DE'
title = 'DGWK24'
title = 'DHCP24'
defaultContentLanguage = "en"
@ -17,5 +17,4 @@ disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT", "404"]
workerBaseURL = '/js/custom/core/'
scheduleURL = '/schedule.json'
#scheduleURL = 'https://cfp.winterkongress.ch/wk24/schedule/export/schedule.json'
scheduleFetchInterval = 60

View File

@ -1,9 +1,8 @@
baseURL = "https://files.chvoc.ch/dgwk24/info/"
baseURL = "https://dhcp24.winkekatze.tv/"
[params]
workerBaseURL = '/dgwk24/info/js/custom/core/'
workerBaseURL = '/js/custom/core/'
scheduleURL = '/dgwk24/info/schedule.json'
#scheduleURL = 'https://cfp.winterkongress.ch/wk24/schedule/export/schedule.json'
scheduleURL = '/schedule.json'
scheduleFetchInterval = 60

View File

@ -0,0 +1,4 @@
---
title: "Schedule D002: Vortragssaal"
type: schedule-d002
---

View File

@ -1,4 +0,0 @@
---
title: "Schedule Hall 1: Festsaal"
type: schedule-hall1
---

View File

@ -1,4 +0,0 @@
---
title: "Schedule Hall 2: Bankettsaal"
type: schedule-hall2
---

View File

@ -1,4 +0,0 @@
---
title: "Schedule Hall 3: Tanzsaal"
type: schedule-hall3
---

View File

@ -0,0 +1,4 @@
---
title: "Speaker Info D002: Vortragssaal"
type: speaker-info-d002
---

View File

@ -1,4 +0,0 @@
---
title: "Speaker Info Hall 1: Festsaal"
type: speaker-info-hall1
---

View File

@ -1,4 +0,0 @@
---
title: "Speaker Info Hall 2: Bankettsaal"
type: speaker-info-hall2
---

View File

@ -1,4 +0,0 @@
---
title: "Speaker Info Hall 3: Tanzsaal"
type: speaker-info-hall3
---

View File

@ -0,0 +1,4 @@
---
title: "Talk Info D002: Vortragssaal"
type: talk-info-d002
---

View File

@ -1,4 +0,0 @@
---
title: "Talk Info Hall 1: Festsaal"
type: talk-info-hall1
---

View File

@ -1,4 +0,0 @@
---
title: "Talk Info Hall 2: Bankettsaal"
type: talk-info-hall2
---

View File

@ -1,4 +0,0 @@
---
title: "Talk Info Hall 3: Tanzsaal"
type: talk-info-hall3
---

View File

@ -0,0 +1,4 @@
---
title: "Upcoming Talk D002: Vortragssaal"
type: upcoming-talk-d002
---

View File

@ -1,4 +0,0 @@
---
title: "Upcoming Talk Hall 1: Festsaal"
type: upcoming-talk-hall1
---

View File

@ -1,4 +0,0 @@
---
title: "Upcoming Talk Hall 2: Bankettsaal"
type: upcoming-talk-hall2
---

View File

@ -1,4 +0,0 @@
---
title: "Upcoming Talk Hall 3: Tanzsaal"
type: upcoming-talk-hall3
---

View File

@ -0,0 +1,4 @@
---
title: "VOC Schedule D002: Vortragssaal"
type: voc-schedule-d002
---

View File

@ -1,4 +0,0 @@
---
title: "VOC Schedule Hall 1: Festsaal"
type: voc-schedule-hall1
---

View File

@ -1,4 +0,0 @@
---
title: "VOC Schedule Hall 2: Bankettsaal"
type: voc-schedule-hall2
---

View File

@ -1,4 +0,0 @@
---
title: "VOC Schedule Hall 3: Tanzsaal"
type: voc-schedule-hall3
---

42
download.py Normal file
View File

@ -0,0 +1,42 @@
import requests
import json
import os
# Schritt 1: Herunterladen der JSON-Datei
url = "https://talks.dhcp.cfhn.it/dhcp-2024/schedule/export/schedule.json"
response = requests.get(url)
# Überprüfen, ob die Anfrage erfolgreich war
if response.status_code == 200:
schedule_data = response.json() # JSON-Daten laden
# Schritt 2: Ersetzen des Raum-Namens "A002 Hauptraum" durch "A002"
def replace_room_names(data):
# Wenn data ein Wörterbuch ist, prüfen wir die Schlüssel und Werte
if isinstance(data, dict):
for key, value in data.items():
if value == "D002 Vortragsraum":
data[key] = "D002"
elif value == "Haupteingang":
data[key] = "Eingang"
elif value == "A017 Workshopraum":
data[key] = "A017"
else:
replace_room_names(value)
# Wenn data eine Liste ist, gehen wir durch jedes Element
elif isinstance(data, list):
for item in data:
replace_room_names(item)
replace_room_names(schedule_data)
# Schritt 3: Speichern der geänderten Datei
output_path = "static/schedule.json"
os.makedirs(os.path.dirname(output_path), exist_ok=True)
with open(output_path, "w", encoding="utf-8") as f:
json.dump(schedule_data, f, ensure_ascii=False, indent=4)
print("Die Datei wurde erfolgreich unter 'static/schedule.json' gespeichert.")
else:
print("Fehler beim Herunterladen der Datei:", response.status_code)

View File

@ -1,20 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "schedule-hall2.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/schedule-hall2.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "schedule-hall2.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/schedule-hall2.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img class="header" src="{{ .Site.BaseURL }}/header.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
<div id="clock"></div>
{{ end }}

View File

@ -1,20 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "schedule-hall3.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/schedule-hall3.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "schedule-hall3.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/schedule-hall3.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img class="header" src="{{ .Site.BaseURL }}/header.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
<div id="clock"></div>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "speaker-info-hall2.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/speaker-info-hall2.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "speaker-info-hall2.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/speaker-info-hall2.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img src="/bg.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "speaker-info-hall3.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/speaker-info-hall3.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "speaker-info-hall3.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/speaker-info-hall3.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img src="/bg.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "talk-info-hall2.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/talk-info-hall2.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "talk-info-hall2.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/talk-info-hall2.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img src="/bg.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "talk-info-hall3.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/talk-info-hall3.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "talk-info-hall3.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/talk-info-hall3.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img src="/bg.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "upcoming-talk-hall2.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/upcoming-talk-hall2.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "upcoming-talk-hall2.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/upcoming-talk-hall2.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img class="header" src="{{ .Site.BaseURL }}/header.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,19 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "upcoming-talk-hall3.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/upcoming-talk-hall3.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "upcoming-talk-hall3.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/upcoming-talk-hall3.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}
{{ define "main" }}
<img class="header" src="{{ .Site.BaseURL }}/header.png">
<main id="main">
<!-- Dynamic content inserted here -->
</main>
{{ end }}

View File

@ -1,12 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/voc-schedule.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "voc-schedule-hall2.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/voc-schedule-hall2.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}

View File

@ -1,12 +0,0 @@
{{ define "cssincludes" }}
{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
{{ $style := resources.Get "/css/custom/nodes/voc-schedule.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
<link rel="stylesheet" href="{{ $style.Permalink }}" />
{{ end }}
{{ define "jsincludes" }}
{{ $externals := slice "htm" "preact" "luxon" }}
{{ $buildOptions := dict "targetPath" "voc-schedule-hall3.js" "externals" $externals }}
{{ $nodejs := resources.Get "/js/custom/nodes/voc-schedule-hall3.js" | js.Build $buildOptions | resources.Fingerprint }}
<script src="{{ $nodejs.Permalink }}" integrity="{{ $nodejs.Data.Integrity }}" type="module"></script>
{{ end }}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 60 KiB

File diff suppressed because one or more lines are too long