• 
      

    Refactor RB.UploadAttachmentView to extend RB.DialogView

    Review Request #10884 — Created Feb. 5, 2020 and submitted

    Information

    Review Board
    release-3.0.x
    4a89476...

    Reviewers

    This review request refactors RB.UploadAttachmentView to extend RB.DialogView
    as opposed to calling the RB.DialogView constructor and modalBox directly.
    The change involves extending the RB.DialogView prototype for initialization,
    rendering, and events with the necessary properties in RB.UploadAttachmentView.
    RB.UploadAttachmentView also uses the button map provided by RB.DialogView to
    render its upload and cancel buttons, removing the need to create DOM nodes for
    them directly in the class.

    The 'path' id is also removed and replaced with a 'js-path' class to reduce the
    chance of conflicting elements.

    • dialogView unit tests still pass

    Manual testing:
    - opening the dialog, uploading a file, and submitting it (without editing the caption)
    - opening the dialog, uploading a file, editing the caption, and submitting it
    - opening the dialog, editing the caption, uploading a file, and submitting it
    - opening the dialog, uploading a file, then cancelling the dialog
    - opening the dialog, editing the caption, then cancelling the dialog
    - opening the dialog, then cancelling the dialog without uploading anything
    - verified the 'Upload' button is disabled unless a file is actually uploaded

    Description From Last Updated

    This looks pretty solid, but there's one thing that's going to be important to address. The uploadAttachmentView.js file is a …

    chipx86chipx86

    Can you flesh out the summary, description, and testing a bit? What I'd like to see is a bit more …

    chipx86chipx86

    Looks good, but I realized the new filename isn't in staticbundles.py, which means the new version isn't being used. Can …

    chipx86chipx86

    We've found a handful of quirky issues with _super(), so we're trying to move away from it. It can get …

    chipx86chipx86

    Single quotes should be used where possible. (Old code may be using double quotes still, but any new/moved code should …

    chipx86chipx86

    These should also be using single quotes.

    chipx86chipx86

    This method needs to return this. It should also document that in the docstring. The docstring should also be using …

    chipx86chipx86

    This should have a trailing comma

    daviddavid

    Since we've changed this to be es6 now, this should have a trailing comma.

    daviddavid

    Trailing comma

    daviddavid

    Trailing comma

    daviddavid

    Since this is now a new-style doc comment, it should be written in the imperative mood ("Render the dialog" rather …

    daviddavid
    chipx86
    1. 
        
    2. Show all issues

      This looks pretty solid, but there's one thing that's going to be important to address.

      The uploadAttachmentView.js file is a plain ES5 JavaScript file, but in it you're using some ES6 conventions (trailing commas on the last item in an array/dictionary), which isn't safe to include. So we either need to remove those or rename this to uploadAttachmentView.es6.js.

      I'd prefer the latter, so we can more easily maintain this going forward. Now this normally would also involve ES6ifying the file more, changing to newer-style function declarations (render() { ... } instead of render: function() { ... }) and using newer-style dedented templates, but I think even without those it's worth doing the rename.

      (And those changes should all probably happen as another change, rather than cluttering up this change -- you don't have to do that work, just saying.)

    3. Show all issues

      We've found a handful of quirky issues with _super(), so we're trying to move away from it. It can get into infinite loops, depending on aspects of the parent classes. Can you update this to directly reference the parent prototype's render method?

    4. 
        
    hxqlin
    chipx86
    1. 
        
    2. Show all issues

      Can you flesh out the summary, description, and testing a bit?

      What I'd like to see is a bit more in the summary and in the description on what this change does.

      Summary

      "Refactoring" can mean so many things, and is kind of generic, but the first line of the description is a good initial summary. "Refactor RB.UploadAttachmentView to extend RB.DialogView."

      Description

      The description should then elaborate on that, explaining the why of this. What does this refactor get us.

      The part about 'path' is a secondary detail, so it should be in its own paragraph. Use the first paragraph to tell the story of the reason for this change.

      Testing

      Testing should then provide enough information for the reviewer (and someone down the road potentially reproducing a bug) to know exactly what your testing process was. What were those manual tests? What did you do?

      I like to list one thing per paragraph, saying what I tested and what the conditions were.

      This is important, because it's easy to say something was tested but hard for a reviewer to know if that testing was sufficient, and they might have areas they're aware of to test that you may have missed.

    3. Show all issues

      Single quotes should be used where possible.

      (Old code may be using double quotes still, but any new/moved code should use single quotes.)

    4. Show all issues

      These should also be using single quotes.

    5. Show all issues

      This method needs to return this. It should also document that in the docstring.

      The docstring should also be using /** instead of /*, which will tell doc generators about it.

      This is old code from before we adopted any modern doc conventions, which is why it wasn't doing this already, but since you're making changes to it, it's a good time to move that over.

    6. 
        
    hxqlin
    david
    1. 
        
    2. Show all issues

      This should have a trailing comma

    3. Show all issues

      Since we've changed this to be es6 now, this should have a trailing comma.

    4. Show all issues

      Trailing comma

    5. Show all issues

      Trailing comma

    6. Show all issues

      Since this is now a new-style doc comment, it should be written in the imperative mood ("Render the dialog" rather than "Renders")

    7. 
        
    hxqlin
    mike_conley
    1. This looks great to me, thanks!

    2. 
        
    chipx86
    1. 
        
    2. Show all issues

      Looks good, but I realized the new filename isn't in staticbundles.py, which means the new version isn't being used. Can you add it there and do a new round of testing, make 100% sure it's all working and that your new code is being executed?

    3. 
        
    hxqlin
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-3.0.x (e94bac0)