line links for commit diff, css fixed for line diff

This commit is contained in:
Dmitriy Zaporozhets 2011-12-01 01:51:04 +02:00
parent b60b7b2e2b
commit 570f63daaf
7 changed files with 133 additions and 80 deletions

View file

@ -49,10 +49,3 @@
.no-padding { .no-padding {
padding:0 !important; padding:0 !important;
} }
/** COMMIT BLOCK **/
.commit-title{display: block;}
.commit-title{margin-bottom: 10px}
.commit-author{color: #999; font-weight: normal; font-style: italic;}
.commit-author strong{font-weight: bold; font-style: normal;}

View file

@ -27,14 +27,44 @@
} }
.diff_file_content{ .diff_file_content{
table {
border:none;
margin:0px;
padding:0px;
}
.old_line, .new_line { .old_line, .new_line {
background:#ECECEC; margin:0px;
color:#777; padding:0px;
width:35px; border:none;
float:left; background:#F7F7F7;
color:#333;
padding: 0px 5px; padding: 0px 5px;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
text-align:right; text-align:right;
min-width:35px;
max-width:35px;
width:35px;
a {
float:left;
width:35px;
font-weight:normal;
&:hover {
text-decoration:underline;
}
}
}
.line_content {
white-space:pre;
height:14px;
margin:0px;
padding:0px;
border:none;
&.new {
background: #DFD;
}
&.old {
background: #FDD;
}
} }
} }
@ -45,3 +75,24 @@ pre.commit_message {
font-weight:bold; font-weight:bold;
font-size:15px; font-size:15px;
} }
/** COMMIT BLOCK **/
.commit-title{display: block;}
.commit-title{margin-bottom: 10px}
.commit-author{color: #999; font-weight: normal; font-style: italic;}
.commit-author strong{font-weight: bold; font-style: normal;}
/** bordered list **/
ul.bordered-list {
margin:5px 0px;
padding:0px;
li {
padding: 5px;
border-bottom: 1px solid #EEE;
overflow: hidden;
display: block;
margin:0px;
}
}
ul.bordered-list li:last-child { border:none }

View file

@ -66,11 +66,8 @@ a {
} }
} }
.view_file { .view_file .view_file_header,
border:1px solid #CCC; .diff_file .diff_file_header {
margin-bottom:1em;
.view_file_header {
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
@ -81,8 +78,13 @@ a {
text-align: left; text-align: left;
color: #666; color: #666;
border-bottom: 1px solid #DEE2E3; border-bottom: 1px solid #DEE2E3;
padding: .9em 1em; padding: 7px 10px;
} }
.view_file {
border:1px solid #CCC;
margin-bottom:1em;
.view_file_content { .view_file_content {
background:#fff; background:#fff;
color:#514721; color:#514721;

View file

@ -1,19 +1,22 @@
module CommitsHelper module CommitsHelper
include Utils::CharEncode include Utils::CharEncode
def diff_line(line, line_new = 0, line_old = 0)
full_line = html_escape(line.gsub(/\n/, ''))
color = if line[0] == "+"
full_line = "<span class=\"old_line\">&nbsp;</span><span class=\"new_line\">#{line_new}</span> " + full_line
"#DFD"
elsif line[0] == "-"
full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">&nbsp;</span> " + full_line
"#FDD"
else
full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">#{line_new}</span> " + full_line
"none"
end
raw "<div style=\"white-space:pre;background:#{color};\">#{full_line}</div>" def old_line_number(line, i)
end
def new_line_number(line, i)
end
def diff_line_class(line)
if line[0] == "+"
"new"
elsif line[0] == "-"
"old"
else
nil
end
end end
def more_commits_link def more_commits_link

View file

@ -1,7 +1,7 @@
.file_stats .file_stats
= render "commits/diff_head" = render "commits/diff_head"
- @commit.diffs.each do |diff| - @commit.diffs.each_with_index do |diff, i|
- next if diff.diff.empty? - next if diff.diff.empty?
- file = (@commit.tree / diff.b_path) - file = (@commit.tree / diff.b_path)
- next unless file - next unless file
@ -15,7 +15,7 @@
%br/ %br/
.diff_file_content .diff_file_content
- if file.text? - if file.text?
= render :partial => "commits/text_file", :locals => { :diff => diff } = render :partial => "commits/text_file", :locals => { :diff => diff, :index => i }
- elsif file.image? - elsif file.image?
.diff_file_content_image .diff_file_content_image
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}

View file

@ -1,29 +1,26 @@
%table %ul.bordered-list
%thead
%th Files
- @commit.diffs.each do |diff| - @commit.diffs.each do |diff|
%tr %li
%td - if diff.deleted_file
- if diff.deleted_file %span.removed_file
%span.removed_file %a{:href => "##{diff.a_path}"}
%a{:href => "##{diff.a_path}"} = diff.a_path
= diff.a_path = image_tag "blueprint_delete.png"
= image_tag "blueprint_delete.png" - elsif diff.renamed_file
- elsif diff.renamed_file %span.moved_file
%span.moved_file %a{:href => "##{diff.b_path}"}
%a{:href => "##{diff.b_path}"} = diff.a_path
= diff.a_path = "->"
= "->" = diff.b_path
= diff.b_path = image_tag "blueprint_notice.png"
= image_tag "blueprint_notice.png" - elsif diff.new_file
- elsif diff.new_file %span.new_file
%span.new_file %a{:href => "##{diff.b_path}"}
%a{:href => "##{diff.b_path}"} = diff.b_path
= diff.b_path = image_tag "blueprint_add.png"
= image_tag "blueprint_add.png" - else
- else %span.edit_file
%span.edit_file %a{:href => "##{diff.b_path}"}
%a{:href => "##{diff.b_path}"} = diff.b_path
= diff.b_path = image_tag "blueprint_info.png"
= image_tag "blueprint_info.png"

View file

@ -1,21 +1,28 @@
- line_old = 0 %table
- line_new = 0 - line_old = 0
- lines_arr = diff.diff.lines.to_a - line_new = 0
- lines_arr.each do |line| - lines_arr = diff.diff.lines.to_a
- line = encode(line) - lines_arr.each do |line|
- next if line.match(/^--- \/dev\/null/) - line = encode(line)
- next if line.match(/^--- a/) - next if line.match(/^--- \/dev\/null/)
- next if line.match(/^\+\+\+ b/) - next if line.match(/^--- a/)
- if line.match(/^@@ -/) - next if line.match(/^\+\+\+ b/)
- line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 - if line.match(/^@@ -/)
- line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0
- next - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0
- next
= diff_line(line, line_new, line_old) - full_line = html_escape(line.gsub(/\n/, ''))
- if line[0] == "+" %tr.line_holder
- line_new += 1 %td.old_line
- elsif line[0] == "-" = link_to raw(diff_line_class(line) == "new" ? "&nbsp;" : line_old), "#OLD#{index}-#{line_old}", :id => "OLD#{index}-#{line_old}"
- line_old += 1 %td.new_line
- else = link_to raw(diff_line_class(line) == "old" ? "&nbsp;" : line_new) , "#NEW#{index}-#{line_new}", :id => "NEW#{index}-#{line_new}"
- line_new += 1 %td.line_content{:class => diff_line_class(full_line)}= raw "#{full_line} &nbsp;"
- line_old += 1 - if line[0] == "+"
- line_new += 1
- elsif line[0] == "-"
- line_old += 1
- else
- line_new += 1
- line_old += 1