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

module Data.Aviation.Casr.Logbook.Html.Html(
  htmlTimeAmount
, strTimeAmount
, strEngine
, htmlAircraft
, htmlRatingDay
, htmlRating
, htmlRatingShort
, htmlRatings
, htmlRatingsShort
, htmlAviatorName
, htmlAviatorARN
, htmlAviatorDob
, htmlAviatorRatings
, htmlAviator
, htmlAviatorShort
, htmlFlightPoint
, htmlFlightPath
, htmlCommand
, htmlTimeAmountZero
, htmlTimeAmountZeroWith
, htmlAviators
, htmlAircraftFlightName
, htmlAircraftFlight
, htmlTimeOfDayTime
, htmlTime
, htmlFlightPathTime
, htmlSimulatorFlightName
, htmlSimulatorFlight
, htmlLocation
, htmlExamResult
, htmlExamName
, htmlExam
, htmlBriefingName
, htmlBriefing
, space2dot
, htmlEntryTag
, htmlEntry
, htmlEntries
, htmlLogbook
, htmlTitleAviator
, htmlLogbookDocument
, htmlLogbookHeader
) where

import Control.Applicative((*>))
import Control.Category((.), id)
import Control.Lens
import Control.Monad(when, (=<<), (>>=))
import Data.Aviation.Casr.Logbook.Types
    ( Location(Location),
      Engine(..),
      Time(Time),
      TimeAmount(TimeAmount),
      HasTime(daytime),
      zerotimeamount,
      Rating(Rating),
      Aircraft(Aircraft),
      FlightPoint(FlightPoint),
      Aviator(Aviator),
      HasAircraft(aircraftRegistration),
      DayNight(DayNight),
      HasFlightPoint(point, landingTime),
      HasAviator(arn, surname, firstname),
      FlightPath,
      HasFlightPath(flightEnd, flightStart),
      flightPathList,
      Command(..),
      SimulatorFlight(SimulatorFlight),
      Briefing(Briefing),
      Exam(Exam),
      HasExam(examTime, examName),
      HasSimulatorFlight(simulatortype, simulatorflightname),
      HasBriefing(briefingTime, briefingName),
      AircraftFlight(AircraftFlight),
      HasAircraftFlight(flightpath, flightaircraft, aircraftflightname),
      Entry(..),
      Entries(..),
      Logbook(Logbook),
      HasLogbook(logbookaviator),
      Instruction,
      HasInstructionRating(instructionRating),
      HasInstructionLesson(lesson, student, instructionLesson),
      shortStringRating )
import Data.Bool(not)
import Data.Char(toUpper)
import Data.Digit(DecDigit, charDecimal)
import Data.Eq((==))
import Data.Foldable(fold, sequence_, mapM_, null)
import Data.Function(($))
import Data.Functor((<$>))
import Data.Int(Int)
import Data.List(intersperse, concat)
import Data.Maybe(Maybe, maybe)
import Data.Monoid(Monoid, (<>), mempty)
import Data.String(String, fromString)
import Data.Time(Day, TimeOfDay)
import Data.Text(Text)
import qualified Data.Text as Text(pack)
import Lucid(
    id_
  , class_
  , h1_
  , h2_
  , h3_
  , span_
  , a_
  , div_
  , href_
  , src_
  , type_
  , script_
  , body_
  , title_
  , rel_
  , link_
  , title_
  , html_
  , doctype_
  , head_
  , lang_
  , hr_
  , ul_
  , li_
  , Html
  , toHtmlRaw
  )
import Text.Printf(printf)

import Prelude(show, fromIntegral, (/), (*), Double)

htmlTimeAmount ::
  TimeAmount
  -> Html ()
htmlTimeAmount :: TimeAmount -> Html ()
htmlTimeAmount TimeAmount
t =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (TimeAmount -> [Char]
strTimeAmount TimeAmount
t)
        Html ()
"hrs"

strTimeAmount ::
  TimeAmount
  -> String
strTimeAmount :: TimeAmount -> [Char]
strTimeAmount (TimeAmount Int
h DecDigit
x) =
  Int -> [Char]
forall a. Show a => a -> [Char]
show Int
h [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
"." [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Tagged DecDigit (Identity DecDigit) -> Tagged Char (Identity Char)
forall d. Decimal d => Prism' Char d
Prism' Char DecDigit
charDecimal (Tagged DecDigit (Identity DecDigit)
 -> Tagged Char (Identity Char))
-> DecDigit -> Char
forall t b. AReview t b -> b -> t
# DecDigit
x]

strEngine ::
  Engine
  -> String
strEngine :: Engine -> [Char]
strEngine Engine
Single =
  [Char]
"single-engine"
strEngine Engine
Multi =
  [Char]
"multi-engine"

htmlAircraft ::
  AircraftFlight
  -> Aircraft
  -> Html ()
htmlAircraft :: AircraftFlight -> Aircraft -> Html ()
htmlAircraft AircraftFlight
_ (Aircraft [Char]
t [Char]
r Engine
e) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraft"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircrafttype"] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
t)
        Html ()
" "
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftregistration"] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
r)
        Html ()
" "
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"aircraftengine"] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Engine -> [Char]
strEngine Engine
e))

htmlRatingDay ::
  Maybe Day
  -> Html ()
htmlRatingDay :: Maybe Day -> Html ()
htmlRatingDay =
  Html () -> (Day -> Html ()) -> Maybe Day -> Html ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html ()
forall a. Monoid a => a
mempty (\Day
q ->
    do  Html ()
" "
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Day -> [Char]
forall a. Show a => a -> [Char]
show Day
q))

htmlRating ::
  Rating
  -> Html ()
htmlRating :: Rating -> Html ()
htmlRating (Rating [Char]
n Maybe Day
d) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n)
        Maybe Day -> Html ()
htmlRatingDay Maybe Day
d

htmlRatingShort ::
  Rating
  -> Html ()
htmlRatingShort :: Rating -> Html ()
htmlRatingShort (Rating [Char]
n Maybe Day
_) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n)

htmlRatings ::
  [Rating]
  -> Html ()
htmlRatings :: [Rating] -> Html ()
htmlRatings =
  [Html ()] -> Html ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ ([Html ()] -> Html ())
-> ([Rating] -> [Html ()]) -> [Rating] -> Html ()
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
. Html () -> [Html ()] -> [Html ()]
forall a. a -> [a] -> [a]
intersperse Html ()
", " ([Html ()] -> [Html ()])
-> ([Rating] -> [Html ()]) -> [Rating] -> [Html ()]
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
. (Rating -> Html ()
htmlRating (Rating -> Html ()) -> [Rating] -> [Html ()]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)

