From 9392bec63bd1057f263dacdd985b628f40fd04bf Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 3 Mar 2015 17:08:01 +0100 Subject: show total/matched number of samples in barplot hover --- index.pl | 36 +++++++++++++++++++++--------------- public/js/d3funcs.js | 10 ++++++++-- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/index.pl b/index.pl index 6fb9832..c29c314 100644 --- a/index.pl +++ b/index.pl @@ -188,7 +188,7 @@ get '/2ddata.tsv' => sub { my $where_clause = '1 = 1'; - my $res = "x\ty\n"; + my $res = "x\ty\ty_total\ty_matched\n"; my $query; my $format = 'strftime("%H", scheduled_time, "unixepoch")'; @@ -215,46 +215,52 @@ get '/2ddata.tsv' => sub { given ($metric) { when ('avg_delay') { $query = qq{ - select $format as aggregate, - avg(delay) from $table where not is_canceled and $where_clause group by aggregate + select $format as aggregate, avg(delay), count() + from $table where not is_canceled and $where_clause group by aggregate }; } when ('cancel_num') { $query = qq{ - select $format as aggregate, - count() from $table where is_canceled > 0 and $where_clause group by aggregate + select $format as aggregate, count(), count() + from $table where is_canceled > 0 and $where_clause group by aggregate }; } when ('cancel_rate') { $query = qq{ - select $format as aggregate, - avg(is_canceled) from $table where $where_clause group by aggregate + select $format as aggregate, avg(is_canceled), count(), + sum(is_canceled = 1) + from $table where $where_clause group by aggregate }; } when ('delay0_rate') { $query = qq{ - select $format as aggregate, - avg(delay < 1) from $table where $where_clause group by aggregate + select $format as aggregate, avg(delay < 1), count(), + sum(delay < 1) + from $table where $where_clause group by aggregate }; } when ('delay5_rate') { $query = qq{ - select $format as aggregate, - avg(delay > 5) from $table where $where_clause group by aggregate + select $format as aggregate, avg(delay > 5), count(), + sum(delay > 5) + from $table where $where_clause group by aggregate }; } when ('message_rate') { $query = qq{ select $format as aggregate, - avg(msgtable.train_id is not null) from $table + avg(msgtable.train_id is not null), count(), + sum(msgtable.train_id is not null) + from $table left outer join msg_$msgnum as msgtable using (scheduled_time, train_id) where $where_clause group by aggregate }; } when ('realtime_rate') { $query = qq{ - select $format as aggregate, - avg(delay is not null) from $table + select $format as aggregate, avg(delay is not null), + count(), sum(delay is not null) + from $table where $where_clause group by aggregate }; } @@ -277,7 +283,7 @@ get '/2ddata.tsv' => sub { } for my $row ( @{$dbres} ) { - $res .= sprintf( "%s\t%s\n", @{$row} ); + $res .= join("\t", @{$row} ) . "\n"; } $self->render( data => $res ); diff --git a/public/js/d3funcs.js b/public/js/d3funcs.js index 0b68bcb..fb50345 100644 --- a/public/js/d3funcs.js +++ b/public/js/d3funcs.js @@ -33,8 +33,14 @@ show_bargraph = function(datasource, title, xLabel, yLabel, yFormat, width, heig .attr('class', 'd3-tip') .offset([-10, 0]) .html(function(d) { - return "Frequency: " + d.y + ""; - }) + if (d.y_matched == undefined) { + return "n=" + d.y_total + ""; + } + else { + return "" + d.y_matched + " von " + + "" + d.y_total + ""; + } + }); var svg = d3.select("body").append("svg") .attr("width", width + margin.left + margin.right) -- cgit v1.2.3