Graphical tweaks, and default about page text.
This commit is contained in:
parent
e9e7cb4876
commit
47ded976c6
|
@ -13,7 +13,6 @@
|
||||||
(defonce form-data (atom {:server "" :device-id "" :wifi-ssid "" :wifi-key ""}))
|
(defonce form-data (atom {:server "" :device-id "" :wifi-ssid "" :wifi-key ""}))
|
||||||
(defonce device-id-regex #"[A-Za-z0-9]{4}")
|
(defonce device-id-regex #"[A-Za-z0-9]{4}")
|
||||||
(defonce alpha-numeric-regex #"[A-Za-z0-9]")
|
(defonce alpha-numeric-regex #"[A-Za-z0-9]")
|
||||||
(defonce ssid-regex #"^[!#;].|[+\[\]\"\t\s].*$")
|
|
||||||
|
|
||||||
; spec validation definitions
|
; spec validation definitions
|
||||||
(s/def ::boolean-type boolean?)
|
(s/def ::boolean-type boolean?)
|
||||||
|
@ -21,7 +20,7 @@
|
||||||
(s/def ::alpha-numeric-type (s/and string? #(re-matches alpha-numeric-regex %)))
|
(s/def ::alpha-numeric-type (s/and string? #(re-matches alpha-numeric-regex %)))
|
||||||
(s/def ::ssid-size-limit #(<= (count %) 32))
|
(s/def ::ssid-size-limit #(<= (count %) 32))
|
||||||
(s/def ::default-size-limit #(<= (count %) 50))
|
(s/def ::default-size-limit #(<= (count %) 50))
|
||||||
(s/def ::wifi-ssid-type (s/and string? #(re-matches ssid-regex %) ::ssid-size-limit))
|
(s/def ::wifi-ssid-type (s/and string? ::ssid-size-limit))
|
||||||
(s/def ::device-id-type (s/and string? #(re-matches device-id-regex %)))
|
(s/def ::device-id-type (s/and string? #(re-matches device-id-regex %)))
|
||||||
(s/def ::wifi-key-type (s/and string? ::default-size-limit))
|
(s/def ::wifi-key-type (s/and string? ::default-size-limit))
|
||||||
(s/def ::server-type (s/and string? ::default-size-limit))
|
(s/def ::server-type (s/and string? ::default-size-limit))
|
||||||
|
@ -41,12 +40,13 @@
|
||||||
(:path (reitit/match-by-name router route params))
|
(:path (reitit/match-by-name router route params))
|
||||||
(:path (reitit/match-by-name router route))))
|
(:path (reitit/match-by-name router route))))
|
||||||
|
|
||||||
|
; Custom validation error messages, instead of standard cryptic spec formats.
|
||||||
(defn validation-message [errors default]
|
(defn validation-message [errors default]
|
||||||
(let [pred (:cljs.spec.alpha/spec errors)]
|
(let [pred (:cljs.spec.alpha/spec errors)]
|
||||||
(case pred
|
(case pred
|
||||||
:cljs.core/string? "Sorry value must be a string!"
|
:cljs.core/string? "Sorry value must be a string!"
|
||||||
:weecfg.core/size-test "Sorry value to long!"
|
:weecfg.core/size-test "Sorry value to long!"
|
||||||
:weecfg.core/wifi-ssid-type "Sorry ssid invalid!"
|
:weecfg.core/wifi-ssid-type "Sorry ssid invalid to long!"
|
||||||
:weecfg.core/wifi-key-type "Invalid wifi key"
|
:weecfg.core/wifi-key-type "Invalid wifi key"
|
||||||
:weecfg.core/device-id-type "Device is to short or invalid format."
|
:weecfg.core/device-id-type "Device is to short or invalid format."
|
||||||
(or (str default pred) (str "Error not handled " (str pred))))))
|
(or (str default pred) (str "Error not handled " (str pred))))))
|
||||||
|
@ -103,9 +103,7 @@
|
||||||
(swap! form-errors "success"))}))
|
(swap! form-errors "success"))}))
|
||||||
|
|
||||||
|
|
||||||
;simple input form
|
;simple input form, dynamically generated from edn file
|
||||||
|
|
||||||
|
|
||||||
(defn config-form []
|
(defn config-form []
|
||||||
(let [form-fields (atom [])]
|
(let [form-fields (atom [])]
|
||||||
(load-form form-fields)
|
(load-form form-fields)
|
||||||
|
@ -135,28 +133,30 @@
|
||||||
[:p "Device will reboot in a few seconds and connect to your wifi."]]])
|
[:p "Device will reboot in a few seconds and connect to your wifi."]]])
|
||||||
|
|
||||||
(defn about-page []
|
(defn about-page []
|
||||||
[:div.w-50
|
[:div.items-center.jutify-center
|
||||||
[:div [:h1.m-4 "About Page"]
|
[:div [:h1.m-4 "About Page"]
|
||||||
[:p "Sample app, demoing using ajax calls and reagent to render the page with some simple route from reitit, basically enought to get you started on your clojurescript journey."]
|
[:p "Device configuration page built using "
|
||||||
|
[:a {:href "https://gitlab.com/olymk2/weecfg" :title "weecfg"} "weecfg"]
|
||||||
|
" set up your device wifi connection and other device specific settings."]
|
||||||
[:a.link {:href (path-for :index)} "Back"]]])
|
[:a.link {:href (path-for :index)} "Back"]]])
|
||||||
|
|
||||||
; give a browser route load the relevant defn handler
|
; given a browser route load the relevant defn handler
|
||||||
(defn page-for [route]
|
(defn page-for [route]
|
||||||
"Map your route keys to pages here"
|
"Map your route keys to pages here"
|
||||||
(print route)
|
(print route)
|
||||||
(case route
|
(case route
|
||||||
:index (var home-page)
|
:index (var home-page)
|
||||||
;:error #'home-page
|
;:error #'404-page
|
||||||
:success (success-page)
|
:success (success-page)
|
||||||
:about (var about-page)
|
:about (var about-page)
|
||||||
(var home-page)))
|
(var home-page)))
|
||||||
|
|
||||||
; default page wrapper html
|
; default page html wraps the current page elements
|
||||||
(defn current-page []
|
(defn current-page []
|
||||||
(fn []
|
(fn []
|
||||||
(let [page (:current-page (session/get :route))]
|
(let [page (:current-page (session/get :route))]
|
||||||
[:div.bg-green.flex.justify-center.items-center.h-100
|
[:div.bg-green.flex.justify-center.items-center.h-100.w-100
|
||||||
[:div.w-35
|
[:div..w-75.w-50-m
|
||||||
[:h2.w-100
|
[:h2.w-100
|
||||||
[:a.link.fr.black.pt3.pb3 {:href (path-for :about)} [:i.fas.fa-question-circle]]
|
[:a.link.fr.black.pt3.pb3 {:href (path-for :about)} [:i.fas.fa-question-circle]]
|
||||||
[:a.athelas.f3.link.white-70.hover-white.no-underline.flex.items-center.pa3
|
[:a.athelas.f3.link.white-70.hover-white.no-underline.flex.items-center.pa3
|
||||||
|
|
Loading…
Reference in New Issue