htmlRatingsShort ::
  [Rating]
  -> Html ()
htmlRatingsShort :: [Rating] -> Html ()
htmlRatingsShort =
  [Html ()] -> Html ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ ([Html ()] -> Html ())
-> ([Rating] -> [Html ()]) -> [Rating] -> Html ()
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
. Html () -> [Html ()] -> [Html ()]
forall a. a -> [a] -> [a]
intersperse Html ()
", " ([Html ()] -> [Html ()])
-> ([Rating] -> [Html ()]) -> [Rating] -> [Html ()]
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
. (Rating -> Html ()
htmlRatingShort (Rating -> Html ()) -> [Rating] -> [Html ()]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)

htmlAviatorName ::
  String
  -> String
  -> Html ()
htmlAviatorName :: [Char] -> [Char] -> Html ()
htmlAviatorName [Char]
s [Char]
f =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
id_ Text
"aviatorname"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
        do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Name: "
            [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
              do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Char -> Char
toUpper (Char -> Char) -> [Char] -> [Char]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char]
s)
                  Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([Char] -> Bool) -> [Char] -> 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
. [Char] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([Char] -> Bool) -> [Char] -> Bool
forall a b. (a -> b) -> a -> b
$ [Char]
f) (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                    [Char] -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => [Char] -> HtmlT m ()
toHtmlRaw ([Char]
", " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
f)

htmlAviatorARN ::
  [DecDigit]
  -> Html ()
htmlAviatorARN :: [DecDigit] -> Html ()
htmlAviatorARN [DecDigit]
a =
  Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([DecDigit] -> Bool) -> [DecDigit] -> 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
. [DecDigit] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([DecDigit] -> Bool) -> [DecDigit] -> Bool
forall a b. (a -> b) -> a -> b
$ [DecDigit]
a) (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
id_ Text
"aviatorarn"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"ARN: "
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([DecDigit]
a [DecDigit] -> (DecDigit -> [Char]) -> [Char]
forall a b. [a] -> (a -> [b]) -> [b]
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\DecDigit
d -> [Tagged DecDigit (Identity DecDigit) -> Tagged Char (Identity Char)
forall d. Decimal d => Prism' Char d
Prism' Char DecDigit
charDecimal (Tagged DecDigit (Identity DecDigit)
 -> Tagged Char (Identity Char))
-> DecDigit -> Char
forall t b. AReview t b -> b -> t
# DecDigit
d]))

htmlAviatorDob ::
  Maybe Day
  -> Html ()
htmlAviatorDob :: Maybe Day -> Html ()
htmlAviatorDob =
  Html () -> (Day -> Html ()) -> Maybe Day -> Html ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html ()
forall a. Monoid a => a
mempty (\Day
q ->
    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
id_ Text
"aviatordob"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Date of Birth: "
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Day -> Html ()) -> Day -> Html ()
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] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([Char] -> Html ()) -> (Day -> [Char]) -> Day -> Html ()
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
. Day -> [Char]
forall a. Show a => a -> [Char]
show (Day -> Html ()) -> Day -> Html ()
forall a b. (a -> b) -> a -> b
$ Day
q)

htmlAviatorRatings ::
  [Rating]
  -> Html ()
htmlAviatorRatings :: [Rating] -> Html ()
htmlAviatorRatings [Rating]
r =
  Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([Rating] -> Bool) -> [Rating] -> 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
. [Rating] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([Rating] -> Bool) -> [Rating] -> Bool
forall a b. (a -> b) -> a -> b
$ [Rating]
r) (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [Text -> Attribute
id_ Text
"aviatorratings"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Ratings: "
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> ([Rating] -> Html ()) -> [Rating] -> Html ()
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
.
                [Rating] -> Html ()
htmlRatings ([Rating] -> Html ()) -> [Rating] -> Html ()
forall a b. (a -> b) -> a -> b
$ [Rating]
r

htmlAviator ::
  Aviator
  -> Html ()
htmlAviator :: Aviator -> Html ()
htmlAviator (Aviator [Char]
s [Char]
f [DecDigit]
a Maybe Day
d [Rating]
r) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
id_ Text
"aviator", Text -> Attribute
class_ Text
"aviator"] (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
      do  [Char] -> [Char] -> Html ()
htmlAviatorName [Char]
s [Char]
f
          [DecDigit] -> Html ()
htmlAviatorARN [DecDigit]
a
          Maybe Day -> Html ()
htmlAviatorDob Maybe Day
d
          [Rating] -> Html ()
htmlAviatorRatings [Rating]
r

htmlAviatorShort ::
  Aviator
  -> Html ()
htmlAviatorShort :: Aviator -> Html ()
htmlAviatorShort (Aviator [Char]
s [Char]
f [DecDigit]
a Maybe Day
_ [Rating]
r) =
  do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
f
      Html ()
" "
      [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
s
      Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([DecDigit] -> Bool) -> [DecDigit] -> 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
. [DecDigit] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([DecDigit] -> Bool) -> [DecDigit] -> Bool
forall a b. (a -> b) -> a -> b
$ [DecDigit]
a) Html ()
" "
      [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([DecDigit]
a [DecDigit] -> (DecDigit -> [Char]) -> [Char]
forall a b. [a] -> (a -> [b]) -> [b]
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\DecDigit
d -> [Tagged DecDigit (Identity DecDigit) -> Tagged Char (Identity Char)
forall d. Decimal d => Prism' Char d
Prism' Char DecDigit
charDecimal (Tagged DecDigit (Identity DecDigit)
 -> Tagged Char (Identity Char))
-> DecDigit -> Char
forall t b. AReview t b -> b -> t
# DecDigit
d]))
      Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([Rating] -> Bool) -> [Rating] -> 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
. [Rating] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([Rating] -> Bool) -> [Rating] -> Bool
forall a b. (a -> b) -> a -> b
$ [Rating]
r) Html ()
" "
      [Rating] -> Html ()
htmlRatingsShort [Rating]
r

htmlFlightPoint ::
  AircraftFlight
  -> FlightPoint
  -> Html ()
htmlFlightPoint :: AircraftFlight -> FlightPoint -> Html ()
htmlFlightPoint AircraftFlight
_ (FlightPoint [Char]
p Maybe [Char]
_ Time
_) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"flightpoint"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
p

htmlFlightPath ::
  AircraftFlight
  -> FlightPath
  -> Html ()
htmlFlightPath :: AircraftFlight -> FlightPath -> Html ()
htmlFlightPath AircraftFlight
fl FlightPath
p =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"flightpath"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    [Html ()] -> Html ()
forall m. Monoid m => [m] -> m
forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold (Html () -> [Html ()] -> [Html ()]
forall a. a -> [a] -> [a]
intersperse (Text -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => Text -> HtmlT m ()
toHtmlRaw (Text
" &mdash; " :: Text)) (AircraftFlight -> FlightPoint -> Html ()
htmlFlightPoint AircraftFlight
fl (FlightPoint -> Html ()) -> [FlightPoint] -> [Html ()]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> FlightPath -> [FlightPoint]
flightPathList FlightPath
p))

htmlInstruction ::
  Instruction
  -> Html ()
htmlInstruction :: Instruction -> Html ()
htmlInstruction Instruction
i =
  let r :: InstructionRating
r = Getting InstructionRating Instruction InstructionRating
-> Instruction -> InstructionRating
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting InstructionRating Instruction InstructionRating
forall c. HasInstructionRating c => Lens' c InstructionRating
Lens' Instruction InstructionRating
instructionRating Instruction
i
      l :: InstructionLesson
l = Getting InstructionLesson Instruction InstructionLesson
-> Instruction -> InstructionLesson
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting InstructionLesson Instruction InstructionLesson
forall c. HasInstructionLesson c => Lens' c InstructionLesson
Lens' Instruction InstructionLesson
instructionLesson Instruction
i
      a :: Aviator
a = Getting Aviator InstructionLesson Aviator
-> InstructionLesson -> Aviator
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Aviator InstructionLesson Aviator
forall c. HasInstructionLesson c => Lens' c Aviator
Lens' InstructionLesson Aviator
student InstructionLesson
l
  in  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"instructionrating"] ([Char] -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => [Char] -> HtmlT m ()
toHtmlRaw (InstructionRating -> [Char]
shortStringRating InstructionRating
r))
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" for "
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandaviator"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator -> Html ()
htmlAviatorShort Aviator
a
          Html () -> ([Char] -> Html ()) -> Maybe [Char] -> Html ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html ()
