aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-09-18 23:05:09 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-09-18 23:05:09 +0200
commit0b534672febf95e7384dec2797190b87406fce8b (patch)
tree91b3380c1b1489485fd7be57d0ed6dc2eb7b78d0
parentRepair user-additions salar. (diff)
downloadcalp-0b534672febf95e7384dec2797190b87406fce8b.tar.gz
calp-0b534672febf95e7384dec2797190b87406fce8b.tar.xz
Extend user-additions salar to handle multiple locations.
-rw-r--r--static/user/user-additions.js44
1 files changed, 24 insertions, 20 deletions
diff --git a/static/user/user-additions.js b/static/user/user-additions.js
index 909f85f2..3a2951e0 100644
--- a/static/user/user-additions.js
+++ b/static/user/user-additions.js
@@ -32,7 +32,7 @@ window.formatters.set('description', async (el, ev, d) => {
idx = match.index + match[0].length
}
children.push(d.substring(idx));
- el.replaceChildren(...children);
+ el.replaceChildren(...children);
} else if (/<\/?\w+( +\w+(=["']?\w+["']?)?)* *\/?>/.exec(d)) {
/* Assume that the text is HTML if it contains something which looks
like an HTML tag */
@@ -73,32 +73,36 @@ window.salar = new Promise((resolve, reject) =>
.catch(err => reject(err))
)
-
window.formatters.set('location', async function(el, _, d) {
- let rx = /Lokal: (.*)/
- let m = rx.exec(d)
- if (! m) {
- el.textContent = d;
- return;
- }
+ let salar;
try {
- let salar = await window.salar;
+ salar = await window.salar;
} catch (e) {
console.warn("Location formatter failed", e);
return;
}
- 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}`
+ let rx = /Lokal: ([A-Za-z0-9]*)?/g
+
+ let idx = 0;
+ let children = []
+ for (let match of d.matchAll(rx)) {
+ children.push(d.substring(idx, match.index))
+ let name = match[1]
+ let frag = salar[name.toUpperCase()];
+ if (frag) {
+ let anch = document.createElement('a');
+ anch.href = `https://old.liu.se/karta/${frag}`
+ anch.target = '_blank'
+ anch.textContent = name;
+ children.push('Lokal: ');
+ children.push(anch);
+ } else {
+ children.push(`Lokal: ${name}`)
+ }
+ idx = match.index + match[0].length
}
+ children.push(d.substring(idx));
+ el.replaceChildren(...children)
})