From 0620d925b1045b17cad613a3cc5a1fbb3748c83c Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 27 Mar 2016 21:35:52 +0200 Subject: Moving some files --- src/client/elm/LoggedIn/View/Table.elm | 96 ++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/client/elm/LoggedIn/View/Table.elm (limited to 'src/client/elm/LoggedIn/View/Table.elm') diff --git a/src/client/elm/LoggedIn/View/Table.elm b/src/client/elm/LoggedIn/View/Table.elm new file mode 100644 index 0000000..7a156af --- /dev/null +++ b/src/client/elm/LoggedIn/View/Table.elm @@ -0,0 +1,96 @@ +module LoggedIn.View.Table + ( paymentsTable + ) where + +import Dict exposing (..) +import Date exposing (Date) +import Signal exposing (Address) +import String exposing (append) + +import Html exposing (..) +import Html.Attributes exposing (..) +import Html.Events exposing (..) + +import LoggedIn.Action as LoggedInAction +import LoggedIn.Model as LoggedInModel + +import Model exposing (Model) +import Model.User exposing (getUserName) +import Model.Payment exposing (..) +import Model.Translations exposing (getMessage) +import Action exposing (..) + +import View.Icon exposing (renderIcon) +import View.Date exposing (..) +import View.Price exposing (price) + +paymentsTable : Address Action -> Model -> LoggedInModel.Model -> Html +paymentsTable address model loggedInModel = + div + [ class "table" ] + ( headerLine model :: paymentLines address model loggedInModel) + +headerLine : Model -> Html +headerLine model = + div + [ class "header" ] + [ div [ class "cell category" ] [ renderIcon "shopping-cart" ] + , div [ class "cell cost" ] [ text model.conf.currency ] + , div [ class "cell user" ] [ renderIcon "user" ] + , div [ class "cell date" ] [ renderIcon "calendar" ] + , div [ class "cell" ] [] + ] + +paymentLines : Address Action -> Model -> LoggedInModel.Model -> List Html +paymentLines address model loggedInModel = + loggedInModel.payments + |> List.sortBy (Date.toTime << .creation) + |> List.reverse + |> List.drop ((loggedInModel.currentPage - 1) * perPage) + |> List.take perPage + |> List.map (paymentLine address model loggedInModel) + +paymentLine : Address Action -> Model -> LoggedInModel.Model -> Payment -> Html +paymentLine address model loggedInModel payment = + a + [ classList + [ ("row", True) + , ("edition", loggedInModel.paymentEdition == Just payment.id) + ] + , onClick address (UpdateLoggedIn (LoggedInAction.ToggleEdit payment.id)) + ] + [ div [ class "cell category" ] [ text payment.name ] + , div + [ classList + [ ("cell cost", True) + , ("refund", payment.cost < 0) + ] + ] + [ text (price model payment.cost) ] + , div + [ class "cell user" ] + [ payment.userId + |> getUserName loggedInModel.users + |> Maybe.withDefault "−" + |> text + ] + , div + [ class "cell date" ] + [ span + [ class "shortDate" ] + [ text (renderShortDate payment.creation model.translations) ] + , span + [ class "longDate" ] + [ text (renderLongDate payment.creation model.translations) ] + ] + , if loggedInModel.account.me == payment.userId + then + div + [ class "cell delete" ] + [ button + [ onClick address (UpdateLoggedIn <| LoggedInAction.DeletePayment payment Punctual)] + [ renderIcon "times" ] + ] + else + div [ class "cell" ] [] + ] -- cgit v1.2.3