Home | History | Annotate | Line # | Download | only in GCC_Regression_Tester.wdgt
      1 <!-- Get and update the GCC regression tester's web page.
      2      Copyright (C) 2005-2024 Free Software Foundation, Inc.
      3 
      4 This file is part of GCC.
      5 
      6 GCC is free software; you can redistribute it and/or modify it under
      7 the terms of the GNU General Public License as published by the Free
      8 Software Foundation; either version 3, or (at your option) any later
      9 version.
     10 
     11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
     13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     14 for more details.
     15 
     16 You should have received a copy of the GNU General Public License
     17 along with GCC; see the file COPYING3.  If not see
     18 <http://www.gnu.org/licenses/>.  -->
     19 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
     20         "http://www.w3.org/TR/html4/strict.dtd">
     21 <head>
     22 <meta http-equiv="Content-Script-Type" content="text/javascript">
     23 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
     24 <title>Regression Tester Status</title>
     25 <style type='text/css'>
     26 body {
     27 	margin: 0px;
     28 	padding: 0px;
     29 }
     30 pre {
     31 	font-family: Monaco;
     32 	font-size: 9px;
     33 	margin: 0px;
     34 	padding: 1px 2px 1px 2px;
     35 	color: black;
     36 	background-color: white;
     37 	opacity: 0.8;
     38 }
     39 </style>
     40 <script type='text/javascript' defer>
     41 // A string representing NUM, with a leading zero if it would be 1 digit long
     42 function dig2 (num) 
     43 {
     44     var result = num.toString();
     45     if (result.length == 1)
     46 	return '0' + result;
     47     else
     48 	return result;
     49 }
     50 
     51 // Get DATE as a string in standard ISO format in UTC
     52 function getISO (date) 
     53 {
     54     return (date.getUTCFullYear().toString() + '-'
     55 	    + dig2 (date.getUTCMonth() + 1) + '-'
     56 	    + dig2 (date.getUTCDate()) + 'T'
     57 	    + dig2 (date.getUTCHours()) + ':'
     58 	    + dig2 (date.getUTCMinutes()) + 'Z');
     59 }
     60 
     61 // STR is a bunch of lines of the form '<key>: <date>' where <date> is in
     62 // standard ISO UTC format.  Return a Date object corresponding to KEY, or null
     63 // if none is found.
     64 function fromISO (str, key)
     65 {
     66     var rx = new RegExp (key + ": (\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+)Z");
     67     var match = rx.exec (str);
     68     if (match == null || match.length != 7)
     69 	return null;
     70     var date = new Date(0);
     71     date.setUTCFullYear (match[1], match[2] - 1, match[3]);
     72     date.setUTCHours (match[4], match[5], match[6], 0);
     73     return date;
     74 }
     75 
     76 // Update the data
     77 function updateContents () {
     78     var url = 'http://gcc.gnu.org/regtest/HEAD/status.txt';
     79     if (document.URL && document.URL.substring (0,5) == 'http:') {
     80 	url = document.URL.replace ('widget.html','status.txt');
     81     }
     82     var xml_request = new XMLHttpRequest();
     83     
     84     xml_request.onload = function(e) 
     85 	{
     86 	    gotContents(e, xml_request);
     87 	}
     88     xml_request.open("GET", url);
     89     xml_request.setRequestHeader("Cache-Control", "max-age=30");
     90     xml_request.send(null);
     91 }
     92 
     93 function gotContents (event, request) {
     94     if (request.status != 200)
     95         return;
     96 
     97     if (! request.responseText)
     98 	return;
     99 
    100     var txt = request.responseText;
    101     var today = new Date();
    102     var date_r = fromISO (txt, "Date");
    103     var completed_r = fromISO (txt, "Test-Completed");
    104     var now_test_r = fromISO (txt, "Now-Testing");
    105     var eta = "";
    106     
    107     if (date_r != null && completed_r != null && now_test_r != null)
    108 	{
    109 	    var eta_r = new Date (now_test_r.getTime() 
    110 				  + completed_r.getTime() - date_r.getTime());
    111 	    eta = "ETA: " + getISO (eta_r) + '\n';
    112 	}
    113 
    114     var val = txt + "Now: " + getISO (today) + '\n' + eta;
    115     var contEl = document.getElementById ("contents");
    116     contEl.removeChild(contEl.firstChild);
    117     contEl.appendChild (document.createTextNode (val));
    118 }
    119 
    120 var mainTimer = null;
    121 
    122 function myOnShow () 
    123 {
    124     if (! mainTimer) {
    125 	mainTimer = setInterval (updateContents, 60000);
    126     }
    127     updateContents();
    128 }
    129 
    130 function myOnHide () 
    131 {
    132     if (mainTimer) {
    133 	clearInterval (mainTimer);
    134 	mainTimer = null;
    135     }
    136 }
    137 
    138 function myOnLoad ()
    139 {
    140     if ( window.widget ) {
    141 	widget.onshow = myOnShow;
    142 	widget.onhide = myOnHide;
    143     }
    144     myOnShow();
    145 }
    146 </script>
    147 </head>
    148 
    149 <body onLoad='myOnLoad();'>
    150 <pre id="contents">Loading...</pre>
    151 </body>
    152 </html>
    153