diff options
-rw-r--r-- | app/helpers/commits_helper.rb | 9 | ||||
-rw-r--r-- | app/views/merge_request_versions/_merge_request_version.html.erb | 8 | ||||
-rw-r--r-- | public/javascripts/application.js | 8 | ||||
-rw-r--r-- | public/stylesheets/base.css | 34 | ||||
-rw-r--r-- | vendor/diff-display/lib/diff/display/data_structure.rb | 17 | ||||
-rw-r--r-- | vendor/diff-display/lib/diff/display/unified.rb | 6 |
6 files changed, 65 insertions, 17 deletions
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb index 34202a8..3cd6304 100644 --- a/app/helpers/commits_helper.rb +++ b/app/helpers/commits_helper.rb @@ -46,8 +46,8 @@ module CommitsHelper end end - def render_inline_diff(udiff) - differ = Diff::Display::Unified.new(udiff) + def render_inline_diff(udiff, differ = nil) + differ ||= Diff::Display::Unified.new(udiff) out = %Q{<table class="codediff inline">\n} out << "<thead>\n" out << "<tr>" @@ -97,4 +97,9 @@ module CommitsHelper out << "</ul>\n" out end + + def render_compact_diff_stats(stats) + %Q{(<span class="additions">#{stats[:additions].to_s}</span> / } + + %Q{<span class="deletions">#{stats[:deletions].to_s}</span>)} + end end diff --git a/app/views/merge_request_versions/_merge_request_version.html.erb b/app/views/merge_request_versions/_merge_request_version.html.erb index 365f4eb..9bd32e2 100644 --- a/app/views/merge_request_versions/_merge_request_version.html.erb +++ b/app/views/merge_request_versions/_merge_request_version.html.erb @@ -23,14 +23,16 @@ </div> <% diffs.each do |file| -%> +<% diff_renderer = Diff::Display::Unified.new(file.diff) %> <div class="file-diff"> <h4> - <a href="#" class="header" name="<%= h(force_utf8(file.a_path)) -%>"> + <span class="header"> <span class="closed"></span><%= h(file.a_path) -%> - </a> + </span> + <div class="diff-stats"><%= render_compact_diff_stats(diff_renderer.stats) -%></div> </h4> <div class="diff-hunks" style="display:none"> - <%= render_diff(file.diff, @diffmode) -%> + <%= render_inline_diff(file.diff, diff_renderer) -%> </div> </div> <% end -%> diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 4064023..1e90eb1 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -202,8 +202,8 @@ $(document).ready(function() { }); // toggling of diffs in merge-request diff browser - $('#merge_request_diff .file-diff a.header').live("click", function(event) { - var hunksContainer = $(this).parent().next(); + $('#merge_request_diff .file-diff h4').live("click", function(event) { + var hunksContainer = $(this).next(); if (hunksContainer.is(":visible")) { $(this).find("span").removeClass("open").addClass("closed"); hunksContainer.slideUp(); @@ -215,13 +215,13 @@ $(document).ready(function() { }); $("#merge_request_diff .file-diff-controls a#expand-all").live("click", function(e){ var container = $(this).parent().parent().parent(); - container.find('.file-diff a.header span').removeClass("closed").addClass("open"); + container.find('.file-diff .header span').removeClass("closed").addClass("open"); container.find('.diff-hunks:hidden').show(); e.preventDefault(); }); $("#merge_request_diff .file-diff-controls a#collapse-all").live("click", function(e){ var container = $(this).parent().parent().parent(); - container.find('.file-diff a.header span').removeClass("open").addClass("closed"); + container.find('.file-diff .header span').removeClass("open").addClass("closed"); container.find('.diff-hunks').hide(); e.preventDefault(); }); diff --git a/public/stylesheets/base.css b/public/stylesheets/base.css index e880ace..f77c7fc 100644 --- a/public/stylesheets/base.css +++ b/public/stylesheets/base.css @@ -2667,7 +2667,7 @@ Merge request commit selector #merge_request_diff { min-height: 4em; - padding: 0.4em 1em; + padding: 0; } #merge_request_commit_selector { @@ -2768,26 +2768,48 @@ Merge request commit selector #merge_request_diff .file-diff { border-bottom: 1px solid #dee7ed; - margin-bottom: 5px; + margin-bottom: 2px; } #merge_request_diff .file-diff:last-child { border-bottom: none; } #merge_request_diff .file-diff h4 { - margin-bottom: 5px; + margin: 0 0 0 0; + background: #eee; + color: #339900; + font-size: 13px; + padding: 3px 0 0px 5px; +} +#merge_request_diff .file-diff h4:hover { + background: #dedede; + cursor: pointer; } -#merge_request_diff .file-diff a.header span { +#merge_request_diff .file-diff .header span { padding-right: 20px; } -#merge_request_diff .file-diff a.header span.open { +#merge_request_diff .file-diff .header span.open { background: url('/images/silk/bullet_toggle_minus.png') no-repeat 0 0; } -#merge_request_diff .file-diff a.header span.closed { +#merge_request_diff .file-diff .header span.closed { background: url('/images/silk/bullet_toggle_plus.png') no-repeat 0 0; } +#merge_request_diff .file-diff .diff-stats { + font-size: 10px; + color: #666; + display: inline; + margin-left: 11px; +} +#merge_request_diff .file-diff .diff-stats .additions { color: #00BF00; } +#merge_request_diff .file-diff .diff-stats .deletions { color: #DC0000; } + +#merge_request_diff .file-diff .diff-hunks table { + margin-bottom: 2px +} + #merge_request_diff .file-diff-controls { float: right; color: #888; + margin-right: 5px; }
\ No newline at end of file diff --git a/vendor/diff-display/lib/diff/display/data_structure.rb b/vendor/diff-display/lib/diff/display/data_structure.rb index 176eaf9..1da658c 100644 --- a/vendor/diff-display/lib/diff/display/data_structure.rb +++ b/vendor/diff-display/lib/diff/display/data_structure.rb @@ -3,6 +3,21 @@ module Diff class Data < Array def initialize super + @stats = {:additions => 0, :deletions => 0} + end + + def stats + each do |block| + block.each do |line| + case line + when Diff::Display::AddLine + @stats[:additions] += 1 + when Diff::Display::RemLine + @stats[:deletions] += 1 + end + end + end + @stats end def to_diff @@ -190,4 +205,4 @@ module Diff class NonewlineBlock < Block; end #:startdoc:# end -end
\ No newline at end of file +end diff --git a/vendor/diff-display/lib/diff/display/unified.rb b/vendor/diff-display/lib/diff/display/unified.rb index b5e0169..9754f89 100644 --- a/vendor/diff-display/lib/diff/display/unified.rb +++ b/vendor/diff-display/lib/diff/display/unified.rb @@ -5,6 +5,10 @@ module Diff @data = Diff::Display::Unified::Generator.run(udiff) end attr_reader :data + + def stats + @stats ||= data.stats + end def render(renderer, out="") out << renderer.render(data) @@ -12,4 +16,4 @@ module Diff end end end -end
\ No newline at end of file +end |