forall a. Monoid a => a
mempty (\[Char]
c ->
              do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" "
                  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"instructionlesson"] ([Char] -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => [Char] -> HtmlT m ()
toHtmlRaw [Char]
c)
            ) (Getting (Maybe [Char]) InstructionLesson (Maybe [Char])
-> InstructionLesson -> Maybe [Char]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Maybe [Char]) InstructionLesson (Maybe [Char])
forall c. HasInstructionLesson c => Lens' c (Maybe [Char])
Lens' InstructionLesson (Maybe [Char])
lesson InstructionLesson
l)

htmlCommand ::
  AircraftFlight
  -> Command
  -> Html ()
htmlCommand :: AircraftFlight -> Command -> Html ()
htmlCommand AircraftFlight
_ Command
InCommand =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"command incommand"] Html ()
"In-Command"
htmlCommand AircraftFlight
_ (InCommandInstructing Instruction
a) =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"command incommandinstruction"] Html ()
"Instruction"
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" as "
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandinstruction"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Instruction -> Html ()
htmlInstruction Instruction
a
htmlCommand AircraftFlight
_ (ICUS Aviator
a) =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"command incommandunderinstruction"] Html ()
"In-Command Under-Instruction"
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" by "
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandaviator"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator -> Html ()
htmlAviatorShort Aviator
a
htmlCommand AircraftFlight
_ (Dual Aviator
a) =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"command dualunderinstruction"] Html ()
"Dual Under-Instruction"
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" by "
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandaviator"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator -> Html ()
htmlAviatorShort Aviator
a
htmlCommand AircraftFlight
_ (ApprovedSolo Aviator
a InstructionRating
r) =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"instructionrating"] ([Char] -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => [Char] -> HtmlT m ()
toHtmlRaw (InstructionRating -> [Char]
shortStringRating InstructionRating
r))
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" for "
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"command approvedsolo"] Html ()
"Approved Solo"
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandphrase"] Html ()
" by "
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"commandaviator"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator -> Html ()
htmlAviatorShort Aviator
a

htmlTimeAmountZero ::
  TimeAmount
  -> Html ()
htmlTimeAmountZero :: TimeAmount -> Html ()
htmlTimeAmountZero =
  (Html () -> Html ()) -> TimeAmount -> Html ()
forall a. Monoid a => (Html () -> a) -> TimeAmount -> a
htmlTimeAmountZeroWith Html () -> Html ()
forall a. a -> a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id

htmlTimeAmountZeroWith ::
  Monoid a =>
  (Html () -> a)
  -> TimeAmount
  -> a
htmlTimeAmountZeroWith :: forall a. Monoid a => (Html () -> a) -> TimeAmount -> a
htmlTimeAmountZeroWith Html () -> a
f TimeAmount
z =
  if TimeAmount
z TimeAmount -> TimeAmount -> Bool
forall a. Eq a => a -> a -> Bool
== TimeAmount
zerotimeamount
    then
      a
forall a. Monoid a => a
mempty
    else
      Html () -> a
f (TimeAmount -> Html ()
htmlTimeAmount TimeAmount
z)

htmlAviators ::
  [Aviator]
  -> Html ()
htmlAviators :: [Aviator] -> Html ()
htmlAviators =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ())
-> ([Aviator] -> Html ()) -> [Aviator] -> Html ()
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
.
    (Aviator -> Html ()) -> [Aviator] -> Html ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> (Aviator -> Html ()) -> Aviator -> Html ()
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
. Aviator -> Html ()
htmlAviatorShort)

htmlAircraftFlightName ::
  String
  -> Html ()
htmlAircraftFlightName :: [Char] -> Html ()
htmlAircraftFlightName [Char]
n =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
h3_ [Text -> Attribute
class_ Text
"aircraftflightname"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n

htmlAircraftFlight ::
  AircraftFlight
  -> Html ()
htmlAircraftFlight :: AircraftFlight -> Html ()
htmlAircraftFlight fl :: AircraftFlight
fl@(AircraftFlight [Char]
n Aircraft
a Command
c (DayNight TimeAmount
d TimeAmount
m) FlightPath
p [Aviator]
o TimeAmount
i) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"aircraftflight"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
htmlAircraftFlightName [Char]
n
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Time: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (FlightPath -> Html ()) -> FlightPath -> Html ()
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
.
                     FlightPath -> Html ()
htmlFlightPathTime (FlightPath -> Html ()) -> FlightPath -> Html ()
forall a b. (a -> b) -> a -> b
$ FlightPath
p
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Aircraft: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (Aircraft -> Html ()) -> Aircraft -> Html ()
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 -> Aircraft -> Html ()
htmlAircraft AircraftFlight
fl (Aircraft -> Html ()) -> Aircraft -> Html ()
forall a b. (a -> b) -> a -> b
$ Aircraft
a
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Command: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Command -> Html ()) -> Command -> Html ()
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 -> Command -> Html ()
htmlCommand AircraftFlight
fl (Command -> Html ()) -> Command -> Html ()
forall a b. (a -> b) -> a -> b
$ Command
c
              (Html () -> Html ()) -> TimeAmount -> Html ()
