diff options
author | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 15:44:25 +0100 |
---|---|---|
committer | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 15:44:25 +0100 |
commit | c168c6b81d628894c5689fbf70c6b2f0b5de0e6f (patch) | |
tree | 0538c30a0b3a2f23bd289ab89301e328af58b92e /webstats/stats.paren | |
parent | d75062d57029f09a0b51b640e2b4f0a1a50fa6e1 (diff) | |
download | scratch-c168c6b81d628894c5689fbf70c6b2f0b5de0e6f.tar.gz scratch-c168c6b81d628894c5689fbf70c6b2f0b5de0e6f.tar.bz2 scratch-c168c6b81d628894c5689fbf70c6b2f0b5de0e6f.zip |
register clicks
Diffstat (limited to 'webstats/stats.paren')
-rw-r--r-- | webstats/stats.paren | 42 |
1 files changed, 34 insertions, 8 deletions
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))) |