{-# 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')
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