Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Unified Diff: master/templates/console.html

Issue 648353002: Remove Skia's forked buildbot code (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Address comment Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « master/templates/change_macros.html ('k') | master/templates/horizontal_one_box_per_build.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: master/templates/console.html
diff --git a/master/templates/console.html b/master/templates/console.html
deleted file mode 100644
index e3196db44f71f783413e6fb43e40bcd8dbe3e78c..0000000000000000000000000000000000000000
--- a/master/templates/console.html
+++ /dev/null
@@ -1,561 +0,0 @@
-{% extends "layout.html" %}
-
-{% block head %}
-{{ super() }}
-<script type='text/javascript'>
-// <![CDATA[
-//
-
-// Data loaded from the master's JSON interface.
-var builders = {};
-var revisions = [];
-
-// Number of events to load from the master.
-var console_limit = {{ default_console_limit }};
-var default_console_limit = {{ default_console_limit }};
-var max_console_limit = {{ max_console_limit }};
-
-// Minimum number of revisions to display on the console.
-var min_display_revisions = 25;
-
-//
-// Make the commit message display more or less.
-//
-function toggleMore(id, visible) {
- if (visible) {
- document.getElementById(id + "_long_desc").style.display = "inline";
- document.getElementById(id + "_morelink").style.display = "none";
- document.getElementById(id + "_lesslink").style.display = "inline";
- } else {
- document.getElementById(id + "_long_desc").style.display = "none";
- document.getElementById(id + "_morelink").style.display = "inline";
- document.getElementById(id + "_lesslink").style.display = "none";
- }
-}
-
-//
-// Functions used to display the build status bubble on box click.
-//
-
-// show the build status box. This is called when the user clicks on a block.
-function showBuildBox(url, event) {
- // Find the current curson position.
- var cursorPosTop = (window.event ? window.event.clientY : event.pageY)
- var cursorPosLeft = (window.event ? window.event.clientX : event.pageX)
-
- // Offset the position by 5, to make the window appears under the cursor.
- cursorPosTop = cursorPosTop + document.body.scrollTop -5 ;
- cursorPosLeft = cursorPosLeft + document.body.scrollLeft - 5;
-
- // Move the div (hidden) under the cursor.
- var divBox = document.getElementById('divBox');
- divBox.style.top = parseInt(cursorPosTop) + 'px';
- divBox.style.left = parseInt(cursorPosLeft) + 'px';
-
- // Reload the hidden frame with the build page we want to show.
- // The onload even on this frame will update the div and make it visible.
- document.getElementById("frameBox").src = url
-
- // We don't want to reload the page.
- return false;
-}
-
-// OnLoad handler for the iframe containing the build to show.
-function updateDiv(event) {
- // Get the frame innerHTML.
- var iframeContent = document.getElementById("frameBox").contentWindow.document.body.innerHTML;
-
- // If there is any content, update the div, and make it visible.
- if (iframeContent) {
- var divBox = document.getElementById('divBox');
- divBox.innerHTML = iframeContent ;
- divBox.style.display = "block";
- }
-}
-
-// Util functions to know if an element is contained inside another element.
-// We use this to know when we mouse out our build status div.
-function containsDOM (container, containee) {
- var isParent = false;
- do {
- if ((isParent = container == containee))
- break;
- containee = containee.parentNode;
- } while (containee != null);
-
- return isParent;
-}
-
-// OnMouseOut handler. Returns true if the mouse moved out of the element.
-// It is false if the mouse is still in the element, but in a blank part of it,
-// like in an empty table cell.
-function checkMouseLeave(element, event) {
- if (element.contains && event.toElement) {
- return !element.contains(event.toElement);
- }
- else if (event.relatedTarget) {
- return !containsDOM(element, event.relatedTarget);
- }
-}
-
-// Obtain the current date and time in a nicely formatted string.
-function getDateString() {
- var date = new Date();
- return date.toDateString() + " at " + date.toTimeString();
-}
-
-// Set the "loading" message.
-function setLoadingMessage(msg) {
- var loading = document.getElementById("loading_div");
- if (loading) {
- loading.innerHTML = msg;
- }
-}
-
-// Load the console page data.
-function loadConsoleData() {
- // Note: We don't include "&revs=" here because that would artificially limit
- // the number of revisions we get back and therefore prevent us from being
- // able to scale back console_limit when it no longer needs to be very big.
- loadJSONP('/console_json?limit=' + console_limit, fixConsoleData);
- setLoadingMessage("Loading...");
-}
-
-// Sort the categories, subcategories, and builders for display.
-function fixConsoleData(data) {
- if (data["revisions"].length < min_display_revisions &&
- console_limit < max_console_limit) {
- console_limit = Math.min(console_limit * 2, max_console_limit);
- loadConsoleData();
- return;
- }
- if (data["revisions"].length > min_display_revisions * 2) {
- console_limit = Math.max(console_limit / 1.5, default_console_limit);
- }
- var new_builders = {};
- var categories = Object.keys(data["builders"]);
- categories.sort();
- for (var category_index in categories) {
- var category = categories[category_index];
- new_builders[category] = {};
- var subcategories = Object.keys(data["builders"][category]);
- subcategories.sort()
- for (var subcategory_index in subcategories) {
- var subcategory = subcategories[subcategory_index];
- new_builders[category][subcategory] = data["builders"][category][subcategory];
- for (var cat_full in new_builders[category][subcategory]) {
- new_builders[category][subcategory][cat_full].sort();
- }
- }
- }
- builders = new_builders;
- revisions = data["revisions"];
- setLoadingMessage("Last loaded at " + getDateString());
- buildConsoleTable();
-}
-
-// Create a new row with two spacer cells.
-function newRowWithSpacers(table) {
- var row = table.insertRow(-1);
- var spacer = row.insertCell(-1)
- spacer.style.width = "1%";
- var spacer = row.insertCell(-1)
- spacer.style.width = "1%";
- return row;
-}
-
-function newHyperlink(href, text, open_in_new_tab) {
- var link = document.createElement("a");
- link.href = href;
- if (text) {
- link.innerHTML = text;
- }
- if (open_in_new_tab == true) {
- link.target = "_blank";
- }
- return link;
-}
-
-// Build the main console view table.
-function buildConsoleTable() {
- // The main console table.
- var table = document.getElementById("console_table");
-
- // Clear the table.
- while (table.hasChildNodes()) {
- table.removeChild(table.lastChild);
- }
-
- // Count the number of columns, starting with 2 for the spacer TDs, so that
- // we can get the colspans right.
- var total_cols = 2;
-
- // Top row: Categories.
- var top_row = newRowWithSpacers(table);
-
- // Second row: Subcategories.
- var second_row = newRowWithSpacers(table);
-
- // Third row: Individual builder statuses.
- var builder_row = newRowWithSpacers(table);
-
- // Keep track of the first and last visible categories.
- var first_category = null;
- var last_category = null;
-
- // This loop creates the content for the top three rows.
- for (var category in builders) {
- // Create the category headers with links to the waterfall for each.
- var category_td = top_row.insertCell(-1);
- category_td.id = "category_header_" + category;
- var td_class = "DevStatus Alt category_" + category;
- category_td.className = td_class;
- var category_link = newHyperlink("/waterfall?");
- var h3 = document.createElement("h3");
- h3.innerHTML = category;
- // Hyperlink to the waterfall page which displays all builders within this
- // category. Each full category name is appended in the subsequent loops.
- category_link.appendChild(h3);
- category_td.appendChild(category_link);
-
- if (!allCategories[category]) {
- // Hide the column header for this category if the associated checkbox
- // isn't checked.
- category_td.style.display = "none";
- } else {
- // If the category is visible, mark it as a possible first or last visible
- // category.
- if (!first_category) {
- first_category = category;
- }
- last_category = category;
- }
-
- // Keep track of the colspan (number of builders) for this category as we
- // loop over the subcategories.
- var category_colspan = 0;
-
- // Loop over the subcategories.
- for (var subcategory in builders[category]) {
- // Create the subcategory headers with links to the waterfall for each.
- var subcategory_td = second_row.insertCell(-1);
- subcategory_td.className = "DevStatus category_" + category + "_subcategory_" + subcategory;
- subcategory_td.colSpan = builders[category][subcategory].length;
- // Hyperlink to the waterfall page which displays all builders within this
- // subcategory. Each full category name is appended in the subsequent
- // loops.
- var subcategory_link = newHyperlink("/waterfall?", subcategory)
- subcategory_td.appendChild(subcategory_link);
-
- // Hide the column header for this subcategory if the associated checkbox
- // isn't checked.
- if (!(allCategories[category] && allSubcategories[subcategory])) {
- subcategory_td.style.display = "none";
- }
-
- // Loop over the full category names (eg. "Build|Ubuntu12|GateKeeper")
- // within each subcategory.
- for (var cat_full in builders[category][subcategory]) {
- // Create a wrapper cell to hold the builder statuses for this category.
- var builder_wrapper_td = builder_row.insertCell(-1);
- builder_wrapper_td.className = "DevSlave Alt category_" + category + "_subcategory_" + subcategory;
- // Create a sub-table within the builder wrapper cell.
- var builder_wrapper_table = document.createElement("table");
- builder_wrapper_table.width = "100%";
- builder_wrapper_td.appendChild(builder_wrapper_table);
- var builder_wrapper_table_tr = builder_wrapper_table.insertRow(-1);
- // Hide the builder wrapper cell if the current category and subcategory
- // aren't both displaying.
- if (!(allCategories[category] && allSubcategories[subcategory])) {
- builder_wrapper_td.style.display = "none";
- }
-
- // Append the full category name to the category and subcategory
- // waterfall links.
- if (category_link.href.indexOf("?", category_link.href.length - 1) == -1) {
- category_link.href += "&";
- }
- category_link.href += "category=" + cat_full;
- if (subcategory_link.href.indexOf("?", subcategory_link.href.length - 1) == -1) {
- subcategory_link.href += "&";
- }
- subcategory_link.href += "category=" + cat_full;
-
- // Loop over the builders within this fully-qualified category.
- for (var builder_index in builders[category][subcategory][cat_full]) {
- // Create a colored cell with a link to this builder's status page.
- var builder = builders[category][subcategory][cat_full][builder_index];
- var builder_name = builder.builderName;
- var builder_td = builder_wrapper_table_tr.insertCell(-1);
- builder_td.className = "DevSlaveBox";
- builder_td.builder_name = builder_name;
- builder_link = newHyperlink(builder.url, "", true);
- builder_link.id = "commentIndicator_" + builder_name;
- builder_link.className = "DevSlaveBox " + builder.color;
- if (builder_statuses[builder_name]) {
- builder_link.classList.add("BuilderHasComment");
- }
- builder_td.appendChild(builder_link);
-
- // Create the status tooltip for this builder.
- var tooltip_div = document.createElement("div");
- tooltip_div.className = "BuilderTooltip RoundedRect";
- buildComment(builder_name, tooltip_div);
- builder_td.appendChild(tooltip_div);
- }
- // Only count the columns which are being displayed toward the total
- // colspan.
- if (allCategories[category] && allSubcategories[subcategory]) {
- total_cols++;
- }
- }
- // Only cound the subcategories which are being displayed toward the
- // categories' colspans.
- if (allCategories[category] && allSubcategories[subcategory]) {
- category_colspan += subcategory_td.colSpan;
- }
- }
- category_td.colSpan = category_colspan;
- }
-
- // Round the corners of the first and last visible category headers.
- if (first_category) {
- document.getElementById("category_header_" + first_category).classList.add("first");
- }
- if (last_category) {
- document.getElementById("category_header_" + last_category).classList.add("last")
- }
-
- // Build rows for each revision.
- for (var rev_index in revisions) {
- // Information about this revision.
- var revision = revisions[rev_index];
-
- // String which alternates between "" and " Alt"; used for creating
- // alternating shades of gray.
- var alt = "";
- if (rev_index % 2) {
- alt = " Alt";
- }
-
- // Row containing the commit hash, committer, and statuses for each builder
- // at this revision.
- var rev_status_tr = table.insertRow(-1);
- // Cell containing the commit hash with a link to the commit in the
- // repository.
- var revision_td = rev_status_tr.insertCell(-1);
- revision_td.className = "DevRev" + alt;
- var revision_link = newHyperlink(revision.repository + "/+/" + revision.id,
- revision.id.substring(0, 11),
- true);
- revision_td.appendChild(revision_link);
- // Cell containing the committer's username.
- var dev_name_td = rev_status_tr.insertCell(-1);
- dev_name_td.className = "DevName" + alt;
- dev_name_td.width = "1%";
- dev_name_td.innerHTML = revision.who;
-
- // Loop over the builders, obtaining the status and creating a build status
- // popup link for each.
- for (var category in builders) {
- for (var subcategory in builders[category]) {
- for (var cat_full in builders[category][subcategory]) {
- // Wrapper cell containing statuses for builders in this fully-
- // qualified category.
- var build_status_td = rev_status_tr.insertCell(-1);
- // Hide the build status cell if we're not displaying both the
- // builder's category and subcategory.
- if (!allCategories[category] || !allSubcategories[subcategory]) {
- build_status_td.style.display = "none";
- }
- build_status_td.className = "DevStatus category_" + category + "_subcategory_" + subcategory + alt;
- // Table which will hold the individual builder statuses.
- var build_status_wrapper = document.createElement("table");
- build_status_wrapper.width = "100%";
- build_status_td.appendChild(build_status_wrapper);
- var builder_wrapper_tr = build_status_wrapper.insertRow(-1);
- // Loop over the builders in this fully-qualified category.
- for (var builder_index in builders[category][subcategory][cat_full]) {
- var builder = builders[category][subcategory][cat_full][builder_index];
- // Loop over the list of builds at this revision for this builder.
- // This is almost always a single build.
- for (var build_index in revision.builds[builder.builderName]) {
- var build = revision.builds[builder.builderName][build_index];
- // Create a colored cell representing the result of this build,
- // with a link to open a popup with more detailed build step
- // statuses.
- var build_td = builder_wrapper_tr.insertCell(-1);
- build_td.className = "DevStatusBox";
- var build_link = newHyperlink("#", "", true);
- build_link.popup_url = build.url;
- build_link.onclick = function(event) { showBuildBox(this.popup_url, event); return false; };
- build_link.title = build.pageTitle;
- build_link.className = "DevStatusBox " + build.color + " " + build.tag;
- build_td.appendChild(build_link);
- }
- }
- }
- }
- }
-
- // Row containing the change description for this revision.
- var rev_comment_tr = table.insertRow(-1);
- var rev_comment_td = rev_comment_tr.insertCell(-1);
- rev_comment_td.className = "DevComment" + alt;
- rev_comment_td.colSpan = total_cols;
- // Split the comment text into: first line (short) and remainder (long).
- var comment_short_text_span = document.createElement("span");
- rev_comment_td.appendChild(comment_short_text_span);
- var comment_long_text_span = document.createElement("span");
- comment_long_text_span.id = revision.id + "_long_desc";
- comment_long_text_span.style.display = "none";
- // Create "more" and "less" links.
- var more_link = document.createElement("a");
- more_link.href = "javascript:toggleMore('" + revision.id + "', true)";
- more_link.id = revision.id + "_morelink";
- more_link.innerHTML = "more";
- rev_comment_td.appendChild(more_link);
- var less_link = document.createElement("a");
- less_link.href = "javascript:toggleMore('" + revision.id + "', false)";
- less_link.id = revision.id + "_lesslink";
- less_link.style.display = "none";
- less_link.innerHTML = "less";
- rev_comment_td.appendChild(less_link);
- rev_comment_td.appendChild(comment_long_text_span);
- var comment_text_lines = revision.comments.split("\n");
- // Only include the "more" link if the comment has more than one line.
- if (comment_text_lines.length > 1) {
- comment_short_text_span.innerHTML = comment_text_lines[0] + " ... ";
- var comment_long_text_para = document.createElement("p");
- comment_long_text_span.appendChild(comment_long_text_para);
- for (var comment_line = 1; comment_line < comment_text_lines.length; ++comment_line) {
- comment_long_text_span.innerHTML += comment_text_lines[comment_line] + "<br/>";
- }
- comment_long_text_span.innerHTML = addLinks(comment_long_text_span.innerHTML);
- } else {
- comment_short_text_span.innerHTML = revision.comments;
- more_link.style.display = "none";
- }
-
- // Optional row containing more information about the revision, for example
- // test failures.
- if (revision["details"] && revision["details"].length > 0) {
- var details_tr = table.insertRow(-1);
- var details_td = details_tr.insertCell(-1);
- details_td.colSpan = total_cols;
- details_td.className = "DevDetails bottom" + alt;
- var details_list = document.createElement("ul");
- for (var detail_index in revision["details"]) {
- var detail = revision["details"][detail_index];
- var detail_item = document.createElement("li");
- var detail_text = document.createElement("span");
- detail_text.innerHTML = detail["buildername"] + ": " + detail["status"] + " - &nbsp;";
- detail_item.appendChild(detail_text);
- for (var log_index in detail["logs"]) {
- var log = detail["logs"][log_index];
- var log_link = document.createElement("a");
- log_link.href = log["url"];
- log_link.innerHTML = log["name"];
- detail_item.appendChild(log_link);
- }
- details_list.appendChild(detail_item);
- }
- details_td.appendChild(details_list);
- } else {
- rev_comment_td.className += " bottom";
- }
-
- // Spacing row just containing whitespace.
- var rev_spacing_tr = table.insertRow(-1);
- rev_spacing_tr.className = "DevStatusSpacing";
- var rev_spacing_td = rev_spacing_tr.insertCell(-1);
- }
-}
-
-// ]]>
-</script>
-{% endblock %}
-
-{% block content %}
-
-<h1>Console View</h1>
-
-<div id="loading_div"></div>
-
-<div align="center">
- <table width="95%" class="Grid" border="0" cellspacing="0">
- <tr>
- <td width="33%" align="left" class="left_align">
-{% if repository %}
- <br><b>Repository:</b> {{ repository|e }}
-{% endif %}
- </td>
- <td width="33%" align="center" class="center_align">
- <div align="center">
- <table class="info">
- <tr>
- <td>Legend:&nbsp;&nbsp;</td>
- <td class='legend success' title='All tests passed'>Passed</td>
- <td class='legend failure' title='There is a new failure. Take a look!'>Failed</td>
- <td class='legend warnings' title='It was failing before, and it is still failing. Make sure you did not introduce new regressions'>Failed&nbsp;Again</td>
- <td class='legend running' title='The tests are still running'>Running</td>
- <td class='legend running_failure' title='The tests are still running, but at least one step has failed.'>Running&nbsp;w/&nbsp;failures</td>
- <td class='legend exception' title='Something went wrong with the test, there is no result'>Exception</td>
- <td class='legend offline' title='The builder is offline, as there are no slaves connected to it'>Offline</td>
- <td class='legend notstarted' title='No result yet.'>No&nbsp;data</td>
- <td class='legend BuilderHasComment' title='This builder has a comment.'>Builder comment</td>
- </tr>
- </table>
- </div>
- </td>
- <td width="33%" align="right" class="right_align">
- <script type="text/javascript">
-// <![CDATA[
- function reload_page() {
- name_value = document.getElementById('namebox').value
- if (document.location.href.lastIndexOf('?') == -1)
- document.location.href = document.location.href+ '?name=' + name_value;
- else
- document.location.href = document.location.href+ '&name=' + name_value;
- }
-// ]]>
- </script>
- <input id='namebox' name='name' type='text' style='color:#999;'
- onblur='this.value = this.value || this.defaultValue; this.style.color = "#999";'
- onfocus='this.value=""; this.style.color = "#000";'
- value='Personalized for...'/>
- <input type='submit' value='Go' onclick='reload_page()'/>
- </td>
- </tr>
- </table>
-</div>
-
-<br/>
-<div align="center">
-<table id="console_table" width="96%"></table>
-</div>
-
-
-<div id="divBox" onmouseout="if (checkMouseLeave(this, event)) this.style.display = 'none'" class="BuildWaterfall" style="display: none;">
-</div>
-
-
-<iframe id="frameBox" style="display: none;"></iframe>
-
-<script type="text/javascript">
-// replace 'onload="updateDiv(event);" with this, as iframe doesn't have onload event in xhtml
-window.onload = function() {
- document.getElementById('frameBox').onload = function(event) {
- updateDiv(event);
- };
-};
-</script>
-
-{% endblock %}
-
-
-{% block footer %}
-
-{{ super() }}
-{# <p>Debug info: {{ debuginfo }}</p> #}
-{% endblock %}
« no previous file with comments | « master/templates/change_macros.html ('k') | master/templates/horizontal_one_box_per_build.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698