{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE OverloadedStrings #-}

module Data.Aviation.Casr.Logbook.Meta.Html(
    htmlAircraftUsageExpense
  , htmlAircraftLandingExpense
  , htmlAircraftFlightExpense
  , htmlSimulatorFlightExpense
  , htmlExamExpense
  , htmlBriefingExpense
  , htmlVisualisation
  , strImageType
  , htmlImageSource
  , htmlImage
  , strTrackLogType
  , htmlTrackLogSource
  , htmlTrackLog
  , strVideoType
  , htmlVideoSource
  , htmlVideo
  , htmlTrackLogs
  , htmlVisualisations
  , htmlImages
  , htmlVideos
  , htmlAircraftFlightExpenses
  , htmlAircraftFlightMeta
  , htmlSimulatorFlightMeta
  , htmlExamMeta
  , htmlBriefingMeta
  , htmlLogbookDocumentMeta
  , showCentsAsDollars
  , showThousandCentsAsDollars
  , showHundredCentsAsDollars
  , whenEmpty
) where

import Control.Category((.), id)
import Control.Lens(view)
import Control.Monad(when)
import Data.Aviation.Casr.Logbook.Types(
    AircraftFlight
  , SimulatorFlight
  , Briefing
  , Exam
  , Logbook
  )
import Data.Aviation.Casr.Logbook.Html.Html(htmlLogbookDocument)
import Data.Aviation.Casr.Logbook.Meta(
    AircraftFlightExpense(ExpenseAircraftUsage, ExpenseAircraftLanding)
  , AircraftFlightMeta(AircraftFlightMeta)
  , AircraftLandingExpense(AircraftLandingExpense)
  , AircraftUsageExpense(AircraftUsageExpense)
  , BriefingExpense(BriefingExpense)
  , BriefingMeta(BriefingMeta)
  , ExamExpense(ExamExpense)
  , ExamMeta(ExamMeta)
  , Image(..)
  , HasImage(..)
  , ImageType(Jpg, Png, Gif)
  , Passenger(Passenger)
  , SimulatorFlightExpense(SimulatorFlightExpense)
  , SimulatorFlightMeta(SimulatorFlightMeta)
  , TrackLog(TrackLog)
  , TrackLogType(Gpx, Kml, Kmz, ImageTrackLog)
  , Video(Video)
  , VideoType(YouTube, Vimeo, Bambuser)
  , Visualisation(Doarama)
  , linkVideoType
  , aircraftUsageCost
  , simulatorFlightCost
  , briefingCost
  )
import Data.Bool(not)
import Data.Foldable(mapM_, null)
import Data.Function(($))
import Data.Functor ( (<$>) )
import Data.Int(Int)
import Data.List(reverse)
import Data.Maybe(Maybe, maybe, fromMaybe)
import Data.Monoid(Monoid, (<>), mempty)
import Data.Ord((<))
import Data.String(String, fromString)
import qualified Data.Text as Text(pack)
import Lucid(
    class_
  , span_
  , a_
  , div_
  , href_
  , src_
  , ul_
  , li_
  , width_
  , img_
  , alt_
  , br_
  , style_
  , Html
  )
import Prelude(show, (*), abs)

htmlAircraftUsageExpense ::
  AircraftFlight
  -> AircraftUsageExpense
  -> Html ()
htmlAircraftUsageExpense :: AircraftFlight -> AircraftUsageExpense -> HtmlT Identity ()
htmlAircraftUsageExpense AircraftFlight
fl e :: AircraftUsageExpense
e@(AircraftUsageExpense Int
perhour String
name) =
  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpensecost"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showThousandCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ AircraftFlight -> AircraftUsageExpense -> Int
forall s. HasAircraftFlight s => s -> AircraftUsageExpense -> Int
aircraftUsageCost AircraftFlight
fl AircraftUsageExpense
e
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpensephrase"] HtmlT Identity ()
" at "
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpenseperhour"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ Int
perhour
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpensephrase"] HtmlT Identity ()
" per hour"
        Bool -> HtmlT Identity () -> HtmlT Identity ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
name) (HtmlT Identity () -> HtmlT Identity ())
-> (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity ()
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftusageexpensename"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          do  HtmlT Identity ()
" ("
              String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
name
              HtmlT Identity ()
")"

htmlAircraftLandingExpense ::
  AircraftFlight
  -> AircraftLandingExpense
  -> Html ()
htmlAircraftLandingExpense :: AircraftFlight -> AircraftLandingExpense -> HtmlT Identity ()
htmlAircraftLandingExpense AircraftFlight
_ (AircraftLandingExpense Int
amount String
name) =
  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftlandingexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftlandingexpensecost"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showThousandCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ (Int
amount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
10)
        Bool -> HtmlT Identity () -> HtmlT Identity ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