forall a. Monoid a => (Html () -> a) -> TimeAmount -> a
htmlTimeAmountZeroWith (\Html ()
t ->
                [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Amount (day): "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] Html ()
t) TimeAmount
d
              (Html () -> Html ()) -> TimeAmount -> Html ()
forall a. Monoid a => (Html () -> a) -> TimeAmount -> a
htmlTimeAmountZeroWith (\Html ()
t ->
                [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Amount (night): "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] Html ()
t) TimeAmount
m
              (Html () -> Html ()) -> TimeAmount -> Html ()
forall a. Monoid a => (Html () -> a) -> TimeAmount -> a
htmlTimeAmountZeroWith (\Html ()
t ->
                [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Amount (instrument): "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] Html ()
t) TimeAmount
i
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Flight Path: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (FlightPath -> Html ()) -> FlightPath -> Html ()
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 -> FlightPath -> Html ()
htmlFlightPath AircraftFlight
fl (FlightPath -> Html ()) -> FlightPath -> Html ()
forall a b. (a -> b) -> a -> b
$ FlightPath
p
              Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([Aviator] -> Bool) -> [Aviator] -> 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
. [Aviator] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([Aviator] -> Bool) -> [Aviator] -> Bool
forall a b. (a -> b) -> a -> b
$ [Aviator]
o) (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Other Crew: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> ([Aviator] -> Html ()) -> [Aviator] -> Html ()
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
.
                      [Aviator] -> Html ()
htmlAviators ([Aviator] -> Html ()) -> [Aviator] -> Html ()
forall a b. (a -> b) -> a -> b
$ [Aviator]
o

htmlTimeOfDayTime ::
  Maybe TimeOfDay
  -> Html ()
htmlTimeOfDayTime :: Maybe TimeOfDay -> Html ()
htmlTimeOfDayTime =
  Html () -> (TimeOfDay -> Html ()) -> Maybe TimeOfDay -> Html ()
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Html ()
forall a. Monoid a => a
mempty (\TimeOfDay
e -> do  Html ()
" "
                          [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (TimeOfDay -> [Char]
forall a. Show a => a -> [Char]
show TimeOfDay
e))

htmlTime ::
  Time
  -> Html ()
htmlTime :: Time -> Html ()
htmlTime (Time Day
t Maybe TimeOfDay
d) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"time"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Day -> [Char]
forall a. Show a => a -> [Char]
show Day
t)
        Maybe TimeOfDay -> Html ()
htmlTimeOfDayTime Maybe TimeOfDay
d

htmlFlightPathTime ::
  FlightPath
  -> Html()
htmlFlightPathTime :: FlightPath -> Html ()
htmlFlightPathTime FlightPath
p =
  let s :: Time
s = FlightPath
p FlightPath -> Getting Time FlightPath Time -> Time
forall s a. s -> Getting a s a -> a
^. (FlightPoint -> Const Time FlightPoint)
-> FlightPath -> Const Time FlightPath
forall c. HasFlightPath c => Lens' c FlightPoint
Lens' FlightPath FlightPoint
flightStart ((FlightPoint -> Const Time FlightPoint)
 -> FlightPath -> Const Time FlightPath)
-> ((Time -> Const Time Time)
    -> FlightPoint -> Const Time FlightPoint)
-> Getting Time FlightPath Time
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
. (Time -> Const Time Time) -> FlightPoint -> Const Time FlightPoint
forall c. HasFlightPoint c => Lens' c Time
Lens' FlightPoint Time
landingTime
      e :: Time
e = FlightPath
p FlightPath -> Getting Time FlightPath Time -> Time
forall s a. s -> Getting a s a -> a
^. (FlightPoint -> Const Time FlightPoint)
-> FlightPath -> Const Time FlightPath
forall c. HasFlightPath c => Lens' c FlightPoint
Lens' FlightPath FlightPoint
flightEnd ((FlightPoint -> Const Time FlightPoint)
 -> FlightPath -> Const Time FlightPath)
-> ((Time -> Const Time Time)
    -> FlightPoint -> Const Time FlightPoint)
-> Getting Time FlightPath Time
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
. (Time -> Const Time Time) -> FlightPoint -> Const Time FlightPoint
forall c. HasFlightPoint c => Lens' c Time
Lens' FlightPoint Time
landingTime
  in  if Time
s Time -> Time -> Bool
forall a. Eq a => a -> a -> Bool
== Time
e
        then
          Time -> Html ()
htmlTime Time
s
        else
          do  Time -> Html ()
htmlTime Time
s
              Text -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => Text -> HtmlT m ()
toHtmlRaw (Text
" &mdash; " :: Text)
              Time -> Html ()
htmlTime Time
e

htmlSimulatorFlightName ::
  String
  -> Html ()
htmlSimulatorFlightName :: [Char] -> Html ()
htmlSimulatorFlightName [Char]
n =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
h3_ [Text -> Attribute
class_ Text
"simulatorflightname"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n

htmlSimulatorFlight ::
  SimulatorFlight
  -> Html ()
htmlSimulatorFlight :: SimulatorFlight -> Html ()
htmlSimulatorFlight (SimulatorFlight [Char]
n Time
t [Char]
y [Aviator]
o TimeAmount
a TimeAmount
i) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"simulatorflight"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
htmlSimulatorFlightName [Char]
n
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Time: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Time -> Html ()) -> Time -> Html ()
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
.
                     Time -> Html ()
htmlTime (Time -> Html ()) -> Time -> Html ()
forall a b. (a -> b) -> a -> b
$ Time
t
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Type: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] ([Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
y)
              Bool -> Html () -> Html ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Bool -> Bool
not (Bool -> Bool) -> ([Aviator] -> Bool) -> [Aviator] -> 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
. [Aviator] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null ([Aviator] -> Bool) -> [Aviator] -> Bool
forall a b. (a -> b) -> a -> b
$ [Aviator]
o) (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Other Crew: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> ([Aviator] -> Html ()) -> [Aviator] -> Html ()
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
.
                      [Aviator] -> Html ()
htmlAviators ([Aviator] -> Html ()) -> [Aviator] -> Html ()
forall a b. (a -> b) -> a -> b
$ [Aviator]
o
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Amount: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (TimeAmount -> Html ()) -> TimeAmount -> Html ()
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
.
                     TimeAmount -> Html ()
htmlTimeAmount (TimeAmount -> Html ()) -> TimeAmount -> Html ()
forall a b. (a -> b) -> a -> b
$ TimeAmount
a
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Instrument: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (TimeAmount -> Html ()) -> TimeAmount -> Html ()
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
.
                     TimeAmount -> Html ()
htmlTimeAmount (TimeAmount -> Html ()) -> TimeAmount -> Html ()
forall a b. (a -> b) -> a -> b
$ TimeAmount
i

htmlLocation ::
  Location
  -> Html ()
htmlLocation :: Location -> Html ()
htmlLocation (Location [Char]
n Double
t Double
o) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"location"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n
        Html ()
" "
        let t' :: Text
t' = [Char] -> Text
forall a. IsString a => [Char] -> a
fromString (Double -> [Char]
forall a. Show a => a -> [Char]
show Double
t)
            o' :: Text
o' = [Char] -> Text
forall a. IsString a => [Char] -> a
fromString (Double -> [Char]
forall a. Show a => a -> [Char]
show Double
o)
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"locationopenstreetmap"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ (Text
"http://www.openstreetmap.org/?mlat=" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t' Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"&mlon=" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
o' Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"#map=16/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t' Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
o')]
          Html ()
"osm"
        Html ()
" "
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"locationgooglemaps"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ (Text
"https://www.google.com/maps/?q=" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t' Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"," Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
o')]
          Html ()
"gmap"

htmlExamResult ::
  Int
  -> Int
  -> Html ()
htmlExamResult :: Int -> Int -> Html ()
htmlExamResult Int
x Int
y =
  do  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
x)
      Html ()
"/"
      [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
y)

htmlExamName ::
  String
  -> Html ()
htmlExamName :: [Char] -> Html ()
htmlExamName [Char]
n =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
h3_ [Text -> Attribute
class_ Text
"examname"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n

htmlExam ::
  Exam
  -> Html ()
htmlExam :: Exam -> Html ()
htmlExam (Exam [Char]
n Location
l Time
t Aviator
a Int
r Int
m) =
  let r' :: Html ()
r' = do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examresult"] (Html () -> Html ()) -> (Int -> Html ()) -> Int -> Html ()
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] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([Char] -> Html ()) -> (Int -> [Char]) -> Int -> Html ()
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 -> [Char]
forall a. Show a => a -> [Char]
show (Int -> Html ()) -> Int -> Html ()
forall a b. (a -> b) -> a -> b
$ Int
r
               [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examresultoutof"] Html ()
"/"
               [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examresultmaximum"] (Html () -> Html ()) -> (Int -> Html ()) -> Int -> Html ()
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] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([Char] -> Html ()) -> (Int -> [Char]) -> Int -> Html ()
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 -> [Char]
forall a. Show a => a -> [Char]
show (Int -> Html ()) -> Int -> Html ()
forall a b. (a -> b) -> a -> b
$ Int
m
               Html ()
" ("
               [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examresultpercentage"] (Html () -> Html ()) -> (Double -> Html ()) -> Double -> Html ()
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] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([Char] -> Html ()) -> (Double -> [Char]) -> Double -> Html ()
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] -> Double -> [Char]
forall r. PrintfType r => [Char] -> r
printf [Char]
"%.2f" (Double -> Html ()) -> Double -> Html ()
forall a b. (a -> b) -> a -> b
$ (Double
100 Double -> Double -> Double
forall a. Num a => a -> a -> a
* Int -> Double
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
r Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
m :: Double)
               [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"examresultpercentsign"] Html ()
"%"
               Html ()
")"
  in  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"exam"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
        do  [Char] -> Html ()
htmlExamName [Char]
n
            [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
              do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Time: "
                        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Time -> Html ()) -> Time -> Html ()
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
.
                          Time -> Html ()
htmlTime (Time -> Html ()) -> Time -> Html ()
forall a b. (a -> b) -> a -> b
$ Time
t
                  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Location: "
                        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (Location -> Html ()) -> Location -> Html ()
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
.
                          Location -> Html ()
htmlLocation (Location -> Html ()) -> Location -> Html ()
forall a b. (a -> b) -> a -> b
$ Location
l
                  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Delegate: "
                        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Aviator -> Html ()) -> Aviator -> Html ()
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
.
                          Aviator -> Html ()
htmlAviatorShort (Aviator -> Html ()) -> Aviator -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator
a
                  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                    do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Result: "
                        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] Html ()
r'

htmlBriefingName ::
  String
  -> Html ()
htmlBriefingName :: [Char] -> Html ()
htmlBriefingName [Char]
n =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
h3_ [Text -> Attribute
class_ Text
"briefingname"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString [Char]
n

htmlBriefing ::
  Briefing
  -> Html ()
htmlBriefing :: Briefing -> Html ()
htmlBriefing (Briefing [Char]
n Location
l Time
t Aviator
a TimeAmount
m) =
  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
class_ Text
"briefing"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
    do  [Char] -> Html ()
htmlBriefingName [Char]
n
        [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
ul_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Time: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Time -> Html ()) -> Time -> Html ()
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
.
                      Time -> Html ()
htmlTime (Time -> Html ()) -> Time -> Html ()
forall a b. (a -> b) -> a -> b
$ Time
t
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Location: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (Location -> Html ()) -> Location -> Html ()
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
.
                      Location -> Html ()
htmlLocation (Location -> Html ()) -> Location -> Html ()
forall a b. (a -> b) -> a -> b
$ Location
l
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Amount: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ())
-> (TimeAmount -> Html ()) -> TimeAmount -> Html ()
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
.
                      TimeAmount -> Html ()
htmlTimeAmountZero (TimeAmount -> Html ()) -> TimeAmount -> Html ()
forall a b. (a -> b) -> a -> b
$ TimeAmount
m
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
li_ [] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"key"] Html ()
"Briefer: "
                    [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"value"] (Html () -> Html ()) -> (Aviator -> Html ()) -> Aviator -> Html ()
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
.
                      Aviator -> Html ()
htmlAviatorShort (Aviator -> Html ()) -> Aviator -> Html ()
forall a b. (a -> b) -> a -> b
$ Aviator
a

space2dot ::
  String
  -> String
space2dot :: [Char] -> [Char]
space2dot =
  (Char -> Char) -> [Char] -> [Char]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
(<$>) ((Char -> Char) -> [Char] -> [Char])
-> (Char -> Char) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ \Char
c -> case Char
c of
                Char
' ' -> Char
'.'
                Char
_   -> Char
c

htmlEntryTag ::
  Entry a b c d
  -> Html ()
htmlEntryTag :: forall a b c d. Entry a b c d -> Html ()
htmlEntryTag (AircraftFlightEntry AircraftFlight
e a
_) =
  let lk :: [Char]
lk = [Char] -> [Char]
space2dot ([Char] -> [Char]) -> ([[Char]] -> [Char]) -> [[Char]] -> [Char]
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]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Char]] -> [Char]) -> [[Char]] -> [Char]
forall a b. (a -> b) -> a -> b
$
                          [
                            [Char]
"FLT_"
                          , AircraftFlight
e AircraftFlight -> Getting [Char] AircraftFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] AircraftFlight [Char]
forall c. HasAircraftFlight c => Lens' c [Char]
Lens' AircraftFlight [Char]
aircraftflightname
                          , [Char]
