diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-05 01:25:00 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-05 01:25:00 +0200 |
commit | 7949fcdc683d07689bad5da5d20bfa3eeb5a6a46 (patch) | |
tree | c1bc39dc0e508ee498cf7119f888f513db4bab8f /static/formatters.ts | |
parent | Add build step for jsdoc. (diff) | |
download | calp-7949fcdc683d07689bad5da5d20bfa3eeb5a6a46.tar.gz calp-7949fcdc683d07689bad5da5d20bfa3eeb5a6a46.tar.xz |
Move frontend code to subdirectories, to simplify command line flags.
Diffstat (limited to 'static/formatters.ts')
-rw-r--r-- | static/formatters.ts | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/static/formatters.ts b/static/formatters.ts deleted file mode 100644 index e0018278..00000000 --- a/static/formatters.ts +++ /dev/null @@ -1,75 +0,0 @@ -export { - format -} - -import { makeElement } from './lib' -import { VEvent } from './vevent' - -type formatter = (e: HTMLElement, d: VEvent, s: any) => Promise<void> - -declare global { - interface Window { - formatters: Map<string, formatter>; - } -} - -let formatters: Map<string, formatter>; -formatters = window.formatters = new Map(); - -async function format(targetElement: HTMLElement, data: VEvent, key: string): Promise<void> { - let d = data.getProperty(key); - if (!d) return - let formatter = formatters.get(key.toLowerCase()); - if (formatter) { - try { - await formatter(targetElement, data, d); - } catch (error) { - console.warn('Formatter failed') - console.warn(error); - formatters.get('default')!(targetElement, data, d); - } - } else { - formatters.get('default')!(targetElement, data, d); - } -} - -formatters.set('categories', async (el, _, d) => { - 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}`, - })) - } -}) - -async function format_time_tag(el: HTMLElement, ev: VEvent, d: any): Promise<void> { - if (el instanceof HTMLTimeElement) { - if (d instanceof Date) { - let fmt = ''; - if (!d.utc) { - fmt += '~L'; - } - fmt += '~Y-~m-~d' - if (!d.dateonly) { - fmt += 'T~H:~M:~S' - } - el.dateTime = d.format(fmt); - } - } - - formatters.get('default')!(el, ev, d); -} - -formatters.set('dtstart', format_time_tag) -formatters.set('dtend', format_time_tag) - -formatters.set('default', async (el, _, d) => { - let fmt; - if ((fmt = el.dataset.fmt)) { - el.textContent = d.format(fmt); - } else { - el.textContent = d; - } -}) |