module LoggedIn.Income.View.Table exposing ( view ) import Dict exposing (..) import Date exposing (Date) import String exposing (append) import FontAwesome import View.Color as Color import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import Dialog import Dialog.AddIncome.Model as AddIncome import Dialog.AddIncome.View as AddIncome import Tooltip import Msg exposing (Msg) import LoggedData exposing (LoggedData) import LoggedIn.Msg as LoggedInMsg import LoggedIn.Income.Model as Income import View.Date as Date import LoggedIn.View.Format as Format import Model.User exposing (getUserName) import Model.Income as Income exposing (..) import Model.Translations exposing (getMessage) view : LoggedData -> Income.Model -> Html Msg view loggedData incomeModel = let incomes = loggedData.incomes |> Dict.toList |> List.sortBy (.time << snd) |> List.reverse in div [ class "table" ] [ div [ class "lines" ] ( headerLine loggedData :: List.map (paymentLine loggedData incomeModel) incomes) , if List.isEmpty (Dict.toList loggedData.incomes) then div [ class "emptyTableMsg" ] [ text <| getMessage "NoPayment" loggedData.translations ] else text "" ] headerLine : LoggedData -> Html Msg headerLine loggedData = div [ class "header" ] [ div [ class "cell name" ] [ text <| getMessage "Name" loggedData.translations ] , div [ class "cell income" ] [ text <| getMessage "Income" loggedData.translations ] , div [ class "cell date" ] [ text <| getMessage "Date" loggedData.translations ] , div [ class "cell" ] [] , div [ class "cell" ] [] , div [ class "cell" ] [] ] paymentLine : LoggedData -> Income.Model -> (IncomeId, Income) -> Html Msg paymentLine loggedData incomeModel (incomeId, income) = div [ class "row" ] [ div [ class "cell name" ] [ income.userId |> getUserName loggedData.users |> Maybe.withDefault "−" |> text ] , div [ class "cell income" ] [ text (Format.price loggedData.conf income.amount) ] , div [ class "cell date" ] [ text (Date.longView (Date.fromTime income.time) loggedData.translations) ] , div [ class "cell button" ] [ let currentDate = Date.fromTime loggedData.currentTime in AddIncome.button "" loggedData (AddIncome.initialClone loggedData.translations currentDate income) "CloneIncome" (FontAwesome.clone Color.chestnutRose 18) (Just (getMessage "Clone" loggedData.translations)) ] , div [ class "cell button" ] [ if loggedData.me /= income.userId then text "" else AddIncome.button "" loggedData (AddIncome.initialEdit loggedData.translations incomeId income) "EditIncome" (FontAwesome.pencil Color.chestnutRose 18) (Just (getMessage "Edit" loggedData.translations)) ] , div [ class "cell button" ] [ if loggedData.me /= income.userId then text "" else let dialogConfig = { className = "deleteIncomeDialog" , title = getMessage "ConfirmIncomeDelete" loggedData.translations , body = always <| text "" , confirm = getMessage "Confirm" loggedData.translations , confirmMsg = always <| Msg.Dialog <| Dialog.UpdateAndClose <| Msg.UpdateLoggedIn <| LoggedInMsg.DeleteIncome incomeId , undo = getMessage "Undo" loggedData.translations } in button ( Tooltip.show Msg.Tooltip (getMessage "Delete" loggedData.translations) ++ [ onClick (Msg.Dialog <| Dialog.Open dialogConfig) ] ) [ FontAwesome.trash Color.chestnutRose 18 ] ] ]