Title: [186283] trunk/Source/WebInspectorUI
Revision
186283
Author
drou...@apple.com
Date
2015-07-04 14:46:29 -0700 (Sat, 04 Jul 2015)

Log Message

Web Inspector: Console should indicate if you have unseen messages in console due to filters
https://bugs.webkit.org/show_bug.cgi?id=143166

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/_javascript_LogViewController.js:
(WebInspector._javascript_LogViewController.prototype.updatePreviousMessageRepeatCount): Now returns true/false depending on if
the message count was actually updated.
* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li.unread): Applies the unread-border-pulse keyframe animation.
(.log-scope-bar > li.unread.errors): The pulsing border is colored red.
(.log-scope-bar > li.unread.warnings): The pulsing border is colored yellow(ish).
(.log-scope-bar > li.unread.logs): The pulsing border is colored grey.
(@keyframes unread-border-pulse): Changes the color of the border from transparent to whatever is specificed.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype._determineMessageLevel):
(WebInspector.LogContentView.prototype._pulseScopeBarItemBorder): Adds the class "unread" to the scope bar item whose panel
the newest message belongs to, but only if that panel or the All panel is not visible.
(WebInspector.LogContentView.prototype._messageAdded):
(WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
(WebInspector.LogContentView.prototype._scopeBarSelectionDidChange): Clears the "unread" class on the selected scope bar item.
(WebInspector.LogContentView.prototype._filterMessageElements):
* UserInterface/Views/ScopeBar.js:
(WebInspector.ScopeBar.prototype.get items): Returns a list of all the items in the scope bar.
* UserInterface/Views/ScopeBarItem.js:
(WebInspector.ScopeBarItem): Added another parameter to allow for a custom class name.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (186282 => 186283)


--- trunk/Source/WebInspectorUI/ChangeLog	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/ChangeLog	2015-07-04 21:46:29 UTC (rev 186283)
@@ -1,5 +1,35 @@
 2015-07-04  Devin Rousso  <drou...@apple.com>
 
+        Web Inspector: Console should indicate if you have unseen messages in console due to filters
+        https://bugs.webkit.org/show_bug.cgi?id=143166
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Controllers/_javascript_LogViewController.js:
+        (WebInspector._javascript_LogViewController.prototype.updatePreviousMessageRepeatCount): Now returns true/false depending on if
+        the message count was actually updated.
+        * UserInterface/Views/LogContentView.css:
+        (.log-scope-bar > li.unread): Applies the unread-border-pulse keyframe animation.
+        (.log-scope-bar > li.unread.errors): The pulsing border is colored red.
+        (.log-scope-bar > li.unread.warnings): The pulsing border is colored yellow(ish).
+        (.log-scope-bar > li.unread.logs): The pulsing border is colored grey.
+        (@keyframes unread-border-pulse): Changes the color of the border from transparent to whatever is specificed.
+        * UserInterface/Views/LogContentView.js:
+        (WebInspector.LogContentView):
+        (WebInspector.LogContentView.prototype._determineMessageLevel):
+        (WebInspector.LogContentView.prototype._pulseScopeBarItemBorder): Adds the class "unread" to the scope bar item whose panel
+        the newest message belongs to, but only if that panel or the All panel is not visible.
+        (WebInspector.LogContentView.prototype._messageAdded):
+        (WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
+        (WebInspector.LogContentView.prototype._scopeBarSelectionDidChange): Clears the "unread" class on the selected scope bar item.
+        (WebInspector.LogContentView.prototype._filterMessageElements):
+        * UserInterface/Views/ScopeBar.js:
+        (WebInspector.ScopeBar.prototype.get items): Returns a list of all the items in the scope bar.
+        * UserInterface/Views/ScopeBarItem.js:
+        (WebInspector.ScopeBarItem): Added another parameter to allow for a custom class name.
+
+2015-07-04  Devin Rousso  <drou...@apple.com>
+
         Web Inspector: Pseudo Styles Ordering and Media Queries
         https://bugs.webkit.org/show_bug.cgi?id=145979
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js (186282 => 186283)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js	2015-07-04 21:46:29 UTC (rev 186283)
@@ -147,14 +147,14 @@
     {
         console.assert(this._previousMessageView);
         if (!this._previousMessageView)
-            return;
+            return false;
 
         var previousIgnoredCount = this._previousMessageView[WebInspector._javascript_LogViewController.IgnoredRepeatCount] || 0;
         var previousVisibleCount = this._previousMessageView.repeatCount;
 
         if (!this._repeatCountWasInterrupted) {
             this._previousMessageView.repeatCount = count - previousIgnoredCount;
-            return;
+            return true;
         }
 
         var consoleMessage = this._previousMessageView.message;
@@ -162,6 +162,8 @@
         duplicatedConsoleMessageView[WebInspector._javascript_LogViewController.IgnoredRepeatCount] = previousIgnoredCount + previousVisibleCount;
         duplicatedConsoleMessageView.repeatCount = 1;
         this._appendConsoleMessageView(duplicatedConsoleMessageView);
+
+        return true;
     }
 
     isScrolledToBottom()

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.css (186282 => 186283)


--- trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.css	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.css	2015-07-04 21:46:29 UTC (rev 186283)
@@ -23,6 +23,26 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+.log-scope-bar > li.unread {
+    animation: unread-border-pulse 1.5s infinite alternate;
+}
+
+.log-scope-bar > li.unread.errors {
+    border-color: red;
+}
+
+.log-scope-bar > li.unread.warnings {
+    border-color: gold;
+}
+
+.log-scope-bar > li.unread.logs {
+    border-color: grey;
+}
+
+@keyframes unread-border-pulse {
+    from { border-color: transparent; }
+}
+
 .content-view.log {
     overflow-y: overlay;
     overflow-x: hidden;

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.js (186282 => 186283)


--- trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.js	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.js	2015-07-04 21:46:29 UTC (rev 186283)
@@ -54,15 +54,16 @@
     this._keyboardShortcutEsc = new WebInspector.KeyboardShortcut(null, WebInspector.KeyboardShortcut.Key.Escape);
 
     this._logViewController = new WebInspector._javascript_LogViewController(this.messagesElement, this.element, this.prompt, this, "console-prompt-history");
+    this._lastMessageView = null;
 
     this._searchBar = new WebInspector.SearchBar("log-search-bar", WebInspector.UIString("Filter Console Log"), this);
     this._searchBar.addEventListener(WebInspector.SearchBar.Event.TextChanged, this._searchTextDidChange, this);
 
     var scopeBarItems = [
         new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.All, WebInspector.UIString("All"), true),
-        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Errors, WebInspector.UIString("Errors")),
-        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Warnings, WebInspector.UIString("Warnings")),
-        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Logs, WebInspector.UIString("Logs"))
+        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Errors, WebInspector.UIString("Errors"), false, "errors"),
+        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Warnings, WebInspector.UIString("Warnings"), false, "warnings"),
+        new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Logs, WebInspector.UIString("Logs"), false, "logs")
     ];
 
     this._scopeBar = new WebInspector.ScopeBar("log-scope-bar", scopeBarItems, scopeBarItems[0]);
