From 75804df1cb231033f94183e41cdf79d36d8f6710 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 21 Aug 2016 14:30:40 +0200 Subject: Show a message if there is an error during a server request --- src/server/Controller/Payment.hs | 2 +- src/server/Design/Errors.hs | 55 ++++++++++++++++++++++++++++++++ src/server/Design/Global.hs | 2 ++ src/server/Model/Message/Key.hs | 10 ++++++ src/server/Model/Message/Translations.hs | 37 +++++++++++++++++++++ 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/server/Design/Errors.hs (limited to 'src/server') diff --git a/src/server/Controller/Payment.hs b/src/server/Controller/Payment.hs index 96ac469..9155a78 100644 --- a/src/server/Controller/Payment.hs +++ b/src/server/Controller/Payment.hs @@ -28,7 +28,7 @@ import qualified Model.Json.EditPayment as Json list :: ActionM () list = - Secure.loggedAction (\_ -> do + Secure.loggedAction (\_ -> (liftIO $ runDb Payment.list) >>= json ) diff --git a/src/server/Design/Errors.hs b/src/server/Design/Errors.hs new file mode 100644 index 0000000..57aaeee --- /dev/null +++ b/src/server/Design/Errors.hs @@ -0,0 +1,55 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Design.Errors + ( design + ) where + +import Clay + +import Design.Color as Color + +design :: Css +design = do + position fixed + top (px 20) + left (pct 50) + "transform" -: "translateX(-50%)" + margin (px 0) (px 0) (px 0) (px 0) + disapearKeyframes + + ".error" ? do + disapearAnimation + let errorColor = Color.chestnutRose -. 15 + color errorColor + border solid (px 2) errorColor + backgroundColor Color.white + borderRadius (px 5) (px 5) (px 5) (px 5) + padding (px 5) (px 5) (px 5) (px 5) + + before & display none + +disapearAnimation :: Css +disapearAnimation = do + animationName "disapear" + animationDelay (sec 5) + animationDuration (sec 1) + animationFillMode forwards + +disapearKeyframes :: Css +disapearKeyframes = keyframes + "disapear" + [ ( 10 + , do + opacity 0 + height (px 40) + lineHeight (px 40) + marginBottom (px 10) + ) + , ( 100 + , do + opacity 0 + height (px 0) + lineHeight (px 0) + marginBottom (px 0) + ) + ] diff --git a/src/server/Design/Global.hs b/src/server/Design/Global.hs index 26c1a42..e742978 100644 --- a/src/server/Design/Global.hs +++ b/src/server/Design/Global.hs @@ -12,6 +12,7 @@ import qualified Design.Header as Header import qualified Design.SignIn as SignIn import qualified Design.LoggedIn as LoggedIn import qualified Design.Form as Form +import qualified Design.Errors as Errors import qualified Design.Dialog as Dialog import qualified Design.Tooltip as Tooltip @@ -29,6 +30,7 @@ global = do header ? Header.design ".signIn" ? SignIn.design ".loggedIn" ? LoggedIn.design + ".errors" ? Errors.design ".dialog" ? Dialog.design ".tooltip" ? Tooltip.design Form.design diff --git a/src/server/Model/Message/Key.hs b/src/server/Model/Message/Key.hs index 9126b61..8deca69 100644 --- a/src/server/Model/Message/Key.hs +++ b/src/server/Model/Message/Key.hs @@ -115,6 +115,16 @@ data Key = | SmallerIntThan | GreaterIntThan + -- Errors + + | CreatePaymentError + | EditPaymentError + | DeletePaymentError + | CreateIncomeError + | EditIncomeError + | DeleteIncomeError + | SignOutError + -- Dialog | Confirm diff --git a/src/server/Model/Message/Translations.hs b/src/server/Model/Message/Translations.hs index 4b698d7..994a56c 100644 --- a/src/server/Model/Message/Translations.hs +++ b/src/server/Model/Message/Translations.hs @@ -446,6 +446,43 @@ m l GreaterIntThan = English -> "Integer smaller than {1} or equal required" French -> "Entier inférieur ou égal à {1} requis" +-- Errors + +m l CreatePaymentError = + case l of + English -> "Error at payment creation" + French -> "Erreur lors de la création du paiement" + +m l EditPaymentError = + case l of + English -> "Error at payment edition" + French -> "Erreur lors de la modification du paiement" + +m l DeletePaymentError = + case l of + English -> "Error at payment deletion" + French -> "Erreur lors de la suppression du paiement" + +m l CreateIncomeError = + case l of + English -> "Error at income creation" + French -> "Erreur lors de la création du revenu" + +m l EditIncomeError = + case l of + English -> "Error at income edition" + French -> "Erreur lors de la modification du revenu" + +m l DeleteIncomeError = + case l of + English -> "Error at income deletion" + French -> "Erreur lors de la suppression du revenu" + +m l SignOutError = + case l of + English -> "Error at sign out" + French -> "Erreur lors de la déconnexion" + -- Dialog m l Confirm = -- cgit v1.2.3