diff options
author | dakkar <dakkar@thenautilus.net> | 2010-06-30 19:55:02 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2010-06-30 19:55:02 +0100 |
commit | 89948f3b588e8b200b52fc9417ca5d1f1585b5a8 (patch) | |
tree | f7879fd88f7c510f6b49183c24e0b8837adf7606 | |
parent | initial version (diff) | |
download | TFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.tar.gz TFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.tar.bz2 TFLMonitor-89948f3b588e8b200b52fc9417ca5d1f1585b5a8.zip |
reporting script
-rw-r--r-- | script/tfl_to_html | 120 |
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}; +} |