Commit 570f63daaff7ef2b7b05c83714c78755b5d07101
1 parent
b60b7b2e
Exists in
master
and in
4 other branches
line links for commit diff, css fixed for line diff
Showing
7 changed files
with
133 additions
and
80 deletions
Show diff stats
app/assets/stylesheets/application.css
| ... | ... | @@ -49,10 +49,3 @@ |
| 49 | 49 | .no-padding { |
| 50 | 50 | padding:0 !important; |
| 51 | 51 | } |
| 52 | - | |
| 53 | - | |
| 54 | -/** COMMIT BLOCK **/ | |
| 55 | -.commit-title{display: block;} | |
| 56 | -.commit-title{margin-bottom: 10px} | |
| 57 | -.commit-author{color: #999; font-weight: normal; font-style: italic;} | |
| 58 | -.commit-author strong{font-weight: bold; font-style: normal;} | ... | ... |
app/assets/stylesheets/commits.css.scss
| ... | ... | @@ -27,14 +27,44 @@ |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | .diff_file_content{ |
| 30 | + table { | |
| 31 | + border:none; | |
| 32 | + margin:0px; | |
| 33 | + padding:0px; | |
| 34 | + } | |
| 30 | 35 | .old_line, .new_line { |
| 31 | - background:#ECECEC; | |
| 32 | - color:#777; | |
| 33 | - width:35px; | |
| 34 | - float:left; | |
| 36 | + margin:0px; | |
| 37 | + padding:0px; | |
| 38 | + border:none; | |
| 39 | + background:#F7F7F7; | |
| 40 | + color:#333; | |
| 35 | 41 | padding: 0px 5px; |
| 36 | 42 | border-right: 1px solid #ccc; |
| 37 | 43 | text-align:right; |
| 44 | + min-width:35px; | |
| 45 | + max-width:35px; | |
| 46 | + width:35px; | |
| 47 | + a { | |
| 48 | + float:left; | |
| 49 | + width:35px; | |
| 50 | + font-weight:normal; | |
| 51 | + &:hover { | |
| 52 | + text-decoration:underline; | |
| 53 | + } | |
| 54 | + } | |
| 55 | + } | |
| 56 | + .line_content { | |
| 57 | + white-space:pre; | |
| 58 | + height:14px; | |
| 59 | + margin:0px; | |
| 60 | + padding:0px; | |
| 61 | + border:none; | |
| 62 | + &.new { | |
| 63 | + background: #DFD; | |
| 64 | + } | |
| 65 | + &.old { | |
| 66 | + background: #FDD; | |
| 67 | + } | |
| 38 | 68 | } |
| 39 | 69 | } |
| 40 | 70 | |
| ... | ... | @@ -45,3 +75,24 @@ pre.commit_message { |
| 45 | 75 | font-weight:bold; |
| 46 | 76 | font-size:15px; |
| 47 | 77 | } |
| 78 | + | |
| 79 | +/** COMMIT BLOCK **/ | |
| 80 | +.commit-title{display: block;} | |
| 81 | +.commit-title{margin-bottom: 10px} | |
| 82 | +.commit-author{color: #999; font-weight: normal; font-style: italic;} | |
| 83 | +.commit-author strong{font-weight: bold; font-style: normal;} | |
| 84 | + | |
| 85 | +/** bordered list **/ | |
| 86 | +ul.bordered-list { | |
| 87 | + margin:5px 0px; | |
| 88 | + padding:0px; | |
| 89 | + li { | |
| 90 | + padding: 5px; | |
| 91 | + border-bottom: 1px solid #EEE; | |
| 92 | + overflow: hidden; | |
| 93 | + display: block; | |
| 94 | + margin:0px; | |
| 95 | + } | |
| 96 | +} | |
| 97 | + | |
| 98 | +ul.bordered-list li:last-child { border:none } | ... | ... |
app/assets/stylesheets/projects.css.scss
| ... | ... | @@ -66,11 +66,8 @@ a { |
| 66 | 66 | } |
| 67 | 67 | } |
| 68 | 68 | |
| 69 | -.view_file { | |
| 70 | - border:1px solid #CCC; | |
| 71 | - margin-bottom:1em; | |
| 72 | - | |
| 73 | - .view_file_header { | |
| 69 | +.view_file .view_file_header, | |
| 70 | +.diff_file .diff_file_header { | |
| 74 | 71 | background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); |
| 75 | 72 | background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); |
| 76 | 73 | background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); |
| ... | ... | @@ -81,8 +78,13 @@ a { |
| 81 | 78 | text-align: left; |
| 82 | 79 | color: #666; |
| 83 | 80 | border-bottom: 1px solid #DEE2E3; |
| 84 | - padding: .9em 1em; | |
| 85 | - } | |
| 81 | + padding: 7px 10px; | |
| 82 | +} | |
| 83 | + | |
| 84 | +.view_file { | |
| 85 | + border:1px solid #CCC; | |
| 86 | + margin-bottom:1em; | |
| 87 | + | |
| 86 | 88 | .view_file_content { |
| 87 | 89 | background:#fff; |
| 88 | 90 | color:#514721; | ... | ... |
app/helpers/commits_helper.rb
| 1 | 1 | module CommitsHelper |
| 2 | 2 | include Utils::CharEncode |
| 3 | - def diff_line(line, line_new = 0, line_old = 0) | |
| 4 | - full_line = html_escape(line.gsub(/\n/, '')) | |
| 5 | - color = if line[0] == "+" | |
| 6 | - full_line = "<span class=\"old_line\"> </span><span class=\"new_line\">#{line_new}</span> " + full_line | |
| 7 | - "#DFD" | |
| 8 | - elsif line[0] == "-" | |
| 9 | - full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\"> </span> " + full_line | |
| 10 | - "#FDD" | |
| 11 | - else | |
| 12 | - full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">#{line_new}</span> " + full_line | |
| 13 | - "none" | |
| 14 | - end | |
| 15 | 3 | |
| 16 | - raw "<div style=\"white-space:pre;background:#{color};\">#{full_line}</div>" | |
| 4 | + def old_line_number(line, i) | |
| 5 | + | |
| 6 | + end | |
| 7 | + | |
| 8 | + def new_line_number(line, i) | |
| 9 | + | |
| 10 | + end | |
| 11 | + | |
| 12 | + def diff_line_class(line) | |
| 13 | + if line[0] == "+" | |
| 14 | + "new" | |
| 15 | + elsif line[0] == "-" | |
| 16 | + "old" | |
| 17 | + else | |
| 18 | + nil | |
| 19 | + end | |
| 17 | 20 | end |
| 18 | 21 | |
| 19 | 22 | def more_commits_link | ... | ... |
app/views/commits/_diff.html.haml
| 1 | 1 | .file_stats |
| 2 | 2 | = render "commits/diff_head" |
| 3 | 3 | |
| 4 | -- @commit.diffs.each do |diff| | |
| 4 | +- @commit.diffs.each_with_index do |diff, i| | |
| 5 | 5 | - next if diff.diff.empty? |
| 6 | 6 | - file = (@commit.tree / diff.b_path) |
| 7 | 7 | - next unless file |
| ... | ... | @@ -15,7 +15,7 @@ |
| 15 | 15 | %br/ |
| 16 | 16 | .diff_file_content |
| 17 | 17 | - if file.text? |
| 18 | - = render :partial => "commits/text_file", :locals => { :diff => diff } | |
| 18 | + = render :partial => "commits/text_file", :locals => { :diff => diff, :index => i } | |
| 19 | 19 | - elsif file.image? |
| 20 | 20 | .diff_file_content_image |
| 21 | 21 | %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | ... | ... |
app/views/commits/_diff_head.html.haml
| 1 | -%table | |
| 2 | - %thead | |
| 3 | - %th Files | |
| 1 | +%ul.bordered-list | |
| 4 | 2 | - @commit.diffs.each do |diff| |
| 5 | - %tr | |
| 6 | - %td | |
| 7 | - - if diff.deleted_file | |
| 8 | - %span.removed_file | |
| 9 | - %a{:href => "##{diff.a_path}"} | |
| 10 | - = diff.a_path | |
| 11 | - = image_tag "blueprint_delete.png" | |
| 12 | - - elsif diff.renamed_file | |
| 13 | - %span.moved_file | |
| 14 | - %a{:href => "##{diff.b_path}"} | |
| 15 | - = diff.a_path | |
| 16 | - = "->" | |
| 17 | - = diff.b_path | |
| 18 | - = image_tag "blueprint_notice.png" | |
| 19 | - - elsif diff.new_file | |
| 20 | - %span.new_file | |
| 21 | - %a{:href => "##{diff.b_path}"} | |
| 22 | - = diff.b_path | |
| 23 | - = image_tag "blueprint_add.png" | |
| 24 | - - else | |
| 25 | - %span.edit_file | |
| 26 | - %a{:href => "##{diff.b_path}"} | |
| 27 | - = diff.b_path | |
| 28 | - = image_tag "blueprint_info.png" | |
| 3 | + %li | |
| 4 | + - if diff.deleted_file | |
| 5 | + %span.removed_file | |
| 6 | + %a{:href => "##{diff.a_path}"} | |
| 7 | + = diff.a_path | |
| 8 | + = image_tag "blueprint_delete.png" | |
| 9 | + - elsif diff.renamed_file | |
| 10 | + %span.moved_file | |
| 11 | + %a{:href => "##{diff.b_path}"} | |
| 12 | + = diff.a_path | |
| 13 | + = "->" | |
| 14 | + = diff.b_path | |
| 15 | + = image_tag "blueprint_notice.png" | |
| 16 | + - elsif diff.new_file | |
| 17 | + %span.new_file | |
| 18 | + %a{:href => "##{diff.b_path}"} | |
| 19 | + = diff.b_path | |
| 20 | + = image_tag "blueprint_add.png" | |
| 21 | + - else | |
| 22 | + %span.edit_file | |
| 23 | + %a{:href => "##{diff.b_path}"} | |
| 24 | + = diff.b_path | |
| 25 | + = image_tag "blueprint_info.png" | |
| 29 | 26 | ... | ... |
app/views/commits/_text_file.html.haml
| 1 | -- line_old = 0 | |
| 2 | -- line_new = 0 | |
| 3 | -- lines_arr = diff.diff.lines.to_a | |
| 4 | -- lines_arr.each do |line| | |
| 5 | - - line = encode(line) | |
| 6 | - - next if line.match(/^--- \/dev\/null/) | |
| 7 | - - next if line.match(/^--- a/) | |
| 8 | - - next if line.match(/^\+\+\+ b/) | |
| 9 | - - if line.match(/^@@ -/) | |
| 10 | - - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 | |
| 11 | - - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 | |
| 12 | - - next | |
| 1 | +%table | |
| 2 | + - line_old = 0 | |
| 3 | + - line_new = 0 | |
| 4 | + - lines_arr = diff.diff.lines.to_a | |
| 5 | + - lines_arr.each do |line| | |
| 6 | + - line = encode(line) | |
| 7 | + - next if line.match(/^--- \/dev\/null/) | |
| 8 | + - next if line.match(/^--- a/) | |
| 9 | + - next if line.match(/^\+\+\+ b/) | |
| 10 | + - if line.match(/^@@ -/) | |
| 11 | + - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0 | |
| 12 | + - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0 | |
| 13 | + - next | |
| 13 | 14 | |
| 14 | - = diff_line(line, line_new, line_old) | |
| 15 | - - if line[0] == "+" | |
| 16 | - - line_new += 1 | |
| 17 | - - elsif line[0] == "-" | |
| 18 | - - line_old += 1 | |
| 19 | - - else | |
| 20 | - - line_new += 1 | |
| 21 | - - line_old += 1 | |
| 15 | + - full_line = html_escape(line.gsub(/\n/, '')) | |
| 16 | + %tr.line_holder | |
| 17 | + %td.old_line | |
| 18 | + = link_to raw(diff_line_class(line) == "new" ? " " : line_old), "#OLD#{index}-#{line_old}", :id => "OLD#{index}-#{line_old}" | |
| 19 | + %td.new_line | |
| 20 | + = link_to raw(diff_line_class(line) == "old" ? " " : line_new) , "#NEW#{index}-#{line_new}", :id => "NEW#{index}-#{line_new}" | |
| 21 | + %td.line_content{:class => diff_line_class(full_line)}= raw "#{full_line} " | |
| 22 | + - if line[0] == "+" | |
| 23 | + - line_new += 1 | |
| 24 | + - elsif line[0] == "-" | |
| 25 | + - line_old += 1 | |
| 26 | + - else | |
| 27 | + - line_new += 1 | |
| 28 | + - line_old += 1 | ... | ... |