lib: new generic PeriodicReport, and some report-related type aliases
This commit is contained in:
		
							parent
							
								
									d2f5d7101e
								
							
						
					
					
						commit
						4b3c6afe75
					
				| @ -10,6 +10,7 @@ javascript, or whatever. | |||||||
| 
 | 
 | ||||||
| module Hledger.Reports ( | module Hledger.Reports ( | ||||||
|   module Hledger.Reports.ReportOptions, |   module Hledger.Reports.ReportOptions, | ||||||
|  |   module Hledger.Reports.ReportTypes, | ||||||
|   module Hledger.Reports.EntriesReport, |   module Hledger.Reports.EntriesReport, | ||||||
|   module Hledger.Reports.PostingsReport, |   module Hledger.Reports.PostingsReport, | ||||||
|   module Hledger.Reports.TransactionsReports, |   module Hledger.Reports.TransactionsReports, | ||||||
| @ -25,6 +26,7 @@ where | |||||||
| import Test.HUnit | import Test.HUnit | ||||||
| 
 | 
 | ||||||
| import Hledger.Reports.ReportOptions | import Hledger.Reports.ReportOptions | ||||||
|  | import Hledger.Reports.ReportTypes | ||||||
| import Hledger.Reports.EntriesReport | import Hledger.Reports.EntriesReport | ||||||
| import Hledger.Reports.PostingsReport | import Hledger.Reports.PostingsReport | ||||||
| import Hledger.Reports.TransactionsReports | import Hledger.Reports.TransactionsReports | ||||||
|  | |||||||
							
								
								
									
										40
									
								
								hledger-lib/Hledger/Reports/ReportTypes.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								hledger-lib/Hledger/Reports/ReportTypes.hs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | |||||||
|  | {- | | ||||||
|  | New common report types, used by the BudgetReport for now, perhaps all reports later. | ||||||
|  | -} | ||||||
|  | 
 | ||||||
|  | module Hledger.Reports.ReportTypes | ||||||
|  | where | ||||||
|  | 
 | ||||||
|  | import Data.Decimal | ||||||
|  | import Hledger.Data | ||||||
|  | 
 | ||||||
|  | type Percentage = Decimal | ||||||
|  | 
 | ||||||
|  | type Change  = MixedAmount  -- ^ A change in balance during a certain period. | ||||||
|  | type Balance = MixedAmount  -- ^ An ending balance as of some date. | ||||||
|  | type Total   = MixedAmount  -- ^ The sum of 'Change's in a report or a report row. Does not make sense for 'Balance's. | ||||||
|  | type Average = MixedAmount  -- ^ The average of 'Change's or 'Balance's in a report or report row. | ||||||
|  | 
 | ||||||
|  | -- | A generic tabular report of some value, where each row corresponds to an account | ||||||
|  | -- and each column is a date period. The column periods are usually consecutive subperiods | ||||||
|  | -- formed by splitting the overall report period by some report interval (daily, weekly, etc.) | ||||||
|  | -- Depending on the value type, this can be a report of balance changes, ending balances, | ||||||
|  | -- budget performance, etc. Successor to MultiBalanceReport. | ||||||
|  | data PeriodicReport a = | ||||||
|  |   PeriodicReport | ||||||
|  |     ( [DateSpan]            -- ^ The subperiods formed by spliting the overall report period by the report interval. | ||||||
|  |                             --   For ending-balance reports, only the end date is significant. | ||||||
|  |                             --   Usually displayed as report columns. | ||||||
|  |     , [PeriodicReportRow a] -- ^ One row per account in the report. | ||||||
|  |     , PeriodicReportRow a   -- ^ The grand totals row. The account name in this row is always empty. | ||||||
|  |     ) | ||||||
|  |    deriving (Show) | ||||||
|  | 
 | ||||||
|  | type PeriodicReportRow a = | ||||||
|  |   ( AccountName  -- ^ A full account name. | ||||||
|  |   , AccountName  -- ^ Shortened form of the account name to display in tree mode. Usually the leaf name, possibly with parent accounts prefixed. | ||||||
|  |   , Int          -- ^ Indent level for displaying this account name in tree mode. 0, 1, 2...  | ||||||
|  |   , [a]          -- ^ The data value for each subperiod. | ||||||
|  |   , a            -- ^ The total of this row's values. | ||||||
|  |   , a            -- ^ The average of this row's values. | ||||||
|  |   ) | ||||||
| @ -131,6 +131,8 @@ library | |||||||
|       Hledger.Utils.UTF8IOCompat |       Hledger.Utils.UTF8IOCompat | ||||||
|       Text.Megaparsec.Compat |       Text.Megaparsec.Compat | ||||||
|   other-modules: |   other-modules: | ||||||
|  |       Hledger.Reports.BudgetReport | ||||||
|  |       Hledger.Reports.ReportTypes | ||||||
|       Paths_hledger_lib |       Paths_hledger_lib | ||||||
|   default-language: Haskell2010 |   default-language: Haskell2010 | ||||||
| 
 | 
 | ||||||
| @ -209,10 +211,12 @@ test-suite doctests | |||||||
|       Hledger.Reports |       Hledger.Reports | ||||||
|       Hledger.Reports.BalanceHistoryReport |       Hledger.Reports.BalanceHistoryReport | ||||||
|       Hledger.Reports.BalanceReport |       Hledger.Reports.BalanceReport | ||||||
|  |       Hledger.Reports.BudgetReport | ||||||
|       Hledger.Reports.EntriesReport |       Hledger.Reports.EntriesReport | ||||||
|       Hledger.Reports.MultiBalanceReports |       Hledger.Reports.MultiBalanceReports | ||||||
|       Hledger.Reports.PostingsReport |       Hledger.Reports.PostingsReport | ||||||
|       Hledger.Reports.ReportOptions |       Hledger.Reports.ReportOptions | ||||||
|  |       Hledger.Reports.ReportTypes | ||||||
|       Hledger.Reports.TransactionsReports |       Hledger.Reports.TransactionsReports | ||||||
|       Hledger.Utils |       Hledger.Utils | ||||||
|       Hledger.Utils.Color |       Hledger.Utils.Color | ||||||
| @ -301,10 +305,12 @@ test-suite easytests | |||||||
|       Hledger.Reports |       Hledger.Reports | ||||||
|       Hledger.Reports.BalanceHistoryReport |       Hledger.Reports.BalanceHistoryReport | ||||||
|       Hledger.Reports.BalanceReport |       Hledger.Reports.BalanceReport | ||||||
|  |       Hledger.Reports.BudgetReport | ||||||
|       Hledger.Reports.EntriesReport |       Hledger.Reports.EntriesReport | ||||||
|       Hledger.Reports.MultiBalanceReports |       Hledger.Reports.MultiBalanceReports | ||||||
|       Hledger.Reports.PostingsReport |       Hledger.Reports.PostingsReport | ||||||
|       Hledger.Reports.ReportOptions |       Hledger.Reports.ReportOptions | ||||||
|  |       Hledger.Reports.ReportTypes | ||||||
|       Hledger.Reports.TransactionsReports |       Hledger.Reports.TransactionsReports | ||||||
|       Hledger.Utils |       Hledger.Utils | ||||||
|       Hledger.Utils.Color |       Hledger.Utils.Color | ||||||
| @ -394,10 +400,12 @@ test-suite hunittests | |||||||
|       Hledger.Reports |       Hledger.Reports | ||||||
|       Hledger.Reports.BalanceHistoryReport |       Hledger.Reports.BalanceHistoryReport | ||||||
|       Hledger.Reports.BalanceReport |       Hledger.Reports.BalanceReport | ||||||
|  |       Hledger.Reports.BudgetReport | ||||||
|       Hledger.Reports.EntriesReport |       Hledger.Reports.EntriesReport | ||||||
|       Hledger.Reports.MultiBalanceReports |       Hledger.Reports.MultiBalanceReports | ||||||
|       Hledger.Reports.PostingsReport |       Hledger.Reports.PostingsReport | ||||||
|       Hledger.Reports.ReportOptions |       Hledger.Reports.ReportOptions | ||||||
|  |       Hledger.Reports.ReportTypes | ||||||
|       Hledger.Reports.TransactionsReports |       Hledger.Reports.TransactionsReports | ||||||
|       Hledger.Utils |       Hledger.Utils | ||||||
|       Hledger.Utils.Color |       Hledger.Utils.Color | ||||||
|  | |||||||
| @ -122,8 +122,10 @@ library: | |||||||
|   - Hledger.Read.TimeclockReader |   - Hledger.Read.TimeclockReader | ||||||
|   - Hledger.Reports |   - Hledger.Reports | ||||||
|   - Hledger.Reports.ReportOptions |   - Hledger.Reports.ReportOptions | ||||||
|  |   - Hledger.Reports.ReportTypes | ||||||
|   - Hledger.Reports.BalanceHistoryReport |   - Hledger.Reports.BalanceHistoryReport | ||||||
|   - Hledger.Reports.BalanceReport |   - Hledger.Reports.BalanceReport | ||||||
|  |   - Hledger.Reports.BudgetReport | ||||||
|   - Hledger.Reports.EntriesReport |   - Hledger.Reports.EntriesReport | ||||||
|   - Hledger.Reports.MultiBalanceReports |   - Hledger.Reports.MultiBalanceReports | ||||||
|   - Hledger.Reports.PostingsReport |   - Hledger.Reports.PostingsReport | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user