Index: chrome/test/data/extensions/samples/buildbot/buildbot.html |
=================================================================== |
--- chrome/test/data/extensions/samples/buildbot/buildbot.html (revision 16055) |
+++ chrome/test/data/extensions/samples/buildbot/buildbot.html (working copy) |
@@ -1,8 +1,20 @@ |
<script> |
var botRoot = "http://build.chromium.org/buildbot/waterfall"; |
-var botUrl = botRoot + "/horizontal_one_box_per_builder"; |
+//var botRoot = "http://hae14.jail:8016"; |
Aaron Boodman
2009/05/15 00:15:17
Can you remove this internal URL?
|
+var statusURL = "http://chromium-status.appspot.com/current"; |
+//var waterfallURL = botRoot + "/console_json?name=erikkay@chromium.org&json=1"; |
+var waterfallURL = botRoot + "/console_json?json=1"; |
+var botList; |
+var checkinResults; |
-function updateStatus(status) { |
+function updateStatus(text) { |
+ var results = (new RegExp('"Notice".*>(.*)<', 'g')).exec(text); |
+ if (!results || results.index < 0) { |
+ console.log("Error: couldn't find status div"); |
+ console.log(text); |
+ return; |
+ } |
+ var status = results[1]; |
var div = document.getElementById("status"); |
div.title = status; |
var open = /open/i; |
@@ -15,19 +27,75 @@ |
} |
} |
+function updateBots(text) { |
+ var results = (new RegExp('(.*)<\/body>', 'g')).exec(text); |
+ if (!results || results.index < 0) { |
+ console.log("Error: couldn't find bot JSON"); |
+ console.log(text); |
+ return; |
+ } |
+ var data; |
+ if (JSON) { |
+ try { |
+ data = JSON.parse(results[1]); |
+ } catch (e) { |
+ console.dir(e); |
+ console.log(text); |
+ return; |
+ } |
+ } else { |
+ eval("var data = " + results[1]); |
+ } |
+ if (!data) { |
+ console.log("Error: JSON parse fail"); |
+ console.log(results[1]); |
+ return; |
+ } |
+ botList = data[0]; |
+ checkinResults = data[1]; |
+ console.dir(botList); |
+ displayBots(); |
+} |
+ |
+function showBot(botIndex) { |
+ var bot = botList[botIndex]; |
+ var url = botRoot + "/waterfall?builder=" + bot.name; |
+ //var url = botRoot + "/builders/" + bot.name; |
+ //var url = botRoot + "/" + bot.url; |
+ window.open(url); |
+ window.event.stopPropagation(); |
+} |
+ |
+function displayBots() { |
+ if (!botList) { |
+ console.log("botList is null"); |
+ return; |
+ } |
+ var bots = document.getElementById("bots"); |
+ var html = ""; |
+ if (bots.className == "visible") { |
+ botList.forEach(function(bot, i) { |
+ html += "<div class='bot " + bot.color + |
+ "' onclick='showBot(" + i + ")' " + |
+ "title='" + bot.title + "'></div>"; |
+ }); |
+ } |
+ bots.innerHTML = html; |
+} |
+ |
function requestStatus() { |
+ requestURL(statusURL, updateStatus); |
+ requestURL(waterfallURL, updateBots); |
+ setTimeout(requestStatus, 30000); |
+} |
+ |
+function requestURL(url, callback) { |
var xhr = new XMLHttpRequest(); |
try { |
xhr.onreadystatechange = function(state) { |
if (xhr.readyState == 4) { |
var text = xhr.responseText; |
- var re = /"Notice"[^>]*>([^<\n]+)</g; |
- var results = re.exec(text); |
- if (results && results.index >= 0) { |
- updateStatus(results[1]); |
- } else { |
- console.log("Error: couldn't find node"); |
- } |
+ callback(text); |
} |
} |
@@ -35,12 +103,11 @@ |
console.log("xhr error: " + error); |
} |
- xhr.open("GET", "http://chromium-status.appspot.com/current"); |
+ xhr.open("GET", url); |
xhr.send({}); |
} catch(e) { |
console.log("exception: " + e); |
} |
- setTimeout(requestStatus, 30000); |
} |
var hoverTimerId = null; |
@@ -56,9 +123,7 @@ |
hoverTimerId = null; |
var bots = document.getElementById("bots"); |
bots.className = "visible"; |
- // TODO(erikkay): this generates "Unsafe JavaScript attempt to access |
- // frame with URL". |
- bots.src = botUrl + "?xxx=" + (new Date()).getTime(); |
+ displayBots(); |
}, 1000); |
} |
}, false); |
@@ -73,6 +138,7 @@ |
hideTimerId = null; |
var bots = document.getElementById("bots"); |
bots.className = ""; |
+ //displayBots(); |
}, 1000); |
} |
}, false); |
@@ -89,6 +155,10 @@ |
font-weight:bold; |
} |
+#change { |
+ font-weight:bold; |
+} |
+ |
.open { |
color: green; |
} |
@@ -99,32 +169,67 @@ |
#bots { |
border: none; |
- height: 15px; |
+ height: 100%; |
width: 0; |
-webkit-transition: width .2s linear; |
background-color: transparent; |
display:-webkit-box; |
- margin-left:-5px; |
+ -webkit-box-align:center; /* center content vertically */ |
+ overflow: hidden; |
+ padding-left: 2px; |
} |
#bots.visible { |
- width: 435px; /* hardcoded width sucks */ |
+ width: 612px; /* hardcoded width sucks */ |
} |
-#frame-wrapper { |
- /* This is used to get us to vertically center the iframe in the vertical |
- space. */ |
- -webkit-box-align:center; |
- /* Also, scooch the frame in a bit, under the button, because the content of |
- the frame has some extra built-in left padding. */ |
+.bot { |
+ margin-right: 1px; |
+ line-height: 100%; |
+ cursor: pointer; |
+ -webkit-border-radius: 2px; |
display:-webkit-box; |
+ width: 10px; |
+ height: 15px; |
} |
+.running { |
+ background-color: rgb(255, 252, 108); |
+ border: 1px solid rgb(197, 197, 109); |
+} |
+ |
+.notstarted { |
+ /* background-color: white; */ |
+ border: 1px solid rgb(170, 170, 170); |
+} |
+ |
+.failure { |
+ background-color: rgb(233, 128, 128); |
+ border: 1px solid rgb(167, 114, 114); |
+} |
+ |
+.warnings { |
+ background-color: rgb(255, 195, 67); |
+ border: 1px solid rgb(194, 157, 70); |
+} |
+ |
+.success { |
+ background-color: rgb(143, 223, 95); |
+ border: 1px solid rgb(79, 133, 48); |
+} |
+ |
+.exception { |
+ background-color: rgb(224, 176, 255); |
+ border: 1px solid rgb(172, 160, 179); |
+} |
+ |
</style> |
<div class="toolstrip-button"> |
<span id="status" class="open">tree: open?</span> |
-<div id="frame-wrapper"> |
-<iframe scrolling="no" id="bots"></iframe> |
</div> |
+<div id="bots"> |
</div> |
+<div class="toolstrip-button"> |
+<span id="console" class="unknown">change: (none)</span> |
Aaron Boodman
2009/05/15 00:15:17
Can we just remove this bit for now if it doesn't
|
+</div> |