web: update for yesod 1.0
This commit is contained in:
parent
8f94ae3de4
commit
f35b961c86
@ -27,7 +27,6 @@ import Yesod.Default.Util (addStaticContentExternal)
|
|||||||
import Yesod.Static
|
import Yesod.Static
|
||||||
import Yesod.Logger (Logger, logMsg, formatLogText)
|
import Yesod.Logger (Logger, logMsg, formatLogText)
|
||||||
import Control.Monad.IO.Class (liftIO)
|
import Control.Monad.IO.Class (liftIO)
|
||||||
import Web.ClientSession (getKey)
|
|
||||||
|
|
||||||
import Hledger.Web.Options
|
import Hledger.Web.Options
|
||||||
import Hledger.Web.Settings
|
import Hledger.Web.Settings
|
||||||
@ -56,9 +55,6 @@ instance Yesod App where
|
|||||||
-- approot = Hledger.Web.Settings.appRoot . settings
|
-- approot = Hledger.Web.Settings.appRoot . settings
|
||||||
approot = ApprootMaster $ appRoot . settings
|
approot = ApprootMaster $ appRoot . settings
|
||||||
|
|
||||||
-- Place the session key file in the config folder
|
|
||||||
encryptKey _ = fmap Just $ getKey "client_session_key.aes"
|
|
||||||
|
|
||||||
defaultLayout widget = do
|
defaultLayout widget = do
|
||||||
-- master <- getYesod
|
-- master <- getYesod
|
||||||
-- mmsg <- getMessage
|
-- mmsg <- getMessage
|
||||||
@ -74,7 +70,7 @@ instance Yesod App where
|
|||||||
pc <- widgetToPageContent $ do
|
pc <- widgetToPageContent $ do
|
||||||
widget
|
widget
|
||||||
hamletToRepHtml [hamlet|
|
hamletToRepHtml [hamlet|
|
||||||
!!!
|
$doctype 5
|
||||||
<html
|
<html
|
||||||
<head
|
<head
|
||||||
<title>#{pageTitle pc}
|
<title>#{pageTitle pc}
|
||||||
|
|||||||
@ -58,7 +58,7 @@ import Text.Printf
|
|||||||
import Yesod.Core
|
import Yesod.Core
|
||||||
-- import Yesod.Json
|
-- import Yesod.Json
|
||||||
|
|
||||||
import Hledger hiding (today)
|
import Hledger hiding (is)
|
||||||
import Hledger.Cli hiding (version)
|
import Hledger.Cli hiding (version)
|
||||||
import Hledger.Web.Foundation
|
import Hledger.Web.Foundation
|
||||||
import Hledger.Web.Options
|
import Hledger.Web.Options
|
||||||
@ -94,14 +94,14 @@ getJournalR = do
|
|||||||
-- showlastcolumn = if injournal && not filtering then False else True
|
-- showlastcolumn = if injournal && not filtering then False else True
|
||||||
title = case inacct of
|
title = case inacct of
|
||||||
Nothing -> "Journal"++s2
|
Nothing -> "Journal"++s2
|
||||||
Just (a,subs) -> "Transactions in "++a++s1++s2
|
Just (a,inclsubs) -> "Transactions in "++a++s1++s2
|
||||||
where s1 = if subs then " (and subaccounts)" else ""
|
where s1 = if inclsubs then " (and subaccounts)" else ""
|
||||||
where
|
where
|
||||||
s2 = if filtering then ", filtered" else ""
|
s2 = if filtering then ", filtered" else ""
|
||||||
maincontent = journalTransactionsReportAsHtml opts vd $ journalTransactionsReport (reportopts_ $ cliopts_ opts) j m
|
maincontent = journalTransactionsReportAsHtml opts vd $ journalTransactionsReport (reportopts_ $ cliopts_ opts) j m
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitle "hledger-web journal"
|
setTitle "hledger-web journal"
|
||||||
addHamlet [hamlet|
|
addWidget $ toWidget [hamlet|
|
||||||
^{topbar vd}
|
^{topbar vd}
|
||||||
<div#content
|
<div#content
|
||||||
<div#sidebar
|
<div#sidebar
|
||||||
@ -123,10 +123,10 @@ getJournalEntriesR = do
|
|||||||
let
|
let
|
||||||
sidecontent = sidebar vd
|
sidecontent = sidebar vd
|
||||||
title = "Journal entries" ++ if m /= Any then ", filtered" else "" :: String
|
title = "Journal entries" ++ if m /= Any then ", filtered" else "" :: String
|
||||||
maincontent = entriesReportAsHtml opts vd $ entriesReport (reportopts_ $ cliopts_ opts) nullfilterspec $ filterJournalTransactions2 m j
|
maincontent = entriesReportAsHtml opts vd $ entriesReport (reportopts_ $ cliopts_ opts) Any $ filterJournalTransactions m j
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitle "hledger-web journal"
|
setTitle "hledger-web journal"
|
||||||
addHamlet [hamlet|
|
addWidget $ toWidget [hamlet|
|
||||||
^{topbar vd}
|
^{topbar vd}
|
||||||
<div#content
|
<div#content
|
||||||
<div#sidebar
|
<div#sidebar
|
||||||
@ -147,7 +147,7 @@ getJournalEditR = do
|
|||||||
vd <- getViewData
|
vd <- getViewData
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitle "hledger-web journal edit form"
|
setTitle "hledger-web journal edit form"
|
||||||
addHamlet $ editform vd
|
addWidget $ toWidget $ editform vd
|
||||||
|
|
||||||
-- -- | The journal entries view, no sidebar.
|
-- -- | The journal entries view, no sidebar.
|
||||||
-- getJournalOnlyR :: Handler RepHtml
|
-- getJournalOnlyR :: Handler RepHtml
|
||||||
@ -155,7 +155,7 @@ getJournalEditR = do
|
|||||||
-- vd@VD{..} <- getViewData
|
-- vd@VD{..} <- getViewData
|
||||||
-- defaultLayout $ do
|
-- defaultLayout $ do
|
||||||
-- setTitle "hledger-web journal only"
|
-- setTitle "hledger-web journal only"
|
||||||
-- addHamlet $ entriesReportAsHtml opts vd $ entriesReport (reportopts_ $ cliopts_ opts) nullfilterspec $ filterJournalTransactions2 m j
|
-- addWidget $ toWidget $ entriesReportAsHtml opts vd $ entriesReport (reportopts_ $ cliopts_ opts) nullfilterspec $ filterJournalTransactions2 m j
|
||||||
|
|
||||||
-- | The main journal/account register view, with accounts sidebar.
|
-- | The main journal/account register view, with accounts sidebar.
|
||||||
getRegisterR :: Handler RepHtml
|
getRegisterR :: Handler RepHtml
|
||||||
@ -166,13 +166,13 @@ getRegisterR = do
|
|||||||
filtering = m /= Any
|
filtering = m /= Any
|
||||||
title = "Transactions in "++a++s1++s2
|
title = "Transactions in "++a++s1++s2
|
||||||
where
|
where
|
||||||
(a,subs) = fromMaybe ("all accounts",False) $ inAccount qopts
|
(a,inclsubs) = fromMaybe ("all accounts",False) $ inAccount qopts
|
||||||
s1 = if subs then " (and subaccounts)" else ""
|
s1 = if inclsubs then " (and subaccounts)" else ""
|
||||||
s2 = if filtering then ", filtered" else ""
|
s2 = if filtering then ", filtered" else ""
|
||||||
maincontent = registerReportHtml opts vd $ accountTransactionsReport (reportopts_ $ cliopts_ opts) j m $ fromMaybe Any $ inAccountQuery qopts
|
maincontent = registerReportHtml opts vd $ accountTransactionsReport (reportopts_ $ cliopts_ opts) j m $ fromMaybe Any $ inAccountQuery qopts
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitle "hledger-web register"
|
setTitle "hledger-web register"
|
||||||
addHamlet [hamlet|
|
addWidget $ toWidget [hamlet|
|
||||||
^{topbar vd}
|
^{topbar vd}
|
||||||
<div#content
|
<div#content
|
||||||
<div#sidebar
|
<div#sidebar
|
||||||
@ -193,7 +193,7 @@ getRegisterR = do
|
|||||||
-- vd@VD{..} <- getViewData
|
-- vd@VD{..} <- getViewData
|
||||||
-- defaultLayout $ do
|
-- defaultLayout $ do
|
||||||
-- setTitle "hledger-web register only"
|
-- setTitle "hledger-web register only"
|
||||||
-- addHamlet $
|
-- addWidget $ toWidget $
|
||||||
-- case inAccountQuery qopts of Just m' -> registerReportHtml opts vd $ accountTransactionsReport (reportopts_ $ cliopts_ opts) j m m'
|
-- case inAccountQuery qopts of Just m' -> registerReportHtml opts vd $ accountTransactionsReport (reportopts_ $ cliopts_ opts) j m m'
|
||||||
-- Nothing -> registerReportHtml opts vd $ journalTransactionsReport (reportopts_ $ cliopts_ opts) j m
|
-- Nothing -> registerReportHtml opts vd $ journalTransactionsReport (reportopts_ $ cliopts_ opts) j m
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ getAccountsR = do
|
|||||||
let j' = filterJournalPostings2 m j
|
let j' = filterJournalPostings2 m j
|
||||||
html = do
|
html = do
|
||||||
setTitle "hledger-web accounts"
|
setTitle "hledger-web accounts"
|
||||||
addHamlet $ accountsReportAsHtml opts vd $ accountsReport2 (reportopts_ $ cliopts_ opts) am j'
|
addWidget $ toWidget $ accountsReportAsHtml opts vd $ accountsReport2 (reportopts_ $ cliopts_ opts) am j'
|
||||||
json = jsonMap [("accounts", toJSON $ journalAccountNames j')]
|
json = jsonMap [("accounts", toJSON $ journalAccountNames j')]
|
||||||
defaultLayoutJson html json
|
defaultLayoutJson html json
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ getAccountsJsonR = do
|
|||||||
|
|
||||||
-- | Render the sidebar used on most views.
|
-- | Render the sidebar used on most views.
|
||||||
sidebar :: ViewData -> HtmlUrl AppRoute
|
sidebar :: ViewData -> HtmlUrl AppRoute
|
||||||
sidebar vd@VD{..} = accountsReportAsHtml opts vd $ accountsReport2 (reportopts_ $ cliopts_ opts) am j
|
sidebar vd@VD{..} = accountsReportAsHtml opts vd $ accountsReport (reportopts_ $ cliopts_ opts) am j
|
||||||
|
|
||||||
-- | Render an "AccountsReport" as html.
|
-- | Render an "AccountsReport" as html.
|
||||||
accountsReportAsHtml :: WebOpts -> ViewData -> AccountsReport -> HtmlUrl AppRoute
|
accountsReportAsHtml :: WebOpts -> ViewData -> AccountsReport -> HtmlUrl AppRoute
|
||||||
@ -264,7 +264,7 @@ accountsReportAsHtml _ vd@VD{..} (items',total) =
|
|||||||
<td>
|
<td>
|
||||||
|]
|
|]
|
||||||
where
|
where
|
||||||
l = journalToLedger nullfilterspec j
|
l = journalToLedger Any j
|
||||||
inacctmatcher = inAccountQuery qopts
|
inacctmatcher = inAccountQuery qopts
|
||||||
allaccts = isNothing inacctmatcher
|
allaccts = isNothing inacctmatcher
|
||||||
items = items' -- maybe items' (\m -> filter (matchesAccount m . \(a,_,_,_)->a) items') showacctmatcher
|
items = items' -- maybe items' (\m -> filter (matchesAccount m . \(a,_,_,_)->a) items') showacctmatcher
|
||||||
@ -519,7 +519,7 @@ handleAdd = do
|
|||||||
acct1E = maybe (Left "to account required") (Right . unpack) $ maybeNonNull acct1M
|
acct1E = maybe (Left "to account required") (Right . unpack) $ maybeNonNull acct1M
|
||||||
acct2E = maybe (Left "from account required") (Right . unpack) $ maybeNonNull acct2M
|
acct2E = maybe (Left "from account required") (Right . unpack) $ maybeNonNull acct2M
|
||||||
amt1E = maybe (Left "amount required") (either (const $ Left "could not parse amount") Right . parseWithCtx nullctx amount . unpack) amt1M
|
amt1E = maybe (Left "amount required") (either (const $ Left "could not parse amount") Right . parseWithCtx nullctx amount . unpack) amt1M
|
||||||
amt2E = maybe (Right missingamt) (either (const $ Left "could not parse amount") Right . parseWithCtx nullctx amount . unpack) amt2M
|
amt2E = maybe (Right missingmixedamt) (either (const $ Left "could not parse amount") Right . parseWithCtx nullctx amount . unpack) amt2M
|
||||||
journalE = maybe (Right $ journalFilePath j)
|
journalE = maybe (Right $ journalFilePath j)
|
||||||
(\f -> let f' = unpack f in
|
(\f -> let f' = unpack f in
|
||||||
if f' `elem` journalFilePaths j
|
if f' `elem` journalFilePaths j
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, CPP #-}
|
{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, CPP, OverloadedStrings #-}
|
||||||
{-|
|
{-|
|
||||||
|
|
||||||
This module exports routes for all the files in the static directory at
|
This module exports routes for all the files in the static directory at
|
||||||
|
|||||||
@ -122,39 +122,37 @@ executable hledger-web
|
|||||||
Hledger.Web.Handlers
|
Hledger.Web.Handlers
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
hledger == 0.18
|
hledger == 0.18
|
||||||
, hledger-lib == 0.18
|
, hledger-lib == 0.18
|
||||||
|
, base >= 4 && < 5
|
||||||
|
, cabal-file-th
|
||||||
|
, cmdargs >= 0.9.1 && < 0.10
|
||||||
|
, directory
|
||||||
|
, filepath
|
||||||
|
, HUnit
|
||||||
|
, io-storage >= 0.3 && < 0.4
|
||||||
|
, old-locale
|
||||||
|
, parsec
|
||||||
|
, regexpr >= 0.5.1
|
||||||
|
, safe >= 0.2
|
||||||
|
, time
|
||||||
|
|
||||||
, cabal-file-th
|
, yesod == 1.0.*
|
||||||
, cmdargs >= 0.9.1 && < 0.10
|
, yesod-core
|
||||||
, directory
|
, yesod-default
|
||||||
, filepath
|
, yesod-static
|
||||||
, HUnit
|
, blaze-html
|
||||||
, old-locale
|
, clientsession
|
||||||
, parsec
|
, hamlet
|
||||||
, regexpr >= 0.5.1
|
, network-conduit
|
||||||
, safe >= 0.2
|
, shakespeare-text
|
||||||
, time
|
, template-haskell
|
||||||
, io-storage >= 0.3 && < 0.4
|
, text >= 0.11 && < 0.12
|
||||||
, file-embed == 0.0.*
|
, transformers >= 0.2 && < 0.4
|
||||||
|
, wai
|
||||||
, base >= 4 && < 5
|
, wai-extra
|
||||||
, blaze-html >= 0.4.3.1 && < 0.5
|
, warp
|
||||||
, yesod-core >= 0.10 && < 0.11
|
, yaml
|
||||||
, yesod-static >= 0.10 && < 0.11
|
|
||||||
, yesod-default >= 0.6 && < 0.7
|
|
||||||
, clientsession >= 0.7.3 && < 0.8
|
|
||||||
, bytestring >= 0.9 && < 0.10
|
|
||||||
, text >= 0.11 && < 0.12
|
|
||||||
, template-haskell
|
|
||||||
, hamlet >= 0.10 && < 0.11
|
|
||||||
, shakespeare-text >= 0.10 && < 0.12
|
|
||||||
, wai >= 1.1 && < 1.2
|
|
||||||
, wai-extra >= 1.1 && < 1.2
|
|
||||||
, transformers >= 0.2 && < 0.3
|
|
||||||
, monad-control >= 0.3 && < 0.4
|
|
||||||
, yaml >= 0.5 && < 0.6
|
|
||||||
, warp >= 1.1.0.1 && < 1.2
|
|
||||||
|
|
||||||
|
|
||||||
-- if flag(production)
|
-- if flag(production)
|
||||||
|
|||||||
@ -10,6 +10,7 @@ Released under GPL version 3 or later.
|
|||||||
module Main
|
module Main
|
||||||
where
|
where
|
||||||
|
|
||||||
|
import Data.Conduit.Network (HostPreference(..))
|
||||||
import Network.Wai.Handler.Warp (runSettings, defaultSettings, settingsPort)
|
import Network.Wai.Handler.Warp (runSettings, defaultSettings, settingsPort)
|
||||||
import Yesod.Default.Config
|
import Yesod.Default.Config
|
||||||
-- import Yesod.Default.Main (defaultMain)
|
-- import Yesod.Default.Main (defaultMain)
|
||||||
@ -82,6 +83,7 @@ server baseurl port opts j = do
|
|||||||
appEnv = Development
|
appEnv = Development
|
||||||
, appPort = port_ opts
|
, appPort = port_ opts
|
||||||
, appRoot = pack baseurl
|
, appRoot = pack baseurl
|
||||||
|
, appHost = HostIPv4
|
||||||
, appExtra = Extra "" Nothing
|
, appExtra = Extra "" Nothing
|
||||||
}
|
}
|
||||||
logger <- defaultDevelopmentLogger
|
logger <- defaultDevelopmentLogger
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user