summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2010-06-30 19:55:02 +0100
committerdakkar <dakkar@thenautilus.net>2010-06-30 19:55:02 +0100
commit89948f3b588e8b200b52fc9417ca5d1f1585b5a8 (patch)
treef7879fd88f7c510f6b49183c24e0b8837adf7606
parentinitial version (diff)
downloadTFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.tar.gz
TFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.tar.bz2
TFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.zip
reporting script
-rw-r--r--script/tfl_to_html120
1 files changed, 120 insertions, 0 deletions
diff --git a/script/tfl_to_html b/script/tfl_to_html
new file mode 100644
index 0000000..daf097e
--- /dev/null
+++ b/script/tfl_to_html
@@ -0,0 +1,120 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use TFLMonitor::Schema;
+use Path::Class;
+
+my $libdir=file(__FILE__)->parent;
+my $dbfile=$libdir->parent->file('monitor.db');
+
+my $schema=TFLMonitor::Schema->connect(
+ "dbi:SQLite:dbname=$dbfile",
+ '','',
+ {
+ AutoCommit => 1,
+ });
+
+my $total_count=$schema->resultset('TFLMonitor::Schema::LineStatus')
+ ->count;
+
+my $overall_rs=$schema->resultset('TFLMonitor::Schema::LineStatus')
+ ->search(undef,{
+ '+select' => [
+ { count => '*' },
+ ],
+ '+as' => ['count'],
+ prefetch => [
+ 'status_code',
+ ],
+ group_by => [
+ 'status_code.code',
+ ],
+ order_by => {
+ -asc => [ 'status_code.class','status_code.code' ],
+ },
+ });
+
+my %tot_per_class;my $last_class;
+while (my $ls=$overall_rs->next) {
+ if ($last_class && $last_class ne $ls->status_code->class) {
+ printf "%15s(%15s) %5.3f%%\n",
+ '',
+ $last_class,
+ 100*$tot_per_class{$last_class}/$total_count;
+ }
+ printf "%-15s(%15s) %5.3f%%\n",
+ $ls->status_code->description,
+ $ls->status_code->class,
+ 100*$ls->get_column('count')/$total_count;
+ $last_class=$ls->status_code->class;
+ $tot_per_class{$last_class}+=$ls->get_column('count');
+}
+if ($last_class) {
+ printf "%15s(%15s) %5.3f%%\n",
+ '',
+ $last_class,
+ 100*$tot_per_class{$last_class}/$total_count;
+}
+
+print "\n";
+
+my $count_per_line_rs=$schema->resultset('TFLMonitor::Schema::LineStatus')
+ ->search(undef,{
+ '+select' => [
+ { count => '*' },
+ ],
+ '+as' => [ 'count' ],
+ prefetch => [
+ 'line_id',
+ ],
+ group_by => [ 'line_id' ],
+ });
+my %count_per_line=map { $_->line_id->name => $_->get_column('count') } $count_per_line_rs->all;
+
+my $per_line_rs=$schema->resultset('TFLMonitor::Schema::LineStatus')
+ ->search(undef,{
+ '+select' => [
+ { count => '*' },
+ ],
+ '+as' => ['count'],
+ prefetch => [
+ 'line_id','status_code',
+ ],
+ group_by => [
+ 'line_id','status_code.code',
+ ],
+ order_by => {
+ -asc => [ 'line_id','status_code.class','status_code.code' ],
+ },
+ });
+
+%tot_per_class=();my $last_line;$last_class=undef;
+while (my $ls=$per_line_rs->next) {
+ if ($last_class && $last_class ne $ls->status_code->class) {
+ printf "%-20s %15s(%15s) %5.3f%%\n",
+ $last_line,
+ '',
+ $last_class,
+ 100*$tot_per_class{$last_class}/$count_per_line{$last_line}
+ }
+ if ($last_line && $last_line ne $ls->line_id->name) {
+ %tot_per_class=();
+ print "\n";
+ }
+ printf "%-20s %-15s(%15s) %5.3f%%\n",
+ $ls->line_id->name,
+ $ls->status_code->description,
+ $ls->status_code->class,
+ 100*$ls->get_column('count')/$count_per_line{$ls->line_id->name};
+
+ $last_class=$ls->status_code->class;
+ $tot_per_class{$last_class}+=$ls->get_column('count');
+ $last_line=$ls->line_id->name;
+}
+if ($last_class) {
+ printf "%-20s %15s(%15s) %5.3f%%\n",
+ $last_line,
+ '',
+ $last_class,
+ 100*$tot_per_class{$last_class}/$count_per_line{$last_line};
+}