diff options
-rw-r--r-- | module/calp/html/view/calendar/week.scm | 7 | ||||
-rw-r--r-- | static/components/popup-element.ts | 9 | ||||
-rw-r--r-- | static/server_connect.ts | 11 |
3 files changed, 20 insertions, 7 deletions
diff --git a/module/calp/html/view/calendar/week.scm b/module/calp/html/view/calendar/week.scm index f6461f2f..cb238394 100644 --- a/module/calp/html/view/calendar/week.scm +++ b/module/calp/html/view/calendar/week.scm @@ -93,8 +93,11 @@ ,(btn "×" title: "Stäng" onclick: "" - ;; onclick: "close_popup(document.getElementById(this.closest('.popup-container').id))" - class: '("close-tooltip"))) + class: '("close-button")) + ,(btn "🗑" + title: "Ta bort" + class: '("remove-button") + onclick: "")) (div (@ (class "tabgroup")) (tab-element diff --git a/static/components/popup-element.ts b/static/components/popup-element.ts index 2f019f4d..cb67035f 100644 --- a/static/components/popup-element.ts +++ b/static/components/popup-element.ts @@ -9,6 +9,8 @@ import { vcal_objects } from '../globals' import { ComponentVEvent } from './vevent' import { TabElement } from './tab-element' +import { remove_event } from '../server_connect' + /* <popup-element /> */ class PopupElement extends ComponentVEvent { @@ -74,8 +76,11 @@ class PopupElement extends ComponentVEvent { let nav = body.getElementsByClassName("popup-control")[0] as HTMLElement; bind_popup_control(nav); - let btn = body.querySelector('.popup-control .close-tooltip') as HTMLButtonElement - btn.addEventListener('click', () => close_popup(this)); + let close_btn = body.querySelector('.popup-control .close-button') as HTMLButtonElement + close_btn.addEventListener('click', () => close_popup(this)); + + let remove_btn = body.querySelector('.popup-control .remove-button') as HTMLButtonElement + remove_btn.addEventListener('click', () => remove_event(uid)); /* end nav bar */ this.replaceChildren(body); diff --git a/static/server_connect.ts b/static/server_connect.ts index 1d01e07e..66410324 100644 --- a/static/server_connect.ts +++ b/static/server_connect.ts @@ -21,16 +21,21 @@ async function remove_event(uid: uid) { }); console.log(response); - toggle_popup(popup_from_event(element)); + // 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 { - element.remove(); + /* 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 |