From df9531a6b77af1e8e4adeaff232c5dc6a50d1cdd Mon Sep 17 00:00:00 2001 From: Henning Thielemann Date: Thu, 29 Aug 2024 19:49:59 +0200 Subject: [PATCH] cli: Commands.Balance.balanceReportAsSpreadsheet, multiBalanceReportAsSpreadsheet: support for transposition --- hledger/Hledger/Cli/Commands/Balance.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs index 5635fb3f7..496ea8243 100644 --- a/hledger/Hledger/Cli/Commands/Balance.hs +++ b/hledger/Hledger/Cli/Commands/Balance.hs @@ -287,6 +287,7 @@ import Data.List (find, transpose, foldl') import qualified Data.Map as Map import qualified Data.Set as S import Data.Maybe (catMaybes, fromMaybe) +import Data.Tuple (swap) import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Lazy as TL @@ -574,6 +575,7 @@ addTotalBorders = balanceReportAsSpreadsheet :: ReportOpts -> BalanceReport -> [[Ods.Cell Ods.NumLines Text]] balanceReportAsSpreadsheet opts (items, total) = + (if transpose_ opts then Ods.transpose else id) $ headers : concatMap (\(a, _, _, b) -> rows a b) items ++ if no_total_ opts then [] @@ -810,7 +812,8 @@ multiBalanceReportAsSpreadsheet :: ((Maybe Int, Maybe Int), [[Ods.Cell Ods.NumLines Text]]) multiBalanceReportAsSpreadsheet ropts mbr = let (upper,lower) = multiBalanceReportAsSpreadsheetHelper True ropts mbr - in ((Just 1, case layout_ ropts of LayoutWide _ -> Just 1; _ -> Nothing), + in (if transpose_ ropts then swap *** Ods.transpose else id) $ + ((Just 1, case layout_ ropts of LayoutWide _ -> Just 1; _ -> Nothing), upper ++ lower)