Diff
Copied: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueue.js (from rev 174343, trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js) (0 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueue.js (rev 0)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueue.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+BubbleQueue = function(queueServer, id, info)
+{
+ BaseObject.call(this);
+
+ console.assert(queueServer);
+ console.assert(id);
+
+ this.queueServer = queueServer;
+ this.id = id;
+ this.title = info.title || "\xa0";
+
+ this.platform = info.platform ? info.platform.name : "unknown";
+};
+
+BaseObject.addConstructorFunctions(BubbleQueue);
+
+BubbleQueue.Event = {
+ Updated: "updated"
+};
+
+BubbleQueue.prototype = {
+ constructor: BubbleQueue,
+ __proto__: BaseObject.prototype,
+
+ get statusPageURL()
+ {
+ return this.queueServer.queueStatusURL(this.id);
+ },
+
+ get chartsPageURL()
+ {
+ return this._chartsPageURL;
+ },
+
+ get patchCount()
+ {
+ return this._patchCount;
+ },
+
+ get loadedDetailedStatus()
+ {
+ return this._loadedDetailedStatus;
+ },
+
+ get patches()
+ {
+ console.assert(this._loadedDetailedStatus);
+ return this._queue;
+ },
+
+ get bots()
+ {
+ console.assert(this._loadedDetailedStatus);
+ return this._bots;
+ },
+
+ update: function()
+ {
+ this._loadedDetailedStatus = false;
+
+ JSON.load(this.queueServer.jsonQueueLengthURL(this.id), function(data) {
+ var newPatchCount = data.queue_length;
+ if (this._patchCount == newPatchCount)
+ return;
+ this._patchCount = newPatchCount;
+ this.dispatchEventToListeners(BubbleQueue.Event.Updated, null);
+ }.bind(this));
+ },
+
+ loadDetailedStatus: function(callback)
+ {
+ JSON.load(this.queueServer.jsonQueueStatusURL(this.id), function(data) {
+ this._queue = [];
+ for (var i = 0, end = data.queue.length; i < end; ++i) {
+ var patch = data.queue[i];
+ var activeSinceTime = patch.active_since ? Date.parse(patch.active_since) : 0;
+ this._queue.push({
+ attachmentID: patch.attachment_id,
+ statusPageURL: patch.status_page,
+ latestMessage: patch.latest_message,
+ latestMessageTime: patch.latest_message_time ? new Date(patch.latest_message_time) : null,
+ detailedResultsURLForLatestMessage: patch.latest_results,
+ retryCount: patch.retry_count,
+ active: patch.active,
+ activeSince: new Date(activeSinceTime),
+ });
+ }
+
+ this._bots = [];
+ for (var i = 0, end = data.bots.length; i < end; ++i) {
+ var bot = data.bots[i];
+ var latestMessageTime = bot.latest_message_time ? Date.parse(bot.latest_message_time) : 0;
+
+ var _oneDayInMilliseconds_ = 24 * 60 * 60 * 1000;
+ var botIsCurrentlyActive = Date.now() < latestMessageTime + oneDayInMilliseconds;
+ if (!botIsCurrentlyActive)
+ continue;
+
+ // Sometimes (rarely), there are status messages with an empty bot name added to the database.
+ if (!bot.bot_id.length)
+ bot.bot_id = "<empty name>";
+
+ this._bots.push({
+ id: bot.bot_id,
+ statusPageURL: bot.status_page,
+ latestMessageTime: new Date(latestMessageTime),
+ });
+ }
+
+ console.assert(this.statusPageURL === data.status_page);
+ this._chartsPageURL = data.charts_page;
+
+ this._loadedDetailedStatus = true;
+ callback();
+ }.bind(this));
+ },
+};
Copied: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js (from rev 174343, trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js) (0 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js (rev 0)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+BubbleQueueServer = function()
+{
+ const queueInfo = {
+ "commit-queue": {platform: Dashboard.Platform.MacOSXMountainLion, shortName: "commit", title: "Commit Queue"},
+ "style-queue": {shortName: "style", title: "Style Checker Queue"},
+ "mac-ews": {platform: Dashboard.Platform.MacOSXMountainLion, shortName: "mac", title: "WebKit1\xa0Release\xa0Tests\xa0EWS"},
+ "mac-wk2-ews": {platform: Dashboard.Platform.MacOSXMountainLion, shortName: "mac-wk2", title: "WebKit2\xa0Release\xa0Tests\xa0EWS"},
+ "win-ews": {platform: Dashboard.Platform.Windows7, shortName: "win", title: "WebKit1\xa0Release\xa0Build\xa0EWS"},
+ "gtk-wk2-ews": {platform: Dashboard.Platform.LinuxGTK, shortName: "gtk-wk2", title: "WebKit2\xa0Release\xa0Build\xa0EWS"},
+ "efl-wk2-ews": {platform: Dashboard.Platform.LinuxEFL, shortName: "efl-wk2", title: "WebKit2\xa0Release\xa0Build\xa0EWS"}
+ };
+
+ BaseObject.call(this);
+
+ this.baseURL = "https://webkit-queues.appspot.com/";
+ this.queues = {};
+
+ for (var id in queueInfo)
+ this.queues[id] = new BubbleQueue(this, id, queueInfo[id]);
+};
+
+BaseObject.addConstructorFunctions(BubbleQueueServer);
+
+BubbleQueueServer.prototype = {
+ constructor: BubbleQueueServer,
+ __proto__: BaseObject.prototype,
+
+ jsonQueueLengthURL: function(queueID)
+ {
+ return this.baseURL + "queue-length-json/" + encodeURIComponent(queueID);
+ },
+
+ jsonQueueStatusURL: function(queueID)
+ {
+ return this.baseURL + "queue-status-json/" + encodeURIComponent(queueID);
+ },
+
+ queueStatusURL: function(queueID)
+ {
+ return this.baseURL + "queue-status/" + encodeURIComponent(queueID);
+ },
+};
Copied: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueView.js (from rev 174343, trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js) (0 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueView.js (rev 0)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueView.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+BubbleQueueView = function(queues)
+{
+ QueueView.call(this);
+
+ this.queues = queues || [];
+
+ this.queues.forEach(function(queue) {
+ if (this.platform && this.platform != queue.platform)
+ throw "A bubble queue view may not contain queues for multiple platforms."
+ else
+ this.platform = queue.platform;
+ queue.addEventListener(BubbleQueue.Event.Updated, this._queueUpdated, this);
+ }.bind(this));
+
+ this.update();
+};
+
+BaseObject.addConstructorFunctions(BubbleQueueView);
+
+BubbleQueueView.prototype = {
+ constructor: BubbleQueueView,
+ __proto__: QueueView.prototype,
+
+ update: function()
+ {
+ QueueView.prototype.update.call(this);
+
+ this.element.removeChildren();
+
+ function appendQueue(queue)
+ {
+ var queueLabel = document.createElement("a");
+ queueLabel.classList.add("queueLabel");
+ queueLabel.textContent = queue.title;
+ queueLabel.href = ""
+ queueLabel.target = "_blank";
+ this.element.appendChild(queueLabel);
+
+ var patchCount = queue.patchCount;
+
+ var message = patchCount === 1 ? "patch in queue" : "patches in queue";
+ var status = new StatusLineView(message, StatusLineView.Status.Neutral, null, patchCount || "0");
+ this.element.appendChild(status.element);
+
+ new PopoverTracker(status.statusBubbleElement, this._presentPopoverForBubbleQueue.bind(this), queue);
+ }
+
+ this.queues.forEach(function(queue) {
+ appendQueue.call(this, queue);
+ }, this);
+ },
+
+ addLinkToRow: function(rowElement, className, text, url)
+ {
+ var linkElement = document.createElement("a");
+ linkElement.className = className;
+ linkElement.textContent = text;
+ linkElement.href = ""
+ linkElement.target = "_blank";
+ rowElement.appendChild(linkElement);
+ },
+
+ addTextToRow: function(rowElement, className, text)
+ {
+ var spanElement = document.createElement("span");
+ spanElement.className = className;
+ spanElement.textContent = text;
+ rowElement.appendChild(spanElement);
+ },
+
+ _addQueueHeadingToPopover: function(queue, content)
+ {
+ var title = document.createElement("div");
+ title.className = "popover-queue-heading";
+
+ this.addTextToRow(title, "queue-name", queue.id);
+ this.addLinkToRow(title, "queue-status-link", "status page", queue.statusPageURL);
+ this.addLinkToRow(title, "queue-charts-link", "charts", queue.chartsPageURL);
+
+ content.appendChild(title);
+ },
+
+ _addBotsHeadingToPopover: function(queue, content)
+ {
+ var title = document.createElement("div");
+ title.className = "popover-bots-heading";
+ title.textContent = "latest bot event";
+ content.appendChild(title);
+ },
+
+ _addDividerToPopover: function(content)
+ {
+ var divider = document.createElement("div");
+ divider.className = "divider";
+ content.appendChild(divider);
+ },
+
+ _timeIntervalString: function(time)
+ {
+ var secondsInHour = 60 * 60;
+ var timeDifference = (Date.now() - time.getTime()) / 1000;
+ var hours = Math.floor(timeDifference / secondsInHour);
+ var minutes = Math.floor((timeDifference - hours * secondsInHour) / 60);
+ var hoursPart = "";
+ if (hours === 1)
+ hoursPart = "1\xa0hour and ";
+ else if (hours > 0)
+ hoursPart = hours + "\xa0hours and ";
+ if (!minutes)
+ return "less than a minute";
+ if (minutes === 1)
+ return hoursPart + "1\xa0minute";
+ return hoursPart + minutes + "\xa0minutes";
+ },
+
+ _popoverContentForBubbleQueue: function(queue)
+ {
+ var content = document.createElement("div");
+ content.className = "bubble-server-popover";
+
+ this._addQueueHeadingToPopover(queue, content);
+ this._addDividerToPopover(content);
+
+ var patches = queue.patches;
+ for (var i = 0, end = patches.length; i < end; ++i) {
+ var patch = patches[i];
+
+ var rowElement = document.createElement("div");
+
+ this.addLinkToRow(rowElement, "patch-details-link", patch.attachmentID, patch.statusPageURL);
+
+ if (patch.retryCount)
+ this.addTextToRow(rowElement, "failure-count", patch.retryCount + "\xa0" + (patch.retryCount === 1 ? "attempt" : "attempts"));
+
+ if (patch.detailedResultsURLForLatestMessage)
+ this.addLinkToRow(rowElement, "latest-status-with-link", patch.latestMessage, patch.detailedResultsURLForLatestMessage);
+ else if (patch.latestMessage && patch.latestMessage.length)
+ this.addTextToRow(rowElement, "latest-status-no-link", patch.latestMessage);
+ else if (patch.active) {
+ this.addTextToRow(rowElement, "latest-status-no-link", "Started");
+ this.addTextToRow(rowElement, "time-since-message", this._timeIntervalString(patch.activeSince) + "\xa0ago");
+ } else
+ this.addTextToRow(rowElement, "latest-status-no-link", "Not started yet");
+
+ if (patch.latestMessageTime)
+ this.addTextToRow(rowElement, "time-since-message", this._timeIntervalString(patch.latestMessageTime) + "\xa0ago");
+
+ this.addLinkToRow(rowElement, "bugzilla-link", "bugzilla", bugzilla.detailsURLForAttachment(patch.attachmentID));
+
+ content.appendChild(rowElement);
+ }
+
+ this._addDividerToPopover(content);
+ this._addBotsHeadingToPopover(queue, content);
+ this._addDividerToPopover(content);
+
+ var bots = queue.bots;
+ for (var i = 0, end = bots.length; i < end; ++i) {
+ var bot = bots[i];
+
+ var rowElement = document.createElement("div");
+
+ this.addLinkToRow(rowElement, "bot-status-link", bot.id, bot.statusPageURL);
+ this.addTextToRow(rowElement, "bot-status-description", this._timeIntervalString(bot.latestMessageTime) + "\xa0ago");
+
+ content.appendChild(rowElement);
+ }
+
+ return content;
+ },
+
+ _presentPopoverForBubbleQueue: function(element, popover, queue)
+ {
+ if (queue.loadedDetailedStatus)
+ var content = this._popoverContentForBubbleQueue(queue);
+ else {
+ var content = document.createElement("div");
+ content.className = "bubble-server-popover";
+
+ var loadingIndicator = document.createElement("div");
+ loadingIndicator.className = "loading-indicator";
+ loadingIndicator.textContent = "Loading\u2026";
+ content.appendChild(loadingIndicator);
+
+ queue.loadDetailedStatus(function() {
+ popover.content = this._popoverContentForBubbleQueue(queue);
+ }.bind(this));
+ }
+
+ var rect = Dashboard.Rect.rectFromClientRect(element.getBoundingClientRect());
+ popover.content = content;
+ popover.present(rect, [Dashboard.RectEdge.MIN_Y, Dashboard.RectEdge.MAX_Y, Dashboard.RectEdge.MAX_X, Dashboard.RectEdge.MIN_X]);
+ return true;
+ },
+
+ _updateQueues: function()
+ {
+ this.queues.forEach(function(queue) { queue.update(); });
+ },
+
+ _queueUpdated: function(event)
+ {
+ this.updateSoon();
+ },
+};
Deleted: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-EWS = function()
-{
- const queueInfo = {
- "mac": {platform: Dashboard.Platform.MacOSXMountainLion, title: "WebKit1 Release Tests"},
- "mac-wk2": {platform: Dashboard.Platform.MacOSXMountainLion, title: "WebKit2 Release Tests"},
- "win": {platform: Dashboard.Platform.Windows7, title: "WebKit1 Release Build"},
- "gtk-wk2": {platform: Dashboard.Platform.LinuxGTK, title: "WebKit2 Release Build"},
- "efl-wk2": {platform: Dashboard.Platform.LinuxEFL, title: "WebKit2 Release Build"}
- };
-
- BaseObject.call(this);
-
- this.baseURL = "https://webkit-queues.appspot.com/";
- this.queues = {};
-
- for (var id in queueInfo)
- this.queues[id] = new EWSQueue(this, id, queueInfo[id]);
-};
-
-BaseObject.addConstructorFunctions(EWS);
-
-EWS.prototype = {
- constructor: EWS,
- __proto__: BaseObject.prototype,
-
- jsonQueueLengthURL: function(queueID)
- {
- return this.baseURL + "queue-length-json/" + encodeURIComponent(queueID) + "-ews";
- },
-
- jsonQueueStatusURL: function(queueID)
- {
- return this.baseURL + "queue-status-json/" + encodeURIComponent(queueID) + "-ews";
- },
-
- queueStatusURL: function(queueID)
- {
- return this.baseURL + "queue-status/" + encodeURIComponent(queueID) + "-ews";
- },
-};
Deleted: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-EWSQueue = function(ews, id, info)
-{
- BaseObject.call(this);
-
- console.assert(ews);
- console.assert(id);
-
- this.ews = ews;
- this.id = id;
- this.title = info.title || "\xa0";
-
- this.platform = info.platform.name || "unknown";
-};
-
-BaseObject.addConstructorFunctions(EWSQueue);
-
-EWSQueue.Event = {
- Updated: "updated"
-};
-
-EWSQueue.prototype = {
- constructor: EWSQueue,
- __proto__: BaseObject.prototype,
-
- get statusPageURL()
- {
- return this.ews.queueStatusURL(this.id);
- },
-
- get chartsPageURL()
- {
- return this._chartsPageURL;
- },
-
- get patchCount()
- {
- return this._patchCount;
- },
-
- get loadedDetailedStatus()
- {
- return this._loadedDetailedStatus;
- },
-
- get patches()
- {
- console.assert(this._loadedDetailedStatus);
- return this._queue;
- },
-
- get bots()
- {
- console.assert(this._loadedDetailedStatus);
- return this._bots;
- },
-
- update: function()
- {
- this._loadedDetailedStatus = false;
-
- JSON.load(this.ews.jsonQueueLengthURL(this.id), function(data) {
- var newPatchCount = data.queue_length;
- if (this._patchCount == newPatchCount)
- return;
- this._patchCount = newPatchCount;
- this.dispatchEventToListeners(EWSQueue.Event.Updated, null);
- }.bind(this));
- },
-
- loadDetailedStatus: function(callback)
- {
- JSON.load(this.ews.jsonQueueStatusURL(this.id), function(data) {
- this._queue = [];
- for (var i = 0, end = data.queue.length; i < end; ++i) {
- var patch = data.queue[i];
- var activeSinceTime = patch.active_since ? Date.parse(patch.active_since) : 0;
- this._queue.push({
- attachmentID: patch.attachment_id,
- statusPageURL: patch.status_page,
- latestMessage: patch.latest_message,
- latestMessageTime: patch.latest_message_time ? new Date(patch.latest_message_time) : null,
- detailedResultsURLForLatestMessage: patch.latest_results,
- retryCount: patch.retry_count,
- active: patch.active,
- activeSince: new Date(activeSinceTime),
- });
- }
-
- this._bots = [];
- for (var i = 0, end = data.bots.length; i < end; ++i) {
- var bot = data.bots[i];
- var latestMessageTime = bot.latest_message_time ? Date.parse(bot.latest_message_time) : 0;
-
- var _oneDayInMilliseconds_ = 24 * 60 * 60 * 1000;
- var botIsCurrentlyActive = Date.now() < latestMessageTime + oneDayInMilliseconds;
- if (!botIsCurrentlyActive)
- continue;
-
- // Sometimes (rarely), there are status messages with an empty bot name added to the database.
- if (!bot.bot_id.length)
- bot.bot_id = "<empty name>";
-
- this._bots.push({
- id: bot.bot_id,
- statusPageURL: bot.status_page,
- latestMessageTime: new Date(latestMessageTime),
- });
- }
-
- console.assert(this.statusPageURL === data.status_page);
- this._chartsPageURL = data.charts_page;
-
- this._loadedDetailedStatus = true;
- callback();
- }.bind(this));
- },
-};
Deleted: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-EWSQueueView = function(queues)
-{
- QueueView.call(this);
-
- this.queues = queues || [];
-
- this.queues.forEach(function(queue) {
- if (this.platform && this.platform != queue.platform)
- throw "A EWS view may not contain queues for multiple platforms."
- else
- this.platform = queue.platform;
- queue.addEventListener(EWSQueue.Event.Updated, this._queueUpdated, this);
- }.bind(this));
-
- this.update();
-};
-
-BaseObject.addConstructorFunctions(EWSQueueView);
-
-EWSQueueView.prototype = {
- constructor: EWSQueueView,
- __proto__: QueueView.prototype,
-
- update: function()
- {
- QueueView.prototype.update.call(this);
-
- this.element.removeChildren();
-
- function appendQueue(queue)
- {
- var queueLabel = document.createElement("a");
- queueLabel.classList.add("queueLabel");
- queueLabel.textContent = queue.title;
- queueLabel.href = ""
- queueLabel.target = "_blank";
- this.element.appendChild(queueLabel);
-
- var patchCount = queue.patchCount;
-
- var message = patchCount === 1 ? "patch in queue" : "patches in queue";
- var status = new StatusLineView(message, StatusLineView.Status.Neutral, null, patchCount || "0");
- this.element.appendChild(status.element);
-
- new PopoverTracker(status.statusBubbleElement, this._presentPopoverForEWSQueue.bind(this), queue);
- }
-
- this.queues.forEach(function(queue) {
- appendQueue.call(this, queue);
- }, this);
- },
-
- addLinkToRow: function(rowElement, className, text, url)
- {
- var linkElement = document.createElement("a");
- linkElement.className = className;
- linkElement.textContent = text;
- linkElement.href = ""
- linkElement.target = "_blank";
- rowElement.appendChild(linkElement);
- },
-
- addTextToRow: function(rowElement, className, text)
- {
- var spanElement = document.createElement("span");
- spanElement.className = className;
- spanElement.textContent = text;
- rowElement.appendChild(spanElement);
- },
-
- _addQueueHeadingToPopover: function(queue, content)
- {
- var title = document.createElement("div");
- title.className = "popover-queue-heading";
-
- this.addTextToRow(title, "queue-name", queue.id + " ews queue");
- this.addLinkToRow(title, "queue-status-link", "status page", queue.statusPageURL);
- this.addLinkToRow(title, "queue-charts-link", "charts", queue.chartsPageURL);
-
- content.appendChild(title);
- },
-
- _addBotsHeadingToPopover: function(queue, content)
- {
- var title = document.createElement("div");
- title.className = "popover-bots-heading";
- title.textContent = "latest bot event";
- content.appendChild(title);
- },
-
- _addDividerToPopover: function(content)
- {
- var divider = document.createElement("div");
- divider.className = "divider";
- content.appendChild(divider);
- },
-
- _timeIntervalString: function(time)
- {
- var secondsInHour = 60 * 60;
- var timeDifference = (Date.now() - time.getTime()) / 1000;
- var hours = Math.floor(timeDifference / secondsInHour);
- var minutes = Math.floor((timeDifference - hours * secondsInHour) / 60);
- var hoursPart = "";
- if (hours === 1)
- hoursPart = "1\xa0hour and ";
- else if (hours > 0)
- hoursPart = hours + "\xa0hours and ";
- if (!minutes)
- return "less than a minute";
- if (minutes === 1)
- return hoursPart + "1\xa0minute";
- return hoursPart + minutes + "\xa0minutes";
- },
-
- _popoverContentForEWSQueue: function(queue)
- {
- var content = document.createElement("div");
- content.className = "ews-popover";
-
- this._addQueueHeadingToPopover(queue, content);
- this._addDividerToPopover(content);
-
- var patches = queue.patches;
- for (var i = 0, end = patches.length; i < end; ++i) {
- var patch = patches[i];
-
- var rowElement = document.createElement("div");
-
- this.addLinkToRow(rowElement, "patch-details-link", patch.attachmentID, patch.statusPageURL);
-
- if (patch.retryCount)
- this.addTextToRow(rowElement, "failure-count", patch.retryCount + "\xa0" + (patch.retryCount === 1 ? "attempt" : "attempts"));
-
- if (patch.detailedResultsURLForLatestMessage)
- this.addLinkToRow(rowElement, "latest-status-with-link", patch.latestMessage, patch.detailedResultsURLForLatestMessage);
- else if (patch.latestMessage && patch.latestMessage.length)
- this.addTextToRow(rowElement, "latest-status-no-link", patch.latestMessage);
- else if (patch.active) {
- this.addTextToRow(rowElement, "latest-status-no-link", "Started");
- this.addTextToRow(rowElement, "time-since-message", this._timeIntervalString(patch.activeSince) + "\xa0ago");
- } else
- this.addTextToRow(rowElement, "latest-status-no-link", "Not started yet");
-
- if (patch.latestMessageTime)
- this.addTextToRow(rowElement, "time-since-message", this._timeIntervalString(patch.latestMessageTime) + "\xa0ago");
-
- this.addLinkToRow(rowElement, "bugzilla-link", "bugzilla", bugzilla.detailsURLForAttachment(patch.attachmentID));
-
- content.appendChild(rowElement);
- }
-
- this._addDividerToPopover(content);
- this._addBotsHeadingToPopover(queue, content);
- this._addDividerToPopover(content);
-
- var bots = queue.bots;
- for (var i = 0, end = bots.length; i < end; ++i) {
- var bot = bots[i];
-
- var rowElement = document.createElement("div");
-
- this.addLinkToRow(rowElement, "bot-status-link", bot.id, bot.statusPageURL);
- this.addTextToRow(rowElement, "bot-status-description", this._timeIntervalString(bot.latestMessageTime) + "\xa0ago");
-
- content.appendChild(rowElement);
- }
-
- return content;
- },
-
- _presentPopoverForEWSQueue: function(element, popover, queue)
- {
- if (queue.loadedDetailedStatus)
- var content = this._popoverContentForEWSQueue(queue);
- else {
- var content = document.createElement("div");
- content.className = "ews-popover";
-
- var loadingIndicator = document.createElement("div");
- loadingIndicator.className = "loading-indicator";
- loadingIndicator.textContent = "Loading\u2026";
- content.appendChild(loadingIndicator);
-
- queue.loadDetailedStatus(function() {
- popover.content = this._popoverContentForEWSQueue(queue);
- }.bind(this));
- }
-
- var rect = Dashboard.Rect.rectFromClientRect(element.getBoundingClientRect());
- popover.content = content;
- popover.present(rect, [Dashboard.RectEdge.MIN_Y, Dashboard.RectEdge.MAX_Y, Dashboard.RectEdge.MAX_X, Dashboard.RectEdge.MIN_X]);
- return true;
- },
-
- _updateQueues: function()
- {
- this.queues.forEach(function(queue) { queue.update(); });
- },
-
- _queueUpdated: function(event)
- {
- this.updateSoon();
- },
-};
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Initialization.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Initialization.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Initialization.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -28,7 +28,7 @@
var webkitTrac = new Trac("https://trac.webkit.org/");
if (typeof Bugzilla !== "undefined")
var bugzilla = new Bugzilla;
-if (typeof EWS !== "undefined")
- var ews = new EWS;
+if (typeof BubbleQueueServer !== "undefined")
+ var bubbleQueueServer = new BubbleQueueServer;
if (typeof TestHistory !== "undefined")
var testHistory = new TestHistory;
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,8 +23,8 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-var hasEWS = typeof ews != "undefined";
-var EWSCategory = "ews";
+var hasBubbles = typeof bubbleQueueServer != "undefined";
+var BubblesCategory = "bubbles";
var categorizedQueuesByPlatformAndBuildType = {};
@@ -64,16 +64,16 @@
}
}
-if (hasEWS) {
- for (var id in ews.queues) {
- var queue = ews.queues[id];
+if (hasBubbles) {
+ for (var id in bubbleQueueServer.queues) {
+ var queue = bubbleQueueServer.queues[id];
var platform = categorizedQueuesByPlatformAndBuildType[queue.platform];
if (!platform)
platform = categorizedQueuesByPlatformAndBuildType[queue.platform] = {};
if (!platform.builders)
platform.builders = {};
- var categoryName = EWSCategory;
+ var categoryName = BubblesCategory;
platformQueues = platform[categoryName];
if (!platformQueues)
@@ -154,9 +154,11 @@
header.textContent = "Performance";
row.appendChild(header);
- if (hasEWS) {
+ if (hasBubbles) {
+ // Currently, EWS and commit queues are the only items in Other category.
+ // To add more (e.g. leaks bot), we'll need to refactor view classes.
var header = document.createElement("th");
- header.textContent = "EWS";
+ header.textContent = "Other";
row.appendChild(header);
}
@@ -220,11 +222,11 @@
row.appendChild(cell);
- if (hasEWS) {
+ if (hasBubbles) {
var cell = document.createElement("td");
- if (platformQueues[EWSCategory]) {
- var view = new EWSQueueView(platformQueues[EWSCategory]);
+ if (platformQueues[BubblesCategory]) {
+ var view = new BubbleQueueView(platformQueues[BubblesCategory]);
cell.appendChild(view.element);
}
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/MetricsMain.js (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/MetricsMain.js 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/MetricsMain.js 2014-10-06 21:37:28 UTC (rev 174366)
@@ -23,9 +23,6 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-var hasEWS = typeof ews !== "undefined";
-var EWSCategory = "ews";
-
var analyzer = new Analyzer;
var allBuilderResultsPseudoQueue = { id: "allBuilderResultsPseudoQueue" };
@@ -67,25 +64,6 @@
}
}
-if (hasEWS) {
- for (var id in ews.queues) {
- var queue = ews.queues[id];
- var platform = categorizedQueuesByPlatformAndBuildType[queue.platform];
- if (!platform)
- platform = categorizedQueuesByPlatformAndBuildType[queue.platform] = {};
- if (!platform.builders)
- platform.builders = {};
-
- var categoryName = EWSCategory;
-
- platformQueues = platform[categoryName];
- if (!platformQueues)
- platformQueues = platform[categoryName] = [];
-
- platformQueues.push(queue);
- }
-}
-
var testNames = {};
testNames[Buildbot.TestCategory.WebKit2] = "WK2 Tests";
testNames[Buildbot.TestCategory.WebKit1] = "WK1 Tests";
@@ -174,12 +152,6 @@
header.textContent = "All queues";
row.appendChild(header);
- if (hasEWS) {
- var header = document.createElement("th");
- header.textContent = "EWS";
- row.appendChild(header);
- }
-
table.appendChild(row);
var row = document.createElement("tr");
@@ -228,12 +200,6 @@
row.appendChild(header);
}
- if (hasEWS) {
- var header = document.createElement("th");
- header.textContent = "EWS";
- row.appendChild(header);
- }
-
table.appendChild(row);
var platforms = sortedPlatforms();
@@ -286,17 +252,6 @@
row.appendChild(cell);
}
- if (hasEWS) {
- var cell = document.createElement("td");
-
- if (platformQueues[EWSCategory]) {
- var view = new EWSQueueView(platformQueues[EWSCategory]);
- cell.appendChild(view.element);
- }
-
- row.appendChild(cell);
- }
-
table.appendChild(row);
}
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css 2014-10-06 21:37:28 UTC (rev 174366)
@@ -120,7 +120,7 @@
padding-left: 7px;
}
-.ews-popover,
+.bubble-server-popover,
.performance-popover {
font-family: "HelveticaNeue-Light", "Helvetica Neue", sans-serif;
color: rgb(145, 135, 95);
@@ -129,22 +129,22 @@
padding: 1px 6px 1px 6px;
}
-.ews-popover .popover-queue-heading .queue-status-link,
-.ews-popover .popover-queue-heading .queue-charts-link {
+.bubble-server-popover .popover-queue-heading .queue-status-link,
+.bubble-server-popover .popover-queue-heading .queue-charts-link {
color: rgb(145, 135, 95);
padding-left: 7px;
}
-.ews-popover .latest-status-with-link,
-.ews-popover .latest-status-no-link {
+.bubble-server-popover .latest-status-with-link,
+.bubble-server-popover .latest-status-no-link {
color: black;
padding-left: 7px;
}
-.ews-popover .failure-count,
-.ews-popover .time-since-message,
-.ews-popover .bugzilla-link,
-.ews-popover .bot-status-description {
+.bubble-server-popover .failure-count,
+.bubble-server-popover .time-since-message,
+.bubble-server-popover .bugzilla-link,
+.bubble-server-popover .bot-status-description {
padding-left: 7px;
}
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html (174365 => 174366)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html 2014-10-06 21:37:28 UTC (rev 174366)
@@ -37,10 +37,10 @@
<script src=""
<script src=""
<script src=""
- <script src=""
+ <script src=""
<script src=""
<script src=""
- <script src=""
+ <script src=""
<script src=""
<script src=""
<script src=""
@@ -51,7 +51,7 @@
<script src=""
<script src=""
<script src=""
- <script src=""
+ <script src=""
<script src=""
<script src=""
<script src=""
Modified: trunk/Tools/ChangeLog (174365 => 174366)
--- trunk/Tools/ChangeLog 2014-10-06 21:36:31 UTC (rev 174365)
+++ trunk/Tools/ChangeLog 2014-10-06 21:37:28 UTC (rev 174366)
@@ -1,5 +1,53 @@
2014-10-06 Alexey Proskuryakov <[email protected]>
+ build.webkit.org/dashboard: Add commit queue
+ https://bugs.webkit.org/show_bug.cgi?id=137462
+
+ Reviewed by Tim Horton.
+
+ Generalizes EWS into "bubble queue", which also includes commit queue and style queue.
+ Style queue is still invisible, as it doesn't have an associated platform, and also
+ we never have problems with it anyway, so it's not worth watching.
+
+ The UI now allows for adding more bots to the Other column (such as leaks bot).
+ To make that actually happen, we'll need to refactor QueueView, allowing for multiple
+ sources of data in a cell.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueue.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js.
+ (BubbleQueue):
+ (BubbleQueue.prototype.get statusPageURL):
+ (BubbleQueue.prototype.update):
+ (BubbleQueue.prototype.loadDetailedStatus):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js.
+ (BubbleQueueServer):
+ (BubbleQueueServer.prototype.jsonQueueLengthURL):
+ (BubbleQueueServer.prototype.jsonQueueStatusURL):
+ (BubbleQueueServer.prototype.queueStatusURL):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueView.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js.
+ (BubbleQueueView):
+ (BubbleQueueView.prototype.update.appendQueue):
+ (BubbleQueueView.prototype.update):
+ (BubbleQueueView.prototype._addQueueHeadingToPopover):
+ (BubbleQueueView.prototype._popoverContentForBubbleQueue):
+ (BubbleQueueView.prototype._presentPopoverForBubbleQueue):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js: Removed.
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueue.js: Removed.
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWSQueueView.js: Removed.
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Initialization.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css:
+ (.bubble-server-popover .popover-queue-heading .queue-charts-link):
+ (.bubble-server-popover .latest-status-no-link):
+ (.bubble-server-popover .bot-status-description):
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html:
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/MetricsMain.js:
+ (buildAggregateTable):
+ (buildQueuesTable):
+ Removed dysfunctional support for EWS for now. It will be different.
+
+2014-10-06 Alexey Proskuryakov <[email protected]>
+
One more case of incorrect comparison in recordpatchevent.py
https://bugs.webkit.org/show_bug.cgi?id=137459