aboutsummaryrefslogtreecommitdiff
path: root/static/components/vevent-description.ts
diff options
context:
space:
mode:
Diffstat (limited to 'static/components/vevent-description.ts')
-rw-r--r--static/components/vevent-description.ts26
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);
}
}