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,
defaultCell,
emptyCell,
transposeCell,
transpose,
) where
import Hledger.Data.Types (Amount)
import qualified Data.List as List
data Type =
TypeString
@ -66,6 +70,10 @@ instance Foldable Border where
noBorder :: (Lines border) => Border border
noBorder = pure noLine
transposeBorder :: Border lines -> Border lines
transposeBorder (Border left right top bottom) =
Border top bottom left right
data Cell border text =
Cell {
@ -90,3 +98,10 @@ defaultCell text =
emptyCell :: (Lines border, Monoid text) => Cell border text
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
ReportOpts{..}
(PeriodicReport colspans items totrow)
= (if transpose_ then transpose else id) $
= (if transpose_ then Ods.transpose else id) $
-- heading row
(map headerCell $