From c3e83392a78690127f0840683d685a940ddbc2e6 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Sun, 30 May 2021 21:32:50 -0600 Subject: Improved notification logic --- src/org_ckons_cljs/notifications/core.cljs | 86 +++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/org_ckons_cljs/notifications/core.cljs b/src/org_ckons_cljs/notifications/core.cljs index 3816fb3..fb60e98 100644 --- a/src/org_ckons_cljs/notifications/core.cljs +++ b/src/org_ckons_cljs/notifications/core.cljs @@ -4,9 +4,11 @@ [dommy.core :as dommy])) (declare template-message) -(declare template-error) -(declare maybe-error) +(declare template-errormsg) +(declare message-div-or-nil) +(declare errormsg-div-or-nil) (declare maybe-message) +(declare maybe-error) (hiccups/defhtml template-message [message] [:div {:class "alert alert-success"} message]) @@ -14,22 +16,70 @@ (hiccups/defhtml template-error [errormsg] [:div {:class "alert alert-danger"} errormsg]) +(defn message-div-or-nil [] + (when (not (empty? (dommy/html (dommy/sel1 :#message)))) + (dommy/html (dommy/sel1 :#message)))) + +(defn errormsg-div-or-nil [] + (when (not (empty? (dommy/html (dommy/sel1 :#errormsg)))) + (dommy/html (dommy/sel1 :#errormsg)))) + +;; loc-p | msg | msg-div || output +;; ------------------------------------- +;; f | f | f || nil +;; f | f | t || msg-div +;; f | t | - || msg +;; t | f | - || nil +;; t | t | - || msg +;; (defn maybe-message [jsonobj] - (when (get jsonobj "locationP") - (let [message (get jsonobj "message")] - (cond (empty? message) - (dommy/set-style! (dommy/sel1 :#message) :display "none") - :else - (do - (dommy/set-style! (dommy/sel1 :#message) :display "block") - (dommy/set-html! (dommy/sel1 :#message) (template-message message))))))) + (let [location-p (get jsonobj "locationP") + message (get jsonobj "message") + message-div (dommy/html (dommy/sel1 :#message))] + (dommy/set-html! (dommy/sel1 :#message) + (cond (or (and location-p + message) + (and (not location-p) + message)) + (template-message message) + (and (not location-p) + (not message) + (message-div-or-nil)) + (message-div-or-nil) + :else + "")) + (dommy/set-style! (dommy/sel1 :#message) + :display (cond (empty? (dommy/html (dommy/sel1 :#message))) + "none" + :else + "block")))) +;; loc-p | err | err-div || output +;; ------------------------------------- +;; f | f | f || nil +;; f | f | t || err-div +;; f | t | - || err +;; t | f | - || nil +;; t | t | - || err +;; (defn maybe-error [jsonobj] - (when (get jsonobj "locationP") - (let [errormsg (get jsonobj "errormsg")] - (cond (empty? errormsg) - (dommy/set-style! (dommy/sel1 :#errormsg) :display "none") - :else - (do - (dommy/set-style! (dommy/sel1 :#errormsg) :display "block") - (dommy/set-html! (dommy/sel1 :#errormsg) (template-error errormsg))))))) + (let [location-p (get jsonobj "locationP") + errormsg (get jsonobj "errormsg") + errormsg-div (dommy/html (dommy/sel1 :#errormsg))] + (dommy/set-html! (dommy/sel1 :#errormsg) + (cond (or (and location-p + errormsg) + (and (not location-p) + errormsg)) + (template-error errormsg) + (and (not location-p) + (not errormsg) + (errormsg-div-or-nil)) + (errormsg-div-or-nil) + :else + "")) + (dommy/set-style! (dommy/sel1 :#errormsg) + :display (cond (empty? (dommy/html (dommy/sel1 :#errormsg))) + "none" + :else + "block")))) -- cgit v1.3