;web: transaction fragments: use numeric identifiers for journal files

This saves us from any escaping issues.
This commit is contained in:
Henning Thielemann 2020-05-25 10:06:20 +02:00 committed by Simon Michael
parent e9792bfd42
commit c35d0a8b44
5 changed files with 14 additions and 6 deletions

View File

@ -13,7 +13,7 @@ import Hledger.Web.Import
import Hledger.Web.WebOptions import Hledger.Web.WebOptions
import Hledger.Web.Widget.AddForm (addModal) import Hledger.Web.Widget.AddForm (addModal)
import Hledger.Web.Widget.Common import Hledger.Web.Widget.Common
(accountQuery, mixedAmountAsHtml, transactionFrag) (accountQuery, mixedAmountAsHtml, transactionFragment)
-- | The formatted journal view, with sidebar. -- | The formatted journal view, with sidebar.
getJournalR :: Handler Html getJournalR :: Handler Html
@ -27,6 +27,7 @@ getJournalR = do
title' = title <> if m /= Any then ", filtered" else "" title' = title <> if m /= Any then ", filtered" else ""
acctlink a = (RegisterR, [("q", accountQuery a)]) acctlink a = (RegisterR, [("q", accountQuery a)])
(_, items) = transactionsReport (reportopts_ $ cliopts_ opts) j m (_, items) = transactionsReport (reportopts_ $ cliopts_ opts) j m
transactionFrag = transactionFragment j
defaultLayout $ do defaultLayout $ do
setTitle "journal - hledger-web" setTitle "journal - hledger-web"

View File

@ -18,7 +18,7 @@ import Hledger.Web.Import
import Hledger.Web.WebOptions import Hledger.Web.WebOptions
import Hledger.Web.Widget.AddForm (addModal) import Hledger.Web.Widget.AddForm (addModal)
import Hledger.Web.Widget.Common import Hledger.Web.Widget.Common
(accountQuery, mixedAmountAsHtml, transactionFrag) (accountQuery, mixedAmountAsHtml, transactionFragment)
-- | The main journal/account register view, with accounts sidebar. -- | The main journal/account register view, with accounts sidebar.
getRegisterR :: Handler Html getRegisterR :: Handler Html
@ -45,6 +45,7 @@ getRegisterR = do
tail $ (", "<$xs) ++ [""] tail $ (", "<$xs) ++ [""]
r@(balancelabel,items) = accountTransactionsReport ropts j m acctQuery r@(balancelabel,items) = accountTransactionsReport ropts j m acctQuery
balancelabel' = if isJust (inAccount qopts) then balancelabel else "Total" balancelabel' = if isJust (inAccount qopts) then balancelabel else "Total"
transactionFrag = transactionFragment j
defaultLayout $ do defaultLayout $ do
setTitle "register - hledger-web" setTitle "register - hledger-web"
$(widgetFile "register") $(widgetFile "register")

View File

@ -14,7 +14,7 @@ module Hledger.Web.Widget.Common
, fromFormSuccess , fromFormSuccess
, writeJournalTextIfValidAndChanged , writeJournalTextIfValidAndChanged
, journalFile404 , journalFile404
, transactionFrag , transactionFragment
) where ) where
import Data.Default (def) import Data.Default (def)
@ -24,6 +24,7 @@ import Data.Semigroup ((<>))
#endif #endif
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.HashMap.Strict as HashMap
import System.FilePath (takeFileName) import System.FilePath (takeFileName)
import Text.Blaze ((!), textValue) import Text.Blaze ((!), textValue)
import qualified Text.Blaze.Html5 as H import qualified Text.Blaze.Html5 as H
@ -106,6 +107,9 @@ mixedAmountAsHtml b _ =
Just True -> "negative amount" Just True -> "negative amount"
_ -> "positive amount" _ -> "positive amount"
transactionFrag :: Transaction -> String transactionFragment :: Journal -> Transaction -> String
transactionFrag t = transactionFragment j =
printf "transaction-%s-%d" (sourceFilePath $ tsourcepos t) (tindex t) let hm = HashMap.fromList $ zip (map fst $ jfiles j) [(1::Integer) ..]
in \t ->
printf "transaction-%d-%d"
(hm HashMap.! sourceFilePath (tsourcepos t)) (tindex t)

View File

@ -185,6 +185,7 @@ library
, time >=1.5 , time >=1.5
, transformers , transformers
, unix-compat , unix-compat
, unordered-containers
, utf8-string , utf8-string
, wai , wai
, wai-cors , wai-cors

View File

@ -130,6 +130,7 @@ library:
- time >=1.5 - time >=1.5
- transformers - transformers
- unix-compat - unix-compat
- unordered-containers
- utf8-string - utf8-string
- wai - wai
- wai-extra - wai-extra