name) (HtmlT Identity () -> HtmlT Identity ())
-> (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity ()
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftlandingexpensename"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          do  HtmlT Identity ()
" ("
              String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
name
              HtmlT Identity ()
")"

htmlAircraftFlightExpense ::
  AircraftFlight
  -> AircraftFlightExpense
  -> Html ()
htmlAircraftFlightExpense :: AircraftFlight -> AircraftFlightExpense -> HtmlT Identity ()
htmlAircraftFlightExpense AircraftFlight
fl (ExpenseAircraftUsage AircraftUsageExpense
e) =
  AircraftFlight -> AircraftUsageExpense -> HtmlT Identity ()
htmlAircraftUsageExpense AircraftFlight
fl AircraftUsageExpense
e
htmlAircraftFlightExpense AircraftFlight
fl (ExpenseAircraftLanding AircraftLandingExpense
e) =
  AircraftFlight -> AircraftLandingExpense -> HtmlT Identity ()
htmlAircraftLandingExpense AircraftFlight
fl AircraftLandingExpense
e

htmlSimulatorFlightExpense ::
  SimulatorFlight
  -> SimulatorFlightExpense
  -> Html ()
htmlSimulatorFlightExpense :: SimulatorFlight -> SimulatorFlightExpense -> HtmlT Identity ()
htmlSimulatorFlightExpense SimulatorFlight
sf e :: SimulatorFlightExpense
e@(SimulatorFlightExpense Int
perhour String
name) =
  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightcost"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showThousandCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ SimulatorFlight -> SimulatorFlightExpense -> Int
forall s.
HasSimulatorFlight s =>
s -> SimulatorFlightExpense -> Int
simulatorFlightCost SimulatorFlight
sf SimulatorFlightExpense
e
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightexpensephrase"] HtmlT Identity ()
" at "
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightexpenseperhour"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ Int
perhour
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightexpensephrase"] HtmlT Identity ()
" per hour"
        Bool -> HtmlT Identity () -> HtmlT Identity ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
name) (HtmlT Identity () -> HtmlT Identity ())
-> (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity ()
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorflightexpensename"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          do  HtmlT Identity ()
" ("
              String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
name
              HtmlT Identity ()
")"

htmlExamExpense ::
  Exam
  -> ExamExpense
  -> Html ()
htmlExamExpense :: Exam -> ExamExpense -> HtmlT Identity ()
htmlExamExpense Exam
_ (ExamExpense Int
amount String
name) =
  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examexpensecost"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showThousandCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ (Int
amount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
10)
        Bool -> HtmlT Identity () -> HtmlT Identity ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
