casr-logbook 0.0.9 → 0.0.10
raw patch · 11 files changed
+332/−268 lines, 11 filesdep ~base
Dependency ranges changed: base
Files
- casr-logbook.cabal +5/−4
- changelog +4/−0
- src/Data/Aviation/Casr/Logbook.hs +4/−3
- src/Data/Aviation/Casr/Logbook/Entries.hs +87/−0
- src/Data/Aviation/Casr/Logbook/Entry.hs +69/−0
- src/Data/Aviation/Casr/Logbook/ExamEntry.hs +69/−0
- src/Data/Aviation/Casr/Logbook/FlightLog.hs +0/−86
- src/Data/Aviation/Casr/Logbook/FlightLogEntries.hs +0/−53
- src/Data/Aviation/Casr/Logbook/FlightLogEntry.hs +0/−114
- src/Data/Aviation/Casr/Logbook/Log.hs +86/−0
- src/Data/Aviation/Casr/Logbook/Totals.hs +8/−8
casr-logbook.cabal view
@@ -1,5 +1,5 @@ name: casr-logbook-version: 0.0.9+version: 0.0.10 license: OtherLicense license-file: LICENSE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>@@ -49,14 +49,15 @@ Data.Aviation.Casr.Logbook.DayNight Data.Aviation.Casr.Logbook.DOB Data.Aviation.Casr.Logbook.Engine- Data.Aviation.Casr.Logbook.FlightLogEntries- Data.Aviation.Casr.Logbook.FlightLogEntry- Data.Aviation.Casr.Logbook.FlightLog+ Data.Aviation.Casr.Logbook.Entries+ Data.Aviation.Casr.Logbook.Entry+ Data.Aviation.Casr.Logbook.ExamEntry Data.Aviation.Casr.Logbook.FlightPath Data.Aviation.Casr.Logbook.Hours Data.Aviation.Casr.Logbook.Image Data.Aviation.Casr.Logbook.Images Data.Aviation.Casr.Logbook.ImageType+ Data.Aviation.Casr.Logbook.Log Data.Aviation.Casr.Logbook.Printer.Markdown Data.Aviation.Casr.Logbook.Printer.Html Data.Aviation.Casr.Logbook.Name
changelog view
@@ -1,3 +1,7 @@+0.0.10++* Add support for exams.+ 0.0.9 * Woops, left in test code.
src/Data/Aviation/Casr/Logbook.hs view
@@ -8,14 +8,15 @@ import Data.Aviation.Casr.Logbook.DayNight as L import Data.Aviation.Casr.Logbook.DOB as L import Data.Aviation.Casr.Logbook.Engine as L-import Data.Aviation.Casr.Logbook.FlightLogEntries as L-import Data.Aviation.Casr.Logbook.FlightLogEntry as L-import Data.Aviation.Casr.Logbook.FlightLog as L+import Data.Aviation.Casr.Logbook.Entries as L+import Data.Aviation.Casr.Logbook.Entry as L+import Data.Aviation.Casr.Logbook.ExamEntry as L import Data.Aviation.Casr.Logbook.FlightPath as L import Data.Aviation.Casr.Logbook.Hours as L import Data.Aviation.Casr.Logbook.Image as L import Data.Aviation.Casr.Logbook.Images as L import Data.Aviation.Casr.Logbook.ImageType as L+import Data.Aviation.Casr.Logbook.Log as L import Data.Aviation.Casr.Logbook.Printer.Html as L import Data.Aviation.Casr.Logbook.Printer.Markdown as L import Data.Aviation.Casr.Logbook.Name as L
+ src/Data/Aviation/Casr/Logbook/Entries.hs view
@@ -0,0 +1,87 @@+module Data.Aviation.Casr.Logbook.Entries (+ Entries(..)+, flightEntries+) where++import Data.Aviation.Casr.Logbook.Aircraft+import Data.Aviation.Casr.Logbook.Date+import Data.Aviation.Casr.Logbook.Entry+import Data.Aviation.Casr.Logbook.ExamEntry+import Data.Aviation.Casr.Logbook.FlightEntry+import Data.Aviation.Casr.Logbook.Printer.Markdown+import Data.Aviation.Casr.Logbook.Printer.Html+import Data.List++newtype Entries =+ Entries+ [Entry]+ deriving (Eq, Ord, Show)++instance Monoid Entries where+ mempty =+ Entries []+ Entries e1 `mappend` Entries e2 =+ Entries (e1 `mappend` e2)++instance Markdown Entries where+ markdown (Entries g) =+ intercalate "\n\n----\n\n" (fmap markdown g)++instance Html Entries where+ html (Entries g) =+ (\(i, h) -> let nospace =+ map (\c -> case c of+ ' ' ->+ '_'+ _ ->+ c)+ divid =+ case h of+ EntryFlight (FlightEntry _ (Date d) (Aircraft _ reg _) _ _ _ _ _ _ _ _ _) ->+ concat+ [+ nospace d+ , "_"+ , nospace reg+ , "_"+ , show (i :: Int)+ ]+ EntryExam (ExamEntry (Date d) n _ _ _ _ _) ->+ concat+ [+ nospace d+ , "_"+ , nospace n+ ]+ divclass =+ case h of+ EntryFlight _ ->+ "flightlogentry"+ EntryExam _ ->+ "examentry"+ in concat+ [+ "<div id=\""+ , divid+ , "\" class=\""+ , divclass+ , "\">"+ , "<div class=\"hreflink\">"+ , "<a href=\"#"+ , divid+ , "\">"+ , "§"+ , "</a>"+ , "</div>"+ , html h+ , "</div>"+ , "<hr>"+ ]+ ) =<< zip [0..] g+ +flightEntries ::+ Entries+ -> [FlightEntry]+flightEntries (Entries e) =+ foldr (\x z -> case x of EntryFlight f -> f:z+ EntryExam _ -> z) [] e
+ src/Data/Aviation/Casr/Logbook/Entry.hs view
@@ -0,0 +1,69 @@+module Data.Aviation.Casr.Logbook.Entry (+ Entry(..)+, flight+, exam+) where++import Data.Aviation.Casr.Logbook.Aircraft+import Data.Aviation.Casr.Logbook.ARN+import Data.Aviation.Casr.Logbook.Date+import Data.Aviation.Casr.Logbook.DayNight+import Data.Aviation.Casr.Logbook.ExamEntry+import Data.Aviation.Casr.Logbook.FlightEntry+import Data.Aviation.Casr.Logbook.FlightPath+import Data.Aviation.Casr.Logbook.Hours+import Data.Aviation.Casr.Logbook.Images+import Data.Aviation.Casr.Logbook.PiC+import Data.Aviation.Casr.Logbook.PoB+import Data.Aviation.Casr.Logbook.Printer.Markdown+import Data.Aviation.Casr.Logbook.Printer.Html+import Data.Aviation.Casr.Logbook.Sequence+import Data.Aviation.Casr.Logbook.TrackLogs+import Data.Aviation.Casr.Logbook.Videos+import Data.Aviation.Casr.Logbook.Visualisations++data Entry =+ EntryExam ExamEntry+ | EntryFlight FlightEntry+ deriving (Eq, Ord, Show)++instance Markdown Entry where+ markdown (EntryExam e) =+ markdown e+ markdown (EntryFlight f) =+ markdown f++instance Html Entry where+ html (EntryExam e) =+ html e+ html (EntryFlight f) =+ html f++flight ::+ Sequence+ -> Date+ -> Aircraft+ -> Hours+ -> PoB+ -> FlightPath+ -> DayNight+ -> PiC+ -> TrackLogs+ -> Visualisations+ -> Images+ -> Videos+ -> Entry+flight sequ date aircraft hours pob flightpath daynight pic tracklogs visualisations images videos =+ EntryFlight (FlightEntry sequ date aircraft hours pob flightpath daynight pic tracklogs visualisations images videos)++exam ::+ Date+ -> String+ -> String+ -> String+ -> ARN+ -> Int+ -> Int+ -> Entry+exam d n dn dr da r m =+ EntryExam (ExamEntry d n dn dr da r m)
+ src/Data/Aviation/Casr/Logbook/ExamEntry.hs view
@@ -0,0 +1,69 @@+module Data.Aviation.Casr.Logbook.ExamEntry (+ ExamEntry(..)+) where++import Data.Aviation.Casr.Logbook.ARN+import Data.Aviation.Casr.Logbook.Date+import Data.Aviation.Casr.Logbook.Printer.Markdown+import Data.Aviation.Casr.Logbook.Printer.Html++data ExamEntry =+ ExamEntry+ Date+ String -- name+ String -- delegate name+ String -- delegate rating+ ARN -- delegate ARN+ Int -- result+ Int -- maximum possible result+ deriving (Eq, Ord, Show)++instance Markdown ExamEntry where+ markdown (ExamEntry d n dn dr da r m) =+ concat [+ markdown d+ , "* Exam: **"+ , markdown n+ , "**\n"+ , "* Delegate Name: **"+ , markdown dn+ , " ("+ , markdown dr+ , ")**\n"+ , markdown da+ , "* Result: **`"+ , markdown r+ , "/"+ , markdown m+ , "`**"+ ]++instance Html ExamEntry where+ html (ExamEntry date n dn dr da r m) =+ concat+ [+ "<div class=\"examlog\">"+ , "<h3 class=\"exam\">"+ , html n+ , "</h3>"+ , "</div>"+ , "<ul>"+ , "<li class=\"date\">"+ , html date+ , "</li>"+ , "<li class=\"delegate\">"+ , html dn+ , " ("+ , html dr+ , ")"+ , "</li>"+ , "<li class=\"delegatearn\">"+ , html da+ , "</li>"+ , "<li class=\"examresult\">"+ , html r+ , "/"+ , html m+ , "</li>"+ , "</ul>"+ ]
− src/Data/Aviation/Casr/Logbook/FlightLog.hs
@@ -1,86 +0,0 @@-module Data.Aviation.Casr.Logbook.FlightLog (- FlightLog(..)-) where--import Data.Aviation.Casr.Logbook.ARN-import Data.Aviation.Casr.Logbook.DOB-import Data.Aviation.Casr.Logbook.FlightLogEntries-import Data.Aviation.Casr.Logbook.Name-import Data.Aviation.Casr.Logbook.Printer.Markdown-import Data.Aviation.Casr.Logbook.Printer.Html-import Data.Aviation.Casr.Logbook.Totals--data FlightLog =- FlightLog- Name- DOB- ARN- FlightLogEntries- deriving (Eq, Ord, Show)- -instance Markdown FlightLog where- markdown (FlightLog (Name name') dob arn entries) =- concat- [- "# Pilot Personal Log Book\n"- , "### Civil Aviation Safety Regulation 1998 (61.345) [*austlii.edu.au*](http://www.austlii.edu.au/au/legis/cth/consol_reg/casr1998333/s61.345.html)\n\n"- , "* "- , markdown name'- , "\n"- , markdown dob- , markdown arn- , "\n----\n\n"- , markdown (totals entries)- , "\n----\n\n"- , markdown entries- ]- -instance Html FlightLog where- html (FlightLog name@(Name name') dob arn@(ARN arn') entries) =- concat- [- "<!DOCTYPE HTML>"- , "<html lang=\"en\">"- , "<head>"- , "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"- , "<title>Pilot Personal Log Book — "- , html name'- , " ("- , html arn'- , ")"- , "</title>"- , "<link href=\"https://fonts.googleapis.com/css?family=Inconsolata:400,700\" rel=\"stylesheet\" type=\"text/css\">"- , "<link rel=\"stylesheet\" type=\"text/css\" href=\"casr-logbook.css\">"- , "<link rel=\"alternate\" type=\"application/atom+xml\" href=\"/atom.xml\" title=\"Atom feed\">"- , "<script type=\"text/javascript\" src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML\"></script>"- , "<script type=\"text/javascript\" src=\"https://raw.github.com/Mathapedia/LaTeX2HTML5/master/latex2html5.min.js\"></script>"- , "</head>"- , "<body class=\"casr-logbook\">" - , "<div id=\"title\" class=\"title\">"- , "<h1>Pilot Personal Log Book</h1>"- , "</div>"- , "<div id=\"subtitle\" class=\"subtitle\">"- , "<h2>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</a></span></h2>"- , "</div>" - , "<div id=\"personal\" class=\"personal\">" - , "<ul>"- , "<li id=\"name\">"- , html name- , "</li>"- , "<li id=\"dob\">"- , html dob- , "</li>"- , "<li id=\"arn\">"- , html arn- , "</li>"- , "</ul>" - , "</div>"- , "<hr>"- , html (totals entries)- , "<hr>"- , "<div id=\"flightlogentries\" class=\"flightlogentries\">"- , html entries- , "</div> "- , "</body>"- , "</html>"- ]
− src/Data/Aviation/Casr/Logbook/FlightLogEntries.hs
@@ -1,53 +0,0 @@-module Data.Aviation.Casr.Logbook.FlightLogEntries (- FlightLogEntries(..)-) where--import Data.Aviation.Casr.Logbook.Aircraft-import Data.Aviation.Casr.Logbook.Date-import Data.Aviation.Casr.Logbook.FlightLogEntry-import Data.Aviation.Casr.Logbook.Printer.Markdown-import Data.Aviation.Casr.Logbook.Printer.Html-import Data.List--newtype FlightLogEntries =- FlightLogEntries- [FlightLogEntry]- deriving (Eq, Ord, Show)--instance Monoid FlightLogEntries where- mempty =- FlightLogEntries []- FlightLogEntries e1 `mappend` FlightLogEntries e2 =- FlightLogEntries (e1 `mappend` e2)--instance Markdown FlightLogEntries where- markdown (FlightLogEntries g) =- intercalate "\n\n----\n\n" (fmap markdown g)--instance Html FlightLogEntries where- html (FlightLogEntries g) =- (\(i, h@(FlightLogEntry _ (Date d) (Aircraft _ reg _) _ _ _ _ _ _ _ _ _)) ->- let divid = concat- [- d- , "_"- , reg- , "_"- , show (i :: Int)- ]- in concat- [- "<div id=\""- , divid- , "\" class=\"flightlogentry\">"- , "<div class=\"hreflink\">"- , "<a href=\"#"- , divid- , "\">"- , "§"- , "</a>"- , "</div>"- , html h- , "</div>"- , "<hr>"- ]) =<< zip [0..] g
− src/Data/Aviation/Casr/Logbook/FlightLogEntry.hs
@@ -1,114 +0,0 @@-module Data.Aviation.Casr.Logbook.FlightLogEntry (- FlightLogEntry(..)-) where--import Data.Aviation.Casr.Logbook.Aircraft-import Data.Aviation.Casr.Logbook.Date-import Data.Aviation.Casr.Logbook.DayNight-import Data.Aviation.Casr.Logbook.FlightPath-import Data.Aviation.Casr.Logbook.Hours-import Data.Aviation.Casr.Logbook.Images-import Data.Aviation.Casr.Logbook.PiC-import Data.Aviation.Casr.Logbook.PoB-import Data.Aviation.Casr.Logbook.Printer.Markdown-import Data.Aviation.Casr.Logbook.Printer.Html-import Data.Aviation.Casr.Logbook.Sequence-import Data.Aviation.Casr.Logbook.TrackLogs-import Data.Aviation.Casr.Logbook.Videos-import Data.Aviation.Casr.Logbook.Visualisations--{---This data structure currently only handles Day VFR. More modifications are-likely to result in a complete flight log entry structure.---}-data FlightLogEntry =- FlightLogEntry- Sequence- Date - Aircraft- Hours- PoB- FlightPath- DayNight- PiC- TrackLogs- Visualisations- Images- Videos- deriving (Eq, Ord, Show)- -instance Markdown FlightLogEntry where- markdown (FlightLogEntry sequ date aircraft hours pob flightpath daynight pic tracklogs visualisations images videos) =- concat- [- markdown date- , markdown sequ- , markdown aircraft- , markdown hours- , markdown pob- , markdown flightpath- , markdown daynight- , markdown pic- , markdown tracklogs- , markdown videos- , markdown visualisations- , markdown images- ]--instance Html FlightLogEntry where- html (FlightLogEntry sequ date aircraft hours pob flightpath daynight pic tracklogs visualisations images videos) =- let onethen x c r = concat $- case r of- [] ->- []- _ ->- [- "<"- , x- , " class=\""- , c- , "\">"- , r - , "</"- , x- , ">"- ]- li = onethen "li"- div' = onethen "div" - in concat- [- "<div class=\"flightlogsequence\">"- , "<h3 class=\"sequence\">"- , html sequ- , "</h3>"- , "</div>"- , "<ul>"- , "<li class=\"date\">"- , html date- , "</li>"- , "<li class=\"aircraft\">"- , html aircraft- , "</li>"- , "<li class=\"hours\">"- , html hours- , "</li>"- , "<li class=\"pob\">"- , html pob- , "</li>"- , "<li class=\"flightpath\">"- , html flightpath- , "</li>"- , "<li class=\"daynight\">"- , html daynight- , "</li>"- , "<li class=\"pic\">"- , html pic- , "</li>"- , li "tracklogs" (html tracklogs)- , li "videos" (html videos) - , li "visualisations" (html visualisations) - , "</ul>"- , div' "images" (html images) - ]
+ src/Data/Aviation/Casr/Logbook/Log.hs view
@@ -0,0 +1,86 @@+module Data.Aviation.Casr.Logbook.Log (+ Log(..)+) where++import Data.Aviation.Casr.Logbook.ARN+import Data.Aviation.Casr.Logbook.DOB+import Data.Aviation.Casr.Logbook.Entries+import Data.Aviation.Casr.Logbook.Name+import Data.Aviation.Casr.Logbook.Printer.Markdown+import Data.Aviation.Casr.Logbook.Printer.Html+import Data.Aviation.Casr.Logbook.Totals++data Log =+ Log+ Name+ DOB+ ARN+ Entries+ deriving (Eq, Ord, Show)+ +instance Markdown Log where+ markdown (Log (Name name') dob arn entries) =+ concat+ [+ "# Pilot Personal Log Book\n"+ , "### Civil Aviation Safety Regulation 1998 (61.345) [*austlii.edu.au*](http://www.austlii.edu.au/au/legis/cth/consol_reg/casr1998333/s61.345.html)\n\n"+ , "* "+ , markdown name'+ , "\n"+ , markdown dob+ , markdown arn+ , "\n----\n\n"+ , markdown (totals entries)+ , "\n----\n\n"+ , markdown entries+ ]+ +instance Html Log where+ html (Log name@(Name name') dob arn@(ARN arn') entries) =+ concat+ [+ "<!DOCTYPE HTML>"+ , "<html lang=\"en\">"+ , "<head>"+ , "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"+ , "<title>Pilot Personal Log Book — "+ , html name'+ , " ("+ , html arn'+ , ")"+ , "</title>"+ , "<link href=\"https://fonts.googleapis.com/css?family=Inconsolata:400,700\" rel=\"stylesheet\" type=\"text/css\">"+ , "<link rel=\"stylesheet\" type=\"text/css\" href=\"casr-logbook.css\">"+ , "<link rel=\"alternate\" type=\"application/atom+xml\" href=\"/atom.xml\" title=\"Atom feed\">"+ , "<script type=\"text/javascript\" src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML\"></script>"+ , "<script type=\"text/javascript\" src=\"https://raw.github.com/Mathapedia/LaTeX2HTML5/master/latex2html5.min.js\"></script>"+ , "</head>"+ , "<body class=\"casr-logbook\">" + , "<div id=\"title\" class=\"title\">"+ , "<h1>Pilot Personal Log Book</h1>"+ , "</div>"+ , "<div id=\"subtitle\" class=\"subtitle\">"+ , "<h2>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</a></span></h2>"+ , "</div>" + , "<div id=\"personal\" class=\"personal\">" + , "<ul>"+ , "<li id=\"name\">"+ , html name+ , "</li>"+ , "<li id=\"dob\">"+ , html dob+ , "</li>"+ , "<li id=\"arn\">"+ , html arn+ , "</li>"+ , "</ul>" + , "</div>"+ , "<hr>"+ , html (totals entries)+ , "<hr>"+ , "<div id=\"flightlogentries\" class=\"flightlogentries\">"+ , html entries+ , "</div> "+ , "</body>"+ , "</html>"+ ]
src/Data/Aviation/Casr/Logbook/Totals.hs view
@@ -9,8 +9,8 @@ import Data.Aviation.Casr.Logbook.Aircraft import Data.Aviation.Casr.Logbook.DayNight import Data.Aviation.Casr.Logbook.Engine-import Data.Aviation.Casr.Logbook.FlightLogEntry-import Data.Aviation.Casr.Logbook.FlightLogEntries+import Data.Aviation.Casr.Logbook.Entries+import Data.Aviation.Casr.Logbook.FlightEntry import Data.Aviation.Casr.Logbook.Hours import Data.Aviation.Casr.Logbook.PoB import Data.Aviation.Casr.Logbook.PiC@@ -174,9 +174,9 @@ Map.empty singleTotals ::- FlightLogEntry+ FlightEntry -> Totals-singleTotals (FlightLogEntry _ _ (Aircraft atype areg aeng) hours (PoB pob) _ dn (PiC pic) _ _ _ _) =+singleTotals (FlightEntry _ _ (Aircraft atype areg aeng) hours (PoB pob) _ dn (PiC pic) _ _ _ _) = Totals hours (@@ -219,14 +219,14 @@ (Map.singleton pic hours) updateTotals ::- FlightLogEntry+ FlightEntry -> Totals -> Totals updateTotals = mappend . singleTotals totals ::- FlightLogEntries+ Entries -> Totals-totals (FlightLogEntries e) =- foldl' (flip updateTotals) zeroTotals e+totals =+ foldl' (flip updateTotals) zeroTotals . flightEntries