From 7949fcdc683d07689bad5da5d20bfa3eeb5a6a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 5 Sep 2023 01:25:00 +0200 Subject: Move frontend code to subdirectories, to simplify command line flags. --- static/server_connect.ts | 133 ----------------------------------------------- 1 file changed, 133 deletions(-) delete mode 100644 static/server_connect.ts (limited to 'static/server_connect.ts') diff --git a/static/server_connect.ts b/static/server_connect.ts deleted file mode 100644 index 29f5bab2..00000000 --- a/static/server_connect.ts +++ /dev/null @@ -1,133 +0,0 @@ -export { create_event, remove_event } - -import { jcal_to_xcal } from './jcal' -import { VEvent } from './vevent' -import { uid } from './types' -import { vcal_objects } from './globals' -import { PopupElement } from './components/popup-element' - -async function remove_event(uid: uid) { - let element = vcal_objects.get(uid); - if (!element) { - console.error(`No VEvent with that uid = '${uid}', giving up`) - return; - } - - let data = new URLSearchParams(); - data.append('uid', uid); - - let response = await fetch('/remove', { - method: 'POST', - body: data - }); - - console.log(response); - // toggle_popup(popup_from_event(element)); - - if (response.status < 200 || response.status >= 300) { - let body = await response.text(); - alert(`HTTP error ${response.status}\n${body}`) - } else { - /* Remove all HTML components which belong to this vevent */ - for (let component of element.registered) { - component.remove(); - } - /* remove the vevent from our global store, - hopefully also freeing it for garbace collection */ - vcal_objects.delete(uid); - } -} - -// function event_to_jcal(event) { -// /* encapsulate event in a shim calendar, to ensure that -// we always send correct stuff */ -// return ['vcalendar', -// [ -// /* -// 'prodid' and 'version' are technically both required (RFC 5545, -// 3.6 Calendar Components). -// */ -// ], -// [ -// /* vtimezone goes here */ -// event.properties.to_jcal() -// ] -// ]; -// } - -async function create_event(event: VEvent) { - - // let xml = event.getElementsByTagName("icalendar")[0].outerHTML - let calendar = event.calendar; - if (!calendar) { - console.error("Can't create event without calendar") - return; - } - - console.log('calendar =', atob(calendar)/*, xml*/); - - let data = new URLSearchParams(); - data.append("cal", calendar); - // data.append("data", xml); - - // console.log(event); - - let jcal = event.to_jcal(); - // console.log(jcal); - - let doc: Document = jcal_to_xcal(jcal); - // console.log(doc); - let str = doc.documentElement.outerHTML; - console.log(str); - data.append("data", str); - - // console.log(event.properties); - - let response = await fetch('/insert', { - method: 'POST', - body: data - }); - - console.log(response); - if (response.status < 200 || response.status >= 300) { - let body = await response.text(); - alert(`HTTP error ${response.status}\n${body}`) - return; - } - - /* response from here on is good */ - - // let body = await response.text(); - - /* server is assumed to return an XML document on the form - - **xcal property** ... - - parse that, and update our own vevent with the data. - */ - - // let parser = new DOMParser(); - // let return_properties = parser - // .parseFromString(body, 'text/xml') - // .children[0]; - - // let child; - // while ((child = return_properties.firstChild)) { - // let target = event.querySelector( - // "vevent properties " + child.tagName); - // if (target) { - // target.replaceWith(child); - // } else { - // event.querySelector("vevent properties") - // .appendChild(child); - // } - // } - - for (let r of event.registered) { - r.classList.remove('generated'); - if (r instanceof PopupElement) { - console.log(r); - r.removeAttribute('visible'); - } - } -} -- cgit v1.2.3