name) (HtmlT Identity () -> HtmlT Identity ())
-> (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity ()
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examexpensename"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          do  HtmlT Identity ()
" ("
              String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
name
              HtmlT Identity ()
")"

htmlBriefingExpense ::
  Briefing
  -> BriefingExpense
  -> Html ()
htmlBriefingExpense :: Briefing -> BriefingExpense -> HtmlT Identity ()
htmlBriefingExpense Briefing
br e :: BriefingExpense
e@(BriefingExpense Int
perhour String
name) =
  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpensecost"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showThousandCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ Briefing -> BriefingExpense -> Int
forall s. HasBriefing s => s -> BriefingExpense -> Int
briefingCost Briefing
br BriefingExpense
e
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpensephrase"] HtmlT Identity ()
" at "
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpenseperhour"] (HtmlT Identity () -> HtmlT Identity ())
-> (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String -> HtmlT Identity ())
-> (Int -> String) -> Int -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (Char
'$'Char -> String -> String
forall a. a -> [a] -> [a]
:) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
showCentsAsDollars (Int -> HtmlT Identity ()) -> Int -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$ Int
perhour
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpensephrase"] HtmlT Identity ()
" per hour"
        Bool -> HtmlT Identity () -> HtmlT Identity ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
name) (HtmlT Identity () -> HtmlT Identity ())
-> (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity ()
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingexpensename"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          do  HtmlT Identity ()
" ("
              String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
name
              HtmlT Identity ()
")"

htmlVisualisation ::
  AircraftFlight
  -> Visualisation
  -> Html ()
htmlVisualisation :: AircraftFlight -> Visualisation -> HtmlT Identity ()
htmlVisualisation AircraftFlight
_ (Doarama String
i String
_ Maybe String
n) =
  let n' :: String
n' = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"doarama.com" Maybe String
n
  in  do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ (Text
"http://doarama.com/view/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> String -> Text
Text.pack String
i)] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
            [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"Visualisation_name"] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
n')
          -- p_ (iframe_ [src_ ("http://www.doarama.com/embed?k=" <> Text.pack e), width_ "560", height_ "315", termWith -- "allowfullscreen" [] "allowfullscreen"] "")

strImageType ::
  ImageType
  -> String
strImageType :: ImageType -> String
strImageType ImageType
Jpg =
  String
"jpg"
strImageType ImageType
Png =
  String
"png"
strImageType ImageType
Gif =
  String
"gif"

htmlImageSource ::
  AircraftFlight
  -> Maybe String
  -> Html ()
htmlImageSource :: AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlImageSource AircraftFlight
_ =
  HtmlT Identity ()
-> (String -> HtmlT Identity ())
-> Maybe String
-> HtmlT Identity ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe HtmlT Identity ()
forall a. Monoid a => a
mempty (\String
s' -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String
"Image source: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
s')))

htmlImage ::
  AircraftFlight
  -> Image
  -> Html ()
htmlImage :: AircraftFlight -> Image -> HtmlT Identity ()
htmlImage AircraftFlight
fl Image
i =
  let u' :: Text
u' = String -> Text
forall a. IsString a => String -> a
fromString (Getting String Image String -> Image -> String
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting String Image String
forall c. HasImage c => Lens' c String
Lens' Image String
imageuri Image
i)
      s' :: Text
s' = Text -> Maybe Text -> Text
forall a. a -> Maybe a -> a
fromMaybe Text
u' (String -> Text
forall a. IsString a => String -> a
fromString (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Getting (Maybe String) Image (Maybe String)
-> Image -> Maybe String
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Maybe String) Image (Maybe String)
forall c. HasImage c => Lens' c (Maybe String)
Lens' Image (Maybe String)
imageurismall Image
i)
      n' :: String
n' = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe (String
"Image (" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> ImageType -> String
strImageType (Getting ImageType Image ImageType -> Image -> ImageType
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting ImageType Image ImageType
forall c. HasImage c => Lens' c ImageType
Lens' Image ImageType
imagetype Image
i) String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
")") (Getting (Maybe String) Image (Maybe String)
-> Image -> Maybe String
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Maybe String) Image (Maybe String)
forall c. HasImage c => Lens' c (Maybe String)
Lens' Image (Maybe String)
imagename Image
i)
  in  do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ Text
