fix: bal: handle oneline for custom format correctly
Previously would not actually display anything since the Cell's WideBuilders are single-element list. Just dispatch to showMixedAmountB to do the right thing.
This commit is contained in:
		
							parent
							
								
									5989ca0381
								
							
						
					
					
						commit
						1be74a01ce
					
				| @ -256,7 +256,7 @@ module Hledger.Cli.Commands.Balance ( | |||||||
| ) where | ) where | ||||||
| 
 | 
 | ||||||
| import Data.Default (def) | import Data.Default (def) | ||||||
| import Data.List (intersperse, transpose, foldl', transpose) | import Data.List (transpose, foldl', transpose) | ||||||
| import qualified Data.Map as M | import qualified Data.Map as M | ||||||
| import qualified Data.Set as S | import qualified Data.Set as S | ||||||
| import Data.Maybe (fromMaybe) | import Data.Maybe (fromMaybe) | ||||||
| @ -481,17 +481,12 @@ renderBalanceReportItem opts (acctname, depth, total) = | |||||||
|                       . Tab.Group NoLine $ map Header is |                       . Tab.Group NoLine $ map Header is | ||||||
|                     , map cellWidth is ) |                     , map cellWidth is ) | ||||||
| 
 | 
 | ||||||
|     render topaligned oneline = map (maybeConcat . renderComponent topaligned opts (acctname, depth, total)) |     render topaligned oneline = map (renderComponent topaligned oneline opts (acctname, depth, total)) | ||||||
|       where maybeConcat (Cell a xs) = |  | ||||||
|                 if oneline then Cell a [WideBuilder (mconcat . intersperse (TB.fromText ", ") $ map wbBuilder xs) width] |  | ||||||
|                            else Cell a xs |  | ||||||
|               where width = sumStrict (map ((+2) . wbWidth) xs) -2 |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| -- | Render one StringFormat component for a balance report item. | -- | Render one StringFormat component for a balance report item. | ||||||
| renderComponent :: Bool -> ReportOpts -> (AccountName, Int, MixedAmount) -> StringFormatComponent -> Cell | renderComponent :: Bool -> Bool -> ReportOpts -> (AccountName, Int, MixedAmount) -> StringFormatComponent -> Cell | ||||||
| renderComponent _ _ _ (FormatLiteral s) = textCell TopLeft s | renderComponent _ _ _ _ (FormatLiteral s) = textCell TopLeft s | ||||||
| renderComponent topaligned opts (acctname, depth, total) (FormatField ljust mmin mmax field) = case field of | renderComponent topaligned oneline opts (acctname, depth, total) (FormatField ljust mmin mmax field) = case field of | ||||||
|     DepthSpacerField -> Cell align [WideBuilder (TB.fromText $ T.replicate d " ") d] |     DepthSpacerField -> Cell align [WideBuilder (TB.fromText $ T.replicate d " ") d] | ||||||
|                         where d = maybe id min mmax $ depth * fromMaybe 1 mmin |                         where d = maybe id min mmax $ depth * fromMaybe 1 mmin | ||||||
|     AccountField     -> textCell align $ formatText ljust mmin mmax acctname |     AccountField     -> textCell align $ formatText ljust mmin mmax acctname | ||||||
| @ -500,7 +495,7 @@ renderComponent topaligned opts (acctname, depth, total) (FormatField ljust mmin | |||||||
|   where |   where | ||||||
|     align = if topaligned then (if ljust then TopLeft    else TopRight) |     align = if topaligned then (if ljust then TopLeft    else TopRight) | ||||||
|                           else (if ljust then BottomLeft else BottomRight) |                           else (if ljust then BottomLeft else BottomRight) | ||||||
|     dopts = (balanceOpts True opts){displayOneLine=False, displayMinWidth=mmin, displayMaxWidth=mmax} |     dopts = (balanceOpts True opts){displayOneLine=oneline, displayMinWidth=mmin, displayMaxWidth=mmax} | ||||||
| 
 | 
 | ||||||
| -- rendering multi-column balance reports | -- rendering multi-column balance reports | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user