From 1b5ff103f589140473068fd83340b0cc443fb420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 20 Nov 2020 23:01:32 +0100 Subject: Work on templetazing js. --- static/server_connect.js | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 static/server_connect.js (limited to 'static/server_connect.js') diff --git a/static/server_connect.js b/static/server_connect.js new file mode 100644 index 00000000..e789d72c --- /dev/null +++ b/static/server_connect.js @@ -0,0 +1,75 @@ + +async function remove_event (element) { + let uid = element.querySelector("icalendar uid text").innerHTML; + + let data = new URLSearchParams(); + data.append('uid', uid); + + let response = await fetch ( '/remove', { + method: 'POST', + body: data + }); + + console.log(response); + toggle_popup("popup" + element.id); + + if (response.status < 200 || response.status >= 300) { + let body = await response.text(); + alert(`HTTP error ${response.status}\n${body}`) + } else { + element.remove(); + } +} + +async function create_event (event) { + + let xml = event.getElementsByTagName("icalendar")[0].outerHTML + let calendar = event.properties.calendar; + + console.log(calendar, xml); + + let data = new URLSearchParams(); + data.append("cal", calendar); + data.append("data", xml); + + 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; + } + + 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 properties = parser + .parseFromString(body, 'text/xml') + .children[0]; + + let child; + while ((child = properties.firstChild)) { + let target = event.querySelector( + "vevent properties " + child.tagName); + if (target) { + target.replaceWith(child); + } else { + event.querySelector("vevent properties") + .appendChild(child); + } + } + + event.classList.remove("generated"); + toggle_popup("popup" + event.id); +} -- cgit v1.2.3