30f4c25dd8
* GCC_Regression_Tester.wdgt/widget.html: Mark as HTML 4.01, which it now is, rather than XHTML, which it never was. (<head>): Mark as UTF-8. Add title. Move CSS to top of document, specify type. Mark script as 'defer'. (updateContents): If loaded from HTTP, look for status in same place as widget. (gotContents): Use DOM methods to change text rather than innerHTML. (<body>): Eliminate unnecessary DIV element. * GCC_Regression_Tester.wdgt/Info.plist: Update version, copyright notice. From-SVN: r131145
154 lines
4.1 KiB
HTML
154 lines
4.1 KiB
HTML
<!-- Get and update the GCC regression tester's web page.
|
|
Copyright (C) 2005, 2007 Free Software Foundation, Inc.
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 2, or (at your option) any later
|
|
version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
|
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA. -->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<head>
|
|
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
|
<title>Regression Tester Status</title>
|
|
<style type='text/css'>
|
|
body {
|
|
margin: 0px;
|
|
padding: 0px;
|
|
}
|
|
pre {
|
|
font-family: Monaco;
|
|
font-size: 9px;
|
|
margin: 0px;
|
|
padding: 1px 2px 1px 2px;
|
|
color: black;
|
|
background-color: white;
|
|
opacity: 0.8;
|
|
}
|
|
</style>
|
|
<script type='text/javascript' defer>
|
|
// A string representing NUM, with a leading zero if it would be 1 digit long
|
|
function dig2 (num)
|
|
{
|
|
var result = num.toString();
|
|
if (result.length == 1)
|
|
return '0' + result;
|
|
else
|
|
return result;
|
|
}
|
|
|
|
// Get DATE as a string in standard ISO format in UTC
|
|
function getISO (date)
|
|
{
|
|
return (date.getUTCFullYear().toString() + '-'
|
|
+ dig2 (date.getUTCMonth() + 1) + '-'
|
|
+ dig2 (date.getUTCDate()) + 'T'
|
|
+ dig2 (date.getUTCHours()) + ':'
|
|
+ dig2 (date.getUTCMinutes()) + 'Z');
|
|
}
|
|
|
|
// STR is a bunch of lines of the form '<key>: <date>' where <date> is in
|
|
// standard ISO UTC format. Return a Date object corresponding to KEY, or null
|
|
// if none is found.
|
|
function fromISO (str, key)
|
|
{
|
|
var rx = new RegExp (key + ": (\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+)Z");
|
|
var match = rx.exec (str);
|
|
if (match == null || match.length != 7)
|
|
return null;
|
|
var date = new Date(0);
|
|
date.setUTCFullYear (match[1], match[2] - 1, match[3]);
|
|
date.setUTCHours (match[4], match[5], match[6], 0);
|
|
return date;
|
|
}
|
|
|
|
// Update the data
|
|
function updateContents () {
|
|
var url = 'http://gcc.gnu.org/regtest/HEAD/status.txt';
|
|
if (document.URL && document.URL.substring (0,5) == 'http:') {
|
|
url = document.URL.replace ('widget.html','status.txt');
|
|
}
|
|
var xml_request = new XMLHttpRequest();
|
|
|
|
xml_request.onload = function(e)
|
|
{
|
|
gotContents(e, xml_request);
|
|
}
|
|
xml_request.open("GET", url);
|
|
xml_request.setRequestHeader("Cache-Control", "max-age=30");
|
|
xml_request.send(null);
|
|
}
|
|
|
|
function gotContents (event, request) {
|
|
if (request.status != 200)
|
|
return;
|
|
|
|
if (! request.responseText)
|
|
return;
|
|
|
|
var txt = request.responseText;
|
|
var today = new Date();
|
|
var date_r = fromISO (txt, "Date");
|
|
var completed_r = fromISO (txt, "Test-Completed");
|
|
var now_test_r = fromISO (txt, "Now-Testing");
|
|
var eta = "";
|
|
|
|
if (date_r != null && completed_r != null && now_test_r != null)
|
|
{
|
|
var eta_r = new Date (now_test_r.getTime()
|
|
+ completed_r.getTime() - date_r.getTime());
|
|
eta = "ETA: " + getISO (eta_r) + '\n';
|
|
}
|
|
|
|
var val = txt + "Now: " + getISO (today) + '\n' + eta;
|
|
var contEl = document.getElementById ("contents");
|
|
contEl.removeChild(contEl.firstChild);
|
|
contEl.appendChild (document.createTextNode (val));
|
|
}
|
|
|
|
var mainTimer = null;
|
|
|
|
function myOnShow ()
|
|
{
|
|
if (! mainTimer) {
|
|
mainTimer = setInterval (updateContents, 60000);
|
|
}
|
|
updateContents();
|
|
}
|
|
|
|
function myOnHide ()
|
|
{
|
|
if (mainTimer) {
|
|
clearInterval (mainTimer);
|
|
mainTimer = null;
|
|
}
|
|
}
|
|
|
|
function myOnLoad ()
|
|
{
|
|
if ( window.widget ) {
|
|
widget.onshow = myOnShow;
|
|
widget.onhide = myOnHide;
|
|
}
|
|
myOnShow();
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body onLoad='myOnLoad();'>
|
|
<pre id="contents">Loading...</pre>
|
|
</body>
|
|
</html>
|