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]
|
[marked_old_line, marked_new_line]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def expand_all?
|
||||||
|
@expand_all || params[:expand].present?
|
||||||
|
end
|
||||||
|
|
||||||
def render_diff_for_path(diffs, diff_refs, project)
|
def render_diff_for_path(diffs, diff_refs, project)
|
||||||
diff_file = safe_diff_files(diffs, diff_refs).first
|
diff_file = safe_diff_files(diffs, diff_refs).first
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
- if !project.repository.diffable?(blob)
|
- if !project.repository.diffable?(blob)
|
||||||
.nothing-here-block This diff was suppressed by a .gitattributes entry.
|
.nothing-here-block This diff was suppressed by a .gitattributes entry.
|
||||||
- elsif diff_file.diff_lines.length > 0
|
- 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))
|
- 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 } }
|
.nothing-here-block.diff-collapsed{data: { diff_for_path: url } }
|
||||||
This diff is collapsed. Click to expand it.
|
This diff is collapsed. Click to expand it.
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
|
|
||||||
.content-block.oneline-block.files-changed
|
.content-block.oneline-block.files-changed
|
||||||
.inline-parallel-buttons
|
.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 show_whitespace_toggle
|
||||||
- if current_controller?(:commit)
|
- if current_controller?(:commit)
|
||||||
= commit_diff_whitespace_link(@project, @commit, class: 'hidden-xs')
|
= 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
|
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
|
end
|
||||||
|
|
Loading…
Reference in a new issue