cli: Commands.Balance.budgetReportAsSpreadsheet: also transpose border

This commit is contained in:
Henning Thielemann 2024-08-26 11:50:49 +02:00 committed by Simon Michael
parent 2ed13afed4
commit 55c1246598
2 changed files with 16 additions and 1 deletions

View File

@ -13,10 +13,14 @@ module Hledger.Write.Spreadsheet (
noBorder, noBorder,
defaultCell, defaultCell,
emptyCell, emptyCell,
transposeCell,
transpose,
) where ) where
import Hledger.Data.Types (Amount) import Hledger.Data.Types (Amount)
import qualified Data.List as List
data Type = data Type =
TypeString TypeString
@ -66,6 +70,10 @@ instance Foldable Border where
noBorder :: (Lines border) => Border border noBorder :: (Lines border) => Border border
noBorder = pure noLine noBorder = pure noLine
transposeBorder :: Border lines -> Border lines
transposeBorder (Border left right top bottom) =
Border top bottom left right
data Cell border text = data Cell border text =
Cell { Cell {
@ -90,3 +98,10 @@ defaultCell text =
emptyCell :: (Lines border, Monoid text) => Cell border text emptyCell :: (Lines border, Monoid text) => Cell border text
emptyCell = defaultCell mempty emptyCell = defaultCell mempty
transposeCell :: Cell border text -> Cell border text
transposeCell cell =
cell {cellBorder = transposeBorder $ cellBorder cell}
transpose :: [[Cell border text]] -> [[Cell border text]]
transpose = List.transpose . map (map transposeCell)

View File

@ -1223,7 +1223,7 @@ budgetReportAsSpreadsheet ::
budgetReportAsSpreadsheet budgetReportAsSpreadsheet
ReportOpts{..} ReportOpts{..}
(PeriodicReport colspans items totrow) (PeriodicReport colspans items totrow)
= (if transpose_ then transpose else id) $ = (if transpose_ then Ods.transpose else id) $
-- heading row -- heading row
(map headerCell $ (map headerCell $