web: register chart improvements
- bigger - plot is horizontal when balance is not changing - legend for commodities - some work towards stable commodity colors
This commit is contained in:
parent
663c68e8e2
commit
4333cae43f
@ -205,9 +205,9 @@ filterTransactionPostings m t@Transaction{tpostings=ps} = t{tpostings=filter (m
|
||||
|
||||
-- | Split a transactions report whose items may involve several commodities,
|
||||
-- into one or more single-commodity transactions reports.
|
||||
transactionsReportByCommodity :: TransactionsReport -> [TransactionsReport]
|
||||
transactionsReportByCommodity :: TransactionsReport -> [(Commodity, TransactionsReport)]
|
||||
transactionsReportByCommodity tr =
|
||||
[filterTransactionsReportByCommodity c tr | c <- transactionsReportCommodities tr]
|
||||
[(c, filterTransactionsReportByCommodity c tr) | c <- transactionsReportCommodities tr]
|
||||
where
|
||||
transactionsReportCommodities (_,items) =
|
||||
nub $ sort $ map acommodity $ concatMap (amounts . triAmount) items
|
||||
|
||||
@ -58,8 +58,8 @@ registerItemsHtml _ vd (balancelabel,items) = [hamlet|
|
||||
<span .glyphicon .glyphicon-chevron-up>
|
||||
<th.description style="text-align:left;">Description
|
||||
<th.account style="text-align:left;">To/From Account(s)
|
||||
<th.amount style="text-align:right;">Amount Out/In
|
||||
<th.balance style="text-align:right;">#{balancelabel'}
|
||||
<th.amount style="text-align:right; white-space:normal;">Amount Out/In
|
||||
<th.balance style="text-align:right; white-space:normal;">#{balancelabel'}
|
||||
$forall i <- numberTransactionsReportItems items
|
||||
^{itemAsHtml vd i}
|
||||
|]
|
||||
@ -96,40 +96,69 @@ registerItemsHtml _ vd (balancelabel,items) = [hamlet|
|
||||
-- Data.Foldable.Foldable t1 =>
|
||||
-- t1 (Transaction, t2, t3, t4, t5, MixedAmount)
|
||||
-- -> t -> Text.Blaze.Internal.HtmlM ()
|
||||
registerChartHtml :: [(String, [TransactionsReportItem])] -> HtmlUrl AppRoute
|
||||
registerChartHtml :: [(Commodity, (String, [TransactionsReportItem]))] -> HtmlUrl AppRoute
|
||||
registerChartHtml percommoditytxnreports =
|
||||
-- have to make sure plot is not called when our container (maincontent)
|
||||
-- is hidden, eg with add form toggled
|
||||
[hamlet|
|
||||
<label#register-chart-label style="float:left;margin-right:1em;">
|
||||
<div#register-chart style="width:600px;height:100px; margin-bottom:1em;float:left;">
|
||||
<label#register-chart-label style=""><br>
|
||||
<div#register-chart style="width:85%; height:150px; margin-bottom:1em; display:block;">
|
||||
<script type=text/javascript>
|
||||
\$(document).ready(function() {
|
||||
/* render chart with flot, if visible */
|
||||
var chartdiv = $('#register-chart');
|
||||
if (chartdiv.is(':visible'))
|
||||
\$('#register-chart-label').text('#{label}');
|
||||
if (chartdiv.is(':visible')) {
|
||||
\$('#register-chart-label').text('#{charttitle}');
|
||||
/* https://github.com/flot/flot/blob/master/API.md */
|
||||
\$.plot(chartdiv,
|
||||
[
|
||||
$forall (_,items) <- percommoditytxnreports
|
||||
[
|
||||
$forall (comm,(_,items)) <- percommoditytxnreports
|
||||
{
|
||||
label: '#{comm}',
|
||||
color: #{colorForCommodity comm},
|
||||
data: [
|
||||
$forall i <- reverse items
|
||||
[#{dayToJsTimestamp $ triDate i}, #{triSimpleBalance i}],
|
||||
[]
|
||||
],
|
||||
[]
|
||||
[] ],
|
||||
},
|
||||
],
|
||||
{
|
||||
series: {
|
||||
points: {
|
||||
show: false,
|
||||
},
|
||||
lines: {
|
||||
show: true,
|
||||
steps: true,
|
||||
},
|
||||
bars: {
|
||||
show: false,
|
||||
barWidth: 10,
|
||||
},
|
||||
},
|
||||
yaxis: {
|
||||
/* mode: "time", */
|
||||
/* timeformat: "%y/%m/%d", */
|
||||
/* ticks: 6, */
|
||||
},
|
||||
xaxis: {
|
||||
mode: "time",
|
||||
timeformat: "%y/%m/%d"
|
||||
}
|
||||
timeformat: "%Y/%m/%d"
|
||||
/* ticks: 6, */
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
//clickable: true,
|
||||
//hoverable: true,
|
||||
//minTickSize: 3,
|
||||
//var plot = $("#placeholder").plot(data, options).data("plot");
|
||||
|]
|
||||
where
|
||||
label = case maybe "" fst $ headMay percommoditytxnreports
|
||||
charttitle = case maybe "" (fst.snd) $ headMay percommoditytxnreports
|
||||
of "" -> ""
|
||||
s -> s++":"
|
||||
colorForCommodity = fromMaybe 0 . flip lookup commoditiesIndex
|
||||
commoditiesIndex = zip (map fst percommoditytxnreports) [0..] :: [(Commodity,Int)]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user