u'] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
            [Attribute] -> HtmlT Identity ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
img_ [Text -> Attribute
src_ Text
s', Text -> Attribute
width_ Text
"120", Text -> Attribute
alt_ (String -> Text
Text.pack String
n')]
          AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlImageSource AircraftFlight
fl (Getting (Maybe String) Image (Maybe String)
-> Image -> Maybe String
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Maybe String) Image (Maybe String)
forall c. HasImage c => Lens' c (Maybe String)
Lens' Image (Maybe String)
imagesource Image
i)

strTrackLogType ::
  TrackLogType
  -> String
strTrackLogType :: TrackLogType -> String
strTrackLogType TrackLogType
Gpx =
  String
"gpx"
strTrackLogType TrackLogType
Kml =
  String
"kml"
strTrackLogType TrackLogType
Kmz =
  String
"kmz"
strTrackLogType (ImageTrackLog ImageType
i) =
  ImageType -> String
strImageType ImageType
i

htmlTrackLogSource ::
  AircraftFlight
  -> Maybe String
  -> Html ()
htmlTrackLogSource :: AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlTrackLogSource AircraftFlight
_ =
  HtmlT Identity ()
-> (String -> HtmlT Identity ())
-> Maybe String
-> HtmlT Identity ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe HtmlT Identity ()
"" (\String
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String
" from " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
q)))

htmlTrackLog ::
  AircraftFlight
  -> TrackLog
  -> Html ()
htmlTrackLog :: AircraftFlight -> TrackLog -> HtmlT Identity ()
htmlTrackLog AircraftFlight
fl (TrackLog String
u TrackLogType
t Maybe String
s Maybe String
n) =
  let u' :: Text
u' = String -> Text
forall a. IsString a => String -> a
fromString String
u
      n' :: String
n' = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe (TrackLogType -> String
strTrackLogType TrackLogType
t) Maybe String
n
      o :: HtmlT Identity ()
o = do  String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
n'
              AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlTrackLogSource AircraftFlight
fl Maybe String
s
  in  do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ Text
u'] HtmlT Identity ()
o
          case TrackLogType
t of
            ImageTrackLog ImageType
_ ->
              do  [Attribute] -> HtmlT Identity ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
br_ []
                  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ Text
u'] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
                    [Attribute] -> HtmlT Identity ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
img_ [Text -> Attribute
src_ Text
u', Text -> Attribute
width_ Text
"360", Text -> Attribute
alt_ (String -> Text
forall a. IsString a => String -> a
fromString String
n')]
            TrackLogType
_ ->
              HtmlT Identity ()
forall a. Monoid a => a
mempty

strVideoType ::
  VideoType
  -> String
strVideoType :: VideoType -> String
strVideoType VideoType
YouTube =
  String
"youtube"
strVideoType VideoType
Vimeo =
  String
"vimeo"
strVideoType VideoType
Bambuser =
  String
"bambuser"

htmlVideoSource ::
  AircraftFlight
  -> Maybe String
  -> Html ()
htmlVideoSource :: AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlVideoSource AircraftFlight
_ Maybe String
s =
  HtmlT Identity ()
-> (String -> HtmlT Identity ())
-> Maybe String
-> HtmlT Identity ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe HtmlT Identity ()
forall a. Monoid a => a
mempty (\String
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString (String
" from " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
q))) Maybe String
s

htmlVideo ::
  AircraftFlight
  -> Video
  -> Html ()
htmlVideo :: AircraftFlight -> Video -> HtmlT Identity ()
htmlVideo AircraftFlight
fl (Video String
u VideoType
t Maybe String
s Maybe String
n) =
  let n' :: String
n' = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe (String
"Video (" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> VideoType -> String
strVideoType VideoType
t String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
")") Maybe String
n
  in  do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ (String -> Text
forall a. IsString a => String -> a
fromString (VideoType -> String -> String
linkVideoType VideoType
t String
u))] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
n')
          AircraftFlight -> Maybe String -> HtmlT Identity ()
