cli: Command.Balance: use Date format for dates in LayoutTidy
This commit is contained in:
parent
da61b64f94
commit
3af8eb3bc6
@ -30,6 +30,7 @@ formatCell cell =
|
||||
let align =
|
||||
case cellType cell of
|
||||
TypeString -> []
|
||||
TypeDate -> []
|
||||
_ -> [LucidBase.makeAttribute "align" "right"]
|
||||
withEmph =
|
||||
case emph of
|
||||
|
||||
@ -71,6 +71,19 @@ printFods encoding tables =
|
||||
" <style:paragraph-properties fo:text-align='end'/>" :
|
||||
" <style:text-properties fo:font-weight='bold'/>" :
|
||||
" </style:style>" :
|
||||
" <number:date-style style:name='iso-date'>" :
|
||||
" <number:year number:style='long'/>" :
|
||||
" <number:text>-</number:text>" :
|
||||
" <number:month number:style='long'/>" :
|
||||
" <number:text>-</number:text>" :
|
||||
" <number:day number:style='long'/>" :
|
||||
" </number:date-style>" :
|
||||
" <style:style style:name='date' style:family='table-cell'" :
|
||||
" style:data-style-name='iso-date'/>" :
|
||||
" <style:style style:name='foot-date' style:family='table-cell'" :
|
||||
" style:data-style-name='iso-date'>" :
|
||||
" <style:text-properties fo:font-weight='bold'/>" :
|
||||
" </style:style>" :
|
||||
customStyles ++
|
||||
"</office:styles>" :
|
||||
[]
|
||||
@ -201,23 +214,30 @@ formatCell cell =
|
||||
let style, valueType :: String
|
||||
style =
|
||||
case (cellStyle cell, cellType cell) of
|
||||
(Body emph, TypeAmount amt) -> numberStyle emph amt
|
||||
(Body emph, TypeAmount amt) -> tableStyle $ numberStyle emph amt
|
||||
(Body Item, TypeString) -> ""
|
||||
(Body Item, TypeMixedAmount) -> " table:style-name='amount'"
|
||||
(Body Total, TypeString) -> " table:style-name='foot'"
|
||||
(Body Total, TypeMixedAmount) -> " table:style-name='total-amount'"
|
||||
(Head, _) -> " table:style-name='head'"
|
||||
|
||||
(Body Item, TypeMixedAmount) -> tableStyle "amount"
|
||||
(Body Item, TypeDate) -> tableStyle "date"
|
||||
(Body Total, TypeString) -> tableStyle "foot"
|
||||
(Body Total, TypeMixedAmount) -> tableStyle "total-amount"
|
||||
(Body Total, TypeDate) -> tableStyle "foot-date"
|
||||
(Head, _) -> tableStyle "head"
|
||||
numberStyle emph amt =
|
||||
printf " table:style-name='%s-%s'"
|
||||
printf "%s-%s"
|
||||
(emphasisName emph)
|
||||
(numberStyleName (acommodity amt, asprecision $ astyle amt))
|
||||
tableStyle = printf " table:style-name='%s'"
|
||||
|
||||
valueType =
|
||||
case cellType cell of
|
||||
TypeAmount amt ->
|
||||
printf
|
||||
"office:value-type='float' office:value='%s'"
|
||||
(show $ aquantity amt)
|
||||
TypeDate ->
|
||||
printf
|
||||
"office:value-type='date' office:date-value='%s'"
|
||||
(cellContent cell)
|
||||
_ -> "office:value-type='string'"
|
||||
|
||||
in
|
||||
|
||||
@ -18,6 +18,7 @@ data Type =
|
||||
TypeString
|
||||
| TypeAmount !Amount
|
||||
| TypeMixedAmount
|
||||
| TypeDate
|
||||
deriving (Eq, Ord, Show)
|
||||
|
||||
data Style = Body Emphasis | Head
|
||||
|
||||
@ -900,14 +900,15 @@ multiBalanceRowAsCellBuilders bopts ReportOpts{..} colspans (PeriodicReportRow _
|
||||
-- complicates the data representation and can be easily calculated
|
||||
where
|
||||
wbCell = Ods.defaultCell . wbFromText
|
||||
wbDate content = (wbCell content) {Ods.cellType = Ods.TypeDate}
|
||||
totalscolumn = row_total_ && balanceaccum_ `notElem` [Cumulative, Historical]
|
||||
cs = if all mixedAmountLooksZero allamts then [""] else S.toList $ foldMap maCommodities allamts
|
||||
allamts = (if not summary_only_ then as else []) ++
|
||||
[rowtot | totalscolumn && not (null as)] ++
|
||||
[rowavg | average_ && not (null as)]
|
||||
addDateColumns spn@(DateSpan s e) = (wbCell (showDateSpan spn) :)
|
||||
. (wbCell (maybe "" showEFDate s) :)
|
||||
. (wbCell (maybe "" (showEFDate . modifyEFDay (addDays (-1))) e) :)
|
||||
. (wbDate (maybe "" showEFDate s) :)
|
||||
. (wbDate (maybe "" (showEFDate . modifyEFDay (addDays (-1))) e) :)
|
||||
|
||||
paddedTranspose :: a -> [[a]] -> [[a]]
|
||||
paddedTranspose _ [] = [[]]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user