blob: 3b39b3adfe127c932df7429123c3e2aaf7c1e61e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
window.formatters.set('description', (el, d) => {
if (/<br\/?>/.exec(d)) {
/* Assume that the text is HTML iff in contains a <br/> tag */
let parser = new DOMParser();
let doc = parser.parseFromString(d, 'text/html');
el.replaceChildren(doc.body);
} else {
/* Otherwise it should be plain(er) text, parse "all" links */
el.innerHTML = d.replaceAll(/https?:\/\/\S+/g, '<a href="$&">$&</a>');
}
})
/* This location formatter is generally not for general use.
It holds a small lookup table of "all" locations at Linköping University,
and makes location names from their calendar system clickable.
To obtain salar.json, run scripts/fetch-liu-map-index.scm from calps source tree.
*/
window.salar = new Promise((resolve, reject) =>
fetch('/static/user/salar.json')
.then(d => d.json())
.then(d => resolve(d)))
window.formatters.set('location', async function(el, d) {
let rx = /Lokal: (.*)/
let m = rx.exec(d)
if (! m) {
el.textContent = d;
return;
}
let salar = await window.salar;
let name = m[1]
let frag = salar[name];
if (frag) {
let anch = document.createElement('a');
anch.href = `https://old.liu.se/karta/${frag}`
anch.target = '_blank'
anch.textContent = name;
el.append('Lokal: ');
el.append(anch);
} else {
el.textContent = `Lokal: ${name}`
}
})
|