htmlVideoSource AircraftFlight
fl Maybe String
s

htmlTrackLogs ::
  AircraftFlight
  -> [TrackLog]
  -> Html ()
htmlTrackLogs :: AircraftFlight -> [TrackLog] -> HtmlT Identity ()
htmlTrackLogs AircraftFlight
fl [TrackLog]
x =
  ([TrackLog] -> HtmlT Identity ())
-> [TrackLog] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[TrackLog]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"tracklogs"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"tracklogsheader"] HtmlT Identity ()
"Track Logs"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (TrackLog -> HtmlT Identity ()) -> [TrackLog] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"tracklog"] (HtmlT Identity () -> HtmlT Identity ())
-> (TrackLog -> HtmlT Identity ()) -> TrackLog -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. AircraftFlight -> TrackLog -> HtmlT Identity ()
htmlTrackLog AircraftFlight
fl) [TrackLog]
q) [TrackLog]
x

htmlVisualisations ::
  AircraftFlight
  -> [Visualisation]
  -> Html ()
htmlVisualisations :: AircraftFlight -> [Visualisation] -> HtmlT Identity ()
htmlVisualisations AircraftFlight
fl [Visualisation]
x =
  ([Visualisation] -> HtmlT Identity ())
-> [Visualisation] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[Visualisation]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"visualisations"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"visualisationsheader"] HtmlT Identity ()
"Visualisations"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (Visualisation -> HtmlT Identity ())
-> [Visualisation] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"visualisation"] (HtmlT Identity () -> HtmlT Identity ())
-> (Visualisation -> HtmlT Identity ())
-> Visualisation
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. AircraftFlight -> Visualisation -> HtmlT Identity ()
htmlVisualisation AircraftFlight
fl) [Visualisation]
q) [Visualisation]
x

htmlImages ::
  AircraftFlight
  -> [Image]
  -> Html ()
htmlImages :: AircraftFlight -> [Image] -> HtmlT Identity ()
htmlImages AircraftFlight
fl [Image]
x =
  ([Image] -> HtmlT Identity ()) -> [Image] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[Image]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"tracklogs"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"imagesheader"] HtmlT Identity ()
"Images"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
forall arg result. TermRaw arg result => arg -> result
style_ Text
"text-align: justify"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (Image -> HtmlT Identity ()) -> [Image] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (AircraftFlight -> Image -> HtmlT Identity ()
htmlImage AircraftFlight
fl) [Image]
q) [Image]
x

htmlVideos ::
  AircraftFlight
  -> [Video]
  -> Html ()
htmlVideos :: AircraftFlight -> [Video] -> HtmlT Identity ()
htmlVideos AircraftFlight
fl [Video]
x =
  ([Video] -> HtmlT Identity ()) -> [Video] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[Video]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"videos"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"videosheader"] HtmlT Identity ()
"Videos"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (Video -> HtmlT Identity ()) -> [Video] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"video"] (HtmlT Identity () -> HtmlT Identity ())
-> (Video -> HtmlT Identity ()) -> Video -> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. AircraftFlight -> Video -> HtmlT Identity ()
htmlVideo AircraftFlight
fl) [Video]
q) [Video]
x

htmlAircraftFlightExpenses ::
  AircraftFlight
  -> [AircraftFlightExpense]
  -> Html ()
htmlAircraftFlightExpenses :: AircraftFlight -> [AircraftFlightExpense] -> HtmlT Identity ()
htmlAircraftFlightExpenses AircraftFlight
fl [AircraftFlightExpense]
x =
  ([AircraftFlightExpense] -> HtmlT Identity ())
