;refactor: extracted reportPeriodName for making report headings
This commit is contained in:
		
							parent
							
								
									4b9a76068f
								
							
						
					
					
						commit
						23bef9a01b
					
				| @ -260,20 +260,17 @@ budgetReportAsText ropts@ReportOpts{..} budgetr = | ||||
| budgetReportAsTable :: ReportOpts -> BudgetReport -> Table String String (Maybe MixedAmount, Maybe MixedAmount) | ||||
| budgetReportAsTable | ||||
|   ropts@ReportOpts{balancetype_} | ||||
|   (PeriodicReport periods rows (PeriodicReportRow _ coltots grandtot grandavg)) = | ||||
|   (PeriodicReport spans rows (PeriodicReportRow _ coltots grandtot grandavg)) = | ||||
|     addtotalrow $ | ||||
|     Table | ||||
|       (T.Group NoLine $ map Header accts) | ||||
|       (T.Group NoLine $ map Header colheadings) | ||||
|       (map rowvals rows) | ||||
|   where | ||||
|     colheadings = map mkheading periods | ||||
|     colheadings = map (reportPeriodName balancetype_ spans) spans | ||||
|                   ++ ["  Total" | row_total_ ropts] | ||||
|                   ++ ["Average" | average_ ropts] | ||||
|       where | ||||
|         mkheading = case balancetype_ of | ||||
|           PeriodChange -> showDateSpanMonthAbbrev | ||||
|           _            -> maybe "" (showDate . prevday) . spanEnd | ||||
| 
 | ||||
|     accts = map renderacct rows | ||||
|     -- FIXME. Have to check explicitly for which to render here, since | ||||
|     -- budgetReport sets accountlistmode to ALTree. Find a principled way to do | ||||
| @ -290,6 +287,25 @@ budgetReportAsTable | ||||
|                                ++ [grandavg | average_ ropts && not (null coltots)] | ||||
|                     )) | ||||
| 
 | ||||
| -- | Make a name for the given period in a multiperiod report, given | ||||
| -- the type of balance being reported and the full set of report | ||||
| -- periods. This will be used as a column heading (or row heading, in | ||||
| -- a register summary report). We try to pick a useful name as follows: | ||||
| -- | ||||
| -- - ending-balance reports: the period's end date | ||||
| -- | ||||
| -- - balance change reports where the periods are months and all in the same year: | ||||
| --   the short month name in the current locale | ||||
| -- | ||||
| -- - all other balance change reports: a description of the datespan, | ||||
| --   abbreviated to compact form if possible (see showDateSpan). | ||||
| -- | ||||
| reportPeriodName :: BalanceType -> [DateSpan] -> DateSpan -> String | ||||
| reportPeriodName balancetype spans = | ||||
|   case balancetype of | ||||
|     PeriodChange -> showDateSpanMonthAbbrev | ||||
|     _            -> maybe "" (showDate . prevday) . spanEnd | ||||
| 
 | ||||
| -- tests | ||||
| 
 | ||||
| tests_BudgetReport = tests "BudgetReport" [ | ||||
|  | ||||
| @ -593,7 +593,7 @@ multiBalanceReportAsText ropts@ReportOpts{..} r = | ||||
| -- | Build a 'Table' from a multi-column balance report. | ||||
| balanceReportAsTable :: ReportOpts -> MultiBalanceReport -> Table String String MixedAmount | ||||
| balanceReportAsTable opts@ReportOpts{average_, row_total_, balancetype_} | ||||
|     (PeriodicReport colspans items (PeriodicReportRow _ coltotals tot avg)) = | ||||
|     (PeriodicReport spans items (PeriodicReportRow _ coltotals tot avg)) = | ||||
|    maybetranspose $ | ||||
|    addtotalrow $ | ||||
|    Table | ||||
| @ -602,13 +602,9 @@ balanceReportAsTable opts@ReportOpts{average_, row_total_, balancetype_} | ||||
|      (map rowvals items) | ||||
|   where | ||||
|     totalscolumn = row_total_ && balancetype_ `notElem` [CumulativeChange, HistoricalBalance] | ||||
|     colheadings = map mkheading colspans | ||||
|     colheadings = map (reportPeriodName balancetype_ spans) spans | ||||
|                   ++ ["  Total" | totalscolumn] | ||||
|                   ++ ["Average" | average_] | ||||
|       where | ||||
|         mkheading = case balancetype_ of | ||||
|           PeriodChange -> showDateSpanMonthAbbrev | ||||
|           _            -> maybe "" (showDate . prevday) . spanEnd | ||||
|     accts = map renderacct items | ||||
|     renderacct row = | ||||
|         replicate ((prrDepth row - 1) * 2) ' ' ++ T.unpack (prrDisplayName row) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user