mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-20 02:37:12 +03:00
ec51d28839
- the web UI has been streamlined; edit form, raw & entries views dropped - we now remember whether sidebar is open or closed - better help dialog - keyboard shortcuts are now available - better add form - more bootstrap styling - static file cleanups - report filtering fixes - upgrade jquery to 2.1.1, bootstrap to 3.1.1, drop select2, add typeahead, cookie, hotkeys - clarify debug helpers a little - refactoring
65 lines
1.7 KiB
Haskell
65 lines
1.7 KiB
Haskell
-- | /journal/entries handlers.
|
|
|
|
module Handler.JournalEntriesR where
|
|
|
|
import Import
|
|
|
|
import Handler.Common
|
|
import Handler.Post
|
|
import Handler.Utils
|
|
|
|
import Hledger.Data
|
|
import Hledger.Query
|
|
import Hledger.Reports
|
|
import Hledger.Cli.Options
|
|
import Hledger.Web.Options
|
|
|
|
|
|
-- | The journal entries view, with sidebar.
|
|
getJournalEntriesR :: Handler Html
|
|
getJournalEntriesR = do
|
|
vd@VD{..} <- getViewData
|
|
staticRootUrl <- (staticRoot . settings) <$> getYesod
|
|
let
|
|
sidecontent = sidebar vd
|
|
title = "Journal entries" ++ if m /= Any then ", filtered" else "" :: String
|
|
maincontent = entriesReportAsHtml opts vd $ entriesReport (reportopts_ $ cliopts_ opts) Any $ filterJournalTransactions m j
|
|
defaultLayout $ do
|
|
setTitle "hledger-web journal"
|
|
toWidget [hamlet|
|
|
^{topbar vd}
|
|
<div#content>
|
|
<div#sidebar>
|
|
^{sidecontent}
|
|
<div#main.journal>
|
|
<div#maincontent>
|
|
^{searchform vd}
|
|
<h2#contenttitle>#{title}
|
|
^{maincontent}
|
|
^{addform staticRootUrl vd}
|
|
^{editform vd}
|
|
^{importform}
|
|
|]
|
|
|
|
postJournalEntriesR :: Handler Html
|
|
postJournalEntriesR = handlePost
|
|
|
|
-- | Render an "EntriesReport" as html for the journal entries view.
|
|
entriesReportAsHtml :: WebOpts -> ViewData -> EntriesReport -> HtmlUrl AppRoute
|
|
entriesReportAsHtml _ vd items = [hamlet|
|
|
<table.entriesreport>
|
|
$forall i <- numbered items
|
|
^{itemAsHtml vd i}
|
|
|]
|
|
where
|
|
itemAsHtml :: ViewData -> (Int, EntriesReportItem) -> HtmlUrl AppRoute
|
|
itemAsHtml _ (n, t) = [hamlet|
|
|
<tr.item.#{evenodd}>
|
|
<td.transaction>
|
|
<pre>#{txn}
|
|
|]
|
|
where
|
|
evenodd = if even n then "even" else "odd" :: String
|
|
txn = trimnl $ showTransaction t where trimnl = reverse . dropWhile (=='\n') . reverse
|
|
|