]> git.sesse.net Git - nms/blobdiff - web/portkart.pl
Lots of merging from TG06 NMS.
[nms] / web / portkart.pl
index 1e2832ecd157aa8e7c36b0c9fe70af5a54fe72c1..10436fd72746e61c774405c711b1559dc9ba4924 100755 (executable)
@@ -14,13 +14,20 @@ $img = GD::Image->new('bg07.png');
 my $blk = $img->colorResolve(0, 0, 0);
 
 for my $y (42..236) {
-       my $i = 2.0 * ($y - 236.0) / (42.0 - 237.0);
+       my $i = 3.0 * ($y - 236.0) / (42.0 - 237.0);
        my $clr = get_color($i);
        
-       $img->filledRectangle(32,$y,53,$y+1,$clr);
+       $img->filledRectangle(12,$y,33,$y+1,$clr);
 }
 
-my $q = $dbh->prepare('select switch,port,bytes_in,bytes_out,placement,switchtype from switches natural join placements natural join get_current_datarate() where switchtype in (\'es3024\')');
+$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*0.0/3.0, "1 Gbit/sec");
+$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*1.0/3.0, "100 Mbit/sec");
+$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*2.0/3.0, "10 Mbit/sec");
+$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*3.0/3.0, "1 Mbit/sec");
+$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 1000, 620, "NMS (C) 2005-2006 Tech:Server");
+
+my $q = $dbh->prepare('select switch,port,bytes_in,bytes_out,placement,switchtype from switches natural join placements natural join get_datar
+ate() where switchtype in (\'es3024\')');
 $q->execute();
 while (my $ref = $q->fetchrow_hashref()) {
 
@@ -34,11 +41,11 @@ while (my $ref = $q->fetchrow_hashref()) {
                my $intensity = 0.0;
                my $traffic = 4.0 * $ref->{'bytes_in'} + $ref->{'bytes_out'};  # average and convert to bits (should be about the same in practice)
 
-               my $max = 20_000_000.0;   # 100mbit
-               my $min =    100_000.0;   # 100kbit
+               my $max = 1_000_000_000.0;   # 1Gbit
+               my $min =     1_000_000.0;   # 1Mbit
                if ($traffic >= $min) {
-                       $intensity = 2.0 * (log($traffic / $min) / log(10)) / (log($max / $min) / log(10));
-                       $intensity = 2.0 if ($intensity > 2.0);
+                       $intensity = log($traffic / $min) / log(10);
+                       $intensity = 3.0 if ($intensity > 3.0);
                }
                $clr = get_color($intensity);
        } else {
@@ -64,7 +71,9 @@ print $img->png;
 sub get_color {
        my $intensity = shift;
        my $gamma = 1.0/1.90;
-       if ($intensity > 1.0) {
+       if ($intensity > 2.0) {
+               return $img->colorResolve(255.0, 255.0 * (($intensity - 2.0) ** $gamma), 255.0 * (($intensity - 2.0) ** $gamma));
+       } elsif ($intensity > 1.0) {
                return $img->colorResolve(255.0, 255.0 * ((2.0 - $intensity) ** $gamma), 0);
        } else {
                return $img->colorResolve(255.0 * ($intensity ** $gamma), 255, 0);