@@ -320,19 +321,56 @@
         this._clearProvisionalState();
     },
 
+    _scopeFromMessageLevel: function(level)
+    {
+        var messageLevel;
+
+        switch(level) {
+        case WebInspector.ConsoleMessage.MessageLevel.Warning:
+            messageLevel = WebInspector.LogContentView.Scopes.Warnings;
+            break;
+        case WebInspector.ConsoleMessage.MessageLevel.Error:
+            messageLevel = WebInspector.LogContentView.Scopes.Errors;
+            break;
+        case WebInspector.ConsoleMessage.MessageLevel.Log:
+        case WebInspector.ConsoleMessage.MessageLevel.Info:
+        case WebInspector.ConsoleMessage.MessageLevel.Debug:
+            messageLevel = WebInspector.LogContentView.Scopes.Logs;
+            break;
+        }
+
+        return messageLevel;
+    },
+
+    _pulseScopeBarItemBorder: function(level)
+    {
+        var messageLevel = this._scopeFromMessageLevel(level);
+
+        if (!messageLevel)
+            return;
+
+        var item = this._scopeBar.item(messageLevel);
+
+        if (item && !item.selected && !this._scopeBar.item(WebInspector.LogContentView.Scopes.All).selected)
+            item.element.classList.add("unread");
+    },
+
     _messageAdded: function(event)
     {
         if (this._startedProvisionalLoad)
             this._provisionalMessages.push(event.data.message);
 
-        var messageView = this._logViewController.appendConsoleMessage(event.data.message);
-        if (messageView.message.type !== WebInspector.ConsoleMessage.MessageType.EndGroup)
-            this._filterMessageElements([messageView.element]);
+        this._lastMessageView = this._logViewController.appendConsoleMessage(event.data.message);
+        if (this._lastMessageView.message.type !== WebInspector.ConsoleMessage.MessageType.EndGroup) {
+            this._pulseScopeBarItemBorder(this._lastMessageView.message.level);
+            this._filterMessageElements([this._lastMessageView.element]);
+        }
     },
 
     _previousMessageRepeatCountUpdated: function(event)
