Allow expanding all diffs at once
This commit is contained in:
parent
90a6be190f
commit
c082d92fb9
4 changed files with 45 additions and 1 deletions
|
@ -8,6 +8,10 @@ module DiffHelper
|
|||
[marked_old_line, marked_new_line]
|
||||
end
|
||||
|
||||
def expand_all?
|
||||
@expand_all || params[:expand].present?
|
||||
end
|
||||
|
||||
def render_diff_for_path(diffs, diff_refs, project)
|
||||
diff_file = safe_diff_files(diffs, diff_refs).first
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
- if !project.repository.diffable?(blob)
|
||||
.nothing-here-block This diff was suppressed by a .gitattributes entry.
|
||||
- elsif diff_file.diff_lines.length > 0
|
||||
- if diff_file.collapsed_by_default? && !@expand_all
|
||||
- if diff_file.collapsed_by_default? && !expand_all?
|
||||
- url = url_for(params.merge(action: :diff_for_path, path: diff_file.file_path, format: nil))
|
||||
.nothing-here-block.diff-collapsed{data: { diff_for_path: url } }
|
||||
This diff is collapsed. Click to expand it.
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
.content-block.oneline-block.files-changed
|
||||
.inline-parallel-buttons
|
||||
- unless expand_all?
|
||||
= link_to 'Expand all', url_for(params.merge(expand: 1, format: 'html')), class: 'btn btn-default'
|
||||
- if show_whitespace_toggle
|
||||
- if current_controller?(:commit)
|
||||
= commit_diff_whitespace_link(@project, @commit, class: 'hidden-xs')
|
||||
|
|
|
@ -135,4 +135,42 @@ feature 'Expand and collapse diffs', js: true, feature: true do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'expanding all diffs' do
|
||||
before do
|
||||
click_link('Expand all')
|
||||
wait_for_ajax
|
||||
execute_script('window.ajaxUris = []; $(document).ajaxSend(function(event, xhr, settings) { ajaxUris.push(settings.url) });')
|
||||
end
|
||||
|
||||
it 'reloads the page with all diffs expanded' do
|
||||
expect(small_diff).to have_selector('.code')
|
||||
expect(small_diff).not_to have_selector('.nothing-here-block')
|
||||
|
||||
expect(large_diff).to have_selector('.code')
|
||||
expect(large_diff).not_to have_selector('.nothing-here-block')
|
||||
end
|
||||
|
||||
context 'collapsing an expanded diff' do
|
||||
before { click_link('small_diff.md') }
|
||||
|
||||
it 'hides the diff content' do
|
||||
expect(small_diff).not_to have_selector('.code')
|
||||
expect(small_diff).to have_selector('.nothing-here-block')
|
||||
end
|
||||
|
||||
context 're-expanding the same diff' do
|
||||
before { click_link('small_diff.md') }
|
||||
|
||||
it 'shows the diff content' do
|
||||
expect(small_diff).to have_selector('.code')
|
||||
expect(small_diff).not_to have_selector('.nothing-here-block')
|
||||
end
|
||||
|
||||
it 'does not make a new HTTP request' do
|
||||
expect(evaluate_script('ajaxUris')).to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue