scoring view

This commit is contained in:
Luciano Laratelli 2025-03-12 18:29:52 -04:00
parent 62ec327502
commit ab57a15c12
2 changed files with 45 additions and 19 deletions

View file

@ -3,5 +3,6 @@ CREATE TABLE IF NOT EXISTS game (
code text UNIQUE, code text UNIQUE,
display_session text NOT NULL, display_session text NOT NULL,
control_session text, control_session text,
current_player integer,
active boolean not null active boolean not null
); );

View file

@ -35,14 +35,12 @@
player-order (if random-order? player-order (if random-order?
(shuffle (range 0 (count players))) (shuffle (range 0 (count players)))
(range 0 (count players)))] (range 0 (count players)))]
(println players)
(println player-order)
(println (interleave players player-order))
(jdbc/execute! ds (sql/format {:insert-into :game (jdbc/execute! ds (sql/format {:insert-into :game
:values [{:id id :values [{:id id
:code code :code code
:display_session id :display_session id
:current_player 0
:active false}] :active false}]
:on-conflict :id :on-conflict :id
:do-update-set [:code :display_session :active]})) :do-update-set [:code :display_session :active]}))
@ -72,8 +70,6 @@
:from :player :from :player
:where [:= :game_code (:game/code game)]})))] :where [:= :game_code (:game/code game)]})))]
(println id)
(pprint/pprint game)
(ui/page (ui/page
{} {}
[:div [:div
@ -98,30 +94,60 @@
[:th {:scope "row"} (:player/name p)] [:th {:scope "row"} (:player/name p)]
[:td (:player/score p)]]))]]]))) [:td (:player/score p)]]))]]])))
(defn checkbox [n]
[:label
[:input {:type "checkbox", :name n}]
n])
(def pig-position
["jowler"
"trotter"
"snouter"
"black dot"
"no dot"
"razorback"])
(defn control-view [{:keys [session params path-params] (defn control-view [{:keys [session params path-params]
:example/keys [ds] :example/keys [ds]
:as _ctx}] :as _ctx}]
(let [code (:code path-params) (let [code (:code path-params)
players (sort-by :player/play_order (jdbc/execute! ds (sql/format {:select :* :from :player :where [:= :game_code code]})))] players (into []
(sort-by
:player/play_order
(jdbc/execute! ds (sql/format {:select :*
:from :player
:where [:= :game_code code]}))))
game (jdbc/execute-one! ds (sql/format {:select :*
:from :game
:where [:= :code code]}))
current-player (:game/current_player game)]
(ui/page {} (ui/page {}
[:div [:nav [:div [:nav
[:ul [:li [:strong "Score the pigs"]]] [:ul [:li [:strong (str "Score the pigs - " code)]]]
[:ul [:li (biff/form {:id "reset" [:ul [:li (biff/form {:id "reset"
:hx-get "/reset"} :hx-get "/reset"}
[:button.secondary "Reset"])]]] [:button.secondary "Reset"])]]]
[:h5 (str "Game " code)] [:h4 "Playing next:" (-> (get players current-player) :player/name)]
[:table
[:thead
[:tr
[:th {:scope "col"} "Player"]
[:th {:scope "col"} "Score"]]]
(into [:tbody] (biff/form {:id ::score-form}
(for [p players] [:table
[:tr [:thead
[:th {:scope "row"} (:player/name p)] [:tr
[:td (:player/score p)]]))]]))) [:th {:scope "col"} "Pig 1"]
[:th {:scope "col"} "Pig 2"]]]
[:tbody
(for [p1 pig-position
;; p2 pig-position
]
[:tr
[:td
(checkbox p1)]
[:td (checkbox p1)]])]]
[:button {:type "submit"} "Score pigs"]
[:button.contrast {:type "submit"} "Pigs are touching! (Lose all points)"])])))
(defn connect (defn connect
[{:keys [session params] [{:keys [session params]
@ -130,7 +156,6 @@
(let [code (:game-code params) (let [code (:game-code params)
game (delay (jdbc/execute-one! ds (sql/format {:select :* :from :game game (delay (jdbc/execute-one! ds (sql/format {:select :* :from :game
:where [:= :code code]})))] :where [:= :code code]})))]
(println params)
(if (and code @game) (if (and code @game)
{:status 200 {:status 200
:session session :session session