make summaryattrs sortable
authorMartin Zobel-Helas <zobel@debian.org>
Sun, 18 May 2008 15:35:27 +0000 (17:35 +0200)
committerMartin Zobel-Helas <zobel@debian.org>
Sun, 18 May 2008 15:35:27 +0000 (17:35 +0200)
machines.cgi

index 8fe4bfa..34d622a 100755 (executable)
@@ -4,6 +4,7 @@
 # (c) 1999 Randolph Chung. Licensed under the GPL. <tausq@debian.org>
 # (c) 2004 Martin Schulze. Licensed under the GPL. <joey@debian.org>
 # (c) 2006 Ryan Murray. Licensed under the GPL. <rmurray@debian.org>
+# (c) 2008 Martin Zobel-Helas. Licensed under the GPL. <zobel@debian.org>
 
 use lib '.';
 use strict vars;
@@ -86,6 +87,8 @@ $SIG{__DIE__} = \&DieHandler;
 
 my $query = new CGI;
 my $host = lc($query->param('host'));
+my $sortby = lc($query->param('sortby')) || "host";
+my $sortorder = lc($query->param('sortorder')) || "asc";
 
 &Util::HTMLSendHeader;
 $ldap = Net::LDAP->new($config{ldaphost}) || &Util::HTMLError($!);
@@ -180,11 +183,25 @@ if ($output{havehostdata}) {
   $hostdetails = "<h1>Summary</h1>\n";
   $hostdetails .= "<table border=\"1\" width=\"90%\">\n<tr>";
   foreach $key (@summaryorder) {
-    $hostdetails .= "<th>$summaryattrs{$key}</th>";
+    if ($sortby ne $key) {
+      $hostdetails .= "<th><a href=\"machines.cgi?sortby=$key&sortorder=asc\">$summaryattrs{$key}</a></th>";
+    } else {
+      if ($sortorder ne "dsc") {
+        $hostdetails .= "<th><a href=\"machines.cgi?sortby=$key&sortorder=dsc\">$summaryattrs{$key}</a></th>";
+      } else {
+        $hostdetails .= "<th><a href=\"machines.cgi?sortby=$key&sortorder=asc\">$summaryattrs{$key}</a></th>";
+      }
+    }
   }
   $hostdetails .= "</tr>\n";
   
-  foreach $host (sort(keys(%summary))) {
+  my @sorted;
+  if ($sortorder eq "asc") {
+     @sorted = sort {$summary{$a}->{$sortby} cmp $summary{$b}->{$sortby}} keys(%summary);
+  } else {
+     @sorted = sort {$summary{$b}->{$sortby} cmp $summary{$a}->{$sortby}} keys(%summary);
+  }
+  foreach $host (@sorted) {
     $hostdetails .= "<tr>";
     foreach $key (@summaryorder) {
       $hostdetails .= "<td>$summary{$host}{$key}&nbsp;</td>";