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 {
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{
table {
border:none;
margin:0px;
padding:0px;
}
.old_line, .new_line {
background:#ECECEC;
color:#777;
width:35px;
float:left;
margin:0px;
padding:0px;
border:none;
background:#F7F7F7;
color:#333;
padding: 0px 5px;
border-right: 1px solid #ccc;
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-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 {
border:1px solid #CCC;
margin-bottom:1em;
.view_file_header {
.view_file .view_file_header,
.diff_file .diff_file_header {
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: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
@ -81,8 +78,13 @@ a {
text-align: left;
color: #666;
border-bottom: 1px solid #DEE2E3;
padding: .9em 1em;
}
padding: 7px 10px;
}
.view_file {
border:1px solid #CCC;
margin-bottom:1em;
.view_file_content {
background:#fff;
color:#514721;

View file

@ -1,19 +1,22 @@
module CommitsHelper
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
def more_commits_link

View file

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

View file

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

View file

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