"_"
                          , AircraftFlight
e AircraftFlight -> Getting [Char] AircraftFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. (Aircraft -> Const [Char] Aircraft)
-> AircraftFlight -> Const [Char] AircraftFlight
forall c. HasAircraftFlight c => Lens' c Aircraft
Lens' AircraftFlight Aircraft
flightaircraft ((Aircraft -> Const [Char] Aircraft)
 -> AircraftFlight -> Const [Char] AircraftFlight)
-> (([Char] -> Const [Char] [Char])
    -> Aircraft -> Const [Char] Aircraft)
-> Getting [Char] AircraftFlight [Char]
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] -> Const [Char] [Char])
-> Aircraft -> Const [Char] Aircraft
forall c. HasAircraft c => Lens' c [Char]
Lens' Aircraft [Char]
aircraftRegistration
                          , [Char]
"_"
                          , AircraftFlight
e AircraftFlight -> Getting [Char] AircraftFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. (FlightPath -> Const [Char] FlightPath)
-> AircraftFlight -> Const [Char] AircraftFlight
forall c. HasAircraftFlight c => Lens' c FlightPath
Lens' AircraftFlight FlightPath
flightpath ((FlightPath -> Const [Char] FlightPath)
 -> AircraftFlight -> Const [Char] AircraftFlight)
