From c168c6b81d628894c5689fbf70c6b2f0b5de0e6f Mon Sep 17 00:00:00 2001 From: Oscar Najera Date: Sun, 9 Feb 2025 15:44:25 +0100 Subject: register clicks --- webstats/stats.paren | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) (limited to 'webstats') diff --git a/webstats/stats.paren b/webstats/stats.paren index 04faff7..6733ff4 100644 --- a/webstats/stats.paren +++ b/webstats/stats.paren @@ -3,19 +3,45 @@ (in-package :webstats-js) -(defun register-visit () +(defun register-visit (data) + (fetch "http://localhost:4252/visit" + (create :method "POST" + :headers (create "Content-Type" "application/x-www-form-urlencoded") + :body (new (-u-r-l-search-params data))))) + +(defun instrument-links () + (chain document (query-selector-all "a") + (for-each (lambda (link) + (setf (getprop link 'onclick) + (lambda (event) + (chain console (log event (@ event which))) + (chain event (prevent-default)) + (when (or (= 1 (@ event which)) + (= 2 (@ event which))) + (chain console (warn "in req")) + (chain + (register-visit (create :click (getprop link 'href) + :page (@ document location href))) + (finally (lambda () + (if (= 1 (@ event which)) + (setf (@ window location href) (getprop link 'href)) + (chain window (open (getprop link 'href) "_blank")))))))) + + ))))) + +(defun register-page-load () (let ((data (create :title (@ document title) - :page (@ window location href) + :page (@ document location href) :referer (@ document referrer)))) (chain - (fetch "http://localhost:4252/visit" - (create :method "POST" - :headers (create "Content-Type" "application/x-www-form-urlencoded") - :body (new (-u-r-l-search-params data)) - )) + (register-visit data) (then (lambda (r) ((@ console log) r) ((@ r text)))) (then (@ console log))))) -(add-event-listener "load" register-visit) +(add-event-listener + "load" + (lambda () + (instrument-links) + (register-page-load))) -- cgit v1.2.3