aboutsummaryrefslogtreecommitdiff
path: root/static/formatters.ts
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-09-05 01:25:00 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-09-05 01:25:00 +0200
commit7949fcdc683d07689bad5da5d20bfa3eeb5a6a46 (patch)
treec1bc39dc0e508ee498cf7119f888f513db4bab8f /static/formatters.ts
parentAdd build step for jsdoc. (diff)
downloadcalp-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.ts75
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;
- }
-})