mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-20 02:37:12 +03:00
web: separate period and acct/desc filtering a bit
This commit is contained in:
parent
cf62482102
commit
f3ffef2d8a
@ -244,7 +244,7 @@ getAccountsPage = do
|
||||
balanceReportAsHtml :: [Opt] -> TemplateData -> BalanceReport -> Hamlet HledgerWebAppRoute
|
||||
balanceReportAsHtml _ td@TD{here=here,a=a,p=p} (items,total) = [$hamlet|
|
||||
%table.balancereport
|
||||
^allaccts^
|
||||
^accountsheading^
|
||||
$forall items i
|
||||
^itemAsHtml' i^
|
||||
%tr.totalrule
|
||||
@ -254,39 +254,33 @@ balanceReportAsHtml _ td@TD{here=here,a=a,p=p} (items,total) = [$hamlet|
|
||||
%td!align=right $mixedAmountAsHtml.total$
|
||||
|]
|
||||
where
|
||||
filtering = not $ null a && null p
|
||||
showmore = if filtering then [$hamlet|
|
||||
^showmore'^
|
||||
\ | $
|
||||
%a!href=@here@ show all
|
||||
|] else nulltemplate
|
||||
showmore' = case (filtering, items) of
|
||||
-- cunning parent account logic
|
||||
(True, ((acct, _, _, _):_)) ->
|
||||
let a' = if isAccountRegex a then a else acct
|
||||
a'' = accountNameToAccountRegex $ parentAccountName $ accountRegexToAccountName a'
|
||||
parenturl = (here, [("a",a''), ("p",p)])
|
||||
in [$hamlet|
|
||||
\ | $
|
||||
%a!href=@?parenturl@ show more ↑
|
||||
|]
|
||||
_ -> nulltemplate
|
||||
allacctslink = True
|
||||
allaccts = if allacctslink
|
||||
then -- [$hamlet|%tr.$current$
|
||||
-- %td
|
||||
-- %a!href=@?u@ all accounts
|
||||
-- %td
|
||||
[$hamlet|
|
||||
accounts
|
||||
\ $
|
||||
%span#showmoreaccounts ^showmore^
|
||||
<br />
|
||||
<br />
|
||||
|]
|
||||
else nulltemplate
|
||||
-- where u = (here, [("a",".*"),("p",p)])
|
||||
-- current = "" -- if a == ".*" then "current" else ""
|
||||
accountsheading = [$hamlet|
|
||||
accounts
|
||||
\ $
|
||||
%span#showmoreaccounts ^showmore^ ^showall^
|
||||
<br />
|
||||
<br />
|
||||
|]
|
||||
where
|
||||
filteringaccts = not $ null a
|
||||
showmore = case (filteringaccts, items) of
|
||||
-- cunning parent account logic
|
||||
(True, ((acct, _, _, _):_)) ->
|
||||
let a' = if isAccountRegex a then a else acct
|
||||
a'' = accountNameToAccountRegex $ parentAccountName $ accountRegexToAccountName a'
|
||||
parenturl = (here, [("a",a''), ("p",p)])
|
||||
in [$hamlet|
|
||||
\ | $
|
||||
%a!href=@?parenturl@ show more ↑
|
||||
|]
|
||||
_ -> nulltemplate
|
||||
showall = if filteringaccts
|
||||
then [$hamlet|
|
||||
\ | $
|
||||
%a!href=@?allurl@ show all
|
||||
|]
|
||||
else nulltemplate
|
||||
where allurl = (here, [("p",p)])
|
||||
itemAsHtml' = itemAsHtml td
|
||||
itemAsHtml :: TemplateData -> BalanceReportItem -> Hamlet HledgerWebAppRoute
|
||||
itemAsHtml TD{p=p} (acct, adisplay, adepth, abal) = [$hamlet|
|
||||
@ -297,7 +291,7 @@ accounts
|
||||
%td.balance!align=right $mixedAmountAsHtml.abal$
|
||||
|] where
|
||||
current = "" -- if not (null a) && containsRegex a acct then "current" else ""
|
||||
indent = preEscapedString $ concat $ replicate (2 * (adepth + if allacctslink then 1 else 0)) " "
|
||||
indent = preEscapedString $ concat $ replicate (2 * adepth) " "
|
||||
aurl = printf ".?a=%s%s" (accountNameToAccountRegex acct) p' :: String
|
||||
p' = if null p then "" else printf "&p=%s" p
|
||||
|
||||
@ -806,7 +800,7 @@ navbar TD{p=p,j=j,today=today} = [$hamlet|
|
||||
journaltitle = printf "%s" (takeFileName $ filepath j) :: String
|
||||
journalinfo = printf "%s" (showspan span) :: String
|
||||
showspan (DateSpan Nothing Nothing) = ""
|
||||
showspan s = " (showing " ++ dateSpanAsText s ++ ")"
|
||||
showspan s = " (" ++ dateSpanAsText s ++ ")"
|
||||
span = either (const $ DateSpan Nothing Nothing) snd (parsePeriodExpr today p)
|
||||
|
||||
navlinks :: TemplateData -> Hamlet HledgerWebAppRoute
|
||||
@ -817,11 +811,11 @@ navlinks td = [$hamlet|
|
||||
^accountsregisterlink^
|
||||
\ | $
|
||||
%a#addformlink!href!onclick="return addformToggle()" add transaction
|
||||
%a#importformlink!href!onclick="return importformToggle()"!style=display:none; import transactions
|
||||
\ | $
|
||||
%a#editformlink!href!onclick="return editformToggle()" edit journal
|
||||
|]
|
||||
-- \ | $
|
||||
-- %a#importformlink!href!onclick="return importformToggle()" import transactions
|
||||
-- \ | $
|
||||
where
|
||||
accountsjournallink = navlink td "journal" AccountsJournalPage
|
||||
accountsregisterlink = navlink td "register" AccountsRegisterPage
|
||||
@ -837,28 +831,40 @@ filterform :: TemplateData -> Hamlet HledgerWebAppRoute
|
||||
filterform TD{here=here,a=a,p=p} = [$hamlet|
|
||||
#filterformdiv
|
||||
%form#filterform.form!method=GET!style=display:$visible$;
|
||||
%span.$filtering$
|
||||
filter by account/description:
|
||||
\ $
|
||||
%input!name=a!size=50!value=$a$
|
||||
^ahelp^
|
||||
\ $
|
||||
in period:
|
||||
\ $
|
||||
%input!name=p!size=25!value=$p$
|
||||
^phelp^
|
||||
\ $
|
||||
%input!type=submit!value=filter $
|
||||
\ $
|
||||
^stopfiltering^
|
||||
%table.form
|
||||
%tr.$filteringperiodclass$
|
||||
%td
|
||||
filter by period:
|
||||
\ $
|
||||
%td
|
||||
%input!name=p!size=60!value=$p$
|
||||
^phelp^
|
||||
\ $
|
||||
%td!align=right
|
||||
^stopfilteringperiod^
|
||||
%tr.$filteringclass$
|
||||
%td
|
||||
filter by account/description:
|
||||
\ $
|
||||
%td
|
||||
%input!name=a!size=60!value=$a$
|
||||
^ahelp^
|
||||
\ $
|
||||
%input!type=submit!value=filter $
|
||||
\ $
|
||||
%td!align=right
|
||||
^stopfiltering^
|
||||
|]
|
||||
where
|
||||
ahelp = helplink "filter-patterns" "?"
|
||||
phelp = helplink "period-expressions" "?"
|
||||
(filtering, visible, _, stopfiltering)
|
||||
| null a && null p = ("", defaultdisplay, [$hamlet|%a#filterformlink!href!onclick="return filterformToggle()" filter...|], nulltemplate) -- [$hamlet|filter by $|])
|
||||
| otherwise = ("filtering", defaultdisplay, [$hamlet|filtering...|], [$hamlet|%a#stopfilterlink!href=@here@ stop filtering|])
|
||||
defaultdisplay = "block"
|
||||
filtering = not $ null a
|
||||
filteringperiod = not $ null p
|
||||
visible = "block"
|
||||
filteringclass = if filtering then "filtering" else ""
|
||||
filteringperiodclass = if filteringperiod then "filtering" else ""
|
||||
stopfiltering = if filtering then [$hamlet|%a#stopfilterlink!href=@here@ stop filtering acct/desc|] else nulltemplate
|
||||
stopfilteringperiod = if filteringperiod then [$hamlet|%a#stopfilterlink!href=@here@ stop filtering period|] else nulltemplate
|
||||
|
||||
helplink :: String -> String -> Hamlet HledgerWebAppRoute
|
||||
helplink topic label = [$hamlet|%a!href=$u$!target=hledgerhelp $label$|]
|
||||
|
@ -80,3 +80,4 @@ table.registerreport { border-spacing:0; }
|
||||
#addform #addbuttonrow { text-align:right; }
|
||||
/* #editform { width:95%; } */
|
||||
#editform textarea { width:100%; background-color:#eee; padding:4px; }
|
||||
#filterform table { border-spacing:0; padding-left:1em; }
|
||||
|
Loading…
Reference in New Issue
Block a user