packages feed

casr-logbook 0.2.2 → 0.3.0

raw patch · 51 files changed

+3538/−14 lines, 51 filesdep +containersdep +lensdep +textdep −casr-logbook-htmldep −casr-logbook-metadep −casr-logbook-meta-htmldep ~basedep ~digitdep ~timePVP ok

version bump matches the API change (PVP)

Dependencies added: containers, lens, text

Dependencies removed: casr-logbook-html, casr-logbook-meta, casr-logbook-meta-html, casr-logbook-reports, casr-logbook-reports-html, casr-logbook-reports-meta, casr-logbook-reports-meta-html, casr-logbook-types

Dependency ranges changed: base, digit, time

API changes (from Hackage documentation)

+ Data.Aviation.Casr.Logbook.Html.Html: htmlAircraft :: AircraftFlight -> Aircraft -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAircraftFlight :: AircraftFlight -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAircraftFlightName :: String -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviator :: Aviator -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviatorARN :: [Digit] -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviatorDob :: Maybe Day -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviatorName :: String -> String -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviatorRatings :: [Rating] -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviatorShort :: Aviator -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlAviators :: [Aviator] -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlBriefing :: Briefing -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlBriefingName :: String -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlCommand :: AircraftFlight -> Command -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlEntries :: (AircraftFlight -> a -> Html x) -> (SimulatorFlight -> b -> Html x) -> (Exam -> c -> Html x) -> (Briefing -> d -> Html x) -> Entries a b c d -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlEntry :: (AircraftFlight -> a -> Html x) -> (SimulatorFlight -> b -> Html x) -> (Exam -> c -> Html x) -> (Briefing -> d -> Html x) -> Entry a b c d -> Html x
+ Data.Aviation.Casr.Logbook.Html.Html: htmlEntryTag :: Entry a b c d -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlExam :: Exam -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlExamName :: String -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlExamResult :: Int -> Int -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlFlightPath :: AircraftFlight -> FlightPath -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlFlightPathTime :: FlightPath -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlFlightPoint :: AircraftFlight -> FlightPoint -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlLocation :: Location -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlLogbook :: (AircraftFlight -> a -> Html x) -> (SimulatorFlight -> b -> Html x) -> (Exam -> c -> Html x) -> (Briefing -> d -> Html x) -> Html () -> Logbook a b c d -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlLogbookDocument :: (AircraftFlight -> a -> Html x) -> (SimulatorFlight -> b -> Html x) -> (Exam -> c -> Html x) -> (Briefing -> d -> Html x) -> Html () -> Logbook a b c d -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlLogbookHeader :: Logbook a b c d -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlRating :: Rating -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlRatingDay :: Maybe Day -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlRatingShort :: Rating -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlRatings :: [Rating] -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlRatingsShort :: [Rating] -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlSimulatorFlight :: SimulatorFlight -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlSimulatorFlightName :: String -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTime :: Time -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTimeAmount :: TimeAmount -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTimeAmountZero :: TimeAmount -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTimeAmountZeroWith :: Monoid a => (Html () -> a) -> TimeAmount -> a
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTimeOfDayTime :: Maybe TimeOfDay -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: htmlTitleAviator :: Aviator -> Html ()
+ Data.Aviation.Casr.Logbook.Html.Html: space2dot :: String -> String
+ Data.Aviation.Casr.Logbook.Html.Html: strEngine :: Engine -> String
+ Data.Aviation.Casr.Logbook.Html.Html: strTimeAmount :: TimeAmount -> String
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: ExpenseAircraftLanding :: AircraftLandingExpense -> AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: ExpenseAircraftUsage :: AircraftUsageExpense -> AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: _AircraftFlightExpense :: AsAircraftFlightExpense r_a18bw => Prism' r_a18bw AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: _ExpenseAircraftLanding :: AsAircraftFlightExpense r_a18bw => Prism' r_a18bw AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: _ExpenseAircraftUsage :: AsAircraftFlightExpense r_a18bw => Prism' r_a18bw AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: class AsAircraftFlightExpense r_a18bw where _ExpenseAircraftUsage = (.) _AircraftFlightExpense _ExpenseAircraftUsage _ExpenseAircraftLanding = (.) _AircraftFlightExpense _ExpenseAircraftLanding
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: data AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: instance Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense.AsAircraftFlightExpense Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense.AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense.AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense.AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense.AircraftFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: AircraftFlightMeta :: [TrackLog] -> [Visualisation] -> [Image] -> [Video] -> [AircraftFlightExpense] -> [Passenger] -> AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: aircraftFlightMeta :: HasAircraftFlightMeta c_a191L => Lens' c_a191L AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: class HasAircraftFlightMeta c_a191L where expenses = (.) aircraftFlightMeta expenses images = (.) aircraftFlightMeta images pax = (.) aircraftFlightMeta pax tracklogs = (.) aircraftFlightMeta tracklogs videos = (.) aircraftFlightMeta videos visualisations = (.) aircraftFlightMeta visualisations
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: data AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: expenses :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [AircraftFlightExpense]
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: images :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [Image]
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: instance Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta.HasAircraftFlightMeta Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta.AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta.AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta.AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta.AircraftFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: pax :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [Passenger]
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: tracklogs :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [TrackLog]
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: videos :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [Video]
+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta: visualisations :: HasAircraftFlightMeta c_a191L => Lens' c_a191L [Visualisation]
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: AircraftLandingExpense :: Int -> String -> AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: aircraftLandingExpense :: HasAircraftLandingExpense c_a17oD => Lens' c_a17oD AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: aircraftlandingexpenseamount :: HasAircraftLandingExpense c_a17oD => Lens' c_a17oD Int
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: aircraftlandingexpensename :: HasAircraftLandingExpense c_a17oD => Lens' c_a17oD String
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: class HasAircraftLandingExpense c_a17oD where aircraftlandingexpenseamount = (.) aircraftLandingExpense aircraftlandingexpenseamount aircraftlandingexpensename = (.) aircraftLandingExpense aircraftlandingexpensename
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: data AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: instance Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense.HasAircraftLandingExpense Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense.AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense.AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense.AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense.AircraftLandingExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: AircraftUsageExpense :: Int -> String -> AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: aircraftUsageCost :: HasAircraftFlight s => s -> AircraftUsageExpense -> Int
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: aircraftUsageExpense :: HasAircraftUsageExpense c_a16y7 => Lens' c_a16y7 AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: aircraftusageexpensename :: HasAircraftUsageExpense c_a16y7 => Lens' c_a16y7 String
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: aircraftusageexpenseperhour :: HasAircraftUsageExpense c_a16y7 => Lens' c_a16y7 Int
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: class HasAircraftUsageExpense c_a16y7 where aircraftusageexpensename = (.) aircraftUsageExpense aircraftusageexpensename aircraftusageexpenseperhour = (.) aircraftUsageExpense aircraftusageexpenseperhour
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: data AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: instance Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense.HasAircraftUsageExpense Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense.AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense.AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense.AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense.AircraftUsageExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: BriefingExpense :: Int -> String -> BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: briefingCost :: HasBriefing s => s -> BriefingExpense -> Int
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: briefingExpense :: HasBriefingExpense c_a15f1 => Lens' c_a15f1 BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: briefingexpensename :: HasBriefingExpense c_a15f1 => Lens' c_a15f1 String
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: briefingexpenseperhour :: HasBriefingExpense c_a15f1 => Lens' c_a15f1 Int
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: class HasBriefingExpense c_a15f1 where briefingexpensename = (.) briefingExpense briefingexpensename briefingexpenseperhour = (.) briefingExpense briefingexpenseperhour
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: data BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: instance Data.Aviation.Casr.Logbook.Meta.BriefingExpense.HasBriefingExpense Data.Aviation.Casr.Logbook.Meta.BriefingExpense.BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.BriefingExpense.BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.BriefingExpense.BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.BriefingExpense.BriefingExpense
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: BriefingMeta :: [BriefingExpense] -> BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: briefingMeta :: HasBriefingMeta c_a1662 => Lens' c_a1662 BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: class HasBriefingMeta c_a1662
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance Control.Lens.Wrapped.Wrapped Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta t0
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance Data.Aviation.Casr.Logbook.Meta.BriefingMeta.HasBriefingMeta Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.BriefingMeta.BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta: newtype BriefingMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: ExamExpense :: Int -> String -> ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: class HasExamExpense c_a13Z2 where examexpenseamount = (.) examExpense examexpenseamount examexpensename = (.) examExpense examexpensename
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: data ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: examExpense :: HasExamExpense c_a13Z2 => Lens' c_a13Z2 ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: examexpenseamount :: HasExamExpense c_a13Z2 => Lens' c_a13Z2 Int
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: examexpensename :: HasExamExpense c_a13Z2 => Lens' c_a13Z2 String
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: instance Data.Aviation.Casr.Logbook.Meta.ExamExpense.HasExamExpense Data.Aviation.Casr.Logbook.Meta.ExamExpense.ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.ExamExpense.ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.ExamExpense.ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.ExamExpense.ExamExpense
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: ExamMeta :: [ExamExpense] -> ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: class HasExamMeta c_a14MW
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: examMeta :: HasExamMeta c_a14MW => Lens' c_a14MW ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance Control.Lens.Wrapped.Wrapped Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta t0
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance Data.Aviation.Casr.Logbook.Meta.ExamMeta.HasExamMeta Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.ExamMeta.ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.ExamMeta: newtype ExamMeta
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlAircraftFlightExpense :: AircraftFlight -> AircraftFlightExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlAircraftFlightExpenses :: AircraftFlight -> [AircraftFlightExpense] -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlAircraftFlightMeta :: AircraftFlight -> AircraftFlightMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlAircraftLandingExpense :: AircraftFlight -> AircraftLandingExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlAircraftUsageExpense :: AircraftFlight -> AircraftUsageExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlBriefingExpense :: Briefing -> BriefingExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlBriefingMeta :: Briefing -> BriefingMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlExamExpense :: Exam -> ExamExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlExamMeta :: Exam -> ExamMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlImage :: AircraftFlight -> Image -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlImageSource :: AircraftFlight -> Maybe String -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlImages :: AircraftFlight -> [Image] -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlLogbookDocumentMeta :: Html () -> Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlSimulatorFlightExpense :: SimulatorFlight -> SimulatorFlightExpense -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlSimulatorFlightMeta :: SimulatorFlight -> SimulatorFlightMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlTrackLog :: AircraftFlight -> TrackLog -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlTrackLogSource :: AircraftFlight -> Maybe String -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlTrackLogs :: AircraftFlight -> [TrackLog] -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlVideo :: AircraftFlight -> Video -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlVideoSource :: AircraftFlight -> Maybe String -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlVideos :: AircraftFlight -> [Video] -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlVisualisation :: AircraftFlight -> Visualisation -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: htmlVisualisations :: AircraftFlight -> [Visualisation] -> Html ()
+ Data.Aviation.Casr.Logbook.Meta.Html: showCentsAsDollars :: Int -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: showHundredCentsAsDollars :: Int -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: showThousandCentsAsDollars :: Int -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: strImageType :: ImageType -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: strTrackLogType :: TrackLogType -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: strVideoType :: VideoType -> String
+ Data.Aviation.Casr.Logbook.Meta.Html: whenEmpty :: Monoid a => ([t] -> a) -> [t] -> a
+ Data.Aviation.Casr.Logbook.Meta.Image: Image :: String -> ImageType -> Maybe String -> Maybe String -> Image
+ Data.Aviation.Casr.Logbook.Meta.Image: class HasImage c_a12FH where imagename = (.) image imagename imagesource = (.) image imagesource imagetype = (.) image imagetype imageuri = (.) image imageuri
+ Data.Aviation.Casr.Logbook.Meta.Image: data Image
+ Data.Aviation.Casr.Logbook.Meta.Image: image :: HasImage c_a12FH => Lens' c_a12FH Image
+ Data.Aviation.Casr.Logbook.Meta.Image: imagename :: HasImage c_a12FH => Lens' c_a12FH (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.Image: imagesource :: HasImage c_a12FH => Lens' c_a12FH (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.Image: imagetype :: HasImage c_a12FH => Lens' c_a12FH ImageType
+ Data.Aviation.Casr.Logbook.Meta.Image: imageuri :: HasImage c_a12FH => Lens' c_a12FH String
+ Data.Aviation.Casr.Logbook.Meta.Image: instance Data.Aviation.Casr.Logbook.Meta.Image.HasImage Data.Aviation.Casr.Logbook.Meta.Image.Image
+ Data.Aviation.Casr.Logbook.Meta.Image: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.Image.Image
+ Data.Aviation.Casr.Logbook.Meta.Image: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.Image.Image
+ Data.Aviation.Casr.Logbook.Meta.Image: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.Image.Image
+ Data.Aviation.Casr.Logbook.Meta.ImageType: Gif :: ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: Jpg :: ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: Png :: ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: _Gif :: AsImageType r_aYYV => Prism' r_aYYV ()
+ Data.Aviation.Casr.Logbook.Meta.ImageType: _ImageType :: AsImageType r_aYYV => Prism' r_aYYV ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: _Jpg :: AsImageType r_aYYV => Prism' r_aYYV ()
+ Data.Aviation.Casr.Logbook.Meta.ImageType: _Png :: AsImageType r_aYYV => Prism' r_aYYV ()
+ Data.Aviation.Casr.Logbook.Meta.ImageType: class AsImageType r_aYYV where _Jpg = (.) _ImageType _Jpg _Png = (.) _ImageType _Png _Gif = (.) _ImageType _Gif
+ Data.Aviation.Casr.Logbook.Meta.ImageType: data ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: instance Data.Aviation.Casr.Logbook.Meta.ImageType.AsImageType Data.Aviation.Casr.Logbook.Meta.ImageType.ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.ImageType.ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.ImageType.ImageType
+ Data.Aviation.Casr.Logbook.Meta.ImageType: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.ImageType.ImageType
+ Data.Aviation.Casr.Logbook.Meta.Passenger: Passenger :: String -> Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: class HasPassenger c_aYyC
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance Control.Lens.Wrapped.Wrapped Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance Data.Aviation.Casr.Logbook.Meta.Passenger.HasPassenger Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger t0
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.Passenger.Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: newtype Passenger
+ Data.Aviation.Casr.Logbook.Meta.Passenger: passenger :: HasPassenger c_aYyC => Lens' c_aYyC Passenger
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: SimulatorFlightExpense :: Int -> String -> SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: class HasSimulatorFlightExpense c_aXdS where simulatorflightexpensename = (.) simulatorFlightExpense simulatorflightexpensename simulatorflightexpenseperhour = (.) simulatorFlightExpense simulatorflightexpenseperhour
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: data SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: instance Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense.HasSimulatorFlightExpense Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense.SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense.SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense.SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense.SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: simulatorFlightCost :: HasSimulatorFlight s => s -> SimulatorFlightExpense -> Int
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: simulatorFlightExpense :: HasSimulatorFlightExpense c_aXdS => Lens' c_aXdS SimulatorFlightExpense
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: simulatorflightexpensename :: HasSimulatorFlightExpense c_aXdS => Lens' c_aXdS String
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense: simulatorflightexpenseperhour :: HasSimulatorFlightExpense c_aXdS => Lens' c_aXdS Int
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: SimulatorFlightMeta :: [SimulatorFlightExpense] -> SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: class HasSimulatorFlightMeta c_aY4T
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance Control.Lens.Wrapped.Wrapped Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.HasSimulatorFlightMeta Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta t0
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta.SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: newtype SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta: simulatorFlightMeta :: HasSimulatorFlightMeta c_aY4T => Lens' c_aY4T SimulatorFlightMeta
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: TrackLog :: String -> TrackLogType -> Maybe String -> Maybe String -> TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: class HasTrackLog c_a10RC where tracklogname = (.) trackLog tracklogname tracklogsource = (.) trackLog tracklogsource tracklogtype = (.) trackLog tracklogtype trackloguri = (.) trackLog trackloguri
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: data TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: instance Data.Aviation.Casr.Logbook.Meta.TrackLog.HasTrackLog Data.Aviation.Casr.Logbook.Meta.TrackLog.TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.TrackLog.TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.TrackLog.TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.TrackLog.TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: trackLog :: HasTrackLog c_a10RC => Lens' c_a10RC TrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: tracklogname :: HasTrackLog c_a10RC => Lens' c_a10RC (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: tracklogsource :: HasTrackLog c_a10RC => Lens' c_a10RC (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: tracklogtype :: HasTrackLog c_a10RC => Lens' c_a10RC TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLog: trackloguri :: HasTrackLog c_a10RC => Lens' c_a10RC String
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: Gpx :: TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: ImageTrackLog :: ImageType -> TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: Kml :: TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: Kmz :: TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: _Gpx :: AsTrackLogType r_aZTs => Prism' r_aZTs ()
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: _ImageTrackLog :: AsTrackLogType r_aZTs => Prism' r_aZTs ImageType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: _Kml :: AsTrackLogType r_aZTs => Prism' r_aZTs ()
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: _Kmz :: AsTrackLogType r_aZTs => Prism' r_aZTs ()
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: _TrackLogType :: AsTrackLogType r_aZTs => Prism' r_aZTs TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: class AsTrackLogType r_aZTs where _Gpx = (.) _TrackLogType _Gpx _Kml = (.) _TrackLogType _Kml _Kmz = (.) _TrackLogType _Kmz _ImageTrackLog = (.) _TrackLogType _ImageTrackLog
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: data TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: instance Data.Aviation.Casr.Logbook.Meta.TrackLogType.AsTrackLogType Data.Aviation.Casr.Logbook.Meta.TrackLogType.TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.TrackLogType.TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.TrackLogType.TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogType: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.TrackLogType.TrackLogType
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: TrackLogs :: [TrackLog] -> TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: class HasTrackLogs c_a12bU
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance Control.Lens.Wrapped.Wrapped Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance Data.Aviation.Casr.Logbook.Meta.TrackLogs.HasTrackLogs Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs t0
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.TrackLogs.TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: newtype TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.TrackLogs: trackLogs :: HasTrackLogs c_a12bU => Lens' c_a12bU TrackLogs
+ Data.Aviation.Casr.Logbook.Meta.Video: Video :: String -> VideoType -> Maybe String -> Maybe String -> Video
+ Data.Aviation.Casr.Logbook.Meta.Video: class HasVideo c_aVUx where videoname = (.) video videoname videosource = (.) video videosource videotype = (.) video videotype videouri = (.) video videouri
+ Data.Aviation.Casr.Logbook.Meta.Video: data Video
+ Data.Aviation.Casr.Logbook.Meta.Video: instance Data.Aviation.Casr.Logbook.Meta.Video.HasVideo Data.Aviation.Casr.Logbook.Meta.Video.Video
+ Data.Aviation.Casr.Logbook.Meta.Video: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.Video.Video
+ Data.Aviation.Casr.Logbook.Meta.Video: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.Video.Video
+ Data.Aviation.Casr.Logbook.Meta.Video: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.Video.Video
+ Data.Aviation.Casr.Logbook.Meta.Video: video :: HasVideo c_aVUx => Lens' c_aVUx Video
+ Data.Aviation.Casr.Logbook.Meta.Video: videoname :: HasVideo c_aVUx => Lens' c_aVUx (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.Video: videosource :: HasVideo c_aVUx => Lens' c_aVUx (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.Video: videotype :: HasVideo c_aVUx => Lens' c_aVUx VideoType
+ Data.Aviation.Casr.Logbook.Meta.Video: videouri :: HasVideo c_aVUx => Lens' c_aVUx String
+ Data.Aviation.Casr.Logbook.Meta.VideoType: Bambuser :: VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: Vimeo :: VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: YouTube :: VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: _Bambuser :: AsVideoType r_aUPa => Prism' r_aUPa ()
+ Data.Aviation.Casr.Logbook.Meta.VideoType: _VideoType :: AsVideoType r_aUPa => Prism' r_aUPa VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: _Vimeo :: AsVideoType r_aUPa => Prism' r_aUPa ()
+ Data.Aviation.Casr.Logbook.Meta.VideoType: _YouTube :: AsVideoType r_aUPa => Prism' r_aUPa ()
+ Data.Aviation.Casr.Logbook.Meta.VideoType: class AsVideoType r_aUPa where _YouTube = (.) _VideoType _YouTube _Vimeo = (.) _VideoType _Vimeo _Bambuser = (.) _VideoType _Bambuser
+ Data.Aviation.Casr.Logbook.Meta.VideoType: data VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: iframeVideoType :: VideoType -> String -> String
+ Data.Aviation.Casr.Logbook.Meta.VideoType: instance Data.Aviation.Casr.Logbook.Meta.VideoType.AsVideoType Data.Aviation.Casr.Logbook.Meta.VideoType.VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.VideoType.VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.VideoType.VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.VideoType.VideoType
+ Data.Aviation.Casr.Logbook.Meta.VideoType: linkVideoType :: VideoType -> String -> String
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: Doarama :: String -> String -> Maybe String -> Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: class HasVisualisation c_aTLo where doaramaid = (.) visualisation doaramaid doaramaname = (.) visualisation doaramaname oembedid = (.) visualisation oembedid
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: data Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: doaramaid :: HasVisualisation c_aTLo => Lens' c_aTLo String
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: doaramaname :: HasVisualisation c_aTLo => Lens' c_aTLo (Maybe String)
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: instance Data.Aviation.Casr.Logbook.Meta.Visualisation.HasVisualisation Data.Aviation.Casr.Logbook.Meta.Visualisation.Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Meta.Visualisation.Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Meta.Visualisation.Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Meta.Visualisation.Visualisation
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: oembedid :: HasVisualisation c_aTLo => Lens' c_aTLo String
+ Data.Aviation.Casr.Logbook.Meta.Visualisation: visualisation :: HasVisualisation c_aTLo => Lens' c_aTLo Visualisation
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: FlightTimeReport :: Int -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount) -> Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount) -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> TimeAmount -> Map Aviator TimeAmount -> TimeAmount -> FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_flightsTotal] :: FlightTimeReport -> Int
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursDayDual] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursDayICUS] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursDayInCommand] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursDay] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursInAircraftRegistration] :: FlightTimeReport -> Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount)
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursInAircraftType] :: FlightTimeReport -> Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount)
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursInstrument] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursMultiEngineDual] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursMultiEngineICUS] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursMultiEngineInCommand] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursMultiEngine] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursNightDual] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursNightICUS] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursNightInCommand] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursNight] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursSingleEngineDual] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursSingleEngineICUS] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursSingleEngineInCommand] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursSingleEngine] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursTotalDual] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursTotalICUS] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursTotalInCommand] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursTotal] :: FlightTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: [_hoursWithPiC] :: FlightTimeReport -> Map Aviator TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: class HasFlightTimeReport c_aKlC where flightsTotal = (.) flightTimeReport flightsTotal hoursDay = (.) flightTimeReport hoursDay hoursDayDual = (.) flightTimeReport hoursDayDual hoursDayICUS = (.) flightTimeReport hoursDayICUS hoursDayInCommand = (.) flightTimeReport hoursDayInCommand hoursInAircraftRegistration = (.) flightTimeReport hoursInAircraftRegistration hoursInAircraftType = (.) flightTimeReport hoursInAircraftType hoursInstrument = (.) flightTimeReport hoursInstrument hoursMultiEngine = (.) flightTimeReport hoursMultiEngine hoursMultiEngineDual = (.) flightTimeReport hoursMultiEngineDual hoursMultiEngineICUS = (.) flightTimeReport hoursMultiEngineICUS hoursMultiEngineInCommand = (.) flightTimeReport hoursMultiEngineInCommand hoursNight = (.) flightTimeReport hoursNight hoursNightDual = (.) flightTimeReport hoursNightDual hoursNightICUS = (.) flightTimeReport hoursNightICUS hoursNightInCommand = (.) flightTimeReport hoursNightInCommand hoursSingleEngine = (.) flightTimeReport hoursSingleEngine hoursSingleEngineDual = (.) flightTimeReport hoursSingleEngineDual hoursSingleEngineICUS = (.) flightTimeReport hoursSingleEngineICUS hoursSingleEngineInCommand = (.) flightTimeReport hoursSingleEngineInCommand hoursTotal = (.) flightTimeReport hoursTotal hoursTotalDual = (.) flightTimeReport hoursTotalDual hoursTotalICUS = (.) flightTimeReport hoursTotalICUS hoursTotalInCommand = (.) flightTimeReport hoursTotalInCommand hoursWithPiC = (.) flightTimeReport hoursWithPiC
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: data FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: flightTimeReport :: HasFlightTimeReport c_aKlC => Lens' c_aKlC FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: flightsTotal :: HasFlightTimeReport c_aKlC => Lens' c_aKlC Int
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: getFlightTimeReport :: Logbook a b c d -> FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursDay :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursDayDual :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursDayICUS :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursDayInCommand :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursInAircraftRegistration :: HasFlightTimeReport c_aKlC => Lens' c_aKlC (Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount))
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursInAircraftType :: HasFlightTimeReport c_aKlC => Lens' c_aKlC (Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount))
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursInstrument :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursMultiEngine :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursMultiEngineDual :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursMultiEngineICUS :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursMultiEngineInCommand :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursNight :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursNightDual :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursNightICUS :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursNightInCommand :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursSingleEngine :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursSingleEngineDual :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursSingleEngineICUS :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursSingleEngineInCommand :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursTotal :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursTotalDual :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursTotalICUS :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursTotalInCommand :: HasFlightTimeReport c_aKlC => Lens' c_aKlC TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: hoursWithPiC :: HasFlightTimeReport c_aKlC => Lens' c_aKlC (Map Aviator TimeAmount)
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: instance Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.HasFlightTimeReport Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: instance GHC.Base.Monoid Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Reports.FlightTimeReport.FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.FlightTimeReport: singleFlightTimeReport :: Entry a b c d -> FlightTimeReport
+ Data.Aviation.Casr.Logbook.Reports.Html: htmlFlightPointDay :: FlightPoint -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.Html: htmlFlightTimeReport :: Logbook a b c d -> FlightTimeReport -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.Html: htmlSimulatorTimeReport :: Logbook a b c d -> SimulatorTimeReport -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.Html: htmlTakeOffLanding90 :: Logbook a b c d -> Maybe TakeOffLanding90 -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.Html: takeofflanding :: Entry a b c d -> ([FlightPoint], [FlightPoint])
+ Data.Aviation.Casr.Logbook.Reports.Html: takeoffslandings90 :: Logbook a b c d -> Maybe TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: ExpenseReport :: Int -> Int -> Int -> Int -> Int -> ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: aircraftLandingExpenseTotal :: HasExpenseReport c_a1b8l => Lens' c_a1b8l Int
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: aircraftUsageExpenseTotal :: HasExpenseReport c_a1b8l => Lens' c_a1b8l Int
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: briefingExpenseTotal :: HasExpenseReport c_a1b8l => Lens' c_a1b8l Int
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: class HasExpenseReport c_a1b8l where aircraftLandingExpenseTotal = (.) expenseReport aircraftLandingExpenseTotal aircraftUsageExpenseTotal = (.) expenseReport aircraftUsageExpenseTotal briefingExpenseTotal = (.) expenseReport briefingExpenseTotal examExpenseTotal = (.) expenseReport examExpenseTotal simulatorFlightTotal = (.) expenseReport simulatorFlightTotal
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: data ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: entryExpenseReport :: Entry AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta -> ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: examExpenseTotal :: HasExpenseReport c_a1b8l => Lens' c_a1b8l Int
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: expenseReport :: HasExpenseReport c_a1b8l => Lens' c_a1b8l ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: instance Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.HasExpenseReport Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: instance GHC.Base.Monoid Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport.ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: logbookExpenseReport :: Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta -> ExpenseReport
+ Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport: simulatorFlightTotal :: HasExpenseReport c_a1b8l => Lens' c_a1b8l Int
+ Data.Aviation.Casr.Logbook.Reports.Meta.Html: htmlExpenseReport :: Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta -> ExpenseReport -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.Meta.Html: htmlReports :: Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta -> Html ()
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: SimulatorTimeReport :: TimeAmount -> TimeAmount -> SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: [_hoursInstrumentSimulator] :: SimulatorTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: [_hoursTotalSimulator] :: SimulatorTimeReport -> TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: class HasSimulatorTimeReport c_aJ3p where hoursInstrumentSimulator = (.) simulatorTimeReport hoursInstrumentSimulator hoursTotalSimulator = (.) simulatorTimeReport hoursTotalSimulator
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: data SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: getSimulatorTimeReport :: Logbook a b c d -> SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: hoursInstrumentSimulator :: HasSimulatorTimeReport c_aJ3p => Lens' c_aJ3p TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: hoursTotalSimulator :: HasSimulatorTimeReport c_aJ3p => Lens' c_aJ3p TimeAmount
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: instance Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.HasSimulatorTimeReport Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: instance GHC.Base.Monoid Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport.SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: simulatorTimeReport :: HasSimulatorTimeReport c_aJ3p => Lens' c_aJ3p SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport: singleSimulatorTimeReport :: Entry a b c d -> SimulatorTimeReport
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: TakeOffLanding90 :: FlightPoint -> FlightPoint -> FlightPoint -> FlightPoint -> FlightPoint -> FlightPoint -> Day -> TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_currency90] :: TakeOffLanding90 -> Day
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_landing1] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_landing2] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_landing3] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_takeoff1] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_takeoff2] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: [_takeoff3] :: TakeOffLanding90 -> FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: class HasTakeOffLanding90 c_aGKl where currency90 = (.) takeOffLanding90 currency90 landing1 = (.) takeOffLanding90 landing1 landing2 = (.) takeOffLanding90 landing2 landing3 = (.) takeOffLanding90 landing3 takeoff1 = (.) takeOffLanding90 takeoff1 takeoff2 = (.) takeOffLanding90 takeoff2 takeoff3 = (.) takeOffLanding90 takeoff3
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: currency90 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl Day
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: data TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: instance Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90.HasTakeOffLanding90 Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90.TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90.TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90.TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90.TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: landing1 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: landing2 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: landing3 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: takeOffLanding90 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl TakeOffLanding90
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: takeoff1 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: takeoff2 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90: takeoff3 :: HasTakeOffLanding90 c_aGKl => Lens' c_aGKl FlightPoint
+ Data.Aviation.Casr.Logbook.Types.Aircraft: Aircraft :: String -> String -> Engine -> Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: [_aircraftEngine] :: Aircraft -> Engine
+ Data.Aviation.Casr.Logbook.Types.Aircraft: [_aircraftRegistration] :: Aircraft -> String
+ Data.Aviation.Casr.Logbook.Types.Aircraft: [_aircraftType] :: Aircraft -> String
+ Data.Aviation.Casr.Logbook.Types.Aircraft: aircraft :: HasAircraft c_aykk => Lens' c_aykk Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: aircraftEngine :: HasAircraft c_aykk => Lens' c_aykk Engine
+ Data.Aviation.Casr.Logbook.Types.Aircraft: aircraftRegistration :: HasAircraft c_aykk => Lens' c_aykk String
+ Data.Aviation.Casr.Logbook.Types.Aircraft: aircraftType :: HasAircraft c_aykk => Lens' c_aykk String
+ Data.Aviation.Casr.Logbook.Types.Aircraft: class HasAircraft c_aykk where aircraftEngine = (.) aircraft aircraftEngine aircraftRegistration = (.) aircraft aircraftRegistration aircraftType = (.) aircraft aircraftType
+ Data.Aviation.Casr.Logbook.Types.Aircraft: data Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: instance Data.Aviation.Casr.Logbook.Types.Aircraft.HasAircraft Data.Aviation.Casr.Logbook.Types.Aircraft.Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Aircraft.Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Aircraft.Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Aircraft.Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: multiaircraft :: String -> String -> Aircraft
+ Data.Aviation.Casr.Logbook.Types.Aircraft: singleaircraft :: String -> String -> Aircraft
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: AircraftFlight :: String -> Aircraft -> Command -> DayNight -> FlightPath -> [Aviator] -> TimeAmount -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_aircraftflightname] :: AircraftFlight -> String
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_command] :: AircraftFlight -> Command
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_daynight] :: AircraftFlight -> DayNight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_flightaircraft] :: AircraftFlight -> Aircraft
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_flightothercrew] :: AircraftFlight -> [Aviator]
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_flightpath] :: AircraftFlight -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: [_instrumentflightTime] :: AircraftFlight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: aircraftFlight :: HasAircraftFlight c_azua => Lens' c_azua AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: aircraftflightname :: HasAircraftFlight c_azua => Lens' c_azua String
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: class HasAircraftFlight c_azua where aircraftflightname = (.) aircraftFlight aircraftflightname command = (.) aircraftFlight command daynight = (.) aircraftFlight daynight flightaircraft = (.) aircraftFlight flightaircraft flightothercrew = (.) aircraftFlight flightothercrew flightpath = (.) aircraftFlight flightpath instrumentflightTime = (.) aircraftFlight instrumentflightTime
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: command :: HasAircraftFlight c_azua => Lens' c_azua Command
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: commandonlyflight :: String -> Aircraft -> DayNight -> FlightPath -> TimeAmount -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: data AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: daynight :: HasAircraftFlight c_azua => Lens' c_azua DayNight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: dualonlyflight :: String -> Aircraft -> Aviator -> DayNight -> FlightPath -> TimeAmount -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: flightaircraft :: HasAircraftFlight c_azua => Lens' c_azua Aircraft
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: flightothercrew :: HasAircraftFlight c_azua => Lens' c_azua [Aviator]
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: flightpath :: HasAircraftFlight c_azua => Lens' c_azua FlightPath
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: icusonlyflight :: String -> Aircraft -> Aviator -> DayNight -> FlightPath -> TimeAmount -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance Data.Aviation.Casr.Logbook.Types.Aircraft.HasAircraft Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance Data.Aviation.Casr.Logbook.Types.AircraftFlight.HasAircraftFlight Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance Data.Aviation.Casr.Logbook.Types.DayNight.HasDayNight Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance Data.Aviation.Casr.Logbook.Types.FlightPath.HasFlightPath Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.AircraftFlight.AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: instrumentflightTime :: HasAircraftFlight c_azua => Lens' c_azua TimeAmount
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: noif_commandonlyflight :: String -> Aircraft -> DayNight -> FlightPath -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: noif_dualonlyflight :: String -> Aircraft -> Aviator -> DayNight -> FlightPath -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.AircraftFlight: noif_icusonlyflight :: String -> Aircraft -> Aviator -> DayNight -> FlightPath -> AircraftFlight
+ Data.Aviation.Casr.Logbook.Types.Aviator: Aviator :: String -> String -> [Digit] -> Maybe Day -> [Rating] -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: [_arn] :: Aviator -> [Digit]
+ Data.Aviation.Casr.Logbook.Types.Aviator: [_dob] :: Aviator -> Maybe Day
+ Data.Aviation.Casr.Logbook.Types.Aviator: [_firstname] :: Aviator -> String
+ Data.Aviation.Casr.Logbook.Types.Aviator: [_ratings] :: Aviator -> [Rating]
+ Data.Aviation.Casr.Logbook.Types.Aviator: [_surname] :: Aviator -> String
+ Data.Aviation.Casr.Logbook.Types.Aviator: arn :: HasAviator c_apsL => Lens' c_apsL [Digit]
+ Data.Aviation.Casr.Logbook.Types.Aviator: aviator :: HasAviator c_apsL => Lens' c_apsL Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: aviatorwithname :: String -> String -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: class HasAviator c_apsL where arn = (.) aviator arn dob = (.) aviator dob firstname = (.) aviator firstname ratings = (.) aviator ratings surname = (.) aviator surname
+ Data.Aviation.Casr.Logbook.Types.Aviator: data Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: dob :: HasAviator c_apsL => Lens' c_apsL (Maybe Day)
+ Data.Aviation.Casr.Logbook.Types.Aviator: dobaviator :: String -> String -> [Digit] -> Day -> [Rating] -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: firstname :: HasAviator c_apsL => Lens' c_apsL String
+ Data.Aviation.Casr.Logbook.Types.Aviator: instance Data.Aviation.Casr.Logbook.Types.Aviator.HasAviator Data.Aviation.Casr.Logbook.Types.Aviator.Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Aviator.Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Aviator.Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Aviator.Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: nodobaviator :: String -> String -> [Digit] -> [Rating] -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Aviator: ratings :: HasAviator c_apsL => Lens' c_apsL [Rating]
+ Data.Aviation.Casr.Logbook.Types.Aviator: surname :: HasAviator c_apsL => Lens' c_apsL String
+ Data.Aviation.Casr.Logbook.Types.Briefing: Briefing :: String -> Location -> Time -> Aviator -> TimeAmount -> Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: [_briefer] :: Briefing -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Briefing: [_briefingLocation] :: Briefing -> Location
+ Data.Aviation.Casr.Logbook.Types.Briefing: [_briefingName] :: Briefing -> String
+ Data.Aviation.Casr.Logbook.Types.Briefing: [_briefingTimeAmount] :: Briefing -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.Briefing: [_briefingTime] :: Briefing -> Time
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefer :: HasBriefing c_arj9 => Lens' c_arj9 Aviator
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefing :: HasBriefing c_arj9 => Lens' c_arj9 Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefingLocation :: HasBriefing c_arj9 => Lens' c_arj9 Location
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefingName :: HasBriefing c_arj9 => Lens' c_arj9 String
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefingTime :: HasBriefing c_arj9 => Lens' c_arj9 Time
+ Data.Aviation.Casr.Logbook.Types.Briefing: briefingTimeAmount :: HasBriefing c_arj9 => Lens' c_arj9 TimeAmount
+ Data.Aviation.Casr.Logbook.Types.Briefing: class HasBriefing c_arj9 where briefer = (.) briefing briefer briefingLocation = (.) briefing briefingLocation briefingName = (.) briefing briefingName briefingTime = (.) briefing briefingTime briefingTimeAmount = (.) briefing briefingTimeAmount
+ Data.Aviation.Casr.Logbook.Types.Briefing: data Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance Data.Aviation.Casr.Logbook.Types.Aviator.HasAviator Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance Data.Aviation.Casr.Logbook.Types.Briefing.HasBriefing Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance Data.Aviation.Casr.Logbook.Types.Location.HasLocation Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance Data.Aviation.Casr.Logbook.Types.Time.HasTime Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance Data.Aviation.Casr.Logbook.Types.TimeAmount.HasTimeAmount Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Briefing: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Briefing.Briefing
+ Data.Aviation.Casr.Logbook.Types.Command: Dual :: Aviator -> Command
+ Data.Aviation.Casr.Logbook.Types.Command: ICUS :: Aviator -> Command
+ Data.Aviation.Casr.Logbook.Types.Command: InCommand :: Command
+ Data.Aviation.Casr.Logbook.Types.Command: _Command :: AsCommand r_at91 => Prism' r_at91 Command
+ Data.Aviation.Casr.Logbook.Types.Command: _Dual :: AsCommand r_at91 => Prism' r_at91 Aviator
+ Data.Aviation.Casr.Logbook.Types.Command: _ICUS :: AsCommand r_at91 => Prism' r_at91 Aviator
+ Data.Aviation.Casr.Logbook.Types.Command: _InCommand :: AsCommand r_at91 => Prism' r_at91 ()
+ Data.Aviation.Casr.Logbook.Types.Command: class AsCommand r_at91 where _ICUS = (.) _Command _ICUS _Dual = (.) _Command _Dual _InCommand = (.) _Command _InCommand
+ Data.Aviation.Casr.Logbook.Types.Command: data Command
+ Data.Aviation.Casr.Logbook.Types.Command: getInstructingPic :: Command -> Maybe Aviator
+ Data.Aviation.Casr.Logbook.Types.Command: instance Data.Aviation.Casr.Logbook.Types.Command.AsCommand Data.Aviation.Casr.Logbook.Types.Command.Command
+ Data.Aviation.Casr.Logbook.Types.Command: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Command.Command
+ Data.Aviation.Casr.Logbook.Types.Command: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Command.Command
+ Data.Aviation.Casr.Logbook.Types.Command: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Command.Command
+ Data.Aviation.Casr.Logbook.Types.DayNight: DayNight :: TimeAmount -> TimeAmount -> DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: [_dayDayNight] :: DayNight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.DayNight: [_nightDayNight] :: DayNight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.DayNight: class HasDayNight c_aoCh where dayDayNight = (.) dayNight dayDayNight nightDayNight = (.) dayNight nightDayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: data DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: day :: Int -> Digit -> DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: dayDayNight :: HasDayNight c_aoCh => Lens' c_aoCh TimeAmount
+ Data.Aviation.Casr.Logbook.Types.DayNight: dayNight :: HasDayNight c_aoCh => Lens' c_aoCh DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: instance Data.Aviation.Casr.Logbook.Types.DayNight.HasDayNight Data.Aviation.Casr.Logbook.Types.DayNight.DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.DayNight.DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.DayNight.DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.DayNight.DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: night :: Int -> Digit -> DayNight
+ Data.Aviation.Casr.Logbook.Types.DayNight: nightDayNight :: HasDayNight c_aoCh => Lens' c_aoCh TimeAmount
+ Data.Aviation.Casr.Logbook.Types.DayNight: totalDayNight :: DayNight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.Engine: Multi :: Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: Single :: Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: _Engine :: AsEngine r_anTY => Prism' r_anTY Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: _Multi :: AsEngine r_anTY => Prism' r_anTY ()
+ Data.Aviation.Casr.Logbook.Types.Engine: _Single :: AsEngine r_anTY => Prism' r_anTY ()
+ Data.Aviation.Casr.Logbook.Types.Engine: class AsEngine r_anTY where _Single = (.) _Engine _Single _Multi = (.) _Engine _Multi
+ Data.Aviation.Casr.Logbook.Types.Engine: data Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: instance Data.Aviation.Casr.Logbook.Types.Engine.AsEngine Data.Aviation.Casr.Logbook.Types.Engine.Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Engine.Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Engine.Engine
+ Data.Aviation.Casr.Logbook.Types.Engine: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Engine.Engine
+ Data.Aviation.Casr.Logbook.Types.Entries: Entries :: [Entry ae se ee be] -> Entries ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entries: emptyentries :: Entries ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entries: instance (GHC.Classes.Eq ae, GHC.Classes.Eq se, GHC.Classes.Eq ee, GHC.Classes.Eq be) => GHC.Classes.Eq (Data.Aviation.Casr.Logbook.Types.Entries.Entries ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entries: instance (GHC.Classes.Ord ae, GHC.Classes.Ord se, GHC.Classes.Ord ee, GHC.Classes.Ord be) => GHC.Classes.Ord (Data.Aviation.Casr.Logbook.Types.Entries.Entries ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entries: instance (GHC.Show.Show ae, GHC.Show.Show se, GHC.Show.Show ee, GHC.Show.Show be) => GHC.Show.Show (Data.Aviation.Casr.Logbook.Types.Entries.Entries ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entries: instance Control.Lens.Wrapped.Wrapped (Data.Aviation.Casr.Logbook.Types.Entries.Entries ae0 se0 ee0 be0)
+ Data.Aviation.Casr.Logbook.Types.Entries: instance Data.Aviation.Casr.Logbook.Types.Entries.Entries ae0 se0 ee0 be0 ~ t0 => Control.Lens.Wrapped.Rewrapped (Data.Aviation.Casr.Logbook.Types.Entries.Entries ae1 se1 ee1 be1) t0
+ Data.Aviation.Casr.Logbook.Types.Entries: newtype Entries ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entries: singleentry :: Entry ae se ee be -> Entries ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: AircraftFlightEntry :: AircraftFlight -> ae -> Entry ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: BriefingEntry :: Briefing -> be -> Entry ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: ExamEntry :: Exam -> ee -> Entry ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: SimulatorFlightEntry :: SimulatorFlight -> se -> Entry ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: _AircraftFlightEntry :: AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc => Prism' r_aCX9 (AircraftFlight, ae_aBS9)
+ Data.Aviation.Casr.Logbook.Types.Entry: _BriefingEntry :: AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc => Prism' r_aCX9 (Briefing, be_aBSc)
+ Data.Aviation.Casr.Logbook.Types.Entry: _Entry :: AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc => Prism' r_aCX9 (Entry ae_aBS9 se_aBSa ee_aBSb be_aBSc)
+ Data.Aviation.Casr.Logbook.Types.Entry: _ExamEntry :: AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc => Prism' r_aCX9 (Exam, ee_aBSb)
+ Data.Aviation.Casr.Logbook.Types.Entry: _SimulatorFlightEntry :: AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc => Prism' r_aCX9 (SimulatorFlight, se_aBSa)
+ Data.Aviation.Casr.Logbook.Types.Entry: class AsEntry r_aCX9 ae_aBS9 se_aBSa ee_aBSb be_aBSc | r_aCX9 -> ae_aBS9 se_aBSa ee_aBSb be_aBSc where _AircraftFlightEntry = (.) _Entry _AircraftFlightEntry _SimulatorFlightEntry = (.) _Entry _SimulatorFlightEntry _ExamEntry = (.) _Entry _ExamEntry _BriefingEntry = (.) _Entry _BriefingEntry
+ Data.Aviation.Casr.Logbook.Types.Entry: data Entry ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Entry: instance (GHC.Classes.Eq be, GHC.Classes.Eq ee, GHC.Classes.Eq se, GHC.Classes.Eq ae) => GHC.Classes.Eq (Data.Aviation.Casr.Logbook.Types.Entry.Entry ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entry: instance (GHC.Classes.Ord be, GHC.Classes.Ord ee, GHC.Classes.Ord se, GHC.Classes.Ord ae) => GHC.Classes.Ord (Data.Aviation.Casr.Logbook.Types.Entry.Entry ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entry: instance (GHC.Show.Show be, GHC.Show.Show ee, GHC.Show.Show se, GHC.Show.Show ae) => GHC.Show.Show (Data.Aviation.Casr.Logbook.Types.Entry.Entry ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Entry: instance Data.Aviation.Casr.Logbook.Types.Entry.AsEntry (Data.Aviation.Casr.Logbook.Types.Entry.Entry ae0 se0 ee0 be0) ae0 se0 ee0 be0
+ Data.Aviation.Casr.Logbook.Types.Exam: Exam :: String -> Location -> Time -> Aviator -> Int -> Int -> Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examDelegate] :: Exam -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examLocation] :: Exam -> Location
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examName] :: Exam -> String
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examResultMaximum] :: Exam -> Int
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examResult] :: Exam -> Int
+ Data.Aviation.Casr.Logbook.Types.Exam: [_examTime] :: Exam -> Time
+ Data.Aviation.Casr.Logbook.Types.Exam: class HasExam c_aueI where examDelegate = (.) exam examDelegate examLocation = (.) exam examLocation examName = (.) exam examName examResult = (.) exam examResult examResultMaximum = (.) exam examResultMaximum examTime = (.) exam examTime
+ Data.Aviation.Casr.Logbook.Types.Exam: data Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: dayonlyexam :: String -> Location -> Day -> Aviator -> Int -> Int -> Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: exam :: HasExam c_aueI => Lens' c_aueI Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: examDelegate :: HasExam c_aueI => Lens' c_aueI Aviator
+ Data.Aviation.Casr.Logbook.Types.Exam: examLocation :: HasExam c_aueI => Lens' c_aueI Location
+ Data.Aviation.Casr.Logbook.Types.Exam: examName :: HasExam c_aueI => Lens' c_aueI String
+ Data.Aviation.Casr.Logbook.Types.Exam: examResult :: HasExam c_aueI => Lens' c_aueI Int
+ Data.Aviation.Casr.Logbook.Types.Exam: examResultMaximum :: HasExam c_aueI => Lens' c_aueI Int
+ Data.Aviation.Casr.Logbook.Types.Exam: examTime :: HasExam c_aueI => Lens' c_aueI Time
+ Data.Aviation.Casr.Logbook.Types.Exam: instance Data.Aviation.Casr.Logbook.Types.Aviator.HasAviator Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance Data.Aviation.Casr.Logbook.Types.Exam.HasExam Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance Data.Aviation.Casr.Logbook.Types.Location.HasLocation Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance Data.Aviation.Casr.Logbook.Types.Time.HasTime Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.Exam: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Exam.Exam
+ Data.Aviation.Casr.Logbook.Types.FlightPath: FlightPath :: FlightPoint -> [FlightPoint] -> FlightPoint -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: [_flightEnd] :: FlightPath -> FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPath: [_flightIntermediate] :: FlightPath -> [FlightPoint]
+ Data.Aviation.Casr.Logbook.Types.FlightPath: [_flightStart] :: FlightPath -> FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPath: circuitsatdate :: String -> Int -> Day -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: class HasFlightPath c_amGa where flightEnd = (.) flightPath flightEnd flightIntermediate = (.) flightPath flightIntermediate flightStart = (.) flightPath flightStart
+ Data.Aviation.Casr.Logbook.Types.FlightPath: data FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: directcircuit :: FlightPoint -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: directflightpath :: FlightPoint -> FlightPoint -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: flightEnd :: HasFlightPath c_amGa => Lens' c_amGa FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPath: flightIntermediate :: HasFlightPath c_amGa => Lens' c_amGa [FlightPoint]
+ Data.Aviation.Casr.Logbook.Types.FlightPath: flightPath :: HasFlightPath c_amGa => Lens' c_amGa FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: flightPathList :: FlightPath -> [FlightPoint]
+ Data.Aviation.Casr.Logbook.Types.FlightPath: flightStart :: HasFlightPath c_amGa => Lens' c_amGa FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPath: instance Data.Aviation.Casr.Logbook.Types.FlightPath.HasFlightPath Data.Aviation.Casr.Logbook.Types.FlightPath.FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.FlightPath.FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.FlightPath.FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.FlightPath.FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPath: pointsatdate :: String -> [String] -> String -> Day -> FlightPath
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: FlightPoint :: String -> Maybe String -> Time -> FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: [_landingTime] :: FlightPoint -> Time
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: [_point] :: FlightPoint -> String
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: [_runway] :: FlightPoint -> Maybe String
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: class HasFlightPoint c_alv0 where landingTime = (.) flightPoint landingTime point = (.) flightPoint point runway = (.) flightPoint runway
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: data FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: flightPoint :: HasFlightPoint c_alv0 => Lens' c_alv0 FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: instance Data.Aviation.Casr.Logbook.Types.FlightPoint.HasFlightPoint Data.Aviation.Casr.Logbook.Types.FlightPoint.FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.FlightPoint.FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.FlightPoint.FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.FlightPoint.FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: landingTime :: HasFlightPoint c_alv0 => Lens' c_alv0 Time
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: point :: HasFlightPoint c_alv0 => Lens' c_alv0 String
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: pointatdate :: String -> Day -> FlightPoint
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: runway :: HasFlightPoint c_alv0 => Lens' c_alv0 (Maybe String)
+ Data.Aviation.Casr.Logbook.Types.FlightPoint: runwayatdate :: String -> String -> Day -> FlightPoint
+ Data.Aviation.Casr.Logbook.Types.Location: Location :: String -> Double -> Double -> Location
+ Data.Aviation.Casr.Logbook.Types.Location: [_locationlatitude] :: Location -> Double
+ Data.Aviation.Casr.Logbook.Types.Location: [_locationlongitude] :: Location -> Double
+ Data.Aviation.Casr.Logbook.Types.Location: [_locationname] :: Location -> String
+ Data.Aviation.Casr.Logbook.Types.Location: class HasLocation c_akq9 where locationlatitude = (.) location locationlatitude locationlongitude = (.) location locationlongitude locationname = (.) location locationname
+ Data.Aviation.Casr.Logbook.Types.Location: data Location
+ Data.Aviation.Casr.Logbook.Types.Location: instance Data.Aviation.Casr.Logbook.Types.Location.HasLocation Data.Aviation.Casr.Logbook.Types.Location.Location
+ Data.Aviation.Casr.Logbook.Types.Location: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Location.Location
+ Data.Aviation.Casr.Logbook.Types.Location: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Location.Location
+ Data.Aviation.Casr.Logbook.Types.Location: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Location.Location
+ Data.Aviation.Casr.Logbook.Types.Location: location :: HasLocation c_akq9 => Lens' c_akq9 Location
+ Data.Aviation.Casr.Logbook.Types.Location: locationlatitude :: HasLocation c_akq9 => Lens' c_akq9 Double
+ Data.Aviation.Casr.Logbook.Types.Location: locationlongitude :: HasLocation c_akq9 => Lens' c_akq9 Double
+ Data.Aviation.Casr.Logbook.Types.Location: locationname :: HasLocation c_akq9 => Lens' c_akq9 String
+ Data.Aviation.Casr.Logbook.Types.Logbook: Logbook :: Aviator -> (Entries ae se ee be) -> Logbook ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Logbook: [_logbookaviator] :: Logbook ae se ee be -> Aviator
+ Data.Aviation.Casr.Logbook.Types.Logbook: [_logbookentries] :: Logbook ae se ee be -> (Entries ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Logbook: aviatorlogbook :: Aviator -> [Entry ae se ee be] -> Logbook ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Logbook: class HasLogbook c_aFxa ae_aFr5 se_aFr6 ee_aFr7 be_aFr8 | c_aFxa -> ae_aFr5 se_aFr6 ee_aFr7 be_aFr8 where logbookaviator = (.) logbook logbookaviator logbookentries = (.) logbook logbookentries
+ Data.Aviation.Casr.Logbook.Types.Logbook: data Logbook ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Logbook: emptylogbook :: Aviator -> Logbook ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Logbook: instance (GHC.Classes.Eq be, GHC.Classes.Eq ee, GHC.Classes.Eq se, GHC.Classes.Eq ae) => GHC.Classes.Eq (Data.Aviation.Casr.Logbook.Types.Logbook.Logbook ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Logbook: instance (GHC.Classes.Ord be, GHC.Classes.Ord ee, GHC.Classes.Ord se, GHC.Classes.Ord ae) => GHC.Classes.Ord (Data.Aviation.Casr.Logbook.Types.Logbook.Logbook ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Logbook: instance (GHC.Show.Show be, GHC.Show.Show ee, GHC.Show.Show se, GHC.Show.Show ae) => GHC.Show.Show (Data.Aviation.Casr.Logbook.Types.Logbook.Logbook ae se ee be)
+ Data.Aviation.Casr.Logbook.Types.Logbook: instance Data.Aviation.Casr.Logbook.Types.Logbook.HasLogbook (Data.Aviation.Casr.Logbook.Types.Logbook.Logbook ae0 se0 ee0 be0) ae0 se0 ee0 be0
+ Data.Aviation.Casr.Logbook.Types.Logbook: logbook :: HasLogbook c_aFxa ae_aFr5 se_aFr6 ee_aFr7 be_aFr8 => Lens' c_aFxa (Logbook ae_aFr5 se_aFr6 ee_aFr7 be_aFr8)
+ Data.Aviation.Casr.Logbook.Types.Logbook: logbookaviator :: HasLogbook c_aFxa ae_aFr5 se_aFr6 ee_aFr7 be_aFr8 => Lens' c_aFxa Aviator
+ Data.Aviation.Casr.Logbook.Types.Logbook: logbookentries :: HasLogbook c_aFxa ae_aFr5 se_aFr6 ee_aFr7 be_aFr8 => Lens' c_aFxa (Entries ae_aFr5 se_aFr6 ee_aFr7 be_aFr8)
+ Data.Aviation.Casr.Logbook.Types.Logbook: singleentrylogbook :: Aviator -> Entry ae se ee be -> Logbook ae se ee be
+ Data.Aviation.Casr.Logbook.Types.Rating: Rating :: String -> Maybe Day -> Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: [_ratingAchieved] :: Rating -> Maybe Day
+ Data.Aviation.Casr.Logbook.Types.Rating: [_ratingName] :: Rating -> String
+ Data.Aviation.Casr.Logbook.Types.Rating: class HasRating c_ajvk where ratingAchieved = (.) rating ratingAchieved ratingName = (.) rating ratingName
+ Data.Aviation.Casr.Logbook.Types.Rating: data Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: dayrating :: String -> Day -> Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: instance Data.Aviation.Casr.Logbook.Types.Rating.HasRating Data.Aviation.Casr.Logbook.Types.Rating.Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Rating.Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Rating.Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Rating.Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: nodayrating :: String -> Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: rating :: HasRating c_ajvk => Lens' c_ajvk Rating
+ Data.Aviation.Casr.Logbook.Types.Rating: ratingAchieved :: HasRating c_ajvk => Lens' c_ajvk (Maybe Day)
+ Data.Aviation.Casr.Logbook.Types.Rating: ratingName :: HasRating c_ajvk => Lens' c_ajvk String
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: SimulatorFlight :: String -> Time -> String -> [Aviator] -> TimeAmount -> TimeAmount -> SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_instrumentsimulatorTime] :: SimulatorFlight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_simulatorTime] :: SimulatorFlight -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_simulatorflightname] :: SimulatorFlight -> String
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_simulatorflighttime] :: SimulatorFlight -> Time
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_simulatorothercrew] :: SimulatorFlight -> [Aviator]
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: [_simulatortype] :: SimulatorFlight -> String
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: class HasSimulatorFlight c_awlD where instrumentsimulatorTime = (.) simulatorFlight instrumentsimulatorTime simulatorTime = (.) simulatorFlight simulatorTime simulatorflightname = (.) simulatorFlight simulatorflightname simulatorflighttime = (.) simulatorFlight simulatorflighttime simulatorothercrew = (.) simulatorFlight simulatorothercrew simulatortype = (.) simulatorFlight simulatortype
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: data SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: dayonlysimulator :: String -> Day -> String -> [Aviator] -> TimeAmount -> TimeAmount -> SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instance Data.Aviation.Casr.Logbook.Types.SimulatorFlight.HasSimulatorFlight Data.Aviation.Casr.Logbook.Types.SimulatorFlight.SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instance Data.Aviation.Casr.Logbook.Types.Time.HasTime Data.Aviation.Casr.Logbook.Types.SimulatorFlight.SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.SimulatorFlight.SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.SimulatorFlight.SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.SimulatorFlight.SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: instrumentsimulatorTime :: HasSimulatorFlight c_awlD => Lens' c_awlD TimeAmount
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatorFlight :: HasSimulatorFlight c_awlD => Lens' c_awlD SimulatorFlight
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatorTime :: HasSimulatorFlight c_awlD => Lens' c_awlD TimeAmount
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatorflightname :: HasSimulatorFlight c_awlD => Lens' c_awlD String
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatorflighttime :: HasSimulatorFlight c_awlD => Lens' c_awlD Time
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatorothercrew :: HasSimulatorFlight c_awlD => Lens' c_awlD [Aviator]
+ Data.Aviation.Casr.Logbook.Types.SimulatorFlight: simulatortype :: HasSimulatorFlight c_awlD => Lens' c_awlD String
+ Data.Aviation.Casr.Logbook.Types.Time: Time :: Day -> Maybe TimeOfDay -> Time
+ Data.Aviation.Casr.Logbook.Types.Time: [_daytime] :: Time -> Day
+ Data.Aviation.Casr.Logbook.Types.Time: [_timeofday] :: Time -> Maybe TimeOfDay
+ Data.Aviation.Casr.Logbook.Types.Time: class HasTime c_aiEy where daytime = (.) time daytime timeofday = (.) time timeofday
+ Data.Aviation.Casr.Logbook.Types.Time: data Time
+ Data.Aviation.Casr.Logbook.Types.Time: dayandtime :: Day -> TimeOfDay -> Time
+ Data.Aviation.Casr.Logbook.Types.Time: dayonly :: Day -> Time
+ Data.Aviation.Casr.Logbook.Types.Time: daytime :: HasTime c_aiEy => Lens' c_aiEy Day
+ Data.Aviation.Casr.Logbook.Types.Time: instance Data.Aviation.Casr.Logbook.Types.Time.HasTime Data.Aviation.Casr.Logbook.Types.Time.Time
+ Data.Aviation.Casr.Logbook.Types.Time: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.Time.Time
+ Data.Aviation.Casr.Logbook.Types.Time: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.Time.Time
+ Data.Aviation.Casr.Logbook.Types.Time: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.Time.Time
+ Data.Aviation.Casr.Logbook.Types.Time: time :: HasTime c_aiEy => Lens' c_aiEy Time
+ Data.Aviation.Casr.Logbook.Types.Time: timeofday :: HasTime c_aiEy => Lens' c_aiEy (Maybe TimeOfDay)
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: TimeAmount :: Int -> Digit -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: [_hours] :: TimeAmount -> Int
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: [_tenthofhour] :: TimeAmount -> Digit
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: addtimeamount :: TimeAmount -> TimeAmount -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: class HasTimeAmount c_ahqa where hours = (.) timeAmount hours tenthofhour = (.) timeAmount tenthofhour
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: data TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: hours :: HasTimeAmount c_ahqa => Lens' c_ahqa Int
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: instance Data.Aviation.Casr.Logbook.Types.TimeAmount.HasTimeAmount Data.Aviation.Casr.Logbook.Types.TimeAmount.TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: instance GHC.Base.Monoid Data.Aviation.Casr.Logbook.Types.TimeAmount.TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: instance GHC.Classes.Eq Data.Aviation.Casr.Logbook.Types.TimeAmount.TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: instance GHC.Classes.Ord Data.Aviation.Casr.Logbook.Types.TimeAmount.TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: instance GHC.Show.Show Data.Aviation.Casr.Logbook.Types.TimeAmount.TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: parttimeamount :: Digit -> TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: tenthofhour :: HasTimeAmount c_ahqa => Lens' c_ahqa Digit
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: timeAmount :: HasTimeAmount c_ahqa => Lens' c_ahqa TimeAmount
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: timeAmountBy10 :: TimeAmount -> Int
+ Data.Aviation.Casr.Logbook.Types.TimeAmount: zerotimeamount :: TimeAmount

