Bug 146603 - Web Inspector: Can't select last row in the timeline because it's covered by filter selector
Summary: Web Inspector: Can't select last row in the timeline because it's covered by ...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Devin Rousso
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2015-07-03 23:14 PDT by Nikita Vasilyev
Modified: 2015-07-29 13:51 PDT (History)
8 users (show)

See Also:


Attachments
Animated GIF of the problem (179.89 KB, image/gif)
2015-07-03 23:14 PDT, Nikita Vasilyev
no flags Details
Patch (14.36 KB, patch)
2015-07-07 23:24 PDT, Devin Rousso
no flags Details | Formatted Diff | Diff
Patch (15.63 KB, patch)
2015-07-08 12:25 PDT, Devin Rousso
no flags Details | Formatted Diff | Diff
Patch (15.81 KB, patch)
2015-07-08 13:40 PDT, Devin Rousso
no flags Details | Formatted Diff | Diff
Patch (15.81 KB, patch)
2015-07-08 15:40 PDT, Devin Rousso
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Nikita Vasilyev 2015-07-03 23:14:16 PDT
Created attachment 256138 [details]
Animated GIF of the problem

A straightforward solution would be to add an empty row at the bottom of the data grid.
Comment 1 Radar WebKit Bug Importer 2015-07-03 23:14:36 PDT
<rdar://problem/21673208>
Comment 2 Devin Rousso 2015-07-07 23:24:19 PDT
Created attachment 256358 [details]
Patch
Comment 3 Timothy Hatcher 2015-07-08 08:25:25 PDT
Comment on attachment 256358 [details]
Patch

Screenshot please.
Comment 4 Timothy Hatcher 2015-07-08 08:30:26 PDT
I applied the patch to try it out. Neat!

I was imaging replacing the label with the scope picker. So center it and change "All" to include the label, like "All Resources".

Though, JavaScript & Events does not have a filter. So maybe your design is better.
Comment 5 Timothy Hatcher 2015-07-08 08:45:27 PDT
Comment on attachment 256358 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256358&action=review

Looks good!

> Source/WebInspectorUI/ChangeLog:35
> +2015-07-07  Devin Rousso  <drousso@apple.com>
> +
> +        Web Inspector: Pressing tab on a comment in the styles sidebar doesn't highlight the comment
> +        https://bugs.webkit.org/show_bug.cgi?id=146709

Oops.

> Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js:46
>      columns.eventType.scopeBar = WebInspector.TimelineDataGrid.createColumnScopeBar("layout", typeToLabelMap);

I don't think you need to assign to columns.eventType.scopeBar anymore.

> Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js:49
>      columns.type.scopeBar = WebInspector.TimelineDataGrid.createColumnScopeBar("network", typeToLabelMap);

Ditto.

> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:52
> +    if (this._filterableColumns.length)
>          this._updateScopeBarForcedVisibility();

This shouldn't be needed now, right?

> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:81
> -    scopeBarItems.unshift(new WebInspector.ScopeBarItem(prefix + "type-all", WebInspector.UIString("All"), true));
> +    scopeBarItems.unshift(new WebInspector.ScopeBarItem(prefix + "type-all", WebInspector.UIString("All")));

Why not exclusive anymore? I'd think it should be still.

> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:83
> -    return new WebInspector.ScopeBar(prefix + "scope-bar", scopeBarItems, scopeBarItems[0]);
> +    return new WebInspector.ScopeBar(prefix + "scope-bar", scopeBarItems, scopeBarItems[0], true);

Why are these exclusive?

> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:137
>      updateLayout: function()
>      {
>          WebInspector.DataGrid.prototype.updateLayout.call(this);
> -
> -        if (this._navigationBar)
> -            this._navigationBar.updateLayout();
>      },

Can remove the whole override now.

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css:145
> +.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-selector {

title-bar-scope-bar

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css:148
> +    right: 0;

Add font-weight: normal to remove the inherited bold text.

I think we also might want to drop the blue background and have black text and arrows when "All" is selected. Having it be blue when a filter is applied will make it more obvious, and that eye catching blue is distracting when All is selected. (This would be different if All was a separate scope item like Resources sidebar or Network. I think combining it is good though.)

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js:42
> +        this._timelineEventsTitleBarScopeSelector = document.createElement("div");

I'd call this Container not Selector.

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js:310
> +    set contentTreeOutlineScopeSelector(element)

I think a contentTreeOutlineScopeBar would be a better setter, then get the element to append from the scopeBar.

A getter would be nice too, even if not needed now.

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.js:963
> +WebInspector.TimelineSidebarPanel.TitleBarScopeSelectorStyleClass = "title-bar-scope-selector";

title-bar-scope-bar

> Source/WebInspectorUI/UserInterface/Views/TimelineView.js:69
> +    get navigationSidebarTreeOutlineScopeSelector()

navigationSidebarTreeOutlineScopeBar

> Source/WebInspectorUI/UserInterface/Views/TimelineView.js:74
> +        return this._scopeBar.element;

Return the ScopeBar.
Comment 6 Devin Rousso 2015-07-08 12:25:09 PDT
Comment on attachment 256358 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256358&action=review

>> Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js:46
>>      columns.eventType.scopeBar = WebInspector.TimelineDataGrid.createColumnScopeBar("layout", typeToLabelMap);
> 
> I don't think you need to assign to columns.eventType.scopeBar anymore.

This is actually used later to add the change event listener for that particular column.  From the comments in the code, it looks like it is planned to allow multiple filters on different columns, and this syntax would be used to make that work.

>> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:81
>> +    scopeBarItems.unshift(new WebInspector.ScopeBarItem(prefix + "type-all", WebInspector.UIString("All")));
> 
> Why not exclusive anymore? I'd think it should be still.

According to your comment below, I made this non-exclusive and a different color when it is selected.

>> Source/WebInspectorUI/UserInterface/Views/TimelineDataGrid.js:83
>> +    return new WebInspector.ScopeBar(prefix + "scope-bar", scopeBarItems, scopeBarItems[0], true);
> 
> Why are these exclusive?

This isn't exclusive.  This says that anything non-exclusive is grouped together into a select element.
Comment 7 Devin Rousso 2015-07-08 12:25:33 PDT
Created attachment 256394 [details]
Patch
Comment 8 Timothy Hatcher 2015-07-08 12:49:23 PDT
Comment on attachment 256394 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256394&action=review

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css:157
> +.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple path {

path should be "svg .stroked". You should also add:

.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple svg .filled {
    fill: black !important;
}
Comment 9 Devin Rousso 2015-07-08 13:40:32 PDT
Created attachment 256402 [details]
Patch
Comment 10 Timothy Hatcher 2015-07-08 13:46:01 PDT
Comment on attachment 256402 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256402&action=review

> Source/WebInspectorUI/UserInterface/Views/TimelineSidebarPanel.css:161
> +.sidebar > .panel.navigation.timeline > .title-bar.timeline-events > .title-bar-scope-bar > .default-item-selected > .multiple svg path.stroked {

Not path, it could be a circle or rect, etc. So just: "svg .stroked"
Comment 11 Devin Rousso 2015-07-08 15:40:57 PDT
Created attachment 256411 [details]
Patch
Comment 12 WebKit Commit Bot 2015-07-08 16:45:46 PDT
Comment on attachment 256411 [details]
Patch

Clearing flags on attachment: 256411

Committed r186536: <http://trac.webkit.org/changeset/186536>
Comment 13 WebKit Commit Bot 2015-07-08 16:45:52 PDT
All reviewed patches have been landed.  Closing bug.