]> git.etc.gen.nz Git - spong.git/commitdiff
added wml display routines
authorStephen L Johnson <sjohnson@monsters.org>
Mon, 25 Sep 2000 20:33:10 +0000 (20:33 +0000)
committerStephen L Johnson <sjohnson@monsters.org>
Mon, 25 Sep 2000 20:33:10 +0000 (20:33 +0000)
src/lib/Spong/HostList.pm
src/lib/Spong/Service.pm
src/lib/Spong/ServiceList.pm

index 35ee201120d7b31ab0f0d296cd7a1e864fe3ec0b..1e4a83315f9fb2bc5fce89abfbda17b90af71cf7 100755 (executable)
@@ -107,6 +107,7 @@ sub add {
    push( @{$self->{'hostnames'}}, $name );
 }
 
+# Calculate summary color for a service
 sub services_color {
    my( $self, $service ) = @_;
    my( $color ) = "";
@@ -119,6 +120,24 @@ sub services_color {
    return $color;
 }
 
+# Calculate an overall summary color for the entire host list
+sub summary_color {
+   my( $self ) = @_;
+   my( $color ) = "";
+   my( $service, @names );
+
+   foreach $host ( $self->hosts() ) {
+      foreach $service (keys %main::SERVICES) {
+         my $servobj = $host->service($service);
+         my $hostcolor = $servobj->color() if $servobj;
+         $color = $hostcolor if $COLORS{$hostcolor} > $COLORS{$color}; 
+      }
+   }
+
+   return $color;
+
+}
+
 # Display summary.  Does both text and html, does rely on both the Host and
 # Service objects for some help.
 #
@@ -131,6 +150,7 @@ sub display {
 
    $self->display_text( $view ) if $type eq "text";
    $self->display_html( $view ) if $type eq "html";
+   $self->display_wml( $view ) if $type eq "wml";
 }
 
 # This displays a summary of all the hosts in this list in a text format 
@@ -198,6 +218,16 @@ sub display_text {
       foreach $host ( $self->hosts() ) {
         $host->display_problem( "text" ); print "\n";
       }
+   } elsif( $format eq "brief" ) {
+
+      # This goes through each host, and has each one print a single summary
+      # line of the current status of the host. The consists of the overall
+      # status color and the host name.
+
+      foreach $host ( $self->hosts() ) {
+         printf "%-6s %s\n",$host->color(),$host->name();
+      }
+
    }
 }
 
@@ -355,4 +385,27 @@ sub display_problems {
    }
 }
 
+# This displays a summary of all the hosts in this list in an WML format
+# suitable for displaying on WAP enabled devices
+
+sub display_wml {
+   my( $self, $format ) = @_;
+
+   # Standard and brief view are equivalent for WML
+   if( $format eq "standard" || $format eq "brief") {
+
+      foreach $host ($self->hosts() ) {
+         my $color = substr($host->color(),0,2);
+         $color =~ tr/a-z/A-Z/;
+         my $name = $host->name();
+
+         print "<b><anchor title=\"$name\">$color";
+         print "<go href=\"!!WAPSPONG!!/services/$name\"/>";
+         print "</anchor></b> $name<br/>\n";
+      }
+   }
+
+}
+
+
 1;
index f5620208d02d17999cd0ed6798751dde0554e012..d9b673a1785a45958d3c7c7c6ff9b84c8e01395d 100755 (executable)
@@ -192,6 +192,7 @@ sub display {
 
    if( $type eq "text" ) { return $self->display_text( $view ); }
    if( $type eq "html" ) { return $self->display_html( $view ); }
+   if( $type eq "wml" ) { return $self->display_wml( $view ); }
 }
 
 sub display_text {
@@ -320,6 +321,23 @@ sub display_html {
    }
 }
 
+sub display_wml {
+   my( $self, $format ) = @_;
+
+   if ( $format eq "full" ) {
+      print "<br/><b>",$self->name(),"</b> ",$self->color(),"\n";
+      print "<br/>Updated: ",
+             POSIX::strftime($main::DATETIMEFMT,localtime($self->rtime())),"\n";
+      print "<br/>",$self->summary(),"\n";
+      print "<br/><br/>\n";
+      foreach $line ( split /\r?\n/s,$self->message() ) {
+         print "<br/>",$line,"\n";
+         if ( ++$i >= 15 ) { last; }
+      }
+   }
+
+}
+
 
 # Returns a message that can be sent to the person who is on call for this
 # machine which indicates the problem with this machine.
@@ -355,7 +373,7 @@ sub add_action_bar {
 
 sub escape {
     my($toencode) = @_;
-    $toencode=~s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg;
+    $toencode=~s/([^ a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg;
     return $toencode;
 }
 
index 6d9d1f80b382a337893735f71c44cb6884211e6d..2e6a89d3e72c231ce0ad230b3b8db13169f29a55 100755 (executable)
@@ -165,6 +165,7 @@ sub display {
 
    if( $type eq "text" ) { return $self->display_text( $view ); }
    if( $type eq "html" ) { return $self->display_html( $view ); }
+   if( $type eq "wml" ) { return $self->display_wml( $view ); }
 }
 
 sub display_text {
@@ -219,4 +220,29 @@ sub display_html {
    }
 }
 
+# This displays all services in the database for a host in a WML format
+# suitable for displaying on a WAP enabled device
+
+sub display_wml {
+   my( $self, $format ) = @_;
+   my( $service );
+   my $host = $self->host();
+
+   if( $format eq "standard" ) {
+      foreach $service ( $self->services() ) {
+         my $name = $service->name();
+         my $color = substr($service->color(),0,2);
+         $color =~ tr/a-z/A-Z/;
+         print "<b><anchor title=\"$name\">$color";
+         print "<go href=\"!!WAPSPONG!!/service/$host/$name\"/>";
+         print "</anchor></b> $name<br/>\n";
+      }
+   }
+}
+
+
+
+
+
+
 1;