0
|
1 <!-- Get and update the GCC regression tester's web page.
|
|
2 Copyright (C) 2005, 2007, 2009 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>
|