Apply accumulated changes from tsplotv to tsplotvsql
This commit is contained in:
parent
1f4b6f1a91
commit
4a529d40d3
50
tsplotvsql
50
tsplotvsql
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/perl -w
|
||||
#!/usr/bin/perl
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
@ -14,6 +14,10 @@ tsplotv
|
|||
[--output-format format ]
|
||||
[--stacked]
|
||||
[--style style]
|
||||
[--time_t]
|
||||
[--colors rgb-list]
|
||||
[--configfile yaml]
|
||||
[--yrange min:max]
|
||||
[query ...]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
@ -37,11 +41,15 @@ other.
|
|||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use TimeSeries;
|
||||
use v5.24;
|
||||
use warnings;
|
||||
|
||||
use Getopt::Long;
|
||||
use Pod::Usage;
|
||||
use YAML qw(LoadFile);
|
||||
|
||||
use DBIx::SimpleConnect;
|
||||
use TimeSeries;
|
||||
|
||||
my $help;
|
||||
my $legend_position = 'top right';
|
||||
|
@ -53,6 +61,8 @@ my $finalresolution;
|
|||
my $time_t = 0;
|
||||
my $colors;
|
||||
my $dbname;
|
||||
my $configfile;
|
||||
my $yrange;
|
||||
|
||||
GetOptions('help|?' => \$help,
|
||||
'legend_position|legend-position=s' => \$legend_position,
|
||||
|
@ -64,36 +74,56 @@ GetOptions('help|?' => \$help,
|
|||
'time_t' => \$time_t,
|
||||
'colors=s' => \$colors,
|
||||
'dbname=s' => \$dbname,
|
||||
'configfile=s' => \$configfile,
|
||||
'yrange=s' => \$yrange,
|
||||
) or pod2usage(2);
|
||||
pod2usage(1) if $help;
|
||||
|
||||
my $config = LoadFile($configfile) if $configfile;
|
||||
|
||||
binmode STDOUT, ':raw';
|
||||
|
||||
my %series;
|
||||
my $ns;
|
||||
my $ns = 0;
|
||||
my %data;
|
||||
|
||||
my $ts = TimeSeries->new(output_format => $output_format);
|
||||
$config->{timeseries} //= {};
|
||||
for (keys $config->{timeseries}->%*) {
|
||||
$ns = $config->{timeseries}{$_}{order} if ($config->{timeseries}{$_}{order} // 0) > $ns;
|
||||
}
|
||||
|
||||
my $dbh = DBIx::SimpleConnect->connect($dbname);
|
||||
|
||||
for my $q (@ARGV) {
|
||||
my $qdata = $dbh->selectall_arrayref($q);
|
||||
for my $r (@$qdata) {
|
||||
my ($timestamp, $series, $value) = @$r;
|
||||
$series{$series} = ++$ns unless ($series{$series});
|
||||
$config->{timeseries}{$series}{order} = ++$ns unless ($config->{timeseries}{$series}{order});
|
||||
$data{$timestamp}{$series} = $value;
|
||||
}
|
||||
}
|
||||
my @series = sort { $series{$a} <=> $series{$b} } keys %series;
|
||||
|
||||
my @series = sort { $config->{timeseries}{$a}{order} <=> $config->{timeseries}{$b}{order} }
|
||||
keys $config->{timeseries}->%*;
|
||||
if ($colors) {
|
||||
my @colors = split(/,/, $colors);
|
||||
while (my ($i, $c) = each(@colors)) {
|
||||
$config->{timeseries}{$series[$i]}{color} = $c;
|
||||
}
|
||||
}
|
||||
|
||||
my $ts = TimeSeries->new(output_format => $output_format);
|
||||
$ts->legend(@series);
|
||||
$ts->legend_position($legend_position);
|
||||
$ts->stacked($stacked);
|
||||
$ts->style($style);
|
||||
$ts->log_y($log_y);
|
||||
$ts->finalresolution($finalresolution) if $finalresolution;
|
||||
if ($colors) {
|
||||
$ts->colors(split(/,/, $colors));
|
||||
$ts->colors(map $config->{timeseries}{$_}{color}, @series);
|
||||
|
||||
if ($yrange) {
|
||||
$yrange =~s /^\[(.*)\]$/$1/; # remove optional brackets
|
||||
my ($min, $max) = $yrange =~ /^(\*|[-+0-9E.]+):(\*|[-+0-9E.]+)$/;
|
||||
$ts->yrange($min, $max);
|
||||
}
|
||||
|
||||
for my $timestamp (sort keys %data) {
|
||||
|
|
Loading…
Reference in New Issue