webyesod: cleanups
This commit is contained in:
		
							parent
							
								
									29b4ac9d04
								
							
						
					
					
						commit
						02d00e8d5b
					
				@ -5,7 +5,7 @@ A web-based UI.
 | 
			
		||||
 | 
			
		||||
module Hledger.Cli.Commands.Web
 | 
			
		||||
where
 | 
			
		||||
import Control.Concurrent -- (forkIO)
 | 
			
		||||
import Control.Concurrent (forkIO, threadDelay)
 | 
			
		||||
import Data.Either
 | 
			
		||||
import Network.Wai.Handler.SimpleServer (run)
 | 
			
		||||
import System.FilePath ((</>))
 | 
			
		||||
@ -73,21 +73,16 @@ instance Yesod HledgerWebApp where approot = appRoot
 | 
			
		||||
 | 
			
		||||
mkYesod "HledgerWebApp" [$parseRoutes|
 | 
			
		||||
/             IndexPage        GET
 | 
			
		||||
/style.css    StyleCss         GET
 | 
			
		||||
/transactions TransactionsPage GET POST
 | 
			
		||||
/register     RegisterPage     GET
 | 
			
		||||
/balance      BalancePage      GET
 | 
			
		||||
/style.css    StyleCss         GET
 | 
			
		||||
/params       ParamsDebug      GET
 | 
			
		||||
|]
 | 
			
		||||
 | 
			
		||||
getParamsDebug = do
 | 
			
		||||
    r <- getRequest
 | 
			
		||||
    return $ RepHtml $ toContent $ show $ reqGetParams r
 | 
			
		||||
 | 
			
		||||
getIndexPage :: Handler HledgerWebApp ()
 | 
			
		||||
getIndexPage = redirect RedirectTemporary TransactionsPage
 | 
			
		||||
 | 
			
		||||
getStyleCss :: Handler HledgerWebApp RepPlain
 | 
			
		||||
getStyleCss :: Handler HledgerWebApp ()
 | 
			
		||||
getStyleCss = do
 | 
			
		||||
    app <- getYesod
 | 
			
		||||
    let dir = appWebdir app
 | 
			
		||||
@ -110,10 +105,10 @@ withLatestJournalRender reportfn = do
 | 
			
		||||
    params <- getParams
 | 
			
		||||
    t <- liftIO $ getCurrentLocalTime
 | 
			
		||||
    let head' x = if null x then "" else head x
 | 
			
		||||
        as = head' $ params "a"
 | 
			
		||||
        ps = head' $ params "p"
 | 
			
		||||
        opts = appOpts app ++ [Period ps]
 | 
			
		||||
        args = appArgs app ++ [as]
 | 
			
		||||
        a = head' $ params "a"
 | 
			
		||||
        p = head' $ params "p"
 | 
			
		||||
        opts = appOpts app ++ [Period p]
 | 
			
		||||
        args = appArgs app ++ [a]
 | 
			
		||||
        fspec = optsToFilterSpec opts args t
 | 
			
		||||
    -- reload journal if changed
 | 
			
		||||
    j <- liftIO $ fromJust `fmap` getValue "hledger" "journal"
 | 
			
		||||
@ -122,15 +117,13 @@ withLatestJournalRender reportfn = do
 | 
			
		||||
    -- run the specified report using this request's params
 | 
			
		||||
    let s = reportfn opts fspec j'
 | 
			
		||||
    -- render the standard template
 | 
			
		||||
    req <- getRequest
 | 
			
		||||
    msg <- getMessage
 | 
			
		||||
    Just here <- getRoute
 | 
			
		||||
    hamletToRepHtml $ template here req msg as ps "hledger" s
 | 
			
		||||
    hamletToRepHtml $ template here msg a p "hledger" s
 | 
			
		||||
 | 
			
		||||
template :: HledgerWebAppRoutes
 | 
			
		||||
         -> Request -> Maybe (Html ()) -> String -> String
 | 
			
		||||