-> (([Char] -> Const [Char] [Char])
    -> FlightPath -> Const [Char] FlightPath)
-> Getting [Char] AircraftFlight [Char]
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
. (FlightPoint -> Const [Char] FlightPoint)
-> FlightPath -> Const [Char] FlightPath
forall c. HasFlightPath c => Lens' c FlightPoint
Lens' FlightPath FlightPoint
flightStart ((FlightPoint -> Const [Char] FlightPoint)
 -> FlightPath -> Const [Char] FlightPath)
-> (([Char] -> Const [Char] [Char])
    -> FlightPoint -> Const [Char] FlightPoint)
-> ([Char] -> Const [Char] [Char])
-> FlightPath
-> Const [Char] FlightPath
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] -> Const [Char] [Char])
-> FlightPoint -> Const [Char] FlightPoint
forall c. HasFlightPoint c => Lens' c [Char]
Lens' FlightPoint [Char]
point
                          , [Char]
"-"
                          , AircraftFlight
e AircraftFlight -> Getting [Char] AircraftFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. (FlightPath -> Const [Char] FlightPath)
-> AircraftFlight -> Const [Char] AircraftFlight
forall c. HasAircraftFlight c => Lens' c FlightPath
Lens' AircraftFlight FlightPath
flightpath ((FlightPath -> Const [Char] FlightPath)
 -> AircraftFlight -> Const [Char] AircraftFlight)
-> (([Char] -> Const [Char] [Char])
    -> FlightPath -> Const [Char] FlightPath)
-> Getting [Char] AircraftFlight [Char]
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
. (FlightPoint -> Const [Char] FlightPoint)
-> FlightPath -> Const [Char] FlightPath
forall c. HasFlightPath c => Lens' c FlightPoint
Lens' FlightPath FlightPoint
flightEnd ((FlightPoint -> Const [Char] FlightPoint)
 -> FlightPath -> Const [Char] FlightPath)
-> (([Char] -> Const [Char] [Char])
    -> FlightPoint -> Const [Char] FlightPoint)
-> ([Char] -> Const [Char] [Char])
-> FlightPath
-> Const [Char] FlightPath
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] -> Const [Char] [Char])
-> FlightPoint -> Const [Char] FlightPoint
forall c. HasFlightPoint c => Lens' c [Char]
Lens' FlightPoint [Char]
point
                          ]
  in  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
id_ ([Char] -> Text
Text.pack [Char]
lk)] Html ()
""
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ ([Char] -> Text
Text.pack (Char
'#' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: [Char]
lk))] (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"entrytag"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Html ()
"FLT"

htmlEntryTag (SimulatorFlightEntry SimulatorFlight
e b
_) =
  let lk :: [Char]
lk = [Char] -> [Char]
space2dot ([Char] -> [Char]) -> ([[Char]] -> [Char]) -> [[Char]] -> [Char]
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]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Char]] -> [Char]) -> [[Char]] -> [Char]
forall a b. (a -> b) -> a -> b
$
                          [
                            [Char]
"SIM_"
                          , SimulatorFlight
e SimulatorFlight -> Getting [Char] SimulatorFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] SimulatorFlight [Char]
forall c. HasSimulatorFlight c => Lens' c [Char]
Lens' SimulatorFlight [Char]
simulatorflightname
                          , [Char]
"_"
                          , SimulatorFlight
e SimulatorFlight -> Getting [Char] SimulatorFlight [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] SimulatorFlight [Char]
forall c. HasSimulatorFlight c => Lens' c [Char]
Lens' SimulatorFlight [Char]
simulatortype
                          ]
  in  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
id_ ([Char] -> Text
Text.pack [Char]
lk)] Html ()
""
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ ([Char] -> Text
Text.pack (Char
'#' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: [Char]
lk))] (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"entrytag"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Html ()
"SIM"
htmlEntryTag (ExamEntry Exam
e c
_) =
  let lk :: [Char]
lk = [Char] -> [Char]
space2dot ([Char] -> [Char]) -> ([[Char]] -> [Char]) -> [[Char]] -> [Char]
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]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Char]] -> [Char]) -> [[Char]] -> [Char]
forall a b. (a -> b) -> a -> b
$
                          [
                            [Char]
"EXM_"
                          , Exam
e Exam -> Getting [Char] Exam [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] Exam [Char]
forall c. HasExam c => Lens' c [Char]
Lens' Exam [Char]
examName
                          , [Char]
"_"
                          , Day -> [Char]
forall a. Show a => a -> [Char]
show (Exam
e Exam -> Getting Day Exam Day -> Day
forall s a. s -> Getting a s a -> a
^. (Time -> Const Day Time) -> Exam -> Const Day Exam
forall c. HasExam c => Lens' c Time
Lens' Exam Time
examTime ((Time -> Const Day Time) -> Exam -> Const Day Exam)
-> ((Day -> Const Day Day) -> Time -> Const Day Time)
-> Getting Day Exam Day
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
. (Day -> Const Day Day) -> Time -> Const Day Time
forall c. HasTime c => Lens' c Day
Lens' Time Day
daytime)
                          ]
  in  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
