From a8309988518af5bddf62d6a326d990fde4069b40 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 3 Jan 2016 19:41:31 +0100 Subject: Set focus properties to button elements --- src/client/elm/Server.elm | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/client/elm/Server.elm (limited to 'src/client/elm/Server.elm') diff --git a/src/client/elm/Server.elm b/src/client/elm/Server.elm new file mode 100644 index 0000000..cb65868 --- /dev/null +++ b/src/client/elm/Server.elm @@ -0,0 +1,65 @@ +module Server + ( signIn + , addPayment + , deletePayment + , setIncome + , signOut + , initViewAction + ) where + +import Signal +import Task as Task exposing (Task) +import Http +import Json.Decode as Json exposing ((:=)) +import Date +import Time exposing (Time) +import Debug + +import SimpleHTTP exposing (..) + +import Model.Action as U exposing (Action) +import Model.Action.LoggedInAction as UL exposing (LoggedInAction) +import Model.Action.MonthlyAction as UM exposing (MonthlyAction) +import Model.Action.AccountAction as UA exposing (AccountAction) +import Model.Payment exposing (..) +import Model.Payer exposing (Payers, payersDecoder) +import Model.User exposing (Users, usersDecoder, UserId, userIdDecoder) + +import Update.SignIn exposing (updateSignIn) + +signIn : String -> Task Http.Error Action +signIn assertion = + post ("/signIn?assertion=" ++ assertion) + |> flip Task.andThen (always initViewAction) + +addPayment : String -> Int -> PaymentFrequency -> Task Http.Error LoggedInAction +addPayment name cost frequency = + post ("/payment/add?name=" ++ name ++ "&cost=" ++ (toString cost) ++ "&frequency=" ++ (toString frequency)) + |> flip Task.andThen (decodeHttpValue <| "id" := paymentIdDecoder) + |> Task.map (\paymentId -> (UL.ValidateAddPayment paymentId name cost frequency)) + +deletePayment : Payment -> PaymentFrequency -> Task Http.Error LoggedInAction +deletePayment payment frequency = + post ("payment/delete?id=" ++ (toString payment.id)) + |> Task.map (always (UL.ValidateDeletePayment payment frequency)) + +setIncome : Time -> Int -> Task Http.Error Action +setIncome currentTime amount = + post ("/income?amount=" ++ (toString amount)) + |> Task.map (always (U.UpdateLoggedIn (UL.UpdateAccount (UA.UpdateIncome currentTime amount)))) + +signOut : Task Http.Error Action +signOut = + post "/signOut" + |> Task.map (always U.GoSignInView) + +initViewAction = Task.onError loggedInView (always <| Task.succeed U.GoSignInView) + +loggedInView : Task Http.Error Action +loggedInView = + Task.map U.GoLoggedInView (Http.get usersDecoder "/users") + `Task.andMap` (Http.get ("id" := userIdDecoder) "/whoAmI") + `Task.andMap` (Http.get paymentsDecoder "/monthlyPayments") + `Task.andMap` (Http.get paymentsDecoder "/payments") + `Task.andMap` (Http.get ("number" := Json.int) "/payments/count") + `Task.andMap` (Http.get payersDecoder "/payers") -- cgit v1.2.3