{-# LANGUAGE TemplateHaskell, QuasiQuotes, OverloadedStrings #-} module Handlers where import Control.Applicative ((<$>)) --, (<*>)) import Data.Text(Text,pack,unpack) import System.FilePath (takeFileName) --(>)) import System.IO.Storage (putValue, getValue) import Text.Hamlet import Text.ParserCombinators.Parsec hiding (string) import Hledger.Cli.Balance import Hledger.Cli.Print import Hledger.Cli.Register import Hledger.Cli.Options hiding (value) import Hledger.Cli.Utils import Hledger.Cli.Version (version) import Hledger.Data hiding (insert, today) import App import Settings import StaticFiles ---------------------------------------------------------------------- -- handlers/views ---------------------------------------------------------------------- getRootR :: Handler RepHtml getRootR = redirect RedirectTemporary defaultroute where defaultroute = JournalR -- defaultLayout $ do -- h2id <- lift newIdent -- setTitle "hledger-web homepage" -- addWidget $(widgetFile "homepage") ---------------------------------------------------------------------- -- | A combined accounts and journal view. getJournalR :: Handler RepHtml getJournalR = do (a, p, opts, fspec, j, msg, here) <- getHandlerData today <- liftIO getCurrentDay -- app <- getYesod -- t <- liftIO $ getCurrentLocalTime let -- args = appArgs app -- fspec' = optsToFilterSpec opts args t sidecontent = balanceReportAsHtml opts td $ balanceReport opts fspec j maincontent = journalReportAsHtml opts td $ journalReport opts fspec j td = mktd{here=here, title="hledger journal", msg=msg, a=a, p=p, j=j, today=today} editform' = editform td hamletToRepHtml $ pageLayout td [hamlet|
#{txn}
|] where
evenodd = if even n then "even" else "odd" :: String
txn = trimnl $ showTransaction t where trimnl = reverse . dropWhile (=='\n') . reverse
addform :: TemplateData -> Hamlet AppRoute
addform td = [hamlet|