aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webstats/stats.paren42
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)))