-    {
-        this._logViewController.updatePreviousMessageRepeatCount(event.data.count);
+    {        
+        if (this._logViewController.updatePreviousMessageRepeatCount(event.data.count) && this._lastMessageView)
+            this._pulseScopeBarItemBorder(this._lastMessageView.message.level);
     },
 
     _handleContextMenuEvent: function(event)
@@ -653,32 +691,28 @@
 
     _scopeBarSelectionDidChange: function(event)
     {
+        var item = this._scopeBar.selectedItems[0];
+        
+        if (item.id === WebInspector.LogContentView.Scopes.All) {
+            for (var item of this._scopeBar.items)
+                item.element.classList.remove("unread");
+        } else
+            item.element.classList.remove("unread");
+
         this._filterMessageElements(this._allMessageElements());
     },
 
     _filterMessageElements: function(messageElements)
     {
         var showsAll = this._scopeBar.item(WebInspector.LogContentView.Scopes.All).selected;
-        var showsErrors = this._scopeBar.item(WebInspector.LogContentView.Scopes.Errors).selected;
-        var showsWarnings = this._scopeBar.item(WebInspector.LogContentView.Scopes.Warnings).selected;
-        var showsLogs = this._scopeBar.item(WebInspector.LogContentView.Scopes.Logs).selected;
 
         messageElements.forEach(function(messageElement) {
             var visible = showsAll || messageElement.__commandView instanceof WebInspector.ConsoleCommandView || messageElement.__message instanceof WebInspector.ConsoleCommandResultMessage;
             if (!visible) {
-                switch(messageElement.__message.level) {
-                case WebInspector.ConsoleMessage.MessageLevel.Warning:
-                    visible = showsWarnings;
-                    break;
-                case WebInspector.ConsoleMessage.MessageLevel.Error:
-                    visible = showsErrors;
-                    break;
-                case WebInspector.ConsoleMessage.MessageLevel.Log:
-                case WebInspector.ConsoleMessage.MessageLevel.Info:
-                case WebInspector.ConsoleMessage.MessageLevel.Debug:
-                    visible = showsLogs;
-                    break;
-                }
+                var messageLevel = this._scopeFromMessageLevel(messageElement.__message.level);
+
+                if (messageLevel)
+                    visible = this._scopeBar.item(messageLevel).selected;
             }
 
             var classList = messageElement.classList;

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBar.js (186282 => 186283)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBar.js	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBar.js	2015-07-04 21:46:29 UTC (rev 186283)
@@ -45,6 +45,11 @@
         return this._defaultItem;
     }
 
+    get items()
+    {
+        return this._items;
+    }
+
     item(id)
     {
         return this._itemsById.get(id);

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBarItem.js (186282 => 186283)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBarItem.js	2015-07-04 21:44:46 UTC (rev 186282)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScopeBarItem.js	2015-07-04 21:46:29 UTC (rev 186283)
@@ -25,12 +25,13 @@
 
 WebInspector.ScopeBarItem = class ScopeBarItem extends WebInspector.Object
 {
-    constructor(id, label, exclusive)
+    constructor(id, label, exclusive, className)
     {
         super();
 
         this._element = document.createElement("li");
         this._element.classList.toggle("exclusive", exclusive);
+        this._element.classList.add(className);
         this._element.textContent = label;
         this._element.addEventListener("click", this._clicked.bind(this));
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to