From 47ded976c65104a44adf2950f29ddf8dc4bebcc0 Mon Sep 17 00:00:00 2001 From: Oliver Marks Date: Mon, 28 Oct 2019 17:42:49 +0000 Subject: [PATCH] Graphical tweaks, and default about page text. --- src/weecfg/core.cljs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/weecfg/core.cljs b/src/weecfg/core.cljs index b0f51e5..4168727 100644 --- a/src/weecfg/core.cljs +++ b/src/weecfg/core.cljs @@ -13,7 +13,6 @@ (defonce form-data (atom {:server "" :device-id "" :wifi-ssid "" :wifi-key ""})) (defonce device-id-regex #"[A-Za-z0-9]{4}") (defonce alpha-numeric-regex #"[A-Za-z0-9]") -(defonce ssid-regex #"^[!#;].|[+\[\]\"\t\s].*$") ; spec validation definitions (s/def ::boolean-type boolean?) @@ -21,7 +20,7 @@ (s/def ::alpha-numeric-type (s/and string? #(re-matches alpha-numeric-regex %))) (s/def ::ssid-size-limit #(<= (count %) 32)) (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 ::wifi-key-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)))) +; Custom validation error messages, instead of standard cryptic spec formats. (defn validation-message [errors default] (let [pred (:cljs.spec.alpha/spec errors)] (case pred :cljs.core/string? "Sorry value must be a string!" :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/device-id-type "Device is to short or invalid format." (or (str default pred) (str "Error not handled " (str pred)))))) @@ -103,9 +103,7 @@ (swap! form-errors "success"))})) -;simple input form - - +;simple input form, dynamically generated from edn file (defn config-form [] (let [form-fields (atom [])] (load-form form-fields) @@ -135,28 +133,30 @@ [:p "Device will reboot in a few seconds and connect to your wifi."]]]) (defn about-page [] - [:div.w-50 + [:div.items-center.jutify-center [: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"]]]) -; give a browser route load the relevant defn handler +; given a browser route load the relevant defn handler (defn page-for [route] "Map your route keys to pages here" (print route) (case route :index (var home-page) - ;:error #'home-page + ;:error #'404-page :success (success-page) :about (var about-page) (var home-page))) -; default page wrapper html +; default page html wraps the current page elements (defn current-page [] (fn [] (let [page (:current-page (session/get :route))] - [:div.bg-green.flex.justify-center.items-center.h-100 - [:div.w-35 + [:div.bg-green.flex.justify-center.items-center.h-100.w-100 + [:div..w-75.w-50-m [:h2.w-100 [: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