diff of 85e47f7154ce5d1920bf3a67604432f992287139
85e47f7154ce5d1920bf3a67604432f992287139
diff --git a/src/main.lisp b/src/main.lisp
index 72c2779..d41a2df 100644
--- a/src/main.lisp
+++ b/src/main.lisp
@@ -10,7 +10,8 @@
(defvar *server* nil)
(defun stop-server ()
- (hunchentoot:stop *server*))
+ (hunchentoot:stop *server*)
+ (hunchentoot:stop murja.newui:*server*))
(defun start-server (&key (port 3010) stream)
(format t "Starting murja server~%")
@@ -25,6 +26,7 @@
(setf *server* server))
(hunchentoot:start server)
+ (hunchentoot:start murja.newui:*server*)
(format t "Started murja server on ~a ~%" port)
server))
diff --git a/src/murja-newui/newui.lisp b/src/murja-newui/newui.lisp
index c03ae52..9dc9d2e 100644
--- a/src/murja-newui/newui.lisp
+++ b/src/murja-newui/newui.lisp
@@ -1,12 +1,14 @@
(defpackage murja.newui
(:use :cl)
+ (:export :*server*)
(:local-nicknames (:json :com.inuoe.jzon))
(:import-from :cl-hash-util :hash))
(in-package :murja.newui)
+;; pitäiskö nää olla uniikkeja per käyttäjä 🤔
(defclass ui-session (hunchensocket:websocket-resource)
- ((path :initarg :path :reader ui-path :initform "/newui"))
+ ((path :initarg :path :reader ui-path :initform "/newui")
(:default-initargs :client-class 'ui-user))
(defclass ui-user (hunchensocket:websocket-client)
@@ -15,6 +17,9 @@
(defvar handlers (list (make-instance 'ui-session)))
(defun find-handler (request)
+ (format t "Finding handler ~a from handlers ~a~%"
+ (hunchentoot:script-name request)
+ handlers)
(find (hunchentoot:script-name request) handlers :test #'string= :key #'ui-path))
(pushnew 'find-handler hunchensocket:*websocket-dispatch-table*)
@@ -124,8 +129,6 @@
(format out
"(with-state (~{(~a ~a)~})
~a)" (alexandria:hash-table-plist (state-map s)) (root-component s)))
-
-(defvar *current-state* nil)
(defmacro with-state (bindings &rest body)
(let ((rewritten-symbols (map 'list #'first bindings)))
@@ -155,80 +158,24 @@
current-state))))
-
-;; (defun jännägetter (o)
-;; (second o))
-
-;; (defun set-jännä (o value)
-;; (setf (second o) value)
-;; o)
-
-;; (defsetf jännägetter set-jännä)
-
-;; (setf
-;; (jännägetter (list 1 2 3 4 5)) 555)
-;; (1 555 3 4 5)
-
-
-;; (with-state ((a 123)
-;; (b "lol")
-;; (c :Aaaa))
-;; (format t "Mitähän ~a on?~%" a)
-;; (setf a 7654222)
-;; (format t "Entä nyt? ~a~%" a))
-
-
-;; jonkun osan tästä pitäisi palauttaa (values (joko komponentti puu tai html) (state-puu))
-;; sitten websocket-listener kuulostelee jotain "CALL $id" eventtejä frontilta, ja osaa etsiä state-puusta oikean 0-arity closuren jota kutsua
-
-;; (render
-;; (c :html (:lang "en")
-;; (c :head ()
-;; (c :style () "* { background-color: #880088; }")
-;; (c :link (:rel :stylesheet :src "/resources/murja.css")))
-
-;; (with-state ((linnunrata-vakio 42))
-;; (c :body ()
-;; (c :header () "Willkommen!")
-;; (c :div (:class "sidebar-flex")
-;; (c :div () (format nil "~d bugia korjaamatta" linnunrata-vakio))
-;; (c :button (:onclick (e (lambda ()
-;; (format t "lollero ~a~%" linnunrata-vakio)
-;; (decf linnunrata-vakio))))))))))
-
-
-
-
-
-
-;; (setf *js-identifiers-in-scope* (hash))
-
-;; (caar
-;; (alexandria:hash-table-alist
-;; *js-identifiers-in-scope*))
-
-
-;; (with-slots (closure) (gethash "fn58386" *js-identifiers-in-scope*)
-;; (funcall closure))
-
-
(easy-routes:defroute demo ("/demo" :method :get) ()
- (render
- (c :html (:lang "en")
- (c :head ()
- (c :style () "body { background-color: #880088; }")
- (c :script (:src "/resources/newui.js"))
- (c :link (:rel :stylesheet :src "/resources/murja.css")))
-
- (with-state ((linnunrata-vakio 42))
- (c :body ()
- (c :header () "Willkommen!")
- (c :div (:class "sidebar-flex")
- (c :div () (format nil "~d bugia korjaamatta" linnunrata-vakio))
- (c :button (:onclick (e (lambda ()
- (format t "lollero ~a~%" linnunrata-vakio)
- (decf linnunrata-vakio))))
- "Vähennä bugeja tjsp.")))))))
+ (let ((state (with-state ((linnunrata-vakio 42))
+ (c :body ()
+ (c :header () "Willkommen!")
+ (c :div (:class "sidebar-flex")
+ (c :div () (format nil "~d bugia korjaamatta" linnunrata-vakio))
+ (c :button (:onclick (e (lambda ()
+ (format t "lollero ~a~%" linnunrata-vakio)
+ (decf linnunrata-vakio))))
+ "Vähennä bugeja tjsp."))))))
+ (format t "state: ~a ~%" state)
+ (render
+ (c :html (:lang "en")
+ (c :head ()
+ (c :style () "body { background-color: #880088; }")
+ (c :script (:src "/resources/newui.js"))
+ (c :link (:rel :stylesheet :src "/resources/murja.css")))
+ state))))
(setf hunchentoot:*catch-errors-p* nil)