id_ ([Char] -> Text
Text.pack [Char]
lk)] Html ()
""
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ ([Char] -> Text
Text.pack (Char
'#' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: [Char]
lk))] (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"entrytag"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Html ()
"EXM"
htmlEntryTag (BriefingEntry Briefing
e d
_) =
  let lk :: [Char]
lk = [Char] -> [Char]
space2dot ([Char] -> [Char]) -> ([[Char]] -> [Char]) -> [[Char]] -> [Char]
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]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Char]] -> [Char]) -> [[Char]] -> [Char]
forall a b. (a -> b) -> a -> b
$
                          [
                            [Char]
"BRF_"
                          , Briefing
e Briefing -> Getting [Char] Briefing [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] Briefing [Char]
forall c. HasBriefing c => Lens' c [Char]
Lens' Briefing [Char]
briefingName
                          , [Char]
"_"
                          , Day -> [Char]
forall a. Show a => a -> [Char]
show (Briefing
e Briefing -> Getting Day Briefing Day -> Day
forall s a. s -> Getting a s a -> a
^. (Time -> Const Day Time) -> Briefing -> Const Day Briefing
forall c. HasBriefing c => Lens' c Time
Lens' Briefing Time
briefingTime ((Time -> Const Day Time) -> Briefing -> Const Day Briefing)
-> ((Day -> Const Day Day) -> Time -> Const Day Time)
-> Getting Day Briefing Day
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
. (Day -> Const Day Day) -> Time -> Const Day Time
forall c. HasTime c => Lens' c Day
Lens' Time Day
daytime)
                          ]
  in  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
id_ ([Char] -> Text
Text.pack [Char]
lk)] Html ()
""
          [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ ([Char] -> Text
Text.pack (Char
'#' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: [Char]
lk))] (Html () -> Html ()) -> (Html () -> Html ()) -> Html () -> Html ()
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] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"entrytag"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$ Html ()
"BRF"

htmlEntry ::
  (AircraftFlight -> a -> Html x)
  -> (SimulatorFlight -> b -> Html x)
  -> (Exam -> c -> Html x)
  -> (Briefing -> d -> Html x)
  -> Entry a b c d
  -> Html x
htmlEntry :: forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entry a b c d
-> Html x
htmlEntry AircraftFlight -> a -> HtmlT Identity x
aircraftFlightMeta' SimulatorFlight -> b -> HtmlT Identity x
simulatorFlightMeta' Exam -> c -> HtmlT Identity x
examMeta' Briefing -> d -> HtmlT Identity x
briefingMeta' Entry a b c d
x =
  do  Entry a b c d -> Html ()
forall a b c d. Entry a b c d -> Html ()
htmlEntryTag Entry a b c d
x
      case Entry a b c d
x of
        AircraftFlightEntry AircraftFlight
e a
ae ->
          do  [Attribute] -> HtmlT Identity x -> HtmlT Identity x
forall arg result. Term arg result => arg -> result
div_ [] (HtmlT Identity x -> HtmlT Identity x)
-> HtmlT Identity x -> HtmlT Identity x
forall a b. (a -> b) -> a -> b
$
                do  AircraftFlight -> Html ()
htmlAircraftFlight AircraftFlight
e
                    AircraftFlight -> a -> HtmlT Identity x
aircraftFlightMeta' AircraftFlight
e a
ae
        SimulatorFlightEntry SimulatorFlight
e b
ae ->
          do  [Attribute] -> HtmlT Identity x -> HtmlT Identity x
forall arg result. Term arg result => arg -> result
div_ [] (HtmlT Identity x -> HtmlT Identity x)
-> HtmlT Identity x -> HtmlT Identity x
forall a b. (a -> b) -> a -> b
$
                do  SimulatorFlight -> Html ()
htmlSimulatorFlight SimulatorFlight
e
                    SimulatorFlight -> b -> HtmlT Identity x
simulatorFlightMeta' SimulatorFlight
e b
ae
        ExamEntry Exam
e c
ae ->
          do  [Attribute] -> HtmlT Identity x -> HtmlT Identity x
forall arg result. Term arg result => arg -> result
div_ [] (HtmlT Identity x -> HtmlT Identity x)
-> HtmlT Identity x -> HtmlT Identity x
forall a b. (a -> b) -> a -> b
$
                do  Exam -> Html ()
htmlExam Exam
e
                    Exam -> c -> HtmlT Identity x
examMeta' Exam
e c
ae
        BriefingEntry Briefing
e d
ae ->
          do  [Attribute] -> HtmlT Identity x -> HtmlT Identity x
forall arg result. Term arg result => arg -> result
div_ [] (HtmlT Identity x -> HtmlT Identity x)
-> HtmlT Identity x -> HtmlT Identity x
forall a b. (a -> b) -> a -> b
$
                do  Briefing -> Html ()
htmlBriefing Briefing
e
                    Briefing -> d -> HtmlT Identity x
briefingMeta' Briefing
e d
ae

htmlEntries ::
  (AircraftFlight -> a -> Html x)
  -> (SimulatorFlight -> b -> Html x)
  -> (Exam -> c -> Html x)
  -> (Briefing -> d -> Html x)
  -> Entries a b c d
  -> Html ()
htmlEntries :: forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entries a b c d
-> Html ()
htmlEntries AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' (Entries [Entry a b c d]
es) =
  (Entry a b c d -> Html x) -> [Entry a b c d] -> Html ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\Entry a b c d
e -> [Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
hr_ [] Html () -> Html x -> Html x
forall a b.
HtmlT Identity a -> HtmlT Identity b -> HtmlT Identity b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> (AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entry a b c d
-> Html x
forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entry a b c d
-> Html x
htmlEntry AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' Entry a b c d
e) [Entry a b c d]
es

htmlLogbook ::
  (AircraftFlight -> a -> Html x)
  -> (SimulatorFlight -> b -> Html x)
  -> (Exam -> c -> Html x)
  -> (Briefing -> d -> Html x)
  -> Html ()
  -> Logbook a b c d
  -> Html ()
htmlLogbook :: forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Html ()
-> Logbook a b c d
-> Html ()
htmlLogbook AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' Html ()
reports' (Logbook Aviator
a Entries a b c d
es) =
  do  Aviator -> Html ()
