mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-19 18:29:36 +03:00
lib,cli: Use Text for CompoundPeriodicReport titles.
This commit is contained in:
parent
541c4fc18c
commit
089564b04b
@ -32,9 +32,10 @@ module Hledger.Reports.ReportTypes
|
||||
, prrDepth
|
||||
) where
|
||||
|
||||
import Data.Aeson
|
||||
import Data.Decimal
|
||||
import Data.Aeson (ToJSON(..))
|
||||
import Data.Decimal (Decimal)
|
||||
import Data.Maybe (mapMaybe)
|
||||
import Data.Text (Text)
|
||||
#if !(MIN_VERSION_base(4,11,0))
|
||||
import Data.Semigroup (Semigroup(..))
|
||||
#endif
|
||||
@ -144,16 +145,16 @@ prrMapMaybeName f row = case f $ prrName row of
|
||||
-- It is used in compound balance report commands like balancesheet,
|
||||
-- cashflow and incomestatement.
|
||||
data CompoundPeriodicReport a b = CompoundPeriodicReport
|
||||
{ cbrTitle :: String
|
||||
{ cbrTitle :: Text
|
||||
, cbrDates :: [DateSpan]
|
||||
, cbrSubreports :: [(String, PeriodicReport a b, Bool)]
|
||||
, cbrSubreports :: [(Text, PeriodicReport a b, Bool)]
|
||||
, cbrTotals :: PeriodicReportRow () b
|
||||
} deriving (Show, Functor, Generic, ToJSON)
|
||||
|
||||
-- | Description of one subreport within a compound balance report.
|
||||
-- Part of a "CompoundBalanceCommandSpec", but also used in hledger-lib.
|
||||
data CBCSubreportSpec a = CBCSubreportSpec
|
||||
{ cbcsubreporttitle :: String -- ^ The title to use for the subreport
|
||||
{ cbcsubreporttitle :: Text -- ^ The title to use for the subreport
|
||||
, cbcsubreportquery :: Journal -> Query -- ^ The Query to use for the subreport
|
||||
, cbcsubreportoptions :: ReportOpts -> ReportOpts -- ^ A function to transform the ReportOpts used to produce the subreport
|
||||
, cbcsubreporttransform :: PeriodicReport DisplayName MixedAmount -> PeriodicReport a MixedAmount -- ^ A function to transform the result of the subreport
|
||||
|
@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-|
|
||||
|
@ -1,4 +1,6 @@
|
||||
{-# LANGUAGE QuasiQuotes, RecordWildCards #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-|
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
{-# LANGUAGE QuasiQuotes, RecordWildCards #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-|
|
||||
|
||||
|
@ -149,7 +149,7 @@ compoundBalanceCommand CompoundBalanceCommandSpec{..} opts@CliOpts{reportspec_=r
|
||||
|
||||
-- make a CompoundBalanceReport.
|
||||
cbr' = compoundBalanceReport rspec{rsOpts=ropts'} j cbcqueries
|
||||
cbr = cbr'{cbrTitle=T.unpack title}
|
||||
cbr = cbr'{cbrTitle=title}
|
||||
|
||||
-- render appropriately
|
||||
render = case outputFormatFromOpts opts of
|
||||
@ -192,7 +192,7 @@ Balance Sheet
|
||||
compoundBalanceReportAsText :: ReportOpts -> CompoundPeriodicReport DisplayName MixedAmount -> String
|
||||
compoundBalanceReportAsText ropts
|
||||
(CompoundPeriodicReport title _colspans subreports (PeriodicReportRow _ coltotals grandtotal grandavg)) =
|
||||
title ++ "\n\n" ++
|
||||
T.unpack title ++ "\n\n" ++
|
||||
balanceReportTableAsText ropts bigtable'
|
||||
where
|
||||
bigtable =
|
||||
@ -218,7 +218,7 @@ compoundBalanceReportAsText ropts
|
||||
-- convert to table
|
||||
Table lefthdrs tophdrs cells = balanceReportAsTable ropts r
|
||||
-- tweak the layout
|
||||
t = Table (Tab.Group SingleLine [Header title, lefthdrs]) tophdrs ([]:cells)
|
||||
t = Table (Tab.Group SingleLine [Header $ T.unpack title, lefthdrs]) tophdrs ([]:cells)
|
||||
|
||||
-- | Add the second table below the first, discarding its column headings.
|
||||
concatTables (Table hLeft hTop dat) (Table hLeft' _ dat') =
|
||||
@ -231,7 +231,7 @@ concatTables (Table hLeft hTop dat) (Table hLeft' _ dat') =
|
||||
compoundBalanceReportAsCsv :: ReportOpts -> CompoundPeriodicReport DisplayName MixedAmount -> CSV
|
||||
compoundBalanceReportAsCsv ropts (CompoundPeriodicReport title colspans subreports (PeriodicReportRow _ coltotals grandtotal grandavg)) =
|
||||
addtotals $
|
||||
padRow (T.pack title)
|
||||
padRow title
|
||||
: ( "Account"
|
||||
: map showDateSpanMonthAbbrev colspans
|
||||
++ (if row_total_ ropts then ["Total"] else [])
|
||||
@ -241,7 +241,7 @@ compoundBalanceReportAsCsv ropts (CompoundPeriodicReport title colspans subrepor
|
||||
where
|
||||
-- | Add a subreport title row and drop the heading row.
|
||||
subreportAsCsv ropts (subreporttitle, multibalreport, _) =
|
||||
padRow (T.pack subreporttitle) :
|
||||
padRow subreporttitle :
|
||||
tail (multiBalanceReportAsCsv ropts multibalreport)
|
||||
padRow s = take numcols $ s : repeat ""
|
||||
where
|
||||
@ -288,7 +288,7 @@ compoundBalanceReportAsHtml ropts cbr =
|
||||
|
||||
-- Make rows for a subreport: its title row, not the headings row,
|
||||
-- the data rows, any totals row, and a blank row for whitespace.
|
||||
subreportrows :: (String, MultiBalanceReport, Bool) -> [Html ()]
|
||||
subreportrows :: (T.Text, MultiBalanceReport, Bool) -> [Html ()]
|
||||
subreportrows (subreporttitle, mbr, _increasestotal) =
|
||||
let
|
||||
(_,bodyrows,mtotalsrow) = multiBalanceReportHtmlRows ropts mbr
|
||||
|
Loading…
Reference in New Issue
Block a user