Title: [174366] trunk/Tools
Revision
174366
Author
[email protected]
Date
2014-10-06 14:37:28 -0700 (Mon, 06 Oct 2014)

Log Message

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.

Modified Paths

Added Paths

Removed Paths

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
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to