408 lines
29 KiB
HTML
408 lines
29 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../../coverage.css"/> <title> mw_ui/routes/home.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns ^{:doc "Routes which serve the main pages of the application."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 :author "Simon Brooke"}
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 mw-ui.routes.home
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 (:require [clojure.java.io :refer [file]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 [clojure.walk :refer [keywordize-keys]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
006 [compojure.core :refer [defroutes GET POST]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 [hiccup.core :refer [html]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 [mw-engine.utils :as engine-utils]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
009 [mw-ui.layout :as layout]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
010 [mw-ui.render-world :as world]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
011 [mw-ui.routes.load :as load]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
012 [mw-ui.routes.rules :as rules]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
013 [mw-ui.routes.params :as params]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
014 [mw-ui.routes.save :as save]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
015 [mw-ui.util :as util]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
016 [noir.session :as session]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
017 [ring.util.response :as response]))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
018
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
019 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
020 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
021 ;;;; mw-ui: a servlet user/visualisation interface for MicroWorld.
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
022 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
023 ;;;; This program is free software; you can redistribute it and/or
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
024 ;;;; modify it under the terms of the GNU General Public License
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
025 ;;;; as published by the Free Software Foundation; either version 2
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
026 ;;;; of the License, or (at your option) any later version.
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
027 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
028 ;;;; This program is distributed in the hope that it will be useful,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
029 ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
030 ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
031 ;;;; GNU General Public License for more details.
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
032 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
033 ;;;; You should have received a copy of the GNU General Public License
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
034 ;;;; along with this program; if not, write to the Free Software
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
035 ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
036 ;;;; USA.
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
037 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
038 ;;;; Copyright (C) 2014 Simon Brooke
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
039 ;;;;
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
040 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
041
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
042
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
043 (defn list-states []
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
044 (sort
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
045 (filter #(not (nil? %))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 11 forms covered">
|
|
046 (map #(first (rest (re-matches #"([0-9a-z-]+).png" (.getName %))))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
047 ;; TODO: this will not work when running from jar; see utils.clj
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
048 (file-seq (file "resources/public/img/tiles"))))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
049
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
050
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
051 (defn about-page []
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
052 (layout/render "trusted-content.html"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 7 forms covered">
|
|
053 {:title "About MicroWorld"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
054 :about-selected "active"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
055 :content (util/md->html "/md/about.md")
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
056 :version (System/getProperty "mw-ui.version")}))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
057
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
058 (defn docs-page []
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 11 forms covered">
|
|
059 (layout/render "docs.html" {:title "Documentation"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
060 :parser (util/md->html "/md/mw-parser.md" )
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
061 :states (util/list-resources "/img/tiles" #"([0-9a-z-_]+).png")
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
062 :lessons (util/list-resources "/md/lesson-plans" #"([0-9a-z-_]+).md")
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
063 :components ["mw-engine" "mw-parser" "mw-ui"]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
064 :version (System/getProperty "mw-ui.version")}))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
065
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
066 (defn home-page
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
067 "Render the home page."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
068 []
|
|
</span><br/>
|
|
<span class="covered" title="8 out of 8 forms covered">
|
|
069 (layout/render "trusted-content.html" {:title "Welcome to MicroWorld"
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
070 :content (util/md->html "/md/mw-ui.md")
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
071 :version (System/getProperty "mw-ui.version")}))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
072
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
073 (defn inspect-page
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
074 "Open an inspector on the cell at the co-ordinates specified in this request"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
075 [request]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
076 (let [params (keywordize-keys (:params request))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
077 xs (:x params)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
078 ys (:y params)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
079 x (if (seq xs) (read-string xs) 0)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
080 y (if (seq ys) (read-string ys) 0)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
081 world (session/get :world)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
082 cell (engine-utils/get-cell world x y)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
083 state (:state params)]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
084 (cond state
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
085 (do
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 11 forms covered">
|
|
086 (session/put! :world (engine-utils/set-property world cell :state (keyword state)))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
087 (response/redirect "world"))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
088 true
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
089 (layout/render "inspector.html"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 12 forms covered">
|
|
090 {:title (format "Inspect cell at %d, %d" x y)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 7 forms covered">
|
|
091 :content (html (world/render-inspector cell))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
092 :cell cell
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
093 :x (:x cell)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
094 :y (:y cell)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
095 :states (util/list-resources
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
096 "/img/tiles" #"([0-9a-z-_]+).png")}))))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
097
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
098 (defn md-page
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
099 "Render the markdown page specified in this request, if any. Probably undesirable,
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
100 should be removed."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
101 [request]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
102 (let [params (keywordize-keys (:params request))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
103 content (or (:content params) "missing.md")]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
104 (layout/render "trusted-content.html"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
105 {:title "Welcome to MicroWorld"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
106 :content (util/md->html (str "/md/" content))})))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
107
|
|
</span><br/>
|
|
<span class="partial" title="1 out of 2 forms covered">
|
|
108 (defn world-page []
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
109 "Render the world in the current session (or a default one if none)."
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
110 (layout/render "trusted-content.html"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 9 forms covered">
|
|
111 {:title "Watch your world grow"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
112 :world-selected "active"
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
113 :content (html (world/render-world-table))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 8 forms covered">
|
|
114 :pause (or (session/get :pause) 5)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
115 :maybe-refresh "refresh"}))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
116
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
117
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
118 (defroutes home-routes
|
|
</span><br/>
|
|
<span class="covered" title="8 out of 8 forms covered">
|
|
119 (GET "/" [] (home-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
120 (GET "/about" [] (about-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
121 (GET "/docs" [] (docs-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
122 (GET "/inspect" request (inspect-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
123 (POST "/inspect" request (inspect-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
124 (GET "/load" [] (load/load-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
125 (POST "/load" request (load/load-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
126 (GET "/md" request (md-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
127 (GET "/params" [] (params/params-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
128 (POST "/params" request (params/params-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
129 (GET "/rules" request (rules/rules-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 10 forms covered">
|
|
130 (POST "/rules" request (rules/rules-page request))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
131 (GET "/saved-map.mwm" [] (save/save-page))
|
|
</span><br/>
|
|
<span class="partial" title="5 out of 8 forms covered">
|
|
132 (GET "/world" [] (world-page))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
133 )
|
|
</span><br/>
|
|
</body>
|
|
</html>
|