-> [AircraftFlightExpense] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[AircraftFlightExpense]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"aircraftflightexpenses"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftflightexpensesheader"] HtmlT Identity ()
"Aircraft Flight Expenses"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (AircraftFlightExpense -> HtmlT Identity ())
-> [AircraftFlightExpense] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"aircraftflightexpense"] (HtmlT Identity () -> HtmlT Identity ())
-> (AircraftFlightExpense -> HtmlT Identity ())
-> AircraftFlightExpense
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. AircraftFlight -> AircraftFlightExpense -> HtmlT Identity ()
htmlAircraftFlightExpense AircraftFlight
fl) [AircraftFlightExpense]
q) [AircraftFlightExpense]
x

htmlAircraftFlightPassenger ::
  AircraftFlight
  -> Passenger
  -> Html ()
htmlAircraftFlightPassenger :: AircraftFlight -> Passenger -> HtmlT Identity ()
htmlAircraftFlightPassenger AircraftFlight
_ (Passenger String
p) =
  do [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftflightpassenger"] (String -> HtmlT Identity ()
forall a. IsString a => String -> a
fromString String
p)

htmlAircraftFlightPax ::
  AircraftFlight
  -> [Passenger]
  -> Html ()
htmlAircraftFlightPax :: AircraftFlight -> [Passenger] -> HtmlT Identity ()
htmlAircraftFlightPax AircraftFlight
fl [Passenger]
x =
  ([Passenger] -> HtmlT Identity ())
-> [Passenger] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[Passenger]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"aircraftflightpax"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftflightpaxheader"] HtmlT Identity ()
"PAX"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (Passenger -> HtmlT Identity ())
-> [Passenger] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"aircraftflightpassenger"] (HtmlT Identity () -> HtmlT Identity ())
-> (Passenger -> HtmlT Identity ())
-> Passenger
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. AircraftFlight -> Passenger -> HtmlT Identity ()
htmlAircraftFlightPassenger AircraftFlight
fl) [Passenger]
q) [Passenger]
x

htmlAircraftFlightMeta ::
  AircraftFlight
  -> AircraftFlightMeta
  -> Html ()
htmlAircraftFlightMeta :: AircraftFlight -> AircraftFlightMeta -> HtmlT Identity ()
htmlAircraftFlightMeta AircraftFlight
fl (AircraftFlightMeta [TrackLog]
tls [Visualisation]
vls [Image]
ims [Video]
vds [AircraftFlightExpense]
exs [Passenger]
pax) =
  HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  AircraftFlight -> [TrackLog] -> HtmlT Identity ()
htmlTrackLogs AircraftFlight
fl [TrackLog]
tls
        AircraftFlight -> [Visualisation] -> HtmlT Identity ()
htmlVisualisations AircraftFlight
fl [Visualisation]
vls
        AircraftFlight -> [Image] -> HtmlT Identity ()
htmlImages AircraftFlight
fl [Image]
ims
        AircraftFlight -> [Video] -> HtmlT Identity ()
htmlVideos AircraftFlight
fl [Video]
vds
        AircraftFlight -> [AircraftFlightExpense] -> HtmlT Identity ()
htmlAircraftFlightExpenses AircraftFlight
fl [AircraftFlightExpense]
exs
        AircraftFlight -> [Passenger] -> HtmlT Identity ()
htmlAircraftFlightPax AircraftFlight
fl [Passenger]
pax

htmlSimulatorFlightMeta ::
  SimulatorFlight
  -> SimulatorFlightMeta
  -> Html ()
htmlSimulatorFlightMeta :: SimulatorFlight -> SimulatorFlightMeta -> HtmlT Identity ()
htmlSimulatorFlightMeta SimulatorFlight
fl (SimulatorFlightMeta [SimulatorFlightExpense]
s) =
  ([SimulatorFlightExpense] -> HtmlT Identity ())