Files

casr-logbook.cabal view
@@ -1,5 +1,5 @@ name:               casr-logbook-version:            0.2.2+version:            0.3.0 license:            OtherLicense license-file:       LICENSE author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>@@ -32,19 +32,16 @@                     Haskell2010    build-depends:-                    base < 5 && >= 4.8-                    , casr-logbook-types >= 0.0.1 && < 0.1-                    , casr-logbook-meta >= 0.0.4 && < 0.1-                    , casr-logbook-html >= 0.0.2 && < 0.1-                    , casr-logbook-meta-html >= 0.0.4 && < 0.1-                    , casr-logbook-reports >= 0.0.2 && < 0.1-                    , casr-logbook-reports-html >= 0.0.2 && < 0.1-                    , casr-logbook-reports-meta >= 0.0.3 && < 0.1-                    , casr-logbook-reports-meta-html >= 0.0.3 && < 0.1+                    base >= 4.8 && < 5+                    , containers >= 0.4 && < 0.6                     , lucid >= 2.9 && < 3-                    , digit < 3 && >= 0.2.8-                    , time < 2 && >= 1.5-+                    , digit >= 0.2.8 && < 3+                    , time >= 1.5 && < 2+                    , lucid >= 2.9 && < 3+                    , lens >= 4.1 && < 5+                    , digit >= 0.2.8 && < 3+                    , time >= 1.5 && < 1.6+                    , text >= 1.2 && < 1.3   ghc-options:                     -Wall @@ -56,7 +53,57 @@    exposed-modules:                     Data.Aviation.Casr.Logbook-                    +                    Data.Aviation.Casr.Logbook.Meta+                    Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense+                    Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta+                    Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense+                    Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense+                    Data.Aviation.Casr.Logbook.Meta.BriefingExpense+                    Data.Aviation.Casr.Logbook.Meta.BriefingMeta+                    Data.Aviation.Casr.Logbook.Meta.ExamExpense+                    Data.Aviation.Casr.Logbook.Meta.ExamMeta+                    Data.Aviation.Casr.Logbook.Meta.Image+                    Data.Aviation.Casr.Logbook.Meta.ImageType+                    Data.Aviation.Casr.Logbook.Meta.Passenger+                    Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense+                    Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta+                    Data.Aviation.Casr.Logbook.Meta.TrackLog+                    Data.Aviation.Casr.Logbook.Meta.TrackLogs+                    Data.Aviation.Casr.Logbook.Meta.TrackLogType+                    Data.Aviation.Casr.Logbook.Meta.Video+                    Data.Aviation.Casr.Logbook.Meta.VideoType+                    Data.Aviation.Casr.Logbook.Meta.Visualisation+                    Data.Aviation.Casr.Logbook.Reports+                    Data.Aviation.Casr.Logbook.Reports.FlightTimeReport+                    Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport+                    Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90+                    Data.Aviation.Casr.Logbook.Types+                    Data.Aviation.Casr.Logbook.Types.Rating+                    Data.Aviation.Casr.Logbook.Types.Aviator+                    Data.Aviation.Casr.Logbook.Types.Engine+                    Data.Aviation.Casr.Logbook.Types.Aircraft+                    Data.Aviation.Casr.Logbook.Types.TimeAmount+                    Data.Aviation.Casr.Logbook.Types.DayNight+                    Data.Aviation.Casr.Logbook.Types.Location+                    Data.Aviation.Casr.Logbook.Types.Command+                    Data.Aviation.Casr.Logbook.Types.Time+                    Data.Aviation.Casr.Logbook.Types.FlightPoint+                    Data.Aviation.Casr.Logbook.Types.FlightPath+                    Data.Aviation.Casr.Logbook.Types.AircraftFlight+                    Data.Aviation.Casr.Logbook.Types.SimulatorFlight+                    Data.Aviation.Casr.Logbook.Types.Exam+                    Data.Aviation.Casr.Logbook.Types.Briefing+                    Data.Aviation.Casr.Logbook.Types.Entry+                    Data.Aviation.Casr.Logbook.Types.Entries+                    Data.Aviation.Casr.Logbook.Types.Logbook++                    Data.Aviation.Casr.Logbook.Html.Html+                    Data.Aviation.Casr.Logbook.Meta.Html+                    Data.Aviation.Casr.Logbook.Reports.Html+                    Data.Aviation.Casr.Logbook.Reports.Meta+                    Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport+                    Data.Aviation.Casr.Logbook.Reports.Meta.Html+ test-suite doctests   type:                     exitcode-stdio-1.0
changelog view
@@ -1,3 +1,7 @@+0.3.0++* Move all packages into one.+ 0.2.2  * Add `Lucid` module in export.
+ src/Data/Aviation/Casr/Logbook/Html/Html.hs view
@@ -0,0 +1,691 @@+{-# 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(+    arn+  , firstname+  , surname+  , logbookaviator+  , daytime+  , briefingTime+  , briefingName+  , examName+  , examTime+  , simulatorflightname+  , simulatortype+  , point+  , flightStart+  , flightEnd+  , flightpath+  , aircraftRegistration+  , aircraftflightname+  , flightaircraft+  , landingTime+  , zerotimeamount+  , flightPathList+  , Command(ICUS, Dual, InCommand)+  , Rating(Rating)+  , Aircraft(Aircraft)+  , Engine(Single, Multi)+  , FlightPath+  , FlightPoint(FlightPoint)+  , Time(Time)+  , TimeAmount(TimeAmount)+  , DayNight(DayNight)+  , Briefing(Briefing)+  , Exam(Exam)+  , Location(Location)+  , Aviator(Aviator)+  , Entries(Entries)+  , Logbook(Logbook)+  , AircraftFlight(AircraftFlight)+  , SimulatorFlight(SimulatorFlight)+  , Briefing+  , Exam+  , Entry(BriefingEntry, ExamEntry, SimulatorFlightEntry, AircraftFlightEntry)+  )+import Data.Bool(not)+import Data.Char(toUpper)+import Data.Digit(Digit)+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 t =+  span_ [] $+    do  fromString (strTimeAmount t)+        "hrs"++strTimeAmount ::+  TimeAmount+  -> String+strTimeAmount (TimeAmount h x) =+  show h <> "." <> show x++strEngine ::+  Engine+  -> String+strEngine Single =+  "single-engine"+strEngine Multi =+  "multi-engine"++htmlAircraft ::+  AircraftFlight+  -> Aircraft+  -> Html ()+htmlAircraft _ (Aircraft t r e) =+  span_ [class_ "aircraft"] $+    do  span_ [class_ "aircrafttype"] (fromString t)+        " "+        span_ [class_ "aircraftregistration"] (fromString r)+        " "+        span_ [class_ "aircraftengine"] (fromString (strEngine e))++htmlRatingDay ::+  Maybe Day+  -> Html ()+htmlRatingDay =+  maybe mempty (\q -> +    do  " "+        span_ [] $+          fromString (show q))++htmlRating ::+  Rating+  -> Html ()+htmlRating (Rating n d) =+  span_ [] $+    do  span_ [] (fromString n)+        htmlRatingDay d++htmlRatingShort ::+  Rating+  -> Html ()+htmlRatingShort (Rating n _) =+  span_ [] (fromString n)++htmlRatings ::+  [Rating]+  -> Html ()+htmlRatings =+  sequence_ . intersperse ", " . (htmlRating <$>)++htmlRatingsShort ::+  [Rating]+  -> Html ()+htmlRatingsShort =+  sequence_ . intersperse ", " . (htmlRatingShort <$>)++htmlAviatorName ::+  String+  -> String+  -> Html ()+htmlAviatorName s f =+  do  li_ [id_ "aviatorname"] $+        do  span_ [class_ "key"] "Name: "+            span_ [class_ "value"] $+              do  fromString (toUpper <$> s)+                  ", "+                  fromString f++htmlAviatorARN ::+  [Digit]+  -> Html ()+htmlAviatorARN a =+  when (not . null $ a) $+    do  li_ [id_ "aviatorarn"] $ +          do  span_ [class_ "key"] "ARN: "+              span_ [class_ "value"] $+                fromString (a >>= show)++htmlAviatorDob ::+  Maybe Day+  -> Html ()+htmlAviatorDob =+  maybe mempty (\q ->+    do  li_ [id_ "aviatordob"] $+          do  span_ [class_ "key"] "Date of Birth: "+              span_ [class_ "value"] .+                fromString . show $ q)++htmlAviatorRatings ::+  [Rating]+  -> Html ()+htmlAviatorRatings r =+  when (not . null $ r) $+    do  li_ [id_ "aviatorratings"] $ +          do  span_ [class_ "key"] "Ratings: "+              span_ [class_ "value"] .+                htmlRatings $ r++htmlAviator ::+  Aviator+  -> Html ()+htmlAviator (Aviator s f a d r) =+  div_ [id_ "aviator", class_ "aviator"] .+    ul_ [] $+      do  htmlAviatorName s f+          htmlAviatorARN a+          htmlAviatorDob d+          htmlAviatorRatings r+            +htmlAviatorShort ::+  Aviator+  -> Html ()    +htmlAviatorShort (Aviator s f a _ r) =+  do  fromString f+      " "+      fromString s+      when (not . null $ a) $ " "+      fromString (a >>= show)+      when (not . null $ r) $ " "+      htmlRatingsShort r++htmlFlightPoint ::+  AircraftFlight+  -> FlightPoint+  -> Html ()+htmlFlightPoint _ (FlightPoint p _ _) =+  span_ [class_ "flightpoint"] $+    fromString p++htmlFlightPath ::+  AircraftFlight+  -> FlightPath+  -> Html ()+htmlFlightPath fl p =+  span_ [class_ "flightpath"] $+    fold (intersperse (toHtmlRaw (" &mdash; " :: Text)) (htmlFlightPoint fl <$> flightPathList p))+    +htmlCommand ::+  AircraftFlight+  -> Command+  -> Html ()+htmlCommand _ InCommand =+  span_ [class_ "command incommand"] "In-Command"+htmlCommand _ (ICUS a) =+  do  span_ [class_ "command incommandunderinstruction"] "In-Command Under-Instruction"+      span_ [class_ "commandphrase"] $ " by "+      span_ [class_ "commandaviator"] $ htmlAviatorShort a+htmlCommand _ (Dual a) =+  do  span_ [class_ "command dualunderinstruction"] "Dual Under-Instruction"+      span_ [class_ "commandphrase"] $ " by "+      span_ [class_ "commandaviator"] $ htmlAviatorShort a++htmlTimeAmountZero ::+  TimeAmount+  -> Html ()+htmlTimeAmountZero =+  htmlTimeAmountZeroWith id++htmlTimeAmountZeroWith :: +  Monoid a =>+  (Html () -> a)+  -> TimeAmount+  -> a+htmlTimeAmountZeroWith f z =+  if z == zerotimeamount+    then+      mempty+    else+      f (htmlTimeAmount z)++htmlAviators ::+  [Aviator]+  -> Html ()+htmlAviators =+  ul_ [] .+    mapM_ (li_ [] . htmlAviatorShort)++htmlAircraftFlightName ::+  String+  -> Html ()+htmlAircraftFlightName n =+  h3_ [class_ "aircraftflightname"] $+          fromString n++htmlAircraftFlight ::+  AircraftFlight+  -> Html ()+htmlAircraftFlight fl@(AircraftFlight n a c (DayNight d m) p o i) =+  div_ [class_ "aircraftflight"] $+    do  htmlAircraftFlightName n+        ul_ [] $+          do  li_ [] $+                do  span_ [class_ "key"] "Time: "+                    span_ [class_ "value"] .+                     htmlFlightPathTime $ p+              li_ [] $+                do  span_ [class_ "key"] "Aircraft: "+                    span_ [class_ "value"] .+                     htmlAircraft fl $ a+              li_ [] $+                do  span_ [class_ "key"] "Command: "+                    span_ [class_ "value"] .+                     htmlCommand fl $ c+              htmlTimeAmountZeroWith (\t ->+                li_ [] $+                do  span_ [class_ "key"] "Amount (day): "+                    span_ [class_ "value"] t) d+              htmlTimeAmountZeroWith (\t ->+                li_ [] $+                do  span_ [class_ "key"] "Amount (night): "+                    span_ [class_ "value"] t) m+              htmlTimeAmountZeroWith (\t ->+                li_ [] $+                do  span_ [class_ "key"] "Amount (instrument): "+                    span_ [class_ "value"] t) i+              li_ [] $+                do  span_ [class_ "key"] "Flight Path: "+                    span_ [class_ "value"] .+                      htmlFlightPath fl $ p+              when (not . null $ o) . li_ [] $+                do  span_ [class_ "key"] "Other Crew: "+                    span_ [class_ "value"] .+                      htmlAviators $ o++htmlTimeOfDayTime ::+  Maybe TimeOfDay+  -> Html ()+htmlTimeOfDayTime =+  maybe mempty (\e -> do  " "+                          fromString (show e))++htmlTime ::+  Time+  -> Html ()+htmlTime (Time t d) =+  span_ [class_ "time"] $ +    do  fromString (show t)+        htmlTimeOfDayTime d++htmlFlightPathTime ::+  FlightPath+  -> Html()+htmlFlightPathTime p =+  let s = p ^. flightStart . landingTime+      e = p ^. flightEnd . landingTime+  in  if s == e+        then+          htmlTime s+        else+          do  htmlTime s+              toHtmlRaw (" &mdash; " :: Text)+              htmlTime e++htmlSimulatorFlightName ::+  String+  -> Html ()+htmlSimulatorFlightName n =+  h3_ [class_ "simulatorflightname"] $+          fromString n++htmlSimulatorFlight ::+  SimulatorFlight+  -> Html ()+htmlSimulatorFlight (SimulatorFlight n t y o a i) =+  div_ [class_ "simulatorflight"] $+    do  htmlSimulatorFlightName n+        ul_ [] $+          do  li_ [] $+                do  span_ [class_ "key"] "Time: "+                    span_ [class_ "value"] .+                     htmlTime $ t+              li_ [] $+                do  span_ [class_ "key"] "Type: "+                    span_ [class_ "value"] (fromString y)+              when (not . null $ o) . li_ [] $+                do  span_ [class_ "key"] "Other Crew: "+                    div_ [class_ "value"] .+                      htmlAviators $ o+              li_ [] $+                do  span_ [class_ "key"] "Amount: "+                    span_ [class_ "value"] .+                     htmlTimeAmount $ a+              li_ [] $+                do  span_ [class_ "key"] "Instrument: "+                    span_ [class_ "value"] .+                     htmlTimeAmount $ i+  +htmlLocation ::+  Location+  -> Html ()+htmlLocation (Location n t o) =  +  span_ [class_ "location"] $ +    do  fromString n+        " "+        let t' = fromString (show t)+            o' = fromString (show o)+        span_ [class_ "locationopenstreetmap"] $+          a_ [href_ ("http://www.openstreetmap.org/?mlat=" <> t' <> "&mlon=" <> o' <> "#map=16/" <> t' <> "/" <> o')] +          "osm"+        " "+        span_ [class_ "locationgooglemaps"] $+          a_ [href_ ("https://www.google.com/maps/?q=" <> t' <> "," <> o')]+          "gmap"+        +htmlExamResult ::+  Int+  -> Int+  -> Html ()+htmlExamResult x y =+  do  fromString (show x)+      "/"+      fromString (show y)++htmlExamName ::+  String+  -> Html ()+htmlExamName n =+  h3_ [class_ "examname"] $ +    fromString n++htmlExam ::+  Exam+  -> Html ()+htmlExam (Exam n l t a r m) =+  let r' = do  span_ [class_ "examresult"] . fromString . show $ r+               span_ [class_ "examresultoutof"] "/"+               span_ [class_ "examresultmaximum"] . fromString . show $ m+               " ("+               span_ [class_ "examresultpercentage"] . fromString . printf "%.2f" $ (100 * fromIntegral r / fromIntegral m :: Double)+               span_ [class_ "examresultpercentsign"] "%"+               ")"+  in  div_ [class_ "exam"] $+        do  htmlExamName n+            ul_ [] $+              do  li_ [] $+                    do  span_ [class_ "key"] "Time: "+                        span_ [class_ "value"] .+                          htmlTime $ t+                  li_ [] $+                    do  span_ [class_ "key"] "Location: "+                        span_ [class_ "value"] .+                          htmlLocation $ l+                  li_ [] $+                    do  span_ [class_ "key"] "Delegate: "+                        span_ [class_ "value"] .+                          htmlAviatorShort $ a+                  li_ [] $+                    do  span_ [class_ "key"] "Result: "+                        span_ [class_ "value"] r'++htmlBriefingName ::+  String+  -> Html ()+htmlBriefingName n =+  h3_ [class_ "briefingname"] $ +    fromString n++htmlBriefing ::+  Briefing+  -> Html ()+htmlBriefing (Briefing n l t a m) =+  div_ [class_ "briefing"] $+    do  htmlBriefingName n+        ul_ [] $+          do  li_ [] $+                do  span_ [class_ "key"] "Time: "+                    span_ [class_ "value"] .+                      htmlTime $ t+              li_ [] $+                do  span_ [class_ "key"] "Location: "+                    span_ [class_ "value"] .+                      htmlLocation $ l+              li_ [] $+                do  span_ [class_ "key"] "Amount: "+                    span_ [class_ "value"] .+                      htmlTimeAmountZero $ m+              li_ [] $+                do  span_ [class_ "key"] "Briefer: "+                    span_ [class_ "value"] .+                      htmlAviatorShort $ a++space2dot ::+  String+  -> String+space2dot =+  (<$>) $ \c -> case c of +                ' ' -> '.'+                _   -> c++htmlEntryTag ::+  Entry a b c d+  -> Html ()+htmlEntryTag (AircraftFlightEntry e _) =+  let lk = space2dot . concat $+                          [+                            "FLT_"+                          , e ^. aircraftflightname+                          , "_"+                          , e ^. flightaircraft . aircraftRegistration+                          , "_"+                          , e ^. flightpath . flightStart . point+                          , "-"+                          , e ^. flightpath . flightEnd . point+                          ]+  in  do  a_ [id_ (Text.pack lk)] ""+          a_ [href_ (Text.pack ('#' : lk))] . span_ [class_ "entrytag"] $ "FLT"++htmlEntryTag (SimulatorFlightEntry e _) =+  let lk = space2dot . concat $+                          [+                            "SIM_"+                          , e ^. simulatorflightname+                          , "_"+                          , e ^. simulatortype+                          ]+  in  do  a_ [id_ (Text.pack lk)] ""+          a_ [href_ (Text.pack ('#' : lk))] . span_ [class_ "entrytag"] $ "SIM"+htmlEntryTag (ExamEntry e _) =+  let lk = space2dot . concat $+                          [+                            "EXM_"+                          , e ^. examName+                          , "_"+                          , show (e ^. examTime . daytime)+                          ]+  in  do  a_ [id_ (Text.pack lk)] ""+          a_ [href_ (Text.pack ('#' : lk))] . span_ [class_ "entrytag"] $ "EXM"+htmlEntryTag (BriefingEntry e _) =+  let lk = space2dot . concat $+                          [+                            "BRF_"+                          , e ^. briefingName+                          , "_"+                          , show (e ^. briefingTime . daytime)+                          ]+  in  do  a_ [id_ (Text.pack lk)] ""+          a_ [href_ (Text.pack ('#' : lk))] . span_ [class_ "entrytag"] $ "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 aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' x =+  do  htmlEntryTag x+      case x of+        AircraftFlightEntry e ae ->+          do  div_ [] $+                do  htmlAircraftFlight e+                    aircraftFlightMeta' e ae+        SimulatorFlightEntry e ae ->+          do  div_ [] $+                do  htmlSimulatorFlight e+                    simulatorFlightMeta' e ae+        ExamEntry e ae ->+          do  div_ [] $+                do  htmlExam e+                    examMeta' e ae+        BriefingEntry e ae ->+          do  div_ [] $+                do  htmlBriefing e+                    briefingMeta' e 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 aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' (Entries es) =+  mapM_ (\e -> hr_ [] *> htmlEntry aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' e) 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 aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' reports' (Logbook a es) =+  do  htmlAviator a+      hr_ []+      reports'+      htmlEntries aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' es++htmlTitleAviator ::+  Aviator+  -> Html ()+htmlTitleAviator a =+  fromString (concat+                [+                  a ^. firstname+                , " "+                , a ^. surname+                , " ("+                , show =<< (a ^. arn)+                , ")"+                ])++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 aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' reports' b =+  do  doctype_+      html_ [lang_ "en"] $+        do  head_ $ +              do  title_ ("Pilot Personal Logbook " <> toHtmlRaw (" &mdash; " :: Text) <> htmlTitleAviator (b ^. logbookaviator))+                  link_ [href_ "https://fonts.googleapis.com/css?family=Inconsolata:400,700", rel_ "stylesheet", type_ "text/css"]+                  link_ [href_ "casr-logbook.css", rel_ "stylesheet", type_ "text/css"]+                  link_ [href_ "/atom.xml", rel_ "alternate", type_ "application/atom+xml", title_ "Atom feed"]+                  script_ [type_ "text/javascript", src_ "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"] ("" :: Text)+                  script_ [type_ "text/javascript", src_ "https://raw.github.com/Mathapedia/LaTeX2HTML5/master/latex2html5.min.js"] ("" :: Text)                  +            body_ [class_ "casr-logbook"] $ +              do  htmlLogbookHeader b+                  htmlLogbook aircraftFlightMeta' simulatorFlightMeta' examMeta' briefingMeta' reports' b++htmlLogbookHeader ::+  Logbook a b c d+  -> Html ()+htmlLogbookHeader _ =+  do  div_ [id_ "header", class_ "header"] $+        h1_ "Pilot Personal Log Book"+      div_ [id_ "subheader", class_ "subheader"] $+        h2_ $+          do  "Civil Aviation Safety Regulation 1998 (61.345)"+              " "+              span_ [class_ "austlii"] $+                a_ [href_ "http://www.austlii.edu.au/au/legis/cth/consol_reg/casr1998333/s61.345.html"] "austlii.edu.au"
+ src/Data/Aviation/Casr/Logbook/Meta.hs view
@@ -0,0 +1,23 @@+module Data.Aviation.Casr.Logbook.Meta (+  module A+) where++import Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense as A+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta as A+import Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense as A+import Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense as A+import Data.Aviation.Casr.Logbook.Meta.BriefingExpense as A+import Data.Aviation.Casr.Logbook.Meta.BriefingMeta as A+import Data.Aviation.Casr.Logbook.Meta.ExamExpense as A+import Data.Aviation.Casr.Logbook.Meta.ExamMeta as A+import Data.Aviation.Casr.Logbook.Meta.Image as A+import Data.Aviation.Casr.Logbook.Meta.ImageType as A+import Data.Aviation.Casr.Logbook.Meta.Passenger as A+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense as A+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta as A+import Data.Aviation.Casr.Logbook.Meta.TrackLog as A+import Data.Aviation.Casr.Logbook.Meta.TrackLogs as A+import Data.Aviation.Casr.Logbook.Meta.TrackLogType as A+import Data.Aviation.Casr.Logbook.Meta.Video as A+import Data.Aviation.Casr.Logbook.Meta.VideoType as A+import Data.Aviation.Casr.Logbook.Meta.Visualisation as A
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense(+  AircraftFlightExpense(ExpenseAircraftUsage, ExpenseAircraftLanding)+, AsAircraftFlightExpense(..)+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense+import Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data AircraftFlightExpense =+  ExpenseAircraftUsage AircraftUsageExpense+  | ExpenseAircraftLanding AircraftLandingExpense+  deriving (Eq, Ord, Show)++makeClassyPrisms ''AircraftFlightExpense
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta(+  AircraftFlightMeta(AircraftFlightMeta)+, HasAircraftFlightMeta(..)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense+import Data.Aviation.Casr.Logbook.Meta.Image+import Data.Aviation.Casr.Logbook.Meta.Passenger+import Data.Aviation.Casr.Logbook.Meta.TrackLog+import Data.Aviation.Casr.Logbook.Meta.Video+import Data.Aviation.Casr.Logbook.Meta.Visualisation+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data AircraftFlightMeta =+  AircraftFlightMeta {+    _tracklogs :: [TrackLog]+  , _visualisations :: [Visualisation]+  , _images :: [Image]+  , _videos :: [Video]+  , _expenses :: [AircraftFlightExpense]+  , _pax :: [Passenger]+  } deriving (Eq, Ord, Show)++makeClassy '' AircraftFlightMeta
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense(+  AircraftLandingExpense(AircraftLandingExpense)+, HasAircraftLandingExpense(..)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data AircraftLandingExpense =+  AircraftLandingExpense {+    _aircraftlandingexpenseamount :: Int+  , _aircraftlandingexpensename :: String+  } deriving (Eq, Ord, Show)++makeClassy ''AircraftLandingExpense
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense(+  AircraftUsageExpense(AircraftUsageExpense)+, HasAircraftUsageExpense(..)+, aircraftUsageCost+) where++import Control.Lens(makeClassy, (^.))+import Data.Aviation.Casr.Logbook.Types.AircraftFlight(HasAircraftFlight, daynight)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(timeAmountBy10)+import Data.Aviation.Casr.Logbook.Types.DayNight(totalDayNight)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show, (*))++data AircraftUsageExpense =+  AircraftUsageExpense {+    _aircraftusageexpenseperhour :: Int+  , _aircraftusageexpensename :: String+  } deriving (Eq, Ord, Show)++makeClassy ''AircraftUsageExpense++aircraftUsageCost ::+  HasAircraftFlight s =>+  s+  -> AircraftUsageExpense+  -> Int+aircraftUsageCost fl (AircraftUsageExpense perhour _) =+  let z = totalDayNight (fl ^. daynight)+  in  timeAmountBy10 z * perhour
+ src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.BriefingExpense(+  BriefingExpense(BriefingExpense)+, HasBriefingExpense(..)+, briefingCost+) where++import Control.Lens(makeClassy, (^.))+import Data.Aviation.Casr.Logbook.Types.Briefing(HasBriefing, briefingTimeAmount)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(timeAmountBy10)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show, (*))++data BriefingExpense =+  BriefingExpense {+    _briefingexpenseperhour :: Int+  , _briefingexpensename :: String+  } deriving (Eq, Ord, Show)++makeClassy ''BriefingExpense++briefingCost ::+  HasBriefing s =>+  s+  -> BriefingExpense+  -> Int+briefingCost br (BriefingExpense perhour _) =+  let z = br ^. briefingTimeAmount+  in  timeAmountBy10 z * perhour
+ src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.BriefingMeta(+  BriefingMeta(BriefingMeta)+, HasBriefingMeta(..)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.BriefingExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype BriefingMeta =+  BriefingMeta+    [BriefingExpense]+  deriving (Eq, Ord, Show)++makeClassy ''BriefingMeta+makeWrapped ''BriefingMeta
+ src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.ExamExpense(+  ExamExpense(ExamExpense)+, HasExamExpense(..)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data ExamExpense =+  ExamExpense {+    _examexpenseamount :: Int+  , _examexpensename :: String+  } deriving (Eq, Ord, Show)++makeClassy ''ExamExpense
+ src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.ExamMeta(+  ExamMeta(ExamMeta)+, HasExamMeta(..)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.ExamExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype ExamMeta =+  ExamMeta+    [ExamExpense]+  deriving (Eq, Ord, Show)++makeClassy ''ExamMeta+makeWrapped ''ExamMeta
+ src/Data/Aviation/Casr/Logbook/Meta/Html.hs view
@@ -0,0 +1,469 @@+{-# 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.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(Image)+  , 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.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 fl e@(AircraftUsageExpense perhour name) =+  span_ [class_ "aircraftusageexpense"] $+    do  span_ [class_ "aircraftusageexpensecost"] . fromString . ('$':) . showThousandCentsAsDollars $ aircraftUsageCost fl e+        span_ [class_ "aircraftusageexpensephrase"] " at "+        span_ [class_ "aircraftusageexpenseperhour"] . fromString . ('$':) . showCentsAsDollars $ perhour+        span_ [class_ "aircraftusageexpensephrase"] " per hour"+        when (not . null $ name) . span_ [class_ "aircraftusageexpensename"] $+          do  " ("+              fromString name+              ")"++htmlAircraftLandingExpense ::+  AircraftFlight+  -> AircraftLandingExpense+  -> Html ()+htmlAircraftLandingExpense _ (AircraftLandingExpense amount name) =+  span_ [class_ "aircraftlandingexpense"] $+    do  span_ [class_ "aircraftlandingexpensecost"] . fromString . ('$':) . showThousandCentsAsDollars $ (amount * 10)+        when (not . null $ name) . span_ [class_ "aircraftlandingexpensename"] $+          do  " ("+              fromString name+              ")"++htmlAircraftFlightExpense ::+  AircraftFlight+  -> AircraftFlightExpense+  -> Html ()+htmlAircraftFlightExpense fl (ExpenseAircraftUsage e) =+  htmlAircraftUsageExpense fl e+htmlAircraftFlightExpense fl (ExpenseAircraftLanding e) =+  htmlAircraftLandingExpense fl e++htmlSimulatorFlightExpense ::+  SimulatorFlight+  -> SimulatorFlightExpense+  -> Html ()+htmlSimulatorFlightExpense sf e@(SimulatorFlightExpense perhour name) =+  span_ [class_ "simulatorflightexpense"] $+    do  span_ [class_ "simulatorflightcost"] . fromString . ('$':) . showThousandCentsAsDollars $ simulatorFlightCost sf e+        span_ [class_ "simulatorflightexpensephrase"] " at "+        span_ [class_ "simulatorflightexpenseperhour"] . fromString . ('$':) . showCentsAsDollars $ perhour+        span_ [class_ "simulatorflightexpensephrase"] " per hour"+        when (not . null $ name) . span_ [class_ "simulatorflightexpensename"] $+          do  " ("+              fromString name+              ")"++htmlExamExpense ::+  Exam+  -> ExamExpense+  -> Html ()+htmlExamExpense _ (ExamExpense amount name) =+  span_ [class_ "examexpense"] $+    do  span_ [class_ "examexpensecost"] . fromString . ('$':) . showThousandCentsAsDollars $ (amount * 10)+        when (not . null $ name) . span_ [class_ "examexpensename"] $+          do  " ("+              fromString name+              ")"++htmlBriefingExpense ::+  Briefing+  -> BriefingExpense+  -> Html ()+htmlBriefingExpense br e@(BriefingExpense perhour name) =+  span_ [class_ "briefingexpense"] $+    do  span_ [class_ "briefingexpensecost"] . fromString . ('$':) . showThousandCentsAsDollars $ briefingCost br e+        span_ [class_ "briefingexpensephrase"] " at "+        span_ [class_ "briefingexpenseperhour"] . fromString . ('$':) . showCentsAsDollars $ perhour+        span_ [class_ "briefingexpensephrase"] " per hour"+        when (not . null $ name) . span_ [class_ "briefingexpensename"] $+          do  " ("+              fromString name+              ")"++htmlVisualisation ::+  AircraftFlight+  -> Visualisation+  -> Html ()+htmlVisualisation _ (Doarama i _ n) =+  let n' = fromMaybe "doarama.com" n+  in  do  a_ [href_ ("http://doarama.com/view/" <> Text.pack i)] $ +            span_ [class_ "Visualisation_name"] (fromString n')+          -- p_ (iframe_ [src_ ("http://www.doarama.com/embed?k=" <> Text.pack e), width_ "560", height_ "315", termWith -- "allowfullscreen" [] "allowfullscreen"] "")++strImageType ::+  ImageType+  -> String+strImageType Jpg =+  "jpg"+strImageType Png =+  "png"+strImageType Gif =+  "gif"++htmlImageSource ::+  AircraftFlight+  -> Maybe String+  -> Html ()+htmlImageSource _ =+  maybe mempty (\s' -> span_ [] (fromString ("Image source: " <> s')))++htmlImage ::+  AircraftFlight+  -> Image+  -> Html ()+htmlImage fl (Image u t s n) =+  let u' = fromString u      +      n' = fromMaybe ("Image (" <> strImageType t <> ")") n+  in  do  a_ [href_ u'] $+            img_ [src_ u', width_ "120", alt_ (Text.pack n')]+          htmlImageSource fl s++strTrackLogType ::+  TrackLogType+  -> String+strTrackLogType Gpx =+  "gpx"+strTrackLogType Kml =+  "kml"+strTrackLogType Kmz =+  "kmz"+strTrackLogType (ImageTrackLog i) =+  strImageType i++htmlTrackLogSource ::+  AircraftFlight+  -> Maybe String+  -> Html ()+htmlTrackLogSource _ =+  maybe "" (\q -> span_ [] (fromString (" from " <> q)))++htmlTrackLog ::+  AircraftFlight+  -> TrackLog+  -> Html ()+htmlTrackLog fl (TrackLog u t s n) =+  let u' = fromString u+      n' = fromMaybe (strTrackLogType t) n+      o = do  fromString n'+              htmlTrackLogSource fl s+  in  do  a_ [href_ u'] o+          case t of +            ImageTrackLog _ ->+              do  br_ []+                  a_ [href_ u'] $+                    img_ [src_ u', width_ "360", alt_ (fromString n')]+            _ ->+              mempty++strVideoType ::+  VideoType+  -> String+strVideoType YouTube =+  "youtube"+strVideoType Vimeo =+  "vimeo"+strVideoType Bambuser =+  "bambuser"++htmlVideoSource ::+  AircraftFlight+  -> Maybe String+  -> Html ()+htmlVideoSource _ s =+  maybe mempty (\q -> span_ [] (fromString (" from " <> q))) s++htmlVideo ::+  AircraftFlight+  -> Video+  -> Html ()+htmlVideo fl (Video u t s n) =+  let n' = fromMaybe ("Video (" <> strVideoType t <> ")") n+  in  do  a_ [href_ (fromString (linkVideoType t u))] (fromString n')+          htmlVideoSource fl s++htmlTrackLogs ::+  AircraftFlight+  -> [TrackLog]+  -> Html ()+htmlTrackLogs fl x =+  whenEmpty (\q -> div_ [class_ "tracklogs"] $+    do  span_ [class_ "tracklogsheader"] "Track Logs"+        ul_ [] $+          mapM_ (li_ [class_ "tracklog"] . htmlTrackLog fl) q) x++htmlVisualisations ::+  AircraftFlight+  -> [Visualisation]+  -> Html ()+htmlVisualisations fl x =+  whenEmpty (\q -> div_ [class_ "visualisations"] $+    do  span_ [class_ "visualisationsheader"] "Visualisations"+        ul_ [] $+          mapM_ (li_ [class_ "visualisation"] . htmlVisualisation fl) q) x++htmlImages ::+  AircraftFlight+  -> [Image]+  -> Html ()+htmlImages fl x =+  whenEmpty (\q -> div_ [class_ "tracklogs"] $+    do  span_ [class_ "imagesheader"] "Images"+        div_ [style_ "text-align: justify"] $ +          mapM_ (htmlImage fl) q) x++htmlVideos ::+  AircraftFlight+  -> [Video]+  -> Html ()+htmlVideos fl x =+  whenEmpty (\q -> div_ [class_ "videos"] $+    do  span_ [class_ "videosheader"] "Videos"+        ul_ [] $+          mapM_ (li_ [class_ "video"] . htmlVideo fl) q) x++htmlAircraftFlightExpenses ::+  AircraftFlight+  -> [AircraftFlightExpense]+  -> Html ()+htmlAircraftFlightExpenses fl x =+  whenEmpty (\q -> div_ [class_ "aircraftflightexpenses"] $+    do  span_ [class_ "aircraftflightexpensesheader"] "Aircraft Flight Expenses"+        ul_ [] $+          mapM_ (li_ [class_ "aircraftflightexpense"] . htmlAircraftFlightExpense fl) q) x++htmlAircraftFlightPassenger ::+  AircraftFlight+  -> Passenger+  -> Html ()+htmlAircraftFlightPassenger _ (Passenger p) =+  do span_ [class_ "aircraftflightpassenger"] (fromString p)++htmlAircraftFlightPax ::+  AircraftFlight+  -> [Passenger]+  -> Html ()+htmlAircraftFlightPax fl x =+  whenEmpty (\q -> div_ [class_ "aircraftflightpax"] $+    do  span_ [class_ "aircraftflightpaxheader"] "PAX"+        ul_ [] $+          mapM_ (li_ [class_ "aircraftflightpassenger"] . htmlAircraftFlightPassenger fl) q) x++htmlAircraftFlightMeta ::+  AircraftFlight+  -> AircraftFlightMeta+  -> Html ()+htmlAircraftFlightMeta fl (AircraftFlightMeta tls vls ims vds exs pax) =+  div_ $ +    do  htmlTrackLogs fl tls+        htmlVisualisations fl vls+        htmlImages fl ims+        htmlVideos fl vds+        htmlAircraftFlightExpenses fl exs+        htmlAircraftFlightPax fl pax++htmlSimulatorFlightMeta ::+  SimulatorFlight+  -> SimulatorFlightMeta+  -> Html ()+htmlSimulatorFlightMeta fl (SimulatorFlightMeta s) =+  whenEmpty (\q -> div_ [class_ "simulatormeta"] $+    do  span_ [class_ "simulatorheader"] "Expenses"+        ul_ [] $+          mapM_ (li_ [class_ "expense"] . htmlSimulatorFlightExpense fl) q) s  ++htmlExamMeta ::+  Exam+  -> ExamMeta+  -> Html ()+htmlExamMeta e (ExamMeta s) =+  whenEmpty (\q -> div_ [class_ "exammeta"] $+    do  span_ [class_ "exammetaheader"] "Expenses"+        ul_ [] $+          mapM_ (li_ [class_ "expense"] . htmlExamExpense e) q) s++htmlBriefingMeta ::+  Briefing+  -> BriefingMeta+  -> Html ()+htmlBriefingMeta b (BriefingMeta s) =+  whenEmpty (\q -> div_ [class_ "briefingmeta"] $+    do  span_ [class_ "briefingmetaheader"] "Expenses"+        ul_ [] $+          mapM_ (li_ [class_ "expense"] . htmlBriefingExpense b) q) s++htmlLogbookDocumentMeta ::+  Html ()+  -> Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta+  -> Html ()+htmlLogbookDocumentMeta =+  htmlLogbookDocument htmlAircraftFlightMeta htmlSimulatorFlightMeta htmlExamMeta htmlBriefingMeta++----++showCentsAsDollars ::+  Int+  -> String+showCentsAsDollars n =+  let pos ::+        String+        -> String+      pos [] =+        []+      pos [x] =+        "0.0" <> [x]+      pos [x, y] =+        "0." <> [y, x]+      pos (x:y:z) =+        reverse z <> "." <> [y, x]+  in  (if n < 0 then ('-':) else id) . pos . reverse . show . abs $ n++showThousandCentsAsDollars ::+  Int+  -> String+showThousandCentsAsDollars n =+  let pos ::+        String+        -> String+      pos [] =+        []+      pos [x] =+        [x] <> "0.0"+      pos [x, y] =+        [x, y] <> ".0"+      pos [x, y, z] =+        [x, y, z] <> ".0"+      pos (x:y:z:r) =+        [x, y, z] <> "." <> r+      drop0 [] =+        []+      drop0 ('0':r) =+        r+      drop0 w =+        w+  in  (if n < 0 then ('-':) else id) . reverse . drop0 . pos . reverse . show . abs $ n++showHundredCentsAsDollars ::+  Int+  -> String+showHundredCentsAsDollars n =+  let pos ::+        String+        -> String+      pos [] =+        []+      pos [x] =+        [x] <> "0.0"+      pos [x, y] =+        [x, y] <> ".0"+      pos (x:y:r) =+        [x, y] <> "." <> r+      drop0 [] =+        []+      drop0 ('0':r) =+        r+      drop0 w =+        w+  in  (if n < 0 then ('-':) else id) . reverse . drop0 . pos . reverse . show . abs $ n++whenEmpty ::+  Monoid a =>+  ([t] -> a)+  -> [t]+  -> a+whenEmpty _ [] =+  mempty+whenEmpty f x =+  f x
+ src/Data/Aviation/Casr/Logbook/Meta/Image.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Image(+  Image(Image)+, HasImage(..)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.ImageType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Image =+  Image {+    _imageuri :: String+  , _imagetype :: ImageType+  , _imagesource :: Maybe String+  , _imagename :: Maybe String+  } deriving (Eq, Ord, Show)+  +makeClassy ''Image
+ src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.ImageType(+  ImageType(Jpg, Png, Gif)+, AsImageType(..)+) where++import Control.Lens(makeClassyPrisms)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data ImageType =+  Jpg+  | Png+  | Gif+  deriving (Eq, Ord, Show)++makeClassyPrisms ''ImageType
+ src/Data/Aviation/Casr/Logbook/Meta/Passenger.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}++module Data.Aviation.Casr.Logbook.Meta.Passenger(+  Passenger(Passenger)+, HasPassenger(..)+) where++import Control.Lens(makeWrapped, makeClassy)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++newtype Passenger =+  Passenger+    String+  deriving (Eq, Ord, Show)++makeWrapped '' Passenger+makeClassy '' Passenger
+ src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense(+  SimulatorFlightExpense(SimulatorFlightExpense)+, HasSimulatorFlightExpense(..)+, simulatorFlightCost+) where++import Control.Lens(makeClassy, (^.))+import Data.Aviation.Casr.Logbook.Types.SimulatorFlight(HasSimulatorFlight, instrumentsimulatorTime)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(timeAmountBy10)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show, (*))++data SimulatorFlightExpense =+  SimulatorFlightExpense {+    _simulatorflightexpenseperhour :: Int+  , _simulatorflightexpensename :: String+  } deriving (Eq, Ord, Show)++makeClassy ''SimulatorFlightExpense++simulatorFlightCost ::+  HasSimulatorFlight s =>+  s+  -> SimulatorFlightExpense+  -> Int+simulatorFlightCost sf (SimulatorFlightExpense perhour _) =+  let z = sf ^. instrumentsimulatorTime+  in  timeAmountBy10 z * perhour
+ src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta(+  SimulatorFlightMeta(SimulatorFlightMeta)+, HasSimulatorFlightMeta(..)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype SimulatorFlightMeta =+  SimulatorFlightMeta+    [SimulatorFlightExpense]+  deriving (Eq, Ord, Show)++makeClassy ''SimulatorFlightMeta+makeWrapped ''SimulatorFlightMeta
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLog(+  TrackLog(TrackLog)+, HasTrackLog(..)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.TrackLogType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data TrackLog =+  TrackLog {+    _trackloguri :: String+  , _tracklogtype :: TrackLogType+  , _tracklogsource :: Maybe String+  , _tracklogname :: Maybe String+  } deriving (Eq, Ord, Show)+  +makeClassy ''TrackLog
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLogType(+  TrackLogType(Gpx, Kml, Kmz, ImageTrackLog)+, AsTrackLogType(..)+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Meta.ImageType+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data TrackLogType =+  Gpx+  | Kml+  | Kmz+  | ImageTrackLog ImageType+  deriving (Eq, Ord, Show)++makeClassyPrisms ''TrackLogType
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLogs(+  TrackLogs(TrackLogs)+, HasTrackLogs(..)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.TrackLog+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype TrackLogs =+  TrackLogs+    [TrackLog]+  deriving (Eq, Ord, Show)++makeClassy ''TrackLogs+makeWrapped ''TrackLogs
+ src/Data/Aviation/Casr/Logbook/Meta/Video.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Video(+  Video(Video)+, HasVideo(..)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.VideoType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Video =+  Video {+    _videouri :: String+  , _videotype :: VideoType+  , _videosource :: Maybe String+  , _videoname :: Maybe String+  } deriving (Eq, Ord, Show)++makeClassy ''Video
+ src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.VideoType(+  VideoType(YouTube, Vimeo, Bambuser)+, AsVideoType(..)+, linkVideoType+, iframeVideoType+) where++import Control.Lens(makeClassyPrisms)+import Data.Eq(Eq)+import Data.List((++))+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data VideoType =+  YouTube+  | Vimeo+  | Bambuser+  deriving (Eq, Ord, Show)+  +makeClassyPrisms ''VideoType++linkVideoType ::+  VideoType+  -> String+  -> String+linkVideoType YouTube u =+  "https://www.youtube.com/watch?v=" ++ u+linkVideoType Vimeo u =+  "https://bambuser.com/v/" ++ u +linkVideoType Bambuser u =+  "https://vimeo.com/" ++ u++iframeVideoType ::+  VideoType+  -> String+  -> String+iframeVideoType YouTube u =+  "http://www.youtube.com/embed/" ++ u ++ "?autohide=1&amp;cc_load_policy=1&amp;color=white&amp;controls=1&amp;disablekb=0&amp;fs=1&amp;iv_load_policy=0&amp;loop=0&amp;modestbranding=1&amp;rel=0&amp;showinfo=0"+iframeVideoType Vimeo u =+  "https://player.vimeo.com/video/" ++ u+iframeVideoType Bambuser u =+  "https://embed.bambuser.com/broadcast/" ++ u ++ "?chat=1&amp;mute=0"
+ src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Visualisation(+  Visualisation(Doarama)+, HasVisualisation(..)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Visualisation =+  Doarama {+    _doaramaid :: String+  , _oembedid :: String+  , _doaramaname :: Maybe String+  } deriving (Eq, Ord, Show)++makeClassy ''Visualisation
+ src/Data/Aviation/Casr/Logbook/Reports.hs view
@@ -0,0 +1,7 @@+module Data.Aviation.Casr.Logbook.Reports(+  module R+) where++import Data.Aviation.Casr.Logbook.Reports.FlightTimeReport as R+import Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport as R+import Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90 as R
+ src/Data/Aviation/Casr/Logbook/Reports/FlightTimeReport.hs view
@@ -0,0 +1,242 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Reports.FlightTimeReport(+  FlightTimeReport(..)+, HasFlightTimeReport(..)+, singleFlightTimeReport+, getFlightTimeReport+) where++import Control.Category((.))+import Control.Lens(makeClassy, (^.))+import Data.Aviation.Casr.Logbook.Types+  (+    TimeAmount+  , Aviator+  , Logbook(Logbook)+  , Command(ICUS, Dual, InCommand)+  , Engine(Single, Multi)+  , Entry(AircraftFlightEntry)+  , Entries(Entries)+  , aircraftEngine+  , aircraftRegistration+  , aircraftType+  , instrumentflightTime+  , getInstructingPic+  , flightaircraft+  , command+  , daynight+  , dayDayNight+  , nightDayNight+  , totalDayNight+  )+import Data.Eq(Eq)+import Data.Foldable(foldl')+import Data.Int(Int)+import qualified Data.Map as Map(unionWith, singleton, empty)+import Data.Map(Map)+import Data.Maybe(Maybe(Just, Nothing))+import Data.Monoid(Monoid(mappend, mempty))+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show, (+))++data FlightTimeReport =+  FlightTimeReport {+    _flightsTotal ::+      Int+  , _hoursTotal ::+      TimeAmount +  , _hoursTotalICUS ::+      TimeAmount +  , _hoursTotalDual ::+      TimeAmount +  , _hoursTotalInCommand ::+      TimeAmount +  , _hoursInAircraftType ::+      Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount)+  , _hoursInAircraftRegistration ::+      Map String (TimeAmount, TimeAmount, TimeAmount, TimeAmount)+  , _hoursSingleEngine ::+      TimeAmount +  , _hoursSingleEngineICUS ::+      TimeAmount +  , _hoursSingleEngineDual :: +      TimeAmount +  , _hoursSingleEngineInCommand ::+      TimeAmount +  , _hoursMultiEngine ::+      TimeAmount +  , _hoursMultiEngineICUS ::+      TimeAmount +  , _hoursMultiEngineDual ::+      TimeAmount +  , _hoursMultiEngineInCommand ::+      TimeAmount +  , _hoursDay ::+      TimeAmount +  , _hoursDayICUS ::+      TimeAmount +  , _hoursDayDual ::+      TimeAmount +  , _hoursDayInCommand ::+      TimeAmount +  , _hoursNight ::+      TimeAmount +  , _hoursNightICUS ::+      TimeAmount +  , _hoursNightDual ::+      TimeAmount +  , _hoursNightInCommand ::+      TimeAmount +  , _hoursWithPiC ::+      Map Aviator TimeAmount+  , _hoursInstrument ::+      TimeAmount +  } deriving (Eq, Ord, Show)++makeClassy ''FlightTimeReport++instance Monoid FlightTimeReport where+  mempty =+    FlightTimeReport+      0+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+      mempty+  FlightTimeReport ft1 tl1 tli1 tld1 tlc1 tp1 rg1 se1 sei1 sed1 sec1 me1 mei1 med1 mec1 dy1 dyi1 dyd1 dyc1 nt1 nti1 ntd1 ntc1 wpc1 is1 `mappend` FlightTimeReport ft2 tl2 tli2 tld2 tlc2 tp2 rg2 se2 sei2 sed2 sec2 me2 mei2 med2 mec2 dy2 dyi2 dyd2 dyc2 nt2 nti2 ntd2 ntc2 wpc2 is2 =+    FlightTimeReport+      (ft1 + ft2)+      (tl1 `mappend` tl2)+      (tli1 `mappend` tli2)+      (tld1 `mappend` tld2)+      (tlc1 `mappend` tlc2)+      (Map.unionWith mappend tp1 tp2)+      (Map.unionWith mappend rg1 rg2)+      (se1 `mappend` se2)+      (sei1 `mappend` sei2)+      (sed1 `mappend` sed2)+      (sec1 `mappend` sec2)+      (me1 `mappend` me2)+      (mei1 `mappend` mei2)+      (med1 `mappend` med2)+      (mec1 `mappend` mec2)+      (dy1 `mappend` dy2)+      (dyi1 `mappend` dyi2)+      (dyd1 `mappend` dyd2)+      (dyc1 `mappend` dyc2)+      (nt1 `mappend` nt2)+      (nti1 `mappend` nti2)+      (ntd1 `mappend` ntd2)+      (ntc1 `mappend` ntc2)+      (Map.unionWith mappend wpc1 wpc2)+      (is1 `mappend` is2)++singleFlightTimeReport ::+  Entry a b c d+  -> FlightTimeReport+singleFlightTimeReport (AircraftFlightEntry fl _) =+  let hoursdaynight = totalDayNight (fl ^. daynight)+      icus x =+        case fl ^. command of+          ICUS _ ->+            x+          Dual _ ->+            mempty+          InCommand ->+            mempty+      dual x =+        case fl ^. command of+          ICUS _ ->+            mempty+          Dual _ ->+            x+          InCommand ->+            mempty            +      comd x =+        case fl ^. command of+          ICUS _ ->+            mempty+          Dual _ ->+            mempty+          InCommand ->+            x+      hoursmap k =+        Map.singleton k (hoursdaynight, (icus hoursdaynight), (dual hoursdaynight), (comd hoursdaynight))+      singleengine x =+        case fl ^. flightaircraft . aircraftEngine of+          Single ->+            x+          Multi ->+            mempty+      multiengine x =+        case fl ^. flightaircraft . aircraftEngine of+          Single ->+            mempty+          Multi ->+            x+      totalhoursday =+        fl ^. daynight . dayDayNight+      totalhoursnight =+        fl ^. daynight . nightDayNight+      pic x =+        case getInstructingPic (fl ^. command) of+          Just a ->+            Map.singleton a x+          Nothing ->+            Map.empty+  in  FlightTimeReport+        1+        hoursdaynight+        (icus hoursdaynight)+        (dual hoursdaynight)+        (comd hoursdaynight)+        (hoursmap (fl ^. flightaircraft . aircraftType))+        (hoursmap (fl ^. flightaircraft . aircraftRegistration))+        (singleengine hoursdaynight)+        (singleengine (icus hoursdaynight))+        (singleengine (dual hoursdaynight))+        (singleengine (comd hoursdaynight))+        (multiengine hoursdaynight)+        (multiengine (icus hoursdaynight))+        (multiengine (dual hoursdaynight))+        (multiengine (comd hoursdaynight))+        totalhoursday+        (icus totalhoursday)+        (dual totalhoursday)+        (comd totalhoursday)+        totalhoursnight+        (icus totalhoursnight)+        (dual totalhoursnight)+        (comd totalhoursnight)+        (pic hoursdaynight)+        (fl ^. instrumentflightTime)+singleFlightTimeReport _ =+  mempty++getFlightTimeReport ::+  Logbook a b c d+  -> FlightTimeReport+getFlightTimeReport (Logbook _ (Entries es)) =+  foldl' (\a -> mappend a . singleFlightTimeReport) mempty es
+ src/Data/Aviation/Casr/Logbook/Reports/Html.hs view
@@ -0,0 +1,342 @@+{-# LANGUAGE OverloadedStrings #-}++module Data.Aviation.Casr.Logbook.Reports.Html(+    htmlFlightPointDay+  , htmlTakeOffLanding90+  , takeofflanding+  , takeoffslandings90+  , htmlSimulatorTimeReport+  , htmlFlightTimeReport+) where++import Control.Category((.))+import Control.Lens((^.), _Wrapped)+import Data.Aviation.Casr.Logbook.Types(+    landingTime+  , daytime+  , point+  , logbookentries+  , flightStart+  , flightIntermediate+  , flightEnd+  , flightpath+  , FlightPoint+  , Logbook+  , Entry(AircraftFlightEntry)+  )+import Data.Aviation.Casr.Logbook.Html.Html(+    htmlTimeAmount+  , htmlAviatorShort+  )+import Data.Aviation.Casr.Logbook.Reports(+    hoursMultiEngineDual+  , hoursMultiEngineInCommand+  , hoursDay+  , hoursDayICUS+  , hoursDayDual+  , hoursDayInCommand+  , hoursNight+  , hoursNightICUS+  , hoursNightDual+  , hoursNightInCommand+  , hoursWithPiC+  , hoursInstrument+  , hoursTotalDual+  , hoursTotalInCommand+  , hoursInAircraftType+  , hoursInAircraftRegistration+  , hoursSingleEngine+  , hoursSingleEngineICUS+  , hoursSingleEngineDual+  , hoursMultiEngineInCommand+  , hoursMultiEngineDual+  , hoursTotalICUS+  , hoursSingleEngineInCommand+  , hoursMultiEngine+  , hoursMultiEngineICUS+  , hoursTotal+  , flightsTotal+  , hoursTotalSimulator+  , hoursInstrumentSimulator+  , currency90+  , landing1+  , landing2+  , landing3+  , takeoff1+  , takeoff2+  , takeoff3+  , TakeOffLanding90(TakeOffLanding90)+  , SimulatorTimeReport+  , FlightTimeReport+  )+import Data.Foldable(foldr)+import Data.Function(flip, ($))+import qualified Data.Map as Map(foldrWithKey)+import Data.List(sortBy, (++))+import Data.Maybe(Maybe(Nothing, Just))+import Data.Monoid(mempty)+import Data.Ord(comparing, min)+import Data.String(fromString)+import qualified Data.Text as Text(pack)+import Data.Time(addDays)+import Lucid(+    class_+  , span_+  , ul_+  , li_+  , div_+  , h3_+  , href_+  , id_+  , a_+  , ol_+  , Html+  )+import Prelude(show)++htmlFlightPointDay ::+  FlightPoint+  -> Html ()+htmlFlightPointDay p =+  let j = p ^. landingTime . daytime+  in  do  span_ [class_ "currencyflightpointday"] . fromString . show $ j+          " "+          span_ [class_ "currencyflightpointpoint"] . fromString $ p ^. point++htmlTakeOffLanding90 ::+  Logbook a b c d+  -> Maybe TakeOffLanding90+  -> Html ()+htmlTakeOffLanding90 _ r =+  div_ [class_ "flighttimecurrencyreport"] $+    do  a_ [id_ "RPT_FlightTimeCurrency"] ""+        a_ [href_ (Text.pack ("#RPT_FlightTimeCurrency"))] . span_ [class_ "entrytag"] $ "RPT"+        h3_ [class_ "flighttimecurrencyreportname"] "Flight Time Currency Report"                    +        case r of+          Nothing ->+            span_ [class_ "flighttimenocurrency"] "NIL three take-offs and landings"+          Just x ->+            do  ul_ [] $+                  do  li_ [] $+                        do  span_ [class_ "key"] "Three most recent take-offs"+                            ol_ [] $+                              do  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. takeoff1))+                                  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. takeoff2))+                                  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. takeoff3))+                      li_ [] $+                        do  span_ [class_ "key"] "Three most recent landings"+                            ol_ [] $+                              do  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. landing1))+                                  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. landing2))+                                  li_ [] $+                                    span_ [class_ "value"] (htmlFlightPointDay (x ^. landing3))+                      li_ [] $+                        do  span_ [class_ "key"] "90-day currency: "+                            span_ [class_ "value"] . fromString . show $ x ^. currency90++takeofflanding ::+  Entry a b c d+  -> ([FlightPoint], [FlightPoint])+takeofflanding (AircraftFlightEntry fl _) =+  let p = fl ^. flightpath+      i = p ^. flightIntermediate+  in  (p ^. flightStart : i, i ++ [p ^. flightEnd])+takeofflanding _ =+  ([], [])++takeoffslandings90 ::+  Logbook a b c d+  -> Maybe TakeOffLanding90+takeoffslandings90 b =+  let (t, l) = foldr+                (\a (t', l') -> let (u', m') = takeofflanding a+                              in  (t' ++ u', m' ++ l'))+                ([], []) (b ^. logbookentries . _Wrapped)+      revsort = sortBy (flip (comparing (^. landingTime)))+      (u, m) = (revsort t, revsort l)+  in  case u of+        t1:t2:t3:_ ->+          case m of+            l1:l2:l3:_ ->+              let tt = t3 ^. landingTime . daytime+                  lt = l3 ^. landingTime . daytime+              in  Just (TakeOffLanding90 t1 t2 t3 l1 l2 l3 (addDays 90 (tt `min` lt)))+            _ ->+              Nothing+        _ ->+          Nothing++htmlSimulatorTimeReport ::+  Logbook a b c d+  -> SimulatorTimeReport+  -> Html ()+htmlSimulatorTimeReport _ r =+  div_ [class_ "simulatortimereport"] $+    do  a_ [id_ "RPT_SimulatorTimeSummary"] ""+        a_ [href_ (Text.pack ("#RPT_SimulatorTimeSummary"))] . span_ [class_ "entrytag"] $ "RPT"+        h3_ [class_ "simulatortimereportname"] "Simulator Time Summary Report"          +        ul_ [] $+          do  li_ [] $+                do  span_ [class_ "key"] "Total Simulator Hours: "+                    span_ [class_ "value"] . htmlTimeAmount $ r ^. hoursInstrumentSimulator+              li_ [] $+                do  span_ [class_ "key"] "Instrument Simulator Hours: "+                    span_ [class_ "value"] . htmlTimeAmount $ r ^. hoursTotalSimulator+              +htmlFlightTimeReport ::+  Logbook a b c d+  -> FlightTimeReport+  -> Html ()+htmlFlightTimeReport _ r =+  div_ [class_ "flighttimereport"] $+    do  a_ [id_ "RPT_FlightTimeSummary"] ""+        a_ [href_ (Text.pack "#RPT_FlightTimeSummary")] . span_ [class_ "entrytag"] $ "RPT"+        h3_ [class_ "flighttimereportname"] "Flight Time Summary Report"          +        ul_ [] $+          do  li_ [] $+                do  span_ [class_ "key"] "Total Flights: "+                    span_ [class_ "value"] . fromString . show $ (r ^. flightsTotal)+              li_ [] $+                do  span_ [class_ "key"] "Total Flight Hours: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursTotal+                    ul_ [] $+                      do  li_ [] $+                            do  span_ [class_ "key"] "in-command under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursTotalICUS+                          li_ [] $+                            do  span_ [class_ "key"] "dual under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursTotalDual+                          li_ [] $+                            do  span_ [class_ "key"] "in-command: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursTotalInCommand+              li_ [] $+                do  span_ [class_ "key"] "Hours in type: "+                    div_ [class_ "value"] .+                      ul_ [] . Map.foldrWithKey (\y (tl, iu, dl, ic) x ->+                        do  li_ [] $+                              do  span_ [class_ "aircrafttype"] $ fromString y+                                  ul_ [] $+                                    do  li_ [] $+                                          do  span_ [class_ "key"] "total: "+                                              span_ [class_ "value"] . htmlTimeAmount $ tl+                                        li_ [] $+                                          do  span_ [class_ "key"] "in-command under-instruction: "+                                              span_ [class_ "value"] . htmlTimeAmount $ iu+                                        li_ [] $+                                          do  span_ [class_ "key"] "dual under-instruction: "+                                              span_ [class_ "value"] . htmlTimeAmount $ dl+                                        li_ [] $+                                          do  span_ [class_ "key"] "in-command: "+                                              span_ [class_ "value"] . htmlTimeAmount $ ic+                            x) mempty $ r ^. hoursInAircraftType+              li_ [] $+                do  span_ [class_ "key"] "Hours in registration: "+                    div_ [class_ "value"] .+                      ul_ [] . Map.foldrWithKey (\y (tl, iu, dl, ic) x ->+                        do  li_ [] $+                              do  span_ [class_ "aircraftregistration"] $ fromString y+                                  ul_ [] $+                                    do  li_ [] $+                                          do  span_ [class_ "key"] "total: "+                                              span_ [class_ "value"] . htmlTimeAmount $ tl+                                        li_ [] $+                                          do  span_ [class_ "key"] "in-command under-instruction: "+                                              span_ [class_ "value"] . htmlTimeAmount $ iu+                                        li_ [] $+                                          do  span_ [class_ "key"] "dual under-instruction: "+                                              span_ [class_ "value"] . htmlTimeAmount $ dl+                                        li_ [] $+                                          do  span_ [class_ "key"] "in-command: "+                                              span_ [class_ "value"] . htmlTimeAmount $ ic+                            x) mempty $ r ^. hoursInAircraftRegistration+              li_ [] $+                do  span_ [class_ "key"] "Hours in Single-Engine: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursSingleEngine+                    ul_ [] $+                      do  li_ [] $+                            do  span_ [class_ "key"] "in-command under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursSingleEngineICUS+                          li_ [] $+                            do  span_ [class_ "key"] "dual under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursSingleEngineDual+                          li_ [] $+                            do  span_ [class_ "key"] "in-command: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursSingleEngineInCommand+              li_ [] $+                do  span_ [class_ "key"] "Hours in Multi-Engine: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursMultiEngine+                    ul_ [] $+                      do  li_ [] $+                            do  span_ [class_ "key"] "in-command under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursMultiEngineICUS+                          li_ [] $+                            do  span_ [class_ "key"] "dual under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursMultiEngineDual+                          li_ [] $+                            do  span_ [class_ "key"] "in-command: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursMultiEngineInCommand+              li_ [] $+                do  span_ [class_ "key"] "Hours in Day: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursDay+                    ul_ [] $+                      do  li_ [] $+                            do  span_ [class_ "key"] "in-command under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursDayICUS+                          li_ [] $+                            do  span_ [class_ "key"] "dual under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursDayDual+                          li_ [] $+                            do  span_ [class_ "key"] "in-command: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursDayInCommand+              li_ [] $+                do  span_ [class_ "key"] "Hours in Night: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursNight+                    ul_ [] $+                      do  li_ [] $+                            do  span_ [class_ "key"] "in-command under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursNightICUS+                          li_ [] $+                            do  span_ [class_ "key"] "dual under-instruction: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursNightDual+                          li_ [] $+                            do  span_ [class_ "key"] "in-command: "+                                span_ [class_ "value"] .+                                  htmlTimeAmount $ r ^. hoursNightInCommand+              li_ [] $+                do  span_ [class_ "key"] "Hours with PiC: "+                    div_ [class_ "value"] .+                      ul_ [] . Map.foldrWithKey (\a t x ->+                        do  li_ [] $+                              do  span_ [class_ "key"] $ +                                    do  htmlAviatorShort a+                                        ": "+                                  span_ [class_ "value"] . htmlTimeAmount $ t                                      +                            x) mempty $ r ^. hoursWithPiC+              li_ [] $+                do  span_ [class_ "key"] "Hours instrument in-flight: "+                    span_ [class_ "value"] .+                      htmlTimeAmount $ r ^. hoursInstrument  
+ src/Data/Aviation/Casr/Logbook/Reports/Meta.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Reports.Meta(+  module M+) where++import Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport as M
+ src/Data/Aviation/Casr/Logbook/Reports/Meta/ExpenseReport.hs view
@@ -0,0 +1,100 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport(+  ExpenseReport(ExpenseReport)+, HasExpenseReport(..)+, entryExpenseReport+, logbookExpenseReport+) where++import Control.Category((.))+import Control.Lens(makeClassy, (^.), _Wrapped)+import Control.Monad((>>=), return)+import Data.Aviation.Casr.Logbook.Types(Entry(AircraftFlightEntry, SimulatorFlightEntry, ExamEntry, BriefingEntry), Logbook, logbookentries)+import Data.Aviation.Casr.Logbook.Meta(+    AircraftFlightMeta+  , SimulatorFlightMeta+  , BriefingMeta+  , ExamMeta+  , AircraftFlightExpense(ExpenseAircraftUsage, ExpenseAircraftLanding)+  , briefingCost+  , examexpenseamount+  , simulatorFlightCost+  , aircraftlandingexpenseamount+  , expenses+  , aircraftUsageCost+  )+import Data.Eq(Eq)+import Data.Foldable(sum, foldMap)+import Data.Function(($))+import Data.Int(Int)+import Data.Monoid(Monoid(mempty, mappend))+import Data.Ord(Ord)+import Prelude(Show)+import Prelude((+))++data ExpenseReport =+  ExpenseReport {+    _aircraftUsageExpenseTotal :: Int+  , _aircraftLandingExpenseTotal :: Int+  , _briefingExpenseTotal :: Int+  , _examExpenseTotal :: Int+  , _simulatorFlightTotal :: Int+  } deriving (Eq, Ord, Show)++makeClassy ''ExpenseReport++instance Monoid ExpenseReport where+  mempty =+    ExpenseReport 0 0 0 0 0+  ExpenseReport ag1 al1 b1 e1 s1 `mappend` ExpenseReport ag2 al2 b2 e2 s2 =+    ExpenseReport (ag1 + ag2) (al1 + al2) (b1 + b2) (e1 + e2) (s1 + s2)++entryExpenseReport ::+  Entry AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta+  -> ExpenseReport+entryExpenseReport (AircraftFlightEntry fl e) =+  let usage =+        sum $ e ^. expenses >>= \p ->+          case p of+            ExpenseAircraftUsage e' -> [aircraftUsageCost fl e']+            ExpenseAircraftLanding _ -> []+      landing =+        sum $ e ^. expenses >>= \p ->+          case p of+            ExpenseAircraftUsage _ -> []+            ExpenseAircraftLanding l -> [l ^. aircraftlandingexpenseamount]+  in  ExpenseReport+        usage+        landing+        0+        0+        0+entryExpenseReport (SimulatorFlightEntry fl e) =+  ExpenseReport+    0+    0+    0+    0+    (sum $ e ^. _Wrapped >>= return . simulatorFlightCost fl)+entryExpenseReport (ExamEntry _ e) =+  ExpenseReport+    0+    0+    0+    (sum $ e ^. _Wrapped >>= return . (^. examexpenseamount))+    0+entryExpenseReport (BriefingEntry br e) =+  ExpenseReport+    0+    0+    (sum $ e ^. _Wrapped >>= return . briefingCost br)+    0+    0++logbookExpenseReport ::+  Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta+  -> ExpenseReport+logbookExpenseReport b =+  foldMap entryExpenseReport (b ^. logbookentries . _Wrapped)+
+ src/Data/Aviation/Casr/Logbook/Reports/Meta/Html.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE OverloadedStrings #-}++module Data.Aviation.Casr.Logbook.Reports.Meta.Html(+  htmlExpenseReport+, htmlReports+) where++import Control.Category((.))+import Data.Aviation.Casr.Logbook.Reports(getFlightTimeReport, getSimulatorTimeReport)+import Data.Aviation.Casr.Logbook.Reports.Html(htmlFlightTimeReport, htmlSimulatorTimeReport, htmlTakeOffLanding90, takeoffslandings90)+import Data.Aviation.Casr.Logbook.Reports.Meta(ExpenseReport(ExpenseReport), logbookExpenseReport)+import Data.Aviation.Casr.Logbook.Meta(AircraftFlightMeta, SimulatorFlightMeta, ExamMeta, BriefingMeta)+import Data.Aviation.Casr.Logbook.Meta.Html(showThousandCentsAsDollars, showHundredCentsAsDollars)+import Data.Aviation.Casr.Logbook.Types(Logbook)+import Data.Function(($))+import Data.String(fromString)+import qualified Data.Text as Text(pack)+import Lucid(+    hr_+  , class_+  , ul_+  , li_+  , span_+  , h3_+  , div_+  , a_+  , id_+  , href_+  , Html+  )+import Prelude((+))++htmlExpenseReport ::+  Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta+  -> ExpenseReport+  -> Html ()+htmlExpenseReport _ (ExpenseReport ag al b e s) =+  div_ [class_ "expensereport"] $+    do  a_ [id_ "RPT_Expense"] ""+        a_ [href_ (Text.pack ("#RPT_Expense"))] . span_ [class_ "entrytag"] $ "RPT"+        h3_ [class_ "expensereportname"] "Expense Report"     +        do  ul_ [] $+              do  li_ [] $+                    do  span_ [class_ "key"] "Aircraft: "+                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ ag + al+                        ul_ [] $+                          do  li_ [] $+                                do  span_ [class_ "key"] "Usage: "+                                    span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ ag+                              li_ [] $+                                do  span_ [class_ "key"] "Landing: "+                                    span_ [class_ "value"] . fromString . ('$':) . showHundredCentsAsDollars $ al+                  li_ [] $+                    do  span_ [class_ "key"] "Briefing: "+                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ b+                  li_ [] $+                    do  span_ [class_ "key"] "Exam: "+                        span_ [class_ "value"] . fromString . ('$':) . showHundredCentsAsDollars $ e+                  li_ [] $+                    do  span_ [class_ "key"] "Simulator: "+                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ s+                  li_ [] $+                    do  span_ [class_ "key"] "TOTAL: "+                        span_ [class_ "value"] . fromString . ('$':) . showThousandCentsAsDollars $ (ag + al + b + e + s)++htmlReports ::+  Logbook AircraftFlightMeta SimulatorFlightMeta ExamMeta BriefingMeta+  -> Html ()+htmlReports b =+  do  htmlFlightTimeReport b (getFlightTimeReport b)+      hr_ [] +      htmlSimulatorTimeReport b (getSimulatorTimeReport b)+      hr_ [] +      htmlTakeOffLanding90 b (takeoffslandings90 b)+      hr_ [] +      htmlExpenseReport b (logbookExpenseReport b)
+ src/Data/Aviation/Casr/Logbook/Reports/SimulatorTimeReport.hs view
@@ -0,0 +1,60 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport(+  SimulatorTimeReport(..)+, HasSimulatorTimeReport(..)+, singleSimulatorTimeReport+, getSimulatorTimeReport+) where++import Control.Category((.))+import Control.Lens(makeClassy, (^.))+import Data.Aviation.Casr.Logbook.Types+  (+    TimeAmount+  , Logbook(Logbook)+  , Entry(SimulatorFlightEntry)+  , Entries(Entries)+  , simulatorTime+  , instrumentsimulatorTime+  )+import Data.Eq(Eq)+import Data.Foldable(foldl')+import Data.Monoid(Monoid(mappend, mempty))+import Data.Ord(Ord)+import Prelude(Show)++data SimulatorTimeReport =+  SimulatorTimeReport {+    _hoursTotalSimulator ::+      TimeAmount+  , _hoursInstrumentSimulator ::+      TimeAmount+  }+  deriving (Eq, Ord, Show)++makeClassy ''SimulatorTimeReport++instance Monoid SimulatorTimeReport where+  mempty =+    SimulatorTimeReport+      mempty+      mempty+  SimulatorTimeReport t1 i1 `mappend` SimulatorTimeReport t2 i2 =+    SimulatorTimeReport (t1 `mappend` t2) (i1 `mappend` i2)++singleSimulatorTimeReport ::+  Entry a b c d+  -> SimulatorTimeReport+singleSimulatorTimeReport (SimulatorFlightEntry fl _) =+  SimulatorTimeReport+    (fl ^. simulatorTime)+    (fl ^. instrumentsimulatorTime)+singleSimulatorTimeReport _ =+  mempty++getSimulatorTimeReport ::+  Logbook a b c d+  -> SimulatorTimeReport+getSimulatorTimeReport (Logbook _ (Entries es)) =+  foldl' (\a -> mappend a . singleSimulatorTimeReport) mempty es
+ src/Data/Aviation/Casr/Logbook/Reports/TakeOffLanding90.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90(+  TakeOffLanding90(..)+, HasTakeOffLanding90(..)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types(FlightPoint)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.Time(Day)+import Prelude(Show)++data TakeOffLanding90 =+  TakeOffLanding90 {+    _takeoff1 ::+      FlightPoint+  , _takeoff2 ::+      FlightPoint+  , _takeoff3 ::+      FlightPoint+  , _landing1 ::+      FlightPoint+  , _landing2 ::+      FlightPoint+  , _landing3 ::+      FlightPoint+  , _currency90 ::+      Day+  }+  deriving (Eq, Ord, Show)++makeClassy ''TakeOffLanding90
+ src/Data/Aviation/Casr/Logbook/Types.hs view
@@ -0,0 +1,22 @@+module Data.Aviation.Casr.Logbook.Types (+  module L+) where++import Data.Aviation.Casr.Logbook.Types.Logbook as L+import Data.Aviation.Casr.Logbook.Types.Rating as L+import Data.Aviation.Casr.Logbook.Types.Aviator as L+import Data.Aviation.Casr.Logbook.Types.Engine as L+import Data.Aviation.Casr.Logbook.Types.Aircraft as L+import Data.Aviation.Casr.Logbook.Types.TimeAmount as L+import Data.Aviation.Casr.Logbook.Types.DayNight as L+import Data.Aviation.Casr.Logbook.Types.Location as L+import Data.Aviation.Casr.Logbook.Types.Command as L+import Data.Aviation.Casr.Logbook.Types.Time as L+import Data.Aviation.Casr.Logbook.Types.FlightPoint as L+import Data.Aviation.Casr.Logbook.Types.FlightPath as L+import Data.Aviation.Casr.Logbook.Types.AircraftFlight as L+import Data.Aviation.Casr.Logbook.Types.SimulatorFlight as L+import Data.Aviation.Casr.Logbook.Types.Exam as L+import Data.Aviation.Casr.Logbook.Types.Briefing as L+import Data.Aviation.Casr.Logbook.Types.Entry as L+import Data.Aviation.Casr.Logbook.Types.Entries as L
+ src/Data/Aviation/Casr/Logbook/Types/Aircraft.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Aircraft(+  Aircraft(..)+, HasAircraft(..)+, singleaircraft+, multiaircraft+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Engine(Engine(Single, Multi))+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Aircraft =+  Aircraft {+    _aircraftType :: String+  , _aircraftRegistration :: String+  , _aircraftEngine :: Engine+  } deriving (Eq, Ord, Show)++makeClassy ''Aircraft++singleaircraft ::+  String+  -> String+  -> Aircraft+singleaircraft t r =+  Aircraft+    t+    r+    Single++multiaircraft ::+  String+  -> String+  -> Aircraft+multiaircraft t r =+  Aircraft+    t+    r+    Multi
+ src/Data/Aviation/Casr/Logbook/Types/AircraftFlight.hs view
@@ -0,0 +1,150 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.AircraftFlight(+  AircraftFlight(..)+, HasAircraftFlight(..)+, icusonlyflight+, noif_icusonlyflight+, dualonlyflight+, noif_dualonlyflight+, commandonlyflight+, noif_commandonlyflight+) where++import Control.Category((.))+import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Aircraft(Aircraft, HasAircraft(aircraft))+import Data.Aviation.Casr.Logbook.Types.Command(Command(ICUS, Dual, InCommand))+import Data.Aviation.Casr.Logbook.Types.DayNight(DayNight, HasDayNight(dayNight))+import Data.Aviation.Casr.Logbook.Types.FlightPath(FlightPath, HasFlightPath(flightPath))+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(TimeAmount, zerotimeamount)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data AircraftFlight =+  AircraftFlight {+    _aircraftflightname :: String+  , _flightaircraft :: Aircraft+  , _command :: Command+  , _daynight :: DayNight+  , _flightpath :: FlightPath+  , _flightothercrew :: [Aviator]+  , _instrumentflightTime :: TimeAmount+  } deriving (Eq, Ord, Show)++makeClassy ''AircraftFlight++instance HasAircraft AircraftFlight where+  aircraft =+    flightaircraft . aircraft++instance HasDayNight AircraftFlight where+  dayNight =+    daynight . dayNight++instance HasFlightPath AircraftFlight where+  flightPath =+    flightpath . flightPath+    +icusonlyflight ::+  String+  -> Aircraft+  -> Aviator+  -> DayNight+  -> FlightPath+  -> TimeAmount+  -> AircraftFlight+icusonlyflight n a v t p i =+  AircraftFlight+    n+    a+    (ICUS v)+    t+    p+    []+    i++noif_icusonlyflight ::+  String+  -> Aircraft+  -> Aviator+  -> DayNight+  -> FlightPath+  -> AircraftFlight+noif_icusonlyflight n a v t p =+  icusonlyflight+    n+    a+    v+    t+    p+    zerotimeamount++dualonlyflight ::+  String+  -> Aircraft+  -> Aviator+  -> DayNight+  -> FlightPath+  -> TimeAmount+  -> AircraftFlight+dualonlyflight n a v t p i =+  AircraftFlight+    n+    a+    (Dual v)+    t+    p+    []+    i++noif_dualonlyflight ::+  String+  -> Aircraft+  -> Aviator+  -> DayNight+  -> FlightPath+  -> AircraftFlight+noif_dualonlyflight n a v t p =+  dualonlyflight+    n+    a+    v+    t+    p+    zerotimeamount++commandonlyflight ::+  String+  -> Aircraft+  -> DayNight+  -> FlightPath+  -> TimeAmount+  -> AircraftFlight+commandonlyflight n a t p i =+  AircraftFlight+    n+    a+    InCommand+    t+    p+    []+    i++noif_commandonlyflight ::+  String+  -> Aircraft+  -> DayNight+  -> FlightPath+  -> AircraftFlight+noif_commandonlyflight n a t p =+  commandonlyflight+    n+    a+    t+    p+    zerotimeamount
+ src/Data/Aviation/Casr/Logbook/Types/Aviator.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Aviator(+  Aviator(..)+, HasAviator(..)+, aviatorwithname+, nodobaviator+, dobaviator+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Rating(Rating)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.Digit(Digit)+import Data.Maybe(Maybe(Nothing, Just))+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data Aviator =+  Aviator {+    _surname :: String+  , _firstname :: String+  , _arn :: [Digit]+  , _dob :: Maybe Day+  , _ratings :: [Rating]+  } deriving (Eq, Ord, Show)++makeClassy ''Aviator++aviatorwithname ::+  String+  -> String+  -> Aviator+aviatorwithname s f =+  Aviator+    s+    f+    []+    Nothing+    []++nodobaviator ::+  String+  -> String+  -> [Digit]+  -> [Rating]+  -> Aviator+nodobaviator s f r =+  Aviator+    s +    f+    r+    Nothing++dobaviator ::+  String+  -> String+  -> [Digit]+  -> Day+  -> [Rating]+  -> Aviator+dobaviator s f r b =+  Aviator+    s +    f+    r+    (Just b)
+ src/Data/Aviation/Casr/Logbook/Types/Briefing.hs view
@@ -0,0 +1,46 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Briefing(+  Briefing(..)+, HasBriefing(..)+) where+  +import Control.Category((.))+import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator, HasAviator(aviator))+import Data.Aviation.Casr.Logbook.Types.Location(Location, HasLocation(location))+import Data.Aviation.Casr.Logbook.Types.Time(Time, HasTime(time))+import Data.Aviation.Casr.Logbook.Types.TimeAmount(TimeAmount, HasTimeAmount(timeAmount))+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Briefing =+  Briefing {+    _briefingName :: String+  , _briefingLocation :: Location+  , _briefingTime :: Time+  , _briefer :: Aviator+  , _briefingTimeAmount :: TimeAmount+  } deriving (Eq, Ord, Show)++makeClassy ''Briefing++instance HasLocation Briefing where+  location =+    briefingLocation . location++instance HasTime Briefing where+  time =+    briefingTime .  time++instance HasAviator Briefing where+  aviator =+    briefer . aviator++instance HasTimeAmount Briefing where+  timeAmount =+    briefingTimeAmount . timeAmount+    
+ src/Data/Aviation/Casr/Logbook/Types/Command.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Command(+  Command(..)+, AsCommand(..)+, getInstructingPic+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator)+import Data.Eq(Eq)+import Data.Maybe(Maybe(Just, Nothing))+import Data.Ord(Ord)+import Prelude(Show)++data Command =+  ICUS Aviator+  | Dual Aviator+  | InCommand+  deriving (Eq, Ord, Show)++makeClassyPrisms ''Command++getInstructingPic ::+  Command+  -> Maybe Aviator+getInstructingPic (ICUS a) =+  Just a+getInstructingPic (Dual a) =+  Just a+getInstructingPic InCommand =+  Nothing
+ src/Data/Aviation/Casr/Logbook/Types/DayNight.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.DayNight(+  DayNight(..)+, HasDayNight(..)+, day+, night+, totalDayNight+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(TimeAmount(TimeAmount), zerotimeamount)+import Data.Digit(Digit)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Monoid(mappend)+import Data.Ord(Ord)+import Prelude(Show)++data DayNight =+  DayNight {+    _dayDayNight :: TimeAmount+  , _nightDayNight :: TimeAmount+  } deriving (Eq, Ord, Show)++makeClassy ''DayNight++day ::+  Int+  -> Digit+  -> DayNight+day h p =+  DayNight (TimeAmount h p) zerotimeamount++night ::+  Int+  -> Digit+  -> DayNight+night h p =+  DayNight zerotimeamount (TimeAmount h p)++totalDayNight ::+  DayNight+  -> TimeAmount+totalDayNight (DayNight d n) =+  d `mappend` n
+ src/Data/Aviation/Casr/Logbook/Types/Engine.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Engine(+  Engine(..)+, AsEngine(..)+) where++import Control.Lens(makeClassyPrisms)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data Engine =+  Single+  | Multi+  deriving (Eq, Ord, Show)++makeClassyPrisms ''Engine
+ src/Data/Aviation/Casr/Logbook/Types/Entries.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}++module Data.Aviation.Casr.Logbook.Types.Entries(+  Entries(..)+, emptyentries+, singleentry+) where++import Control.Lens(makeWrapped)+import Data.Aviation.Casr.Logbook.Types.Entry(Entry)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)+  +newtype Entries ae se ee be =+  Entries+    [Entry ae se ee be]+  deriving (Eq, Ord, Show)++makeWrapped ''Entries++emptyentries ::+  Entries ae se ee be+emptyentries =+  Entries []++singleentry ::+  Entry ae se ee be+  -> Entries ae se ee be+singleentry e =+  Entries [e]
+ src/Data/Aviation/Casr/Logbook/Types/Entry.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Types.Entry(+  Entry(..)+, AsEntry(..)+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Types.AircraftFlight(AircraftFlight)+import Data.Aviation.Casr.Logbook.Types.SimulatorFlight(SimulatorFlight)+import Data.Aviation.Casr.Logbook.Types.Exam(Exam)+import Data.Aviation.Casr.Logbook.Types.Briefing(Briefing)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data Entry ae se ee be =+  AircraftFlightEntry AircraftFlight ae+  | SimulatorFlightEntry SimulatorFlight se+  | ExamEntry Exam ee+  | BriefingEntry Briefing be+  deriving (Eq, Ord, Show)++makeClassyPrisms ''Entry
+ src/Data/Aviation/Casr/Logbook/Types/Exam.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Exam(+  Exam(..)+, HasExam(..)+, dayonlyexam+) where++import Control.Category((.))+import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator, HasAviator(aviator))+import Data.Aviation.Casr.Logbook.Types.Time(Time, HasTime(time), dayonly)+import Data.Aviation.Casr.Logbook.Types.Location(Location, HasLocation(location))+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data Exam =+  Exam {+    _examName :: String+  , _examLocation :: Location+  , _examTime :: Time+  , _examDelegate :: Aviator+  , _examResult :: Int+  , _examResultMaximum :: Int+  } deriving (Eq, Ord, Show)  ++makeClassy ''Exam++instance HasLocation Exam where+  location =+    examLocation . location++instance HasTime Exam where+  time =+    examTime . time++instance HasAviator Exam where+  aviator =+    examDelegate . aviator+    +dayonlyexam ::+  String+  -> Location+  -> Day+  -> Aviator+  -> Int+  -> Int+  -> Exam+dayonlyexam n l d =+  Exam+    n+    l+    (dayonly d)
+ src/Data/Aviation/Casr/Logbook/Types/FlightPath.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.FlightPath(+  FlightPath(..)+, HasFlightPath(..)+, directflightpath+, directcircuit+, pointsatdate+, flightPathList+, circuitsatdate+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.FlightPoint(FlightPoint, pointatdate)+import Data.Eq(Eq)+import Data.Functor((<$>))+import Data.Int(Int)+import Data.List((++), replicate)+import Data.Ord(Ord)+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data FlightPath =+  FlightPath {+    _flightStart :: FlightPoint+  , _flightIntermediate :: [FlightPoint]+  , _flightEnd :: FlightPoint+  } deriving (Eq, Ord, Show)++makeClassy ''FlightPath++directflightpath ::+  FlightPoint+  -> FlightPoint+  -> FlightPath+directflightpath x y =+  FlightPath x [] y++directcircuit ::+  FlightPoint+  -> FlightPath+directcircuit x =+  directflightpath x x++pointsatdate ::+  String+  -> [String]+  -> String+  -> Day+  -> FlightPath+pointsatdate x i y d =+  FlightPath+    (pointatdate x d)+    ((\s -> pointatdate s d) <$> i)+    (pointatdate y d)++flightPathList ::+  FlightPath+  -> [FlightPoint]+flightPathList (FlightPath s x e) =+  s : x ++ [e]++circuitsatdate ::+  String+  -> Int+  -> Day+  -> FlightPath+circuitsatdate x n d =+  FlightPath+    (pointatdate x d)+    (replicate n (pointatdate x d))+    (pointatdate x d)
+ src/Data/Aviation/Casr/Logbook/Types/FlightPoint.hs view
@@ -0,0 +1,48 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.FlightPoint(+  FlightPoint(..)+, HasFlightPoint(..)+, pointatdate+, runwayatdate+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Time(Time, dayonly)+import Data.Eq(Eq)+import Data.Maybe(Maybe(Nothing, Just))+import Data.Ord(Ord)+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data FlightPoint =+  FlightPoint {+    _point :: String+  , _runway :: Maybe String+  , _landingTime :: Time+  } deriving (Eq, Ord, Show)++makeClassy ''FlightPoint++pointatdate ::+  String+  -> Day+  -> FlightPoint+pointatdate a d =+  FlightPoint+    a+    Nothing+    (dayonly d)++runwayatdate ::+  String+  -> String+  -> Day+  -> FlightPoint+runwayatdate a r d =+  FlightPoint+    a+    (Just r)+    (dayonly d)
+ src/Data/Aviation/Casr/Logbook/Types/Location.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Location(+  Location(..)+, HasLocation(..)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show, Double)++data Location =+  Location {+    _locationname :: String+  , _locationlatitude :: Double+  , _locationlongitude :: Double+  } deriving (Eq, Ord, Show)++makeClassy ''Location
+ src/Data/Aviation/Casr/Logbook/Types/Logbook.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Types.Logbook(+  Logbook(..)+, HasLogbook(..)+, aviatorlogbook+, emptylogbook+, singleentrylogbook+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator)+import Data.Aviation.Casr.Logbook.Types.Entries(Entries(Entries), emptyentries, singleentry)+import Data.Aviation.Casr.Logbook.Types.Entry(Entry)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data Logbook ae se ee be =+  Logbook {+    _logbookaviator :: Aviator+  , _logbookentries :: (Entries ae se ee be)+  } deriving (Eq, Ord, Show)++makeClassy ''Logbook++aviatorlogbook ::+  Aviator+  -> [Entry ae se ee be]+  -> Logbook ae se ee be+aviatorlogbook a e =+  Logbook+    a+    (Entries e)++emptylogbook ::+  Aviator+  -> Logbook ae se ee be+emptylogbook a =+  Logbook+    a+    emptyentries++singleentrylogbook ::+  Aviator+  -> Entry ae se ee be+  -> Logbook ae se ee be+singleentrylogbook a e =+  Logbook+    a+    (singleentry e)
+ src/Data/Aviation/Casr/Logbook/Types/Rating.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Rating(+  Rating(..)+, HasRating(..)+, nodayrating+, dayrating+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Maybe(Maybe(Nothing, Just))+import Data.Ord(Ord)+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data Rating =+  Rating {+    _ratingName :: String+  , _ratingAchieved :: Maybe Day+  } deriving (Eq, Ord, Show)++makeClassy ''Rating++nodayrating ::+  String+  -> Rating+nodayrating r =+  Rating+    r+    Nothing++dayrating ::+  String+  -> Day+  -> Rating+dayrating r d =+  Rating+    r+    (Just d)
+ src/Data/Aviation/Casr/Logbook/Types/SimulatorFlight.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.SimulatorFlight(+  SimulatorFlight(..)+, HasSimulatorFlight(..)+, dayonlysimulator+) where++import Control.Category((.))+import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Types.Time(Time, HasTime(time), dayonly)+import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator)+import Data.Aviation.Casr.Logbook.Types.TimeAmount(TimeAmount)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.String(String)+import Data.Time(Day)+import Prelude(Show)++data SimulatorFlight =+  SimulatorFlight {+    _simulatorflightname :: String+  , _simulatorflighttime :: Time+  , _simulatortype :: String+  , _simulatorothercrew :: [Aviator]+  , _simulatorTime :: TimeAmount+  , _instrumentsimulatorTime :: TimeAmount+  } deriving (Eq, Ord, Show)   ++makeClassy ''SimulatorFlight++instance HasTime SimulatorFlight where+  time =+    simulatorflighttime . time++dayonlysimulator ::+  String+  -> Day+  -> String+  -> [Aviator]+  -> TimeAmount+  -> TimeAmount+  -> SimulatorFlight+dayonlysimulator n d =+  SimulatorFlight+    n+    (dayonly d)+    
+ src/Data/Aviation/Casr/Logbook/Types/Time.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.Time(+  Time(..)+, HasTime(..)+, dayonly+, dayandtime+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Data.Maybe(Maybe(Nothing, Just))+import Data.Time(Day, TimeOfDay)+import Prelude(Show)++data Time =+  Time {+    _daytime :: Day+  , _timeofday :: Maybe TimeOfDay+  } deriving (Eq, Ord, Show)++makeClassy ''Time++dayonly ::+  Day+  -> Time+dayonly d =+  Time d Nothing++dayandtime ::+  Day+  -> TimeOfDay+  -> Time+dayandtime d t =+  Time d (Just t)
+ src/Data/Aviation/Casr/Logbook/Types/TimeAmount.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Types.TimeAmount(+  TimeAmount(..)+, HasTimeAmount(..)+, parttimeamount+, zerotimeamount+, addtimeamount+, timeAmountBy10+) where++import Control.Lens(makeClassy, ( # ))+import Data.Eq(Eq)+import Data.Digit(Digit, x0, digit, (/+/))+import Data.Int(Int)+import Data.Monoid(Monoid(mempty, mappend))+import Data.Ord(Ord)+import Prelude(Show, Num((+), (*)))++data TimeAmount =+  TimeAmount {+    _hours :: Int+  , _tenthofhour :: Digit+  } deriving (Eq, Ord, Show)++makeClassy ''TimeAmount++parttimeamount ::+  Digit+  -> TimeAmount+parttimeamount =+  TimeAmount 0++zerotimeamount ::+  TimeAmount+zerotimeamount =+  TimeAmount 0 x0++addtimeamount ::+  TimeAmount +  -> TimeAmount+  -> TimeAmount+TimeAmount f1 p1 `addtimeamount` TimeAmount f2 p2 =+  let (h, q) = p1 /+/ p2+  in  TimeAmount (f1 + f2 + digit # h) q ++timeAmountBy10 ::+  TimeAmount+  -> Int+timeAmountBy10 (TimeAmount a b) =+  a * 10 + digit # b++instance Monoid TimeAmount where+  mempty =+    zerotimeamount+  mappend =+    addtimeamount