template :: HledgerWebAppRoutes -> Maybe (Html ()) -> String -> String
 | 
			
		||||
         -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
template here req msg as ps title content = [$hamlet|
 | 
			
		||||
template here msg a p title content = [$hamlet|
 | 
			
		||||
!!!
 | 
			
		||||
%html
 | 
			
		||||
 %head
 | 
			
		||||
@ -140,29 +133,28 @@ template here req msg as ps title content = [$hamlet|
 | 
			
		||||
 %body
 | 
			
		||||
  ^navbar'^
 | 
			
		||||
  #messages $m$
 | 
			
		||||
  ^addform'^
 | 
			
		||||
  ^addform^
 | 
			
		||||
  #content
 | 
			
		||||
   %pre $string.content$
 | 
			
		||||
|]
 | 
			
		||||
 where m = fromMaybe (string "") msg
 | 
			
		||||
       navbar' = navbar here req as ps
 | 
			
		||||
       addform' = addform req as ps
 | 
			
		||||
       navbar' = navbar here a p
 | 
			
		||||
       stylesheet = StyleCss
 | 
			
		||||
       metacontent = "text/html; charset=utf-8"
 | 
			
		||||
 | 
			
		||||
navbar :: HledgerWebAppRoutes -> Request -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
navbar here req as ps = [$hamlet|
 | 
			
		||||
navbar :: HledgerWebAppRoutes -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
navbar here a p = [$hamlet|
 | 
			
		||||
 #navbar
 | 
			
		||||
  %a#hledgerorglink!href=$string.hledgerurl$ hledger.org
 | 
			
		||||
  ^navlinks'^
 | 
			
		||||
  ^searchform'^
 | 
			
		||||
  %a#helplink!href=$string.manualurl$ help
 | 
			
		||||
|]
 | 
			
		||||
 where navlinks' = navlinks req as ps
 | 
			
		||||
       searchform' = searchform here as ps
 | 
			
		||||
 where navlinks' = navlinks a p
 | 
			
		||||
       searchform' = searchform here a p
 | 
			
		||||
 | 
			
		||||
navlinks :: Request -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
navlinks _ as ps = [$hamlet|
 | 
			
		||||
navlinks :: String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
navlinks a p = [$hamlet|
 | 
			
		||||
 #navlinks
 | 
			
		||||
  ^transactionslink^ | $
 | 
			
		||||
  ^registerlink^ | $
 | 
			
		||||
@ -173,7 +165,7 @@ navlinks _ as ps = [$hamlet|
 | 
			
		||||
  registerlink = navlink "register" RegisterPage
 | 
			
		||||
  balancelink = navlink "balance" BalancePage
 | 
			
		||||
  navlink s dest = [$hamlet|%a.navlink!href=@?u@ $string.s$|]
 | 
			
		||||
   where u = (dest, [("a", as), ("p", ps)])
 | 
			
		||||
   where u = (dest, [("a", a), ("p", p)])
 | 
			
		||||
 | 
			
		||||
searchform :: HledgerWebAppRoutes -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
searchform here a p = [$hamlet|
 | 
			
		||||
@ -199,8 +191,8 @@ searchform here a p = [$hamlet|
 | 
			
		||||
helplink topic = [$hamlet|%a!href=$string.u$ ?|]
 | 
			
		||||
    where u = manualurl ++ if null topic then "" else '#':topic
 | 
			
		||||
 | 
			
		||||
addform :: Request -> String -> String -> Hamlet HledgerWebAppRoutes
 | 
			
		||||
addform _ _ _ = [$hamlet|
 | 
			
		||||
addform :: Hamlet HledgerWebAppRoutes
 | 
			
		||||
addform = [$hamlet|
 | 
			
		||||
 %form#addform!action=$string.action$!method=POST
 | 
			
		||||
  %table!border=0
 | 
			
		||||
   %tr
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user