packages feed

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 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 &mdash; "-      , 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 &mdash; "+      , 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