fix: balcmds: handle an empty totals column in html output (#1933)
This commit is contained in:
parent
1d191d13ae
commit
7102d6f9e8
@ -573,14 +573,20 @@ multiBalanceReportHtmlRows ropts mbr =
|
|||||||
-- | Render one MultiBalanceReport heading row as a HTML table row.
|
-- | Render one MultiBalanceReport heading row as a HTML table row.
|
||||||
multiBalanceReportHtmlHeadRow :: ReportOpts -> [T.Text] -> Html ()
|
multiBalanceReportHtmlHeadRow :: ReportOpts -> [T.Text] -> Html ()
|
||||||
multiBalanceReportHtmlHeadRow _ [] = mempty -- shouldn't happen
|
multiBalanceReportHtmlHeadRow _ [] = mempty -- shouldn't happen
|
||||||
multiBalanceReportHtmlHeadRow ropts (acct:rest) =
|
multiBalanceReportHtmlHeadRow ropts (acct:cells) =
|
||||||
let
|
let
|
||||||
defstyle = style_ ""
|
defstyle = style_ ""
|
||||||
(amts,tot,avg)
|
(amts,tot,avg)
|
||||||
| row_total_ ropts && average_ ropts = (init $ init rest, [last $ init rest], [last rest])
|
| row_total_ ropts && average_ ropts = (ini2, sndlst2, lst2)
|
||||||
| row_total_ ropts = (init rest, [last rest], [])
|
| row_total_ ropts = (ini1, lst1, [])
|
||||||
| average_ ropts = (init rest, [], [last rest])
|
| average_ ropts = (ini1, [], lst1)
|
||||||
| otherwise = (rest, [], [])
|
| otherwise = (amts, [], [])
|
||||||
|
where
|
||||||
|
n = length cells
|
||||||
|
(ini1,lst1) = splitAt (n-1) cells
|
||||||
|
(ini2, rest) = splitAt (n-2) cells
|
||||||
|
(sndlst2,lst2) = splitAt 1 rest
|
||||||
|
|
||||||
in
|
in
|
||||||
tr_ $ mconcat $
|
tr_ $ mconcat $
|
||||||
td_ [class_ "account"] (toHtml acct)
|
td_ [class_ "account"] (toHtml acct)
|
||||||
@ -591,14 +597,19 @@ multiBalanceReportHtmlHeadRow ropts (acct:rest) =
|
|||||||
-- | Render one MultiBalanceReport data row as a HTML table row.
|
-- | Render one MultiBalanceReport data row as a HTML table row.
|
||||||
multiBalanceReportHtmlBodyRow :: ReportOpts -> [T.Text] -> Html ()
|
multiBalanceReportHtmlBodyRow :: ReportOpts -> [T.Text] -> Html ()
|
||||||
multiBalanceReportHtmlBodyRow _ [] = mempty -- shouldn't happen
|
multiBalanceReportHtmlBodyRow _ [] = mempty -- shouldn't happen
|
||||||
multiBalanceReportHtmlBodyRow ropts (label:rest) =
|
multiBalanceReportHtmlBodyRow ropts (label:cells) =
|
||||||
let
|
let
|
||||||
defstyle = style_ "text-align:right"
|
defstyle = style_ "text-align:right"
|
||||||
(amts,tot,avg)
|
(amts,tot,avg)
|
||||||
| row_total_ ropts && average_ ropts = (init $ init rest, [last $ init rest], [last rest])
|
| row_total_ ropts && average_ ropts = (ini2, sndlst2, lst2)
|
||||||
| row_total_ ropts = (init rest, [last rest], [])
|
| row_total_ ropts = (ini1, lst1, [])
|
||||||
| average_ ropts = (init rest, [], [last rest])
|
| average_ ropts = (ini1, [], lst1)
|
||||||
| otherwise = (rest, [], [])
|
| otherwise = (amts, [], [])
|
||||||
|
where
|
||||||
|
n = length cells
|
||||||
|
(ini1,lst1) = splitAt (n-1) cells
|
||||||
|
(ini2, rest) = splitAt (n-2) cells
|
||||||
|
(sndlst2,lst2) = splitAt 1 rest
|
||||||
in
|
in
|
||||||
tr_ $ mconcat $
|
tr_ $ mconcat $
|
||||||
td_ [class_ "account", style_ "text-align:left"] (toHtml label)
|
td_ [class_ "account", style_ "text-align:left"] (toHtml label)
|
||||||
@ -615,14 +626,19 @@ multiBalanceReportHtmlFootRow _ropts [] = mempty
|
|||||||
-- : repeat nullmixedamt zeros
|
-- : repeat nullmixedamt zeros
|
||||||
-- ++ (if row_total_ ropts then [nullmixedamt] else [])
|
-- ++ (if row_total_ ropts then [nullmixedamt] else [])
|
||||||
-- ++ (if average_ ropts then [nullmixedamt] else [])
|
-- ++ (if average_ ropts then [nullmixedamt] else [])
|
||||||
multiBalanceReportHtmlFootRow ropts (acct:rest) =
|
multiBalanceReportHtmlFootRow ropts (acct:cells) =
|
||||||
let
|
let
|
||||||
defstyle = style_ "text-align:right"
|
defstyle = style_ "text-align:right"
|
||||||
(amts,tot,avg)
|
(amts,tot,avg)
|
||||||
| row_total_ ropts && average_ ropts = (init $ init rest, [last $ init rest], [last rest])
|
| row_total_ ropts && average_ ropts = (ini2, sndlst2, lst2)
|
||||||
| row_total_ ropts = (init rest, [last rest], [])
|
| row_total_ ropts = (ini1, lst1, [])
|
||||||
| average_ ropts = (init rest, [], [last rest])
|
| average_ ropts = (ini1, [], lst1)
|
||||||
| otherwise = (rest, [], [])
|
| otherwise = (amts, [], [])
|
||||||
|
where
|
||||||
|
n = length cells
|
||||||
|
(ini1,lst1) = splitAt (n-1) cells
|
||||||
|
(ini2, rest) = splitAt (n-2) cells
|
||||||
|
(sndlst2,lst2) = splitAt 1 rest
|
||||||
in
|
in
|
||||||
tr_ $ mconcat $
|
tr_ $ mconcat $
|
||||||
th_ [style_ "text-align:left"] (toHtml acct)
|
th_ [style_ "text-align:left"] (toHtml acct)
|
||||||
|
|||||||
@ -194,3 +194,8 @@ account a:ac:aca
|
|||||||
account b
|
account b
|
||||||
$ hledger -f - balance -NE --declared not:a
|
$ hledger -f - balance -NE --declared not:a
|
||||||
0 b
|
0 b
|
||||||
|
|
||||||
|
# 13. An empty totals column does not break HTML output (#1933).
|
||||||
|
<
|
||||||
|
$ hledger -f- bal -YT -O html
|
||||||
|
> //
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user