-> [SimulatorFlightExpense] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[SimulatorFlightExpense]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"simulatormeta"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"simulatorheader"] HtmlT Identity ()
"Expenses"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (SimulatorFlightExpense -> HtmlT Identity ())
-> [SimulatorFlightExpense] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"expense"] (HtmlT Identity () -> HtmlT Identity ())
-> (SimulatorFlightExpense -> HtmlT Identity ())
-> SimulatorFlightExpense
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. SimulatorFlight -> SimulatorFlightExpense -> HtmlT Identity ()
htmlSimulatorFlightExpense SimulatorFlight
fl) [SimulatorFlightExpense]
q) [SimulatorFlightExpense]
s

htmlExamMeta ::
  Exam
  -> ExamMeta
  -> Html ()
htmlExamMeta :: Exam -> ExamMeta -> HtmlT Identity ()
htmlExamMeta Exam
e (ExamMeta [ExamExpense]
s) =
  ([ExamExpense] -> HtmlT Identity ())
-> [ExamExpense] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[ExamExpense]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"exammeta"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"exammetaheader"] HtmlT Identity ()
"Expenses"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (ExamExpense -> HtmlT Identity ())
-> [ExamExpense] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"expense"] (HtmlT Identity () -> HtmlT Identity ())
-> (ExamExpense -> HtmlT Identity ())
-> ExamExpense
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Exam -> ExamExpense -> HtmlT Identity ()
htmlExamExpense Exam
e) [ExamExpense]
q) [ExamExpense]
s

htmlBriefingMeta ::
  Briefing
  -> BriefingMeta
  -> Html ()
htmlBriefingMeta :: Briefing -> BriefingMeta -> HtmlT Identity ()
htmlBriefingMeta Briefing
b (BriefingMeta [BriefingExpense]
s) =
  ([BriefingExpense] -> HtmlT Identity ())
-> [BriefingExpense] -> HtmlT Identity ()
forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty (\[BriefingExpense]
q -> [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"briefingmeta"] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"briefingmetaheader"] HtmlT Identity ()
"Expenses"
        [Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
ul_ [] (HtmlT Identity () -> HtmlT Identity ())
-> HtmlT Identity () -> HtmlT Identity ()
forall a b. (a -> b) -> a -> b
$
          (BriefingExpense -> HtmlT Identity ())
-> [BriefingExpense] -> HtmlT Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> HtmlT Identity () -> HtmlT Identity ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
class_ Text
"expense"] (HtmlT Identity () -> HtmlT Identity ())
-> (BriefingExpense -> HtmlT Identity ())
-> BriefingExpense
-> HtmlT Identity ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Briefing -> BriefingExpense -> HtmlT Identity ()
htmlBriefingExpense Briefing
b) [BriefingExpense]
q) [BriefingExpense]
s

htmlLogbookDocumentMeta ::
  Html ()
  -> Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta
  -> Html ()
htmlLogbookDocumentMeta :: HtmlT Identity ()
-> Logbook
     AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta
-> HtmlT Identity ()
htmlLogbookDocumentMeta =
  (AircraftFlight -> AircraftFlightMeta -> HtmlT Identity ())
-> (SimulatorFlight -> SimulatorFlightMeta -> HtmlT Identity ())
-> (Exam -> ExamMeta -> HtmlT Identity ())
-> (Briefing -> BriefingMeta -> HtmlT Identity ())
-> HtmlT Identity ()
-> Logbook
     AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta
-> HtmlT Identity ()
forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> HtmlT Identity ()
-> Logbook a b c d
-> HtmlT Identity ()
htmlLogbookDocument AircraftFlight -> AircraftFlightMeta -> HtmlT Identity ()
htmlAircraftFlightMeta SimulatorFlight -> SimulatorFlightMeta -> HtmlT Identity ()
htmlSimulatorFlightMeta Exam -> ExamMeta -> HtmlT Identity ()
htmlExamMeta Briefing -> BriefingMeta -> HtmlT Identity ()
htmlBriefingMeta

----

showCentsAsDollars ::
  Int
  -> String
