web: borders to indicate day/month transitions

This commit is contained in:
Simon Michael 2011-06-14 19:10:03 +00:00
parent 2320a1610b
commit c7d1a8afaa
4 changed files with 33 additions and 17 deletions

View File

@ -101,10 +101,13 @@ table.journalreport { border-spacing: 0; }
.totalrule td { border-top:thin solid black; }
table.registerreport { border-spacing:0; }
.registerreport tr { vertical-align:top; }
.registerreport td { padding-bottom:0.2em; }
.registerreport .date { white-space:nowrap; }
.firstposting td { }
table.registerreport tr { vertical-align:top; }
table.registerreport td { padding-bottom:0.2em; }
table.registerreport .date { white-space:nowrap; }
tr.firstposting td { }
tr.newday td { border-top: 1px solid black; }
tr.newmonth td { border-top: 2px solid black; }
/* tr.newyear td { border-top: 3px solid black; } */
#accountsheading { white-space:nowrap; margin-bottom:1em; }

View File

@ -1,4 +1,4 @@
<tr.item.#{inclass}
<tr.item.#{inacctclass}
<td.account.#{depthclass}
#{indent}
<a href="@?{accturl}">#{adisplay}

View File

@ -1,4 +1,4 @@
<tr.item.#{evenodd}.#{firstposting}
<tr.item.#{evenodd}.#{firstposting}.#{datetransition}
<td.date>#{date}
<td.description>#{desc}
<td.account><a href="@?{accturl}">#{acct}

View File

@ -134,7 +134,8 @@ balanceReportAsHtml _ vd@VD{here=here,q=q,m=m,qopts=qopts,j=j} (items,total) = $
itemAsHtml VD{here=here,q=q} (acct, adisplay, aindent, abal) = $(Settings.hamletFile "balancereportitem")
where
depthclass = "depth"++show aindent
inclass = case inacctmatcher of Just m -> if m `matchesAccount` acct then "inacct" else "notinacct"
inacctclass = case inacctmatcher of
Just m -> if m `matchesAccount` acct then "inacct" else "notinacct"
Nothing -> "" :: String
indent = preEscapedString $ concat $ replicate (2 * aindent) "&nbsp;"
accturl = (here, [("q", pack $ accountUrl acct)])
@ -153,10 +154,14 @@ journalReportAsHtml _ vd items = $(Settings.hamletFile "journalreport")
registerReportAsHtml :: [Opt] -> ViewData -> RegisterReport -> Hamlet AppRoute
registerReportAsHtml _ vd (balancelabel,items) = $(Settings.hamletFile "registerreport")
where
itemAsHtml :: ViewData -> (Int, RegisterReportItem) -> Hamlet AppRoute
itemAsHtml VD{here=here} (n, (ds, posting, b)) = $(Settings.hamletFile "registerreportitem")
itemAsHtml :: ViewData -> (Int, Bool, Bool, Bool, RegisterReportItem) -> Hamlet AppRoute
itemAsHtml VD{here=here} (n, newd, newm, newy, (ds, posting, b)) = $(Settings.hamletFile "registerreportitem")
where
evenodd = if even n then "even" else "odd" :: String
datetransition -- | newy && n > 1 = "newyear"
| newm = "newmonth"
| newd = "newday"
| otherwise = "" :: String
(firstposting, date, desc) = case ds of Just (da, de) -> ("firstposting", show da, de)
Nothing -> ("", "", "") :: (String,String,String)
acct = paccount posting
@ -446,12 +451,20 @@ getMessageOr mnewmsg = do
numbered = zip [1..]
-- Add incrementing transaction numbers to a list of register report items starting at 1.
numberTransactions :: [RegisterReportItem] -> [(Int,RegisterReportItem)]
-- Add incrementing transaction numbers to a list of register report items
-- starting at 1. Also add three flags that are true if the date, month,
-- and year is different from the previous item's.
numberTransactions :: [RegisterReportItem] -> [(Int,Bool,Bool,Bool,RegisterReportItem)]
numberTransactions [] = []
numberTransactions is = number 0 is
numberTransactions is = number 0 nulldate is
where
number _ [] = []
number n (i@(Just _, _, _):is) = (n+1,i):(number (n+1) is)
number n (i@(Nothing, _, _):is) = (n,i):(number n is)
number :: Int -> Day -> [RegisterReportItem] -> [(Int,Bool,Bool,Bool,RegisterReportItem)]
number _ _ [] = []
number n prevd (i@(Nothing, _, _) :is) = (n,False,False,False,i) :(number n prevd is)
number n prevd (i@(Just (d,_), _, _):is) = (n+1,newday,newmonth,newyear,i):(number (n+1) d is)
where
newday = d/=prevd
newmonth = dm/=prevdm || dy/=prevdy
newyear = dy/=prevdy
(dy,dm,_) = toGregorian d
(prevdy,prevdm,_) = toGregorian prevd