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