diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-03-15 01:14:45 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-03-15 01:43:12 +0100 |
commit | 2d35caa4b3e025a57c626f89c665da31ffbfe27d (patch) | |
tree | f22ad2d5c07626f116ca7c3a8762fd2fe68d6855 /static/components/vevent-description.ts | |
parent | Make make-routes pre-compile all regexes. (diff) | |
download | calp-2d35caa4b3e025a57c626f89c665da31ffbfe27d.tar.gz calp-2d35caa4b3e025a57c626f89c665da31ffbfe27d.tar.xz |
Introduce concept of VEvent formatters in frontend.
Diffstat (limited to '')
-rw-r--r-- | static/components/vevent-description.ts | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/static/components/vevent-description.ts b/static/components/vevent-description.ts index 4d81d6b3..f0d224be 100644 --- a/static/components/vevent-description.ts +++ b/static/components/vevent-description.ts @@ -2,7 +2,7 @@ export { ComponentDescription } import { VEvent } from '../vevent' import { ComponentVEvent } from './vevent' -import { makeElement } from '../lib' +import { formatters } from '../formatters' /* <vevent-description /> @@ -24,26 +24,12 @@ class ComponentDescription extends ComponentVEvent { for (let el of body.querySelectorAll('[data-property]')) { if (!(el instanceof HTMLElement)) continue; let p = el.dataset.property!; - let d, fmt; + let d; if ((d = data.getProperty(p))) { - switch (p.toLowerCase()) { - case 'categories': - for (let item of d) { - let q = encodeURIComponent( - `(member "${item}" (or (prop event (quote CATEGORIES)) (quote ())))`) - el.appendChild(makeElement('a', { - textContent: item, - href: `/search/?q=${q}`, - })) - } - break; - default: - if ((fmt = el.dataset.fmt)) { - el.textContent = d.format(fmt); - } else { - el.textContent = d; - } - } + let key = p.toLowerCase(); + let f = formatters.get(key); + if (f) f(el, d); + else window.formatters.get('default')!(el, d); } } |