htmlAviator Aviator
a
      [Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
hr_ []
      Html ()
reports'
      (AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entries a b c d
-> Html ()
forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Entries a b c d
-> Html ()
htmlEntries AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' Entries a b c d
es

htmlTitleAviator ::
  Aviator
  -> Html ()
htmlTitleAviator :: Aviator -> Html ()
htmlTitleAviator Aviator
a =
  [Char] -> Html ()
forall a. IsString a => [Char] -> a
fromString ([[Char]] -> [Char]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
                [
                  Aviator
a Aviator -> Getting [Char] Aviator [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] Aviator [Char]
forall c. HasAviator c => Lens' c [Char]
Lens' Aviator [Char]
firstname
                , [Char]
" "
                , Aviator
a Aviator -> Getting [Char] Aviator [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^. Getting [Char] Aviator [Char]
forall c. HasAviator c => Lens' c [Char]
Lens' Aviator [Char]
surname
                , [Char]
" ("
                , (\DecDigit
d -> [Tagged DecDigit (Identity DecDigit) -> Tagged Char (Identity Char)
forall d. Decimal d => Prism' Char d
Prism' Char DecDigit
charDecimal (Tagged DecDigit (Identity DecDigit)
 -> Tagged Char (Identity Char))
-> DecDigit -> Char
forall t b. AReview t b -> b -> t
# DecDigit
d]) (DecDigit -> [Char]) -> [DecDigit] -> [Char]
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (Aviator
a Aviator -> Getting [DecDigit] Aviator [DecDigit] -> [DecDigit]
forall s a. s -> Getting a s a -> a
^. Getting [DecDigit] Aviator [DecDigit]
forall c. HasAviator c => Lens' c [DecDigit]
Lens' Aviator [DecDigit]
arn)
                , [Char]
")"
                ])

htmlLogbookDocument ::
  (AircraftFlight -> a -> Html x)
  -> (SimulatorFlight -> b -> Html x)
  -> (Exam -> c -> Html x)
  -> (Briefing -> d -> Html x)
  -> Html ()
  -> Logbook a b c d
  -> Html ()
htmlLogbookDocument :: forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Html ()
-> Logbook a b c d
-> Html ()
htmlLogbookDocument AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' Html ()
reports' Logbook a b c d
b =
  do  Html ()
forall (m :: * -> *). Applicative m => HtmlT m ()
doctype_
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
html_ [Text -> Attribute
lang_ Text
"en"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
        do  Html () -> Html ()
forall arg result. Term arg result => arg -> result
head_ (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
              do  Html () -> Html ()
forall arg result. Term arg result => arg -> result
title_ (Html ()
"Pilot Personal Logbook " Html () -> Html () -> Html ()
forall a. Semigroup a => a -> a -> a
<> Text -> Html ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
forall (m :: * -> *). Monad m => Text -> HtmlT m ()
toHtmlRaw (Text
" &mdash; " :: Text) Html () -> Html () -> Html ()
forall a. Semigroup a => a -> a -> a
<> Aviator -> Html ()
htmlTitleAviator (Logbook a b c d
b Logbook a b c d
-> Getting Aviator (Logbook a b c d) Aviator -> Aviator
forall s a. s -> Getting a s a -> a
^. Getting Aviator (Logbook a b c d) Aviator
forall c ae se ee be. HasLogbook c ae se ee be => Lens' c Aviator
Lens' (Logbook a b c d) Aviator
logbookaviator))
                  [Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
link_ [Text -> Attribute
href_ Text
"https://fonts.googleapis.com/css?family=Inconsolata:400,700", Text -> Attribute
rel_ Text
"stylesheet", Text -> Attribute
type_ Text
"text/css"]
                  [Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
link_ [Text -> Attribute
href_ Text
"casr-logbook.css", Text -> Attribute
rel_ Text
"stylesheet", Text -> Attribute
type_ Text
"text/css"]
                  [Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
link_ [Text -> Attribute
href_ Text
"/atom.xml", Text -> Attribute
rel_ Text
"alternate", Text -> Attribute
type_ Text
"application/atom+xml", Text -> Attribute
forall arg result. Term arg result => arg -> result
title_ Text
"Atom feed"]
                  [Attribute] -> Text -> Html ()
forall arg result. TermRaw arg result => arg -> result
script_ [Text -> Attribute
type_ Text
"text/javascript", Text -> Attribute
src_ Text
"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"] (Text
"" :: Text)
                  [Attribute] -> Text -> Html ()
forall arg result. TermRaw arg result => arg -> result
script_ [Text -> Attribute
type_ Text
"text/javascript", Text -> Attribute
src_ Text
"https://raw.github.com/Mathapedia/LaTeX2HTML5/master/latex2html5.min.js"] (Text
"" :: Text)
            [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
body_ [Text -> Attribute
class_ Text
"casr-logbook"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
              do  Logbook a b c d -> Html ()
forall a b c d. Logbook a b c d -> Html ()
htmlLogbookHeader Logbook a b c d
b
                  (AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Html ()
-> Logbook a b c d
-> Html ()
forall a x b c d.
(AircraftFlight -> a -> Html x)
-> (SimulatorFlight -> b -> Html x)
-> (Exam -> c -> Html x)
-> (Briefing -> d -> Html x)
-> Html ()
-> Logbook a b c d
-> Html ()
htmlLogbook AircraftFlight -> a -> Html x
aircraftFlightMeta' SimulatorFlight -> b -> Html x
simulatorFlightMeta' Exam -> c -> Html x
examMeta' Briefing -> d -> Html x
briefingMeta' Html ()
reports' Logbook a b c d
b

htmlLogbookHeader ::
  Logbook a b c d
  -> Html ()
htmlLogbookHeader :: forall a b c d. Logbook a b c d -> Html ()
htmlLogbookHeader Logbook a b c d
_ =
  do  [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
id_ Text
"header", Text -> Attribute
class_ Text
"header"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
        Html () -> Html ()
forall arg result. Term arg result => arg -> result
h1_ Html ()
"Pilot Personal Log Book"
      [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
div_ [Text -> Attribute
id_ Text
"subheader", Text -> Attribute
class_ Text
"subheader"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
        Html () -> Html ()
forall arg result. Term arg result => arg -> result
h2_ (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
          do  Html ()
"Civil Aviation Safety Regulation 1998 (61.345)"
              Html ()
" "
              [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
span_ [Text -> Attribute
class_ Text
"austlii"] (Html () -> Html ()) -> Html () -> Html ()
forall a b. (a -> b) -> a -> b
$
                [Attribute] -> Html () -> Html ()
forall arg result. Term arg result => arg -> result
a_ [Text -> Attribute
href_ Text
"http://www.austlii.edu.au/au/legis/cth/consol_reg/casr1998333/s61.345.html"] Html ()
"austlii.edu.au"