showCentsAsDollars :: Int -> String
showCentsAsDollars Int
n =
  let pos ::
        String
        -> String
      pos :: String -> String
pos [] =
        []
      pos [Char
x] =
        String
"0.0" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> [Char
x]
      pos [Char
x, Char
y] =
        String
"0." String -> String -> String
forall a. Semigroup a => a -> a -> a
<> [Char
y, Char
x]
      pos (Char
x:Char
y:String
z) =
        String -> String
forall a. [a] -> [a]
reverse String
z String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"." String -> String -> String
forall a. Semigroup a => a -> a -> a
<> [Char
y, Char
x]
  in  (if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
0 then (Char
'-'Char -> String -> String
forall a. a -> [a] -> [a]
:) else String -> String
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
pos (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
forall a. [a] -> [a]
reverse (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
forall a. Show a => a -> String
show (Int -> String) -> (Int -> Int) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> Int
forall a. Num a => a -> a
abs (Int -> String) -> Int -> String
forall a b. (a -> b) -> a -> b
$ Int
n

showThousandCentsAsDollars ::
  Int
  -> String
showThousandCentsAsDollars :: Int -> String
showThousandCentsAsDollars Int
n =
  let pos ::
        String
        -> String
      pos :: String -> String
pos [] =
        []
      pos [Char
x] =
        [Char
x] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"0.0"
      pos [Char
x, Char
y] =
        [Char
x, Char
y] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
".0"
      pos [Char
x, Char
y, Char
z] =
        [Char
x, Char
y, Char
z] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
".0"
      pos (Char
x:Char
y:Char
z:String
r) =
        [Char
x, Char
y, Char
z] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"." String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
r
      drop0 :: String -> String
drop0 [] =
        []
      drop0 (Char
'0':String
r) =
        String
r
      drop0 String
w =
        String
w
  in  (if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
0 then (Char
'-'Char -> String -> String
forall a. a -> [a] -> [a]
:) else String -> String
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
forall a. [a] -> [a]
reverse (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
drop0 (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
pos (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
forall a. [a] -> [a]
reverse (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
forall a. Show a => a -> String
show (Int -> String) -> (Int -> Int) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> Int
forall a. Num a => a -> a
abs (Int -> String) -> Int -> String
forall a b. (a -> b) -> a -> b
$ Int
n

showHundredCentsAsDollars ::
  Int
  -> String
showHundredCentsAsDollars :: Int -> String
showHundredCentsAsDollars Int
n =
  let pos ::
        String
        -> String
      pos :: String -> String
pos [] =
        []
      pos [Char
x] =
        [Char
x] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"0.0"
      pos [Char
x, Char
y] =
        [Char
x, Char
y] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
".0"
      pos (Char
x:Char
y:String
r) =
        [Char
x, Char
y] String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"." String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
r
      drop0 :: String -> String
drop0 [] =
        []
      drop0 (Char
'0':String
r) =
        String
r
      drop0 String
w =
        String
w
  in  (if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
0 then (Char
'-'Char -> String -> String
forall a. a -> [a] -> [a]
:) else String -> String
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id) (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
forall a. [a] -> [a]
reverse (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
drop0 (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
pos (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. String -> String
forall a. [a] -> [a]
reverse (String -> String) -> (Int -> String) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> String
forall a. Show a => a -> String
show (Int -> String) -> (Int -> Int) -> Int -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Int -> Int
forall a. Num a => a -> a
abs (Int -> String) -> Int -> String
forall a b. (a -> b) -> a -> b
$ Int
n

whenEmpty ::
  Monoid a =>
  ([t] -> a)
  -> [t]
  -> a
whenEmpty :: forall a t. Monoid a => ([t] -> a) -> [t] -> a
whenEmpty [t] -> a
_ [] =
  a
forall a. Monoid a => a
mempty
whenEmpty [t] -> a
f [t]
x =
  [t] -> a
f [t]
x