From 4c06ace245bffa98a2b994ce81f4d1a1ea7fa750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 6 Aug 2020 00:48:10 +0200 Subject: Start moving popup's away from parents. --- module/output/html.scm | 15 ++++++++++++--- static/script.js | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/module/output/html.scm b/module/output/html.scm index 725cd39a..b70b5f56 100644 --- a/module/output/html.scm +++ b/module/output/html.scm @@ -213,7 +213,10 @@ ,(when (and (prop ev 'PARTSTAT) (eq? 'TENTATIVE (prop ev 'PARTSTAT))) " tentative")) - (onclick "toggle_child_popup(this)")))) + ; (onclick "toggle_child_popup(this)") + (onclick ,(format #f "toggle_popup(document.getElementById('~a'))" + (string-append "popup" (html-id ev)))) + ))) ;; Inner div to prevent overflow. Previously "overflow: none" ;; was set on the surounding div, but the popup /needs/ to ;; overflow. @@ -226,7 +229,9 @@ `(span (@ (class "location")) ,(string-map (lambda (c) (if (char=? c #\,) #\newline c)) (prop ev 'LOCATION))))) - ,(popup ev popup-id))))) + #; + ,(popup ev (string-append "popup" (html-id ev)) #; popup-id + ))))) ;; Format single event for graphical display (define (create-block date ev) @@ -725,7 +730,11 @@ post-end: post-end next-start: next-start prev-start: prev-start - )) + ) + ,@(for event in (stream->list + (events-between pre-start post-end events)) + (popup event (string-append "popup" (html-id event)) #; popup-id + ))) ;; Page footer (footer diff --git a/static/script.js b/static/script.js index d3526849..f7f46c99 100644 --- a/static/script.js +++ b/static/script.js @@ -569,10 +569,27 @@ function close_popup(popup) { function open_popup(popup) { popup.classList.add("visible"); + let element = document.getElementById(popup.id.substr(5)) + let root = document.body; + let offsetX = 0, offsetY = 0; + while (element !== root) { + console.log(element); + offsetX += element.offsetLeft; + offsetY += element.offsetTop; + element = element.offsetParent; + } + console.table({offsetX, offsetY}) + popup.style.left = offsetX + "px"; + popup.style.top = offsetY + "px"; } function toggle_popup(popup) { - popup.classList.toggle("visible"); + // popup.classList.toggle("visible"); + if (popup.classList.contains("visible")) { + close_popup(popup); + } else { + open_popup(popup); + } } function toggle_child_popup(el) { -- cgit v1.2.3