[Midnightbsd-cvs] mports: www/tmpls: add start of run page.

ctriv at midnightbsd.org ctriv at midnightbsd.org
Sun Mar 16 01:13:06 EDT 2008


Log Message:
-----------
add start of run page.

Modified Files:
--------------
    mports/Tools/magus/www/data/magus:
        index.cgi (r1.6 -> r1.7)
    mports/Tools/magus/www/data/magus/elements:
        magus.css (r1.15 -> r1.16)
        magus.js (r1.3 -> r1.4)
    mports/Tools/magus/www/tmpls:
        port.tmpl (r1.5 -> r1.6)

-------------- next part --------------
Index: index.cgi
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/data/magus/index.cgi,v
retrieving revision 1.6
retrieving revision 1.7
diff -L Tools/magus/www/data/magus/index.cgi -L Tools/magus/www/data/magus/index.cgi -u -r1.6 -r1.7
--- Tools/magus/www/data/magus/index.cgi
+++ Tools/magus/www/data/magus/index.cgi
@@ -36,10 +36,12 @@
     summary_page($p);
   } elsif ($path =~ m:/list/(.*):) {
     list_page($p, $1);
+  } elsif ($path =~ m:runs/(.*):) {
+    run_page($p, $1);
   } elsif ($path =~ m:/ports/(.*):) {
     port_page($p, $1);
-  } elsif ($path =~ m:/results/async/(\d+):) {
-    result_details_async($p, $1);
+  } elsif ($path =~ m:/async/run-ports-list:) {
+    async_run_port_stats($p);
   } elsif ($path =~ m:/search:) {
     return search($p);
   } else {
@@ -53,6 +55,7 @@
   Magus::Port->set_sql(last_twenty => qq{
       SELECT __ESSENTIAL__
       FROM __TABLE__
+      WHERE status!='untested'
       ORDER BY updated DESC LIMIT 20
   });
   
@@ -89,6 +92,29 @@
   print $tmpl->output;
 }
 
+sub run_page {
+  my ($p, $run) = @_;
+  
+  $run = Magus::Run->retrieve($run) || die "No such run: $run\n";
+  
+  my $tmpl = template($p, "run.tmpl");
+  $tmpl->param(title => "Run $run");
+  $tmpl->param(map { $_ => $run->$_ } qw(osversion arch status created id));
+  
+  my $dbh = Magus::Run->db_Main();  
+  
+  my $sth = $dbh->prepare("SELECT COUNT(*) AS count,status FROM ports WHERE run=? GROUP BY status ORDER BY name");
+  $sth->execute($run->id);
+  my $status_stats = $sth->fetchall_arrayref({});
+  $sth->finish;
+  
+  $tmpl->param(status_stats => $status_stats);
+  
+  print $p->header;
+  print $tmpl->output;
+}
+  
+
 sub port_page {
   my ($p, $port) = @_;
   
@@ -113,7 +139,8 @@
     machine_id => $_->machine->id,
     machine    => $_->machine->name,
     type       => $_->type,
-    msg        => $_->msg
+    msg        => $_->msg,
+    time       => $_->time,
   } } $port->events;
   
   if (@events) {
@@ -145,31 +172,30 @@
   print $p->header, $tmpl->output;
 }
 
-sub result_details_async {
-  my ($p, $id) = @_;
+sub async_run_port_stats {
+  my ($p) = @_;
   
-  my %details = (id => $id);
+  my $run    = $p->param('run');
+  my $status = $p->param('status');
   
-  my $result = Magus::Result->retrieve($id) || die "No such results: $id";
+  my %details = (run => $run, status => $status);
   
-  my @subresults = map { {
-	phase => $_->phase,
-	type  => $_->type,
-	name  => $_->name,
-	msg   => $_->msg,
-  } } $result->subresults;
+  my @results = map {{
+    summary   => $_->status,
+    port      => $_->name,
+    version   => $_->version,
+    arch      => $_->run->arch,
+    id        => $_->id,
+    run       => $_->run,
+    osversion => $_->run->osversion,
+  }} Magus::Port->search(run => $run, status => $status);
+                                  
+  my $tmpl = template($p, 'result-list.tmpl');
+  $tmpl->param(results => \@results);
 
-  if (@subresults) {
-    $details{subresults} = \@subresults;
-  }
+  $details{html} = $tmpl->output;
   
-  my $log = $result->logs->next;
-  
-  if ($log) {
-    $details{log} = $log->data;
-  }
-
-  print $p->header(-type => 'text/plain'), to_json(\%details);
+  print $p->header(-type => 'text/plain'), encode_json(\%details);
 }
 
 sub list_page {
Index: magus.js
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/data/magus/elements/magus.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -L Tools/magus/www/data/magus/elements/magus.js -L Tools/magus/www/data/magus/elements/magus.js -u -r1.3 -r1.4
--- Tools/magus/www/data/magus/elements/magus.js
+++ Tools/magus/www/data/magus/elements/magus.js
@@ -1,44 +1,50 @@
 var loader = new Image(220, 19);
 loader.src = '/magus/elements/ajax-loader.gif';
 
-function details_link(id) {
-	var row = document.getElementById("result_" + id + "_row");
-	var div = document.getElementById("result_" + id + "_details");
-
-	if (!row.style.display || row.style.display == 'none') {
-		row.style.display = 'table-row';
-		if (!div.innerHTML) {
-			var td = document.getElementById("result_" + id + "_details");
-			td.innerHTML = '<p style="text-align: center"><img src="' + loader.src + '" /></p>';
-			sendAsycQuery(id);
-		} else {
-			twiddle_link(id, 'hide');
-		}
-	} else {
-		row.style.display = 'none';
-		twiddle_link(id, 'show');
+function showPorts(id, status) {
+	if (status.length == 0) {
+		return false;
 	}
 
+	var td = document.getElementById("ports-display");
+	td.innerHTML = '<p style="text-align: center"><img src="' + loader.src + '" /></p>';
+	td.style.display = 'table-cell';
+
+	var url = 'http://www.midnightbsd.org/magus/async/run-ports-list?run=' + id + '&status=' + status;
+	sendAsycQuery(url, process_showPorts);
 	return false;
 }
 
-var url = 'http://cs.emich.edu/magus/index.cgi/results/async/';
+function process_showPorts() {
+    // only if req shows "loaded"
+    if (req.readyState == 4) {
+        // only if "OK"
+        if (req.status == 200) {
+            var result = eval( "(" + req.responseText + ")" );
+            var td = document.getElementById("ports-display");
+	    td.innerHTML = result.html;	    
+        } else {
+            alert("There was a problem retrieving the data:\n" + req.statusText);
+        }
+    }
+}
+
 
-function sendAsycQuery(query) {
+function sendAsycQuery(url, callback) {
     // branch for native XMLHttpRequest object	
     if (window.XMLHttpRequest) {
         req = new XMLHttpRequest();
-        req.open("GET", url + query, true);
+        req.open("GET", url, true);
         req.setRequestHeader('Content-type', 'application/x-json');
         req.setRequestHeader('Connection', 'close');
-        req.onreadystatechange = processDetailResults;
+        req.onreadystatechange = callback
         req.send(null);
     // branch for IE/Windows ActiveX version
     } else if (window.ActiveXObject) {
         req = new ActiveXObject("Microsoft.XMLHTTP");
         if (req) {
             req.open("GET", url + query, true);
-            req.onreadystatechange = processDetailResults;
+            req.onreadystatechange = callback;
             req.setRequestHeader('Content-Type', 'application/x-json');
             req.setRequestHeader('Connection', 'close');
             req.send(null);
@@ -48,48 +54,8 @@
     }
 }
 
-function processDetailResults() {
-    // only if req shows "loaded"
-    if (req.readyState == 4) {
-        // only if "OK"
-        if (req.status == 200) {
-            var result = eval( "(" + req.responseText + ")" );
 
-            var td = document.getElementById("result_" + result.id + "_details");
 
-	    var html = '';
-	    
-	    if (result.subresults) {
-	    	html = '<ul class="subresults">';
-	    	for (i=0; i<result.subresults.length; i++) {
-	    		html = html + '<li class="' + result.subresults[i].type + '">' + result.subresults[i].phase + ': ' + result.subresults[i].msg + '</li>';
-	    	}
-	    	html = html + '</ul>';
-	    }
-	    
-	    if (result.log) {
-	    	html = html + '<pre class="log">' + result.log + '</pre>';
-	    }
-	    
-            td.innerHTML = html;
-	    twiddle_link(result.id, 'hide');
-            row.style.display   = 'table-row';
-        } else {
-            alert("There was a problem retrieving the data:\n" + req.statusText);
-        }
-    }
-}
-
-
-function twiddle_link(id, mode) {
-	var link = document.getElementById("result_" + id + "_link");
-
-	if (mode == 'show') {
-		link.innerHTML = 'Show Details';
-	} else {
-		link.innerHTML = 'Hide Details';
-	}
-}
 
 
 function confirm_delete() {
Index: magus.css
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/data/magus/elements/magus.css,v
retrieving revision 1.15
retrieving revision 1.16
diff -L Tools/magus/www/data/magus/elements/magus.css -L Tools/magus/www/data/magus/elements/magus.css -u -r1.15 -r1.16
--- Tools/magus/www/data/magus/elements/magus.css
+++ Tools/magus/www/data/magus/elements/magus.css
@@ -121,7 +121,7 @@
 	max-width: 75%;	
 }
 
-table.result-list, table.port-results, table.event-list {
+table.run-summary, table.result-list, table.port-results, table.event-list {
 	max-width: 100%;
 	width: 100%;
 }
Index: port.tmpl
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/tmpls/port.tmpl,v
retrieving revision 1.5
retrieving revision 1.6
diff -L Tools/magus/www/tmpls/port.tmpl -L Tools/magus/www/tmpls/port.tmpl -u -r1.5 -r1.6
--- Tools/magus/www/tmpls/port.tmpl
+++ Tools/magus/www/tmpls/port.tmpl
@@ -66,13 +66,15 @@
 <tr>
 	<th>Machine</th>
 	<th>Type</th>
+	<th>Time</th>
 	<th>Message</th>
 </tr>
 
 <TMPL_LOOP name="events">
 <tr class="<TMPL_VAR NAME=type><TMPL_UNLESS NAME=__odd__> even</TMPL_UNLESS>">
 	<td><a href="<TMPL_VAR NAME="machine_root">/<TMPL_VAR NAME="machine_id">"><TMPL_VAR NAME="machine"></a></td>
-	<td><TMPL_VAR NAME="type"></td>
+	<td><TMPL_VAR NAME="type"></td> 
+	<td style="white-space: nowrap; font-size: smaller"><TMPL_VAR NAME="time"></td>
 	<td><TMPL_VAR NAME="msg"></td>
 </tr>
 </TMPL_LOOP>


More information about the Midnightbsd-cvs mailing list