lib: Write.Spreadsheet.headerCell, addRowSpanHeader, rawTableContent: taken from Commands.Balance
This commit is contained in:
parent
b8570c2aa0
commit
b8497c830e
@ -14,9 +14,12 @@ module Hledger.Write.Spreadsheet (
|
|||||||
NumLines(..),
|
NumLines(..),
|
||||||
noBorder,
|
noBorder,
|
||||||
defaultCell,
|
defaultCell,
|
||||||
|
headerCell,
|
||||||
emptyCell,
|
emptyCell,
|
||||||
transposeCell,
|
transposeCell,
|
||||||
transpose,
|
transpose,
|
||||||
|
addRowSpanHeader,
|
||||||
|
rawTableContent,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Hledger.Data.Types (Amount)
|
import Hledger.Data.Types (Amount)
|
||||||
@ -151,6 +154,9 @@ defaultCell text =
|
|||||||
cellContent = text
|
cellContent = text
|
||||||
}
|
}
|
||||||
|
|
||||||
|
headerCell :: (Lines borders) => Text -> Cell borders Text
|
||||||
|
headerCell text = (defaultCell text) {cellStyle = Head}
|
||||||
|
|
||||||
emptyCell :: (Lines border, Monoid text) => Cell border text
|
emptyCell :: (Lines border, Monoid text) => Cell border text
|
||||||
emptyCell = defaultCell mempty
|
emptyCell = defaultCell mempty
|
||||||
|
|
||||||
@ -163,3 +169,20 @@ transposeCell cell =
|
|||||||
|
|
||||||
transpose :: [[Cell border text]] -> [[Cell border text]]
|
transpose :: [[Cell border text]] -> [[Cell border text]]
|
||||||
transpose = List.transpose . map (map transposeCell)
|
transpose = List.transpose . map (map transposeCell)
|
||||||
|
|
||||||
|
|
||||||
|
addRowSpanHeader ::
|
||||||
|
Cell border text ->
|
||||||
|
[[Cell border text]] -> [[Cell border text]]
|
||||||
|
addRowSpanHeader header rows =
|
||||||
|
case rows of
|
||||||
|
[] -> []
|
||||||
|
[row] -> [header:row]
|
||||||
|
_ ->
|
||||||
|
zipWith (:)
|
||||||
|
(header{cellSpan = SpanVertical (length rows)} :
|
||||||
|
repeat header{cellSpan = Covered})
|
||||||
|
rows
|
||||||
|
|
||||||
|
rawTableContent :: [[Cell border text]] -> [[text]]
|
||||||
|
rawTableContent = map (map cellContent)
|
||||||
|
|||||||
@ -265,7 +265,6 @@ module Hledger.Cli.Commands.Balance (
|
|||||||
,multiBalanceReportAsSpreadsheetParts
|
,multiBalanceReportAsSpreadsheetParts
|
||||||
,multiBalanceHasTotalsColumn
|
,multiBalanceHasTotalsColumn
|
||||||
,addTotalBorders
|
,addTotalBorders
|
||||||
,addRowSpanHeader
|
|
||||||
,simpleDateSpanCell
|
,simpleDateSpanCell
|
||||||
,RowClass(..)
|
,RowClass(..)
|
||||||
-- ** Tests
|
-- ** Tests
|
||||||
@ -307,6 +306,7 @@ import Hledger.Cli.Utils
|
|||||||
import Hledger.Write.Csv (CSV, printCSV, printTSV)
|
import Hledger.Write.Csv (CSV, printCSV, printTSV)
|
||||||
import Hledger.Write.Ods (printFods)
|
import Hledger.Write.Ods (printFods)
|
||||||
import Hledger.Write.Html.Lucid (printHtml)
|
import Hledger.Write.Html.Lucid (printHtml)
|
||||||
|
import Hledger.Write.Spreadsheet (rawTableContent, addRowSpanHeader, headerCell)
|
||||||
import qualified Hledger.Write.Spreadsheet as Ods
|
import qualified Hledger.Write.Spreadsheet as Ods
|
||||||
|
|
||||||
|
|
||||||
@ -587,9 +587,6 @@ renderComponent topaligned oneline opts (acctname, dep, total) (FormatField ljus
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
headerCell :: (Ods.Lines borders) => Text -> Ods.Cell borders Text
|
|
||||||
headerCell text = (Ods.defaultCell text) {Ods.cellStyle = Ods.Head}
|
|
||||||
|
|
||||||
registerQueryUrl :: [Text] -> Text
|
registerQueryUrl :: [Text] -> Text
|
||||||
registerQueryUrl query =
|
registerQueryUrl query =
|
||||||
Uri.render $
|
Uri.render $
|
||||||
@ -664,22 +661,6 @@ addTotalBorders =
|
|||||||
Ods.cellBorder = Ods.noBorder {Ods.borderTop = border}}))
|
Ods.cellBorder = Ods.noBorder {Ods.borderTop = border}}))
|
||||||
(Ods.DoubleLine : repeat Ods.NoLine)
|
(Ods.DoubleLine : repeat Ods.NoLine)
|
||||||
|
|
||||||
rawTableContent :: [[Ods.Cell border text]] -> [[text]]
|
|
||||||
rawTableContent = map (map Ods.cellContent)
|
|
||||||
|
|
||||||
addRowSpanHeader ::
|
|
||||||
Ods.Cell border text ->
|
|
||||||
[[Ods.Cell border text]] -> [[Ods.Cell border text]]
|
|
||||||
addRowSpanHeader header rows =
|
|
||||||
case rows of
|
|
||||||
[] -> []
|
|
||||||
[row] -> [header:row]
|
|
||||||
_ ->
|
|
||||||
zipWith (:)
|
|
||||||
(header{Ods.cellSpan = Ods.SpanVertical (length rows)} :
|
|
||||||
repeat header{Ods.cellSpan = Ods.Covered})
|
|
||||||
rows
|
|
||||||
|
|
||||||
setAccountAnchor ::
|
setAccountAnchor ::
|
||||||
Maybe Text -> [Text] -> Text -> Ods.Cell border text -> Ods.Cell border text
|
Maybe Text -> [Text] -> Text -> Ods.Cell border text -> Ods.Cell border text
|
||||||
setAccountAnchor base query acct cell =
|
setAccountAnchor base query acct cell =
|
||||||
|
|||||||
@ -378,7 +378,7 @@ compoundBalanceReportAsHtml ropts cbr =
|
|||||||
Total simpleDateSpanCell totalrow
|
Total simpleDateSpanCell totalrow
|
||||||
-- make a table of rendered lines of the report totals row
|
-- make a table of rendered lines of the report totals row
|
||||||
& map (map (fmap wbToText))
|
& map (map (fmap wbToText))
|
||||||
& addRowSpanHeader
|
& Spr.addRowSpanHeader
|
||||||
((Spr.defaultCell "Net:") {Spr.cellClass = Spr.Class "account"})
|
((Spr.defaultCell "Net:") {Spr.cellClass = Spr.Class "account"})
|
||||||
-- insert a headings column, with Net: on the first line only
|
-- insert a headings column, with Net: on the first line only
|
||||||
& addTotalBorders -- marking the first for special styling
|
& addTotalBorders -- marking the first for special styling
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user