[WIP] Core functionality for file diff collapsing
Review Request #9431 — Created Dec. 9, 2017 and discarded
When viewing the diff of a review request not all files need to be
viewed, for example minified files don't need to be reviewed. It is
also helpful to have a way to hide files you have already reviewed.Now files can be collapsed and expanded as the user wishes. Also,
minified files are collapsed by default.If a minified file is also a deleted, moved/copied, binary (I'm not
sure if this is even a possibility), or a new empty file then it will
not be collapsed by default because there will just be a short
message displayed instead of a large, one-line diff.Collapsing a diff does not work especially elegantly when the file only
contains whitespace changes. In this case the Hide/Show whitespace
changes button can also be used to collapse the file. So the file
can't be viewed unless both buttons allow it to be. One fix for this
would be to hide the new button whenever a file is collapsed with the
Hide/Show whitespace changes button. (This fix can be done in a
separate review request)A few small changes were also made related to chunk highlighting.
Previously the minimum height of the highlight was 1, this was changed
to 0 because when a chunk was highlighted then its file was collapsed
there would be a 1px tall highlight left behind.Also, previously collapsing a file with either button would leave the
highlight in the same position. Now it will be updated to match the
shifted position of the chunk whenever either button is used to
collapse or expand.
A change I made to renderers.py had caused an error in the test
test_make_context_with_chunk_index
, but this has been fixed now.I have added tests to verify that the
minified
property added to
diffutils is working correctly (returns true if
depot_filename
contains .min., and false otherwise).Unit tests have also been added to verify that the new context
variablecollapse_file
is set properly in various situations.
A couple of the new tests
test_make_context_with_collapse_file_using_unchanged_file
and
test_make_context_with_collapse_file_using_file_with_no_chunks
may be unnecessary, because I'm not sure if a file can have
'num_changes': 0
without having'moved_or_copied': True
or'num_chunks': 0
without'newfile': True
Two new unit tests have been added to verify that the new onClick
event properly updates the classes of the button icon and tbodies
related to that file.Preferably, additional unit tests would be written to verify that
the onClick event updates only the classes of elements related
to the desired file. I don't think this will be difficult, but
right now I'm not sure how to do it without doubling the size of
the html template indiffReviewableViewTests.js
and possibly
needing to adjust many of the other tests in that file.
This is the only reason the review request is still WIP
Description | From | Last Updated |
---|---|---|
F841 local variable 'filediff' is assigned to but never used |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
F841 local variable 'filediff' is assigned to but never used |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
Col: 17 '$buttonIcon' is defined but never used. |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
You could turn this into a one-liner if you wanted. height = chunkEl.clientHeight ? chunkEl.clientHeight + 1 : 0; |
TB tbrockma |
- Description:
-
When viewing the diff of a review request not all files need to be
viewed, for example minified files don't need to be reviewed. It is also helpful to have a way to hide files you have already reviewed. Now files can be collapsed and expanded as the user wishes. Also,
minified files are collapsed by default. If a minified file is also a deleted, moved/copied, binary (I'm not
sure if this is even a possibility), or a new empty file then it will not be collapsed by default because there will just be a short message displayed instead of a large, one-line diff. - - Collapsing a diff does not work especially elegantly when the file only
contains whitespace changes. In this case the Hide/Show whitespace changes button can also be used to collapse the file. So the file can't be viewed unless both buttons allow it to be. One fix for this would be to hide the new button whenever a file is collapsed with the Hide/Show whitespace changes button. + + + + A few small changes were also made related to chunk highlighting.
+ + Previously the minimum height of the highlight was 1, this was changed
+ to 0 because when a chunk was highlighted then its file was collapsed + there would be a 1px tall highlight left behind. + + Also, previously collapsing a file with either button would leave the
+ highlight in the same position. Now it will be updated to match the + shifted position of the chunk whenever either button is used to + collapse or expand. - Testing Done:
-
A change I made to renderers.py had caused an error in the test
test_make_context_with_chunk_index
, but this has been fixed now.I have added tests to verify that the
minified
property added todiffutils is working correctly (ie, returns true if depot_filename
contains .min., and false if not.+ Two new unit tests have been added to verify that the new onClick
+ event properly updates the classes of the button icon and tbodies + related to that file. + ~ Additional front end tests need to be added to verify that the
~ new onclick function properly updates the classes of the ~ corresponding diff and only that diff. ~ Preferably, additional unit tests would be written to verify that
~ the onClick event updates only the classes of elements related ~ to the desired file. I don't think this will be difficult, but + right now I'm not sure how to do it without doubling the size of + the html template in diffReviewableViewTests.js
and possibly+ needing to adjust many of the other tests in that file. Other tests needed to verify the default state of files.
(only collapsed upon loading the page if it is minified and not deleted, copied, moved, binary, or new-empty). + + Other tests needed to verify the additional chunk highlighting
+ updates work as expected. (when a file is collapsed or expanded, + the highlighting is updated). - Commit:
-
a2eeaba62db64487228cbac243a6e508dd1a289ebbf41e8a9df370741e75491d7e6d4c75e8b37cdf
- Diff:
-
Revision 2 (+222 -15)
- Description:
-
When viewing the diff of a review request not all files need to be
viewed, for example minified files don't need to be reviewed. It is also helpful to have a way to hide files you have already reviewed. Now files can be collapsed and expanded as the user wishes. Also,
minified files are collapsed by default. If a minified file is also a deleted, moved/copied, binary (I'm not
sure if this is even a possibility), or a new empty file then it will not be collapsed by default because there will just be a short message displayed instead of a large, one-line diff. Collapsing a diff does not work especially elegantly when the file only
contains whitespace changes. In this case the Hide/Show whitespace changes button can also be used to collapse the file. So the file can't be viewed unless both buttons allow it to be. One fix for this would be to hide the new button whenever a file is collapsed with the Hide/Show whitespace changes button. ~ A few small changes were also made related to chunk highlighting.
~ ~ A few small changes were also made related to chunk highlighting.
~ Previously the minimum height of the highlight was 1, this was changed - Previously the minimum height of the highlight was 1, this was changed
to 0 because when a chunk was highlighted then its file was collapsed there would be a 1px tall highlight left behind. Also, previously collapsing a file with either button would leave the
highlight in the same position. Now it will be updated to match the shifted position of the chunk whenever either button is used to collapse or expand. - Testing Done:
-
A change I made to renderers.py had caused an error in the test
test_make_context_with_chunk_index
, but this has been fixed now.I have added tests to verify that the
minified
property added to~ diffutils is working correctly (ie, returns true if ~ depot_filename
contains .min., and false if not.~ diffutils is working correctly (returns true if ~ depot_filename
contains .min., and false otherwise).+ + Unit tests have also been added to verify that the new context
+ variable collapse_file
is set properly in various situations.+ A couple of the new tests + test_make_context_with_collapse_file_using_unchanged_file
and+ test_make_context_with_collapse_file_using_file_with_no_chunks
+ may be unnecessary, because I'm not sure if a file can have + 'num_changes': 0
without having'moved_or_copied': True
+ or 'num_chunks': 0
without'newfile': True
Two new unit tests have been added to verify that the new onClick
event properly updates the classes of the button icon and tbodies related to that file. Preferably, additional unit tests would be written to verify that
the onClick event updates only the classes of elements related to the desired file. I don't think this will be difficult, but right now I'm not sure how to do it without doubling the size of the html template in diffReviewableViewTests.js
and possiblyneeding to adjust many of the other tests in that file. - - Other tests needed to verify the default state of files.
- (only collapsed upon loading the page if it is minified and not - deleted, copied, moved, binary, or new-empty). - - Other tests needed to verify the additional chunk highlighting
- updates work as expected. (when a file is collapsed or expanded, - the highlighting is updated). - Commit:
-
bbf41e8a9df370741e75491d7e6d4c75e8b37cdf84007a82efcc02f34d627d624f09a744a746be46
- Diff:
-
Revision 3 (+491 -14)
- Commit:
-
84007a82efcc02f34d627d624f09a744a746be46151ea0b2b51b7f2967c4e76d8644ff25982c802d
- Diff:
-
Revision 4 (+491 -14)
Checks run (2 succeeded)
- Description:
-
When viewing the diff of a review request not all files need to be
viewed, for example minified files don't need to be reviewed. It is also helpful to have a way to hide files you have already reviewed. Now files can be collapsed and expanded as the user wishes. Also,
minified files are collapsed by default. If a minified file is also a deleted, moved/copied, binary (I'm not
sure if this is even a possibility), or a new empty file then it will not be collapsed by default because there will just be a short message displayed instead of a large, one-line diff. Collapsing a diff does not work especially elegantly when the file only
contains whitespace changes. In this case the Hide/Show whitespace changes button can also be used to collapse the file. So the file can't be viewed unless both buttons allow it to be. One fix for this would be to hide the new button whenever a file is collapsed with the ~ Hide/Show whitespace changes button. ~ Hide/Show whitespace changes button. (This fix can be done in a + separate review request) A few small changes were also made related to chunk highlighting.
Previously the minimum height of the highlight was 1, this was changed to 0 because when a chunk was highlighted then its file was collapsed there would be a 1px tall highlight left behind. Also, previously collapsing a file with either button would leave the
highlight in the same position. Now it will be updated to match the shifted position of the chunk whenever either button is used to collapse or expand. - Testing Done:
-
A change I made to renderers.py had caused an error in the test
test_make_context_with_chunk_index
, but this has been fixed now.I have added tests to verify that the
minified
property added todiffutils is working correctly (returns true if depot_filename
contains .min., and false otherwise).Unit tests have also been added to verify that the new context
variable collapse_file
is set properly in various situations.A couple of the new tests test_make_context_with_collapse_file_using_unchanged_file
andtest_make_context_with_collapse_file_using_file_with_no_chunks
may be unnecessary, because I'm not sure if a file can have 'num_changes': 0
without having'moved_or_copied': True
or 'num_chunks': 0
without'newfile': True
Two new unit tests have been added to verify that the new onClick
event properly updates the classes of the button icon and tbodies related to that file. Preferably, additional unit tests would be written to verify that
the onClick event updates only the classes of elements related to the desired file. I don't think this will be difficult, but right now I'm not sure how to do it without doubling the size of the html template in diffReviewableViewTests.js
and possibly~ needing to adjust many of the other tests in that file. ~ needing to adjust many of the other tests in that file. + This is the only reason the review request is still WIP