summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/commits_helper.rb9
-rw-r--r--app/views/merge_request_versions/_merge_request_version.html.erb8
-rw-r--r--public/javascripts/application.js8
-rw-r--r--public/stylesheets/base.css34
-rw-r--r--vendor/diff-display/lib/diff/display/data_structure.rb17
-rw-r--r--vendor/diff-display/lib/diff/display/unified.rb6
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