Changes tab refactor with Vue JS

We are planning to refactor Changes tab with Vue to have the maximum performance and the best UX.

To be able to start refactoring Frontend needs some JSON which contains representation of the diff lines on Changes tab. Since discussions on Changes tab are the subset of the discussions included in discussions.json we also need to add line number information to diff discussions to be able to render them on the correct lines on Changes tab.

Related with #38178 (closed)

/cc @felipe_artur @smcgivern

Needs to be implemented

  • Setup Parent Merge Request Application
  • Store Setup for combining store for notes + changes tab
  • Discussion Counter
  • Skeleton Loading
  • Build Skeleton with placeholder components
    • MR compare versions
    • MR changed files and diff view type buttons
    • Diff file header
  • Initial rendering diff lines
    • Inline view
    • Parallel view
    • Make sure that all Haml logic implemented in new Vue components
    • @winh: Render subproject commits http://f.acet.me/GY9I.png
  • Implement rendering of non-text diffs aka Blob Diff Rendering
    • Image
    • PDF
    • Find other types of diffs and make sure that they are rendered correctly
  • Implement diff view type switching button http://f.acet.me/wB98.png
  • Implement "Hide whitespace changes" button
  • Implement "Expand all" button http://f.acet.me/aAiS.png @jivanvl
  • Implement added/deleted files component http://f.acet.me/29Sg.png
  • Implement changes between versions component http://f.acet.me/fD21.png
  • Implement diff header buttons http://f.acet.me/yOll.png
  • Implement collapse/expand of the diff file
    • When file header clicked
    • When toggle arrow clicked
    • Make sure that arrow icon shows correct position when toggled
  • Implement loading more context lines on gutter ...
  • Notes on Changes tab
  • Implement discussions for the image diffs
  • Make sure that we render commit author and partial comments notification widget properly http://f.acet.me/liBR.png

Needs to be fixed

TODO and FIXME comments

To fix later

  • Fix toggling a discussion on Changes tab also toggle the same discussion on Discussions tab because of shared expanded Boolean flag
Edited by Fatih Acet