[WIP] Added a floating banner to the diff view
Review Request #8746 — Created Feb. 14, 2017 and discarded
Information | |
---|---|
Mons | |
Review Board | |
master | |
Reviewers | |
reviewboard, students | |
We currently have to scroll all the way to the top if we want to be navigated to a
specific diff file.I added a floating banner to the diff view that sticks to the top of the page when
the user has scrolled down on the page. On this banner, I will further add a
collapsed list of the diff files, showing only the the file that the user is currently
looking at. The user will be able to expand this list to navigate to the other files.Screenshots and demo video: Notion
I have tested the floating banner on the dev server on review requests with multiple
diff files.I have started writing jasmine tests for the floating banner. This is still a WIP.
The banner has been manually tested (including responsiveness) on Chrome, Safari, and
Firefox. Click here to see GIFs of the manual tests (running on diff revision 13).Further testing on other browsers are required.
Description | From | Last Updated |
---|---|---|
I think this would be more readable if this else was on a new line. |
DA DanielPBak | |
Same here. |
DA DanielPBak | |
remove blank line |
RK rkdhatt | |
Alphabetize |
|
|
Doc comments begin with /**. |
|
|
Doc comments begin with /** in JS |
|
|
How about viewType |
|
|
This can always run, since it is just a call to bind. It doesn't hurt. Alternatively we can add this … |
|
|
Instead of using each, we should do a for loop. That way we can break out after finding the element … |
|
|
This isnt a jQuery. To get a jQuery (and use the .show() method i suggested) use this._$items.eq(index). |
|
|
you can do $bannerTableRow.show() here. |
|
|
This should be a class, not an ID. |
|
|
border has a shorthand property as following: border: border-width border-style border-color or you can define border-width as following: border-width: top … |
AN anni_cao | |
Why do you need break at the end of if statement? It will jump out of the loop anyway, right? |
AN anni_cao |
Description: |
|
---|
Description: |
|
---|
-
-
reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js (Diff revision 1) I think this would be more readable if this else was on a new line.
-
Description: |
|
|||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
|||||||||||||||||||||||||||||||||
Diff: |
Revision 2 (+119 -24) |

-
Tool: PEP8 Style Checker Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: Pyflakes Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js

-
Tool: Pyflakes Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: PEP8 Style Checker Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Commit: |
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 4 (+135 -24)
|

-
Tool: PEP8 Style Checker Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: Pyflakes Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 5 (+140 -25)
|

-
Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Testing Done: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
||||||||||||||||||
Diff: |
Revision 6 (+139 -25)
|

-
Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Testing Done: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
||||||||||||||||||
Diff: |
Revision 7 (+188 -25)
|

-
Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 8 (+184 -25)
|

-
Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 9 (+192 -25)
|

-
Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
-
-
-
reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js (Diff revision 9) Doc comments begin with
/**
. -
reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js (Diff revision 9) Doc comments begin with
/**
in JS -
-
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 9) This can always run, since it is just a call to bind. It doesn't hurt.
Alternatively we can add this specific behaviour in a subclass. (That is what I would prefer here, but you may want to ask another mentor's opinion.)
-
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 9) Instead of using
each
, we should do afor
loop. That way we canbreak
out after finding the element to display (because if its the first one of twenty, there is no need to consider the next 19). It also lets us use a more correct way of determing if something is in view:windowBottom = windowTop + $(window).height(); for (i = 0; i < this.collection.size(); i++) { /* variable assignments */ if (filePositionTop <= windowTop && filePositionBottom >= windowTop || filePositionTop >= windowTop && filePositionTop <= windowTop + $(window).height()) { /* in view, show it */ break; } }
The first condition checks if the file is above or starting at the top of the window and the second checks that the top of the file is within the window viewport.
However, you will also have to hide all other elements which you can do with
this._$items.hide()
before the loop. -
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 9) This isnt a jQuery. To get a jQuery (and use the
.show()
method i suggested) usethis._$items.eq(index)
. -
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 9) you can do
$bannerTableRow.show()
here.
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 10 (+266 -75)
|

-
Tool: PEP8 Style Checker Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js Tool: Pyflakes Processed Files: reviewboard/staticbundles.py Ignored Files: reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js reviewboard/static/rb/css/pages/diffviewer.less reviewboard/static/rb/js/views/floatingBannerView.js reviewboard/templates/diffviewer/view_diff.html reviewboard/static/rb/js/pages/models/diffViewerPageModel.js reviewboard/static/rb/js/diffviewer/models/diffFileIndexModel.js reviewboard/static/rb/js/diffviewer/views/floatingBannerIndexView.js reviewboard/static/rb/js/pages/views/diffViewerPageView.js
-
-
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 10) This should be a class, not an ID.
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 11 (+275 -75)
|
Checks run (2 succeeded, 1 failed with error)
Testing Done: |
|
---|
Testing Done: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
||||||||||||||||||
Diff: |
Revision 12 (+274 -66)
|
Checks run (2 succeeded, 1 failed with error)
Testing Done: |
|
|||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
|||||||||||||||||||||
Diff: |
Revision 13 (+349 -66)
|
Checks run (2 succeeded, 1 failed with error)
-
-
reviewboard/static/rb/js/diffviewer/views/diffFileIndexView.js (Diff revision 13) Why do you need
break
at the end of if statement? It will jump out of the loop anyway, right?
-
-
reviewboard/static/rb/css/pages/diffviewer.less (Diff revision 13) border has a shorthand property as following:
border: border-width border-style border-color
or you can define border-width as following:
border-width: top right bottom left
In your case, looks like they are all 0, you can do
border-width: 0
Testing Done: |
|
|||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Commit: |
|
|||||||||||||||||||||
Diff: |
Revision 14 (+493 -66)
|
Checks run (2 succeeded, 1 failed with error)
Description: |
|
||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Testing Done: |
|
||||||||||||||||||||||||||||||||||||
Commit: |
|
||||||||||||||||||||||||||||||||||||
Diff: |
Revision 15 (+502 -66)
|
Checks run (2 succeeded, 1 failed with error)
Commit: |
|
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 16 (+554 -80)
|
Checks run (2 succeeded, 1 failed with error)
Description: |
|
||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Testing Done: |
|