p7/Main.hs

60 lines
1.6 KiB
Haskell
Raw Normal View History

2018-06-24 21:18:15 -04:00
{-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings #-}
2018-06-22 00:23:58 -04:00
module Main where
2018-06-21 22:24:42 -04:00
2018-06-22 00:23:58 -04:00
import Data.Time.Clock
import Data.Time.Calendar
2018-06-24 21:18:15 -04:00
import Data.List
2018-06-24 19:21:29 -04:00
import Data.Maybe
2018-06-21 22:24:42 -04:00
import Packs
2018-06-24 17:26:43 -04:00
import State
2018-06-24 19:21:29 -04:00
import Format
import Timestamp
2018-06-24 19:47:53 -04:00
import Preview
2018-06-24 21:18:15 -04:00
import Yesod
import Config
2018-06-28 22:20:08 -04:00
import Nrdb
2018-07-01 16:47:13 -04:00
import Text.Lucius
import Utils
2018-06-22 00:23:58 -04:00
2018-06-27 22:49:32 -04:00
data ProtocolSeven = ProtocolSeven
2018-06-24 21:18:15 -04:00
io :: MonadIO io => IO a -> io a
io = liftIO
putStrLnIO :: MonadIO io => String -> io ()
putStrLnIO = io . putStrLn
2018-06-27 22:49:32 -04:00
mkYesod "ProtocolSeven" [parseRoutes|
2018-06-24 21:18:15 -04:00
/ HomeR GET
|]
2018-06-27 22:49:32 -04:00
instance Yesod ProtocolSeven
2018-06-24 21:18:15 -04:00
getHomeR :: Handler Html
2018-06-26 22:43:47 -04:00
getHomeR = defaultLayout $ do
(year, month, day) <- io $ getCurrentTime >>= return . toGregorian . utctDay
let nextMonth = (month + 1) `mod` 12
let ts = toTS (year, month, day)
2018-06-24 21:18:15 -04:00
let ((i,o),b,r) = currentFormat ts
let bx = (\(Bq x) -> x)
let (_,ib,_) = initialRotation
let bbout = map show $ catMaybes $ inBoth (bx ib) (tail $ bx b)
let dpout = sort $ map show $ map (\(Ir n) -> n) i
let pr = getPreview ts
2018-06-28 22:20:08 -04:00
let (pdi,pdo,bbi,bbo) = extractPreview pr
let nrdbFormat = nrdbSearch (((map (\(Ir n) -> n) i) ++ (map (\(Or n _) -> n) o)),(catMaybes (bx b)))
let nrdbIn = nrdbSearch (pdi,catMaybes [bbi])
let nrdbOut = nrdbSearch (pdo,catMaybes [bbo])
2018-06-26 22:43:47 -04:00
setTitle "Protocol Seven"
addScriptRemote "https://fonts.googleapis.com/css?family=Inconsolata"
2018-07-01 16:47:13 -04:00
toWidget $(whamletFile "header.hamlet")
toWidget $(whamletFile "format.hamlet")
toWidget $(whamletFile "about.hamlet")
toWidget $(whamletFile "footer.hamlet")
toWidget $(luciusFile "style.lucius")
2018-06-24 21:18:15 -04:00
main :: IO ()
2018-06-27 22:49:32 -04:00
main = warp 80 ProtocolSeven
2018-06-24 19:21:29 -04:00