Commit e33debc2147966525246bad999d0cacc4e676585
1 parent
6ab6c55d
Exists in
master
and in
4 other branches
Updated commit diff view with some minor visual modifications
Prepared diff view for multiple view modes Converted commits.js to coffeescript image info in separate coffeescript file Added swipe view mode Added onion skin viewMode
Showing
24 changed files
with
615 additions
and
277 deletions
Show diff stats
1.55 KB
1.5 KB
| ... | ... | @@ -0,0 +1,128 @@ |
| 1 | +class ImageFile | |
| 2 | + | |
| 3 | + # Width where images must fits in, for 2-up this gets divided by 2 | |
| 4 | + @availWidth = 900 | |
| 5 | + @viewModes = ['two-up', 'swipe'] | |
| 6 | + | |
| 7 | + constructor: (@file) -> | |
| 8 | + # Determine if old and new file has same dimensions, if not show 'two-up' view | |
| 9 | + this.requestImageInfo $('.two-up.view .frame.deleted img', @file), (deletedWidth, deletedHeight) => | |
| 10 | + this.requestImageInfo $('.two-up.view .frame.added img', @file), (width, height) => | |
| 11 | + if width == deletedWidth && height == deletedHeight | |
| 12 | + this.initViewModes() | |
| 13 | + else | |
| 14 | + this.initView('two-up') | |
| 15 | + | |
| 16 | + initViewModes: -> | |
| 17 | + viewMode = ImageFile.viewModes[0] | |
| 18 | + | |
| 19 | + $('.view-modes', @file).removeClass 'hide' | |
| 20 | + $('.view-modes-menu', @file).on 'click', 'li', (event) => | |
| 21 | + unless $(event.currentTarget).hasClass('active') | |
| 22 | + this.activateViewMode(event.currentTarget.className) | |
| 23 | + | |
| 24 | + this.activateViewMode(viewMode) | |
| 25 | + | |
| 26 | + activateViewMode: (viewMode) -> | |
| 27 | + $('.view-modes-menu li', @file) | |
| 28 | + .removeClass('active') | |
| 29 | + .filter(".#{viewMode}").addClass 'active' | |
| 30 | + $(".view:visible:not(.#{viewMode})", @file).fadeOut 200, => | |
| 31 | + $(".view.#{viewMode}", @file).fadeIn(200) | |
| 32 | + this.initView viewMode | |
| 33 | + | |
| 34 | + initView: (viewMode) -> | |
| 35 | + this.views[viewMode].call(this) | |
| 36 | + | |
| 37 | + prepareFrames = (view) -> | |
| 38 | + maxWidth = 0 | |
| 39 | + maxHeight = 0 | |
| 40 | + $('.frame', view).each (index, frame) => | |
| 41 | + width = $(frame).width() | |
| 42 | + height = $(frame).height() | |
| 43 | + maxWidth = if width > maxWidth then width else maxWidth | |
| 44 | + maxHeight = if height > maxHeight then height else maxHeight | |
| 45 | + .css | |
| 46 | + width: maxWidth | |
| 47 | + height: maxHeight | |
| 48 | + | |
| 49 | + [maxWidth, maxHeight] | |
| 50 | + | |
| 51 | + views: | |
| 52 | + 'two-up': -> | |
| 53 | + $('.two-up.view .wrap', @file).each (index, wrap) => | |
| 54 | + $('img', wrap).each -> | |
| 55 | + currentWidth = $(this).width() | |
| 56 | + if currentWidth > ImageFile.availWidth / 2 | |
| 57 | + $(this).width ImageFile.availWidth / 2 | |
| 58 | + | |
| 59 | + this.requestImageInfo $('img', wrap), (width, height) -> | |
| 60 | + $('.image-info .meta-width', wrap).text "#{width}px" | |
| 61 | + $('.image-info .meta-height', wrap).text "#{height}px" | |
| 62 | + $('.image-info', wrap).removeClass('hide') | |
| 63 | + | |
| 64 | + 'swipe': -> | |
| 65 | + maxWidth = 0 | |
| 66 | + maxHeight = 0 | |
| 67 | + | |
| 68 | + $('.swipe.view', @file).each (index, view) => | |
| 69 | + | |
| 70 | + [maxWidth, maxHeight] = prepareFrames(view) | |
| 71 | + | |
| 72 | + $('.swipe-frame', view).css | |
| 73 | + width: maxWidth + 16 | |
| 74 | + height: maxHeight + 28 | |
| 75 | + | |
| 76 | + $('.swipe-wrap', view).css | |
| 77 | + width: maxWidth + 1 | |
| 78 | + height: maxHeight + 2 | |
| 79 | + | |
| 80 | + $('.swipe-bar', view).css | |
| 81 | + left: 0 | |
| 82 | + .draggable | |
| 83 | + axis: 'x' | |
| 84 | + containment: 'parent' | |
| 85 | + drag: (event) -> | |
| 86 | + $('.swipe-wrap', view).width (maxWidth + 1) - $(this).position().left | |
| 87 | + stop: (event) -> | |
| 88 | + $('.swipe-wrap', view).width (maxWidth + 1) - $(this).position().left | |
| 89 | + | |
| 90 | + 'onion-skin': -> | |
| 91 | + maxWidth = 0 | |
| 92 | + maxHeight = 0 | |
| 93 | + | |
| 94 | + dragTrackWidth = $('.drag-track', @file).width() - $('.dragger', @file).width() | |
| 95 | + | |
| 96 | + $('.onion-skin.view', @file).each (index, view) => | |
| 97 | + | |
| 98 | + [maxWidth, maxHeight] = prepareFrames(view) | |
| 99 | + | |
| 100 | + $('.onion-skin-frame', view).css | |
| 101 | + width: maxWidth + 16 | |
| 102 | + height: maxHeight + 28 | |
| 103 | + | |
| 104 | + $('.swipe-wrap', view).css | |
| 105 | + width: maxWidth + 1 | |
| 106 | + height: maxHeight + 2 | |
| 107 | + | |
| 108 | + $('.dragger', view).css | |
| 109 | + left: dragTrackWidth | |
| 110 | + .draggable | |
| 111 | + axis: 'x' | |
| 112 | + containment: 'parent' | |
| 113 | + drag: (event) -> | |
| 114 | + $('.frame.added', view).css('opacity', $(this).position().left / dragTrackWidth) | |
| 115 | + stop: (event) -> | |
| 116 | + $('.frame.added', view).css('opacity', $(this).position().left / dragTrackWidth) | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + requestImageInfo: (img, callback) -> | |
| 121 | + domImg = img.get(0) | |
| 122 | + if domImg.complete | |
| 123 | + callback.call(this, domImg.naturalWidth, domImg.naturalHeight) | |
| 124 | + else | |
| 125 | + img.on 'load', => | |
| 126 | + callback.call(this, domImg.naturalWidth, domImg.naturalHeight) | |
| 127 | + | |
| 128 | +this.ImageFile = ImageFile | |
| 0 | 129 | \ No newline at end of file | ... | ... |
app/assets/javascripts/commits.js
| ... | ... | @@ -1,59 +0,0 @@ |
| 1 | -var CommitsList = { | |
| 2 | - ref:null, | |
| 3 | - limit:0, | |
| 4 | - offset:0, | |
| 5 | - disable:false, | |
| 6 | - | |
| 7 | - init: | |
| 8 | - function(ref, limit) { | |
| 9 | - $(".day-commits-table li.commit").live('click', function(e){ | |
| 10 | - if(e.target.nodeName != "A") { | |
| 11 | - location.href = $(this).attr("url"); | |
| 12 | - e.stopPropagation(); | |
| 13 | - return false; | |
| 14 | - } | |
| 15 | - }); | |
| 16 | - | |
| 17 | - this.ref=ref; | |
| 18 | - this.limit=limit; | |
| 19 | - this.offset=limit; | |
| 20 | - this.initLoadMore(); | |
| 21 | - $('.loading').show(); | |
| 22 | - }, | |
| 23 | - | |
| 24 | - getOld: | |
| 25 | - function() { | |
| 26 | - $('.loading').show(); | |
| 27 | - $.ajax({ | |
| 28 | - type: "GET", | |
| 29 | - url: location.href, | |
| 30 | - data: "limit=" + this.limit + "&offset=" + this.offset + "&ref=" + this.ref, | |
| 31 | - complete: function(){ $('.loading').hide()}, | |
| 32 | - dataType: "script"}); | |
| 33 | - }, | |
| 34 | - | |
| 35 | - append: | |
| 36 | - function(count, html) { | |
| 37 | - $("#commits_list").append(html); | |
| 38 | - if(count > 0) { | |
| 39 | - this.offset += count; | |
| 40 | - } else { | |
| 41 | - this.disable = true; | |
| 42 | - } | |
| 43 | - }, | |
| 44 | - | |
| 45 | - initLoadMore: | |
| 46 | - function() { | |
| 47 | - $(document).endlessScroll({ | |
| 48 | - bottomPixels: 400, | |
| 49 | - fireDelay: 1000, | |
| 50 | - fireOnce:true, | |
| 51 | - ceaseFire: function() { | |
| 52 | - return CommitsList.disable; | |
| 53 | - }, | |
| 54 | - callback: function(i) { | |
| 55 | - CommitsList.getOld(); | |
| 56 | - } | |
| 57 | - }); | |
| 58 | - } | |
| 59 | -} |
| ... | ... | @@ -0,0 +1,54 @@ |
| 1 | +class CommitsList | |
| 2 | + @data = | |
| 3 | + ref: null | |
| 4 | + limit: 0 | |
| 5 | + offset: 0 | |
| 6 | + @disable = false | |
| 7 | + | |
| 8 | + @showProgress: -> | |
| 9 | + $('.loading').show() | |
| 10 | + | |
| 11 | + @hideProgress: -> | |
| 12 | + $('.loading').hide() | |
| 13 | + | |
| 14 | + @init: (ref, limit) -> | |
| 15 | + $(".day-commits-table li.commit").live 'click', (event) -> | |
| 16 | + if event.target.nodeName != "A" | |
| 17 | + location.href = $(this).attr("url") | |
| 18 | + e.stopPropagation() | |
| 19 | + return false | |
| 20 | + | |
| 21 | + @data.ref = ref | |
| 22 | + @data.limit = limit | |
| 23 | + @data.offset = limit | |
| 24 | + | |
| 25 | + this.initLoadMore() | |
| 26 | + this.showProgress(); | |
| 27 | + | |
| 28 | + @getOld: -> | |
| 29 | + this.showProgress() | |
| 30 | + $.ajax | |
| 31 | + type: "GET" | |
| 32 | + url: location.href | |
| 33 | + data: @data | |
| 34 | + complete: this.hideProgress | |
| 35 | + dataType: "script" | |
| 36 | + | |
| 37 | + @append: (count, html) -> | |
| 38 | + $("#commits-list").append(html) | |
| 39 | + if count > 0 | |
| 40 | + @data.offset += count | |
| 41 | + else | |
| 42 | + @disable = true | |
| 43 | + | |
| 44 | + @initLoadMore: -> | |
| 45 | + $(document).endlessScroll | |
| 46 | + bottomPixels: 400 | |
| 47 | + fireDelay: 1000 | |
| 48 | + fireOnce: true | |
| 49 | + ceaseFire: => | |
| 50 | + @disable | |
| 51 | + callback: => | |
| 52 | + this.getOld() | |
| 53 | + | |
| 54 | +this.CommitsList = CommitsList | |
| 0 | 55 | \ No newline at end of file | ... | ... |
app/assets/stylesheets/common.scss
app/assets/stylesheets/gitlab_bootstrap/files.scss
| ... | ... | @@ -135,7 +135,7 @@ |
| 135 | 135 | pre { |
| 136 | 136 | border: none; |
| 137 | 137 | border-radius: 0; |
| 138 | - font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace; | |
| 138 | + font-family: $monospace_font; | |
| 139 | 139 | font-size: 12px !important; |
| 140 | 140 | line-height: 16px !important; |
| 141 | 141 | margin: 0; | ... | ... |
app/assets/stylesheets/gitlab_bootstrap/fonts.scss
app/assets/stylesheets/gitlab_bootstrap/typography.scss
| ... | ... | @@ -21,7 +21,7 @@ h6 { |
| 21 | 21 | |
| 22 | 22 | /** CODE **/ |
| 23 | 23 | pre { |
| 24 | - font-family:'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace; | |
| 24 | + font-family: $monospace_font; | |
| 25 | 25 | |
| 26 | 26 | &.dark { |
| 27 | 27 | background: #333; |
| ... | ... | @@ -79,7 +79,7 @@ a:focus { |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | 81 | .monospace { |
| 82 | - font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace; | |
| 82 | + font-family: $monospace_font; | |
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | /** | ... | ... |
app/assets/stylesheets/gitlab_bootstrap/variables.scss
app/assets/stylesheets/sections/commits.scss
| 1 | 1 | /** |
| 2 | - * | |
| 3 | - * COMMIT SHOw | |
| 4 | - * | |
| 2 | + * Commit file | |
| 5 | 3 | */ |
| 6 | 4 | .commit-committer-link, |
| 7 | 5 | .commit-author-link { |
| ... | ... | @@ -12,11 +10,11 @@ |
| 12 | 10 | } |
| 13 | 11 | } |
| 14 | 12 | |
| 15 | -.diff_file { | |
| 13 | +.file { | |
| 16 | 14 | border: 1px solid #CCC; |
| 17 | 15 | margin-bottom: 1em; |
| 18 | 16 | |
| 19 | - .diff_file_header { | |
| 17 | + .header { | |
| 20 | 18 | @extend .clearfix; |
| 21 | 19 | padding: 5px 5px 5px 10px; |
| 22 | 20 | color: #555; |
| ... | ... | @@ -28,32 +26,35 @@ |
| 28 | 26 | background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); |
| 29 | 27 | background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); |
| 30 | 28 | |
| 29 | + a{ | |
| 30 | + color: $style_color; | |
| 31 | + } | |
| 32 | + | |
| 31 | 33 | > span { |
| 32 | - font-family: $monospace; | |
| 34 | + font-family: $monospace_font; | |
| 33 | 35 | font-size: 14px; |
| 34 | 36 | line-height: 30px; |
| 35 | 37 | } |
| 36 | 38 | |
| 37 | - a.view-commit{ | |
| 39 | + a.view-file{ | |
| 38 | 40 | font-weight: bold; |
| 39 | 41 | } |
| 40 | 42 | |
| 41 | 43 | .commit-short-id{ |
| 42 | - font-family: $monospace; | |
| 44 | + font-family: $monospace_font; | |
| 43 | 45 | font-size: smaller; |
| 44 | 46 | } |
| 45 | 47 | |
| 46 | 48 | .file-mode{ |
| 47 | - font-family: $monospace; | |
| 49 | + font-family: $monospace_font; | |
| 48 | 50 | } |
| 49 | 51 | } |
| 50 | - .diff_file_content { | |
| 52 | + .content { | |
| 51 | 53 | overflow: auto; |
| 52 | 54 | overflow-y: hidden; |
| 53 | - background: #fff; | |
| 55 | + background: #FFF; | |
| 54 | 56 | color: #333; |
| 55 | 57 | font-size: 12px; |
| 56 | - font-family: $monospace; | |
| 57 | 58 | .old{ |
| 58 | 59 | span.idiff{ |
| 59 | 60 | background-color: #FAA; |
| ... | ... | @@ -66,114 +67,274 @@ |
| 66 | 67 | } |
| 67 | 68 | |
| 68 | 69 | table { |
| 70 | + font-family: $monospace_font; | |
| 71 | + border: none; | |
| 72 | + margin: 0px; | |
| 73 | + padding: 0px; | |
| 69 | 74 | td { |
| 70 | 75 | line-height: 18px; |
| 76 | + font-size: 12px; | |
| 77 | + } | |
| 78 | + } | |
| 79 | + .old_line, .new_line { | |
| 80 | + margin: 0px; | |
| 81 | + padding: 0px; | |
| 82 | + border: none; | |
| 83 | + background: #EEE; | |
| 84 | + color: #666; | |
| 85 | + padding: 0px 5px; | |
| 86 | + border-right: 1px solid #ccc; | |
| 87 | + text-align: right; | |
| 88 | + min-width: 35px; | |
| 89 | + max-width: 35px; | |
| 90 | + width: 35px; | |
| 91 | + @include user-select(none); | |
| 92 | + a { | |
| 93 | + float: left; | |
| 94 | + width: 35px; | |
| 95 | + font-weight: normal; | |
| 96 | + color: #666; | |
| 97 | + &:hover { | |
| 98 | + text-decoration: underline; | |
| 99 | + } | |
| 100 | + } | |
| 101 | + } | |
| 102 | + .line_content { | |
| 103 | + white-space: pre; | |
| 104 | + height: 14px; | |
| 105 | + margin: 0px; | |
| 106 | + padding: 0px; | |
| 107 | + border: none; | |
| 108 | + &.new { | |
| 109 | + background: #CFD; | |
| 110 | + } | |
| 111 | + &.old { | |
| 112 | + background: #FDD; | |
| 113 | + } | |
| 114 | + &.matched { | |
| 115 | + color: #ccc; | |
| 116 | + background: #fafafa; | |
| 71 | 117 | } |
| 72 | 118 | } |
| 73 | 119 | } |
| 74 | - .diff_file_content_image { | |
| 75 | - background: #eee; | |
| 120 | + .image { | |
| 121 | + background: #ddd; | |
| 76 | 122 | text-align: center; |
| 77 | - .image { | |
| 123 | + padding: 30px; | |
| 124 | + .wrap{ | |
| 78 | 125 | display: inline-block; |
| 79 | - margin: 50px; | |
| 80 | - max-width: 400px; | |
| 81 | - | |
| 126 | + } | |
| 127 | + | |
| 128 | + .frame { | |
| 129 | + display: inline-block; | |
| 130 | + background-color: #fff; | |
| 131 | + line-height: 0; | |
| 82 | 132 | img{ |
| 133 | + border: 1px solid #FFF; | |
| 83 | 134 | background: url('trans_bg.gif'); |
| 84 | 135 | } |
| 136 | + &.deleted { | |
| 137 | + border: 1px solid $deleted; | |
| 138 | + } | |
| 85 | 139 | |
| 86 | - &.diff_removed { | |
| 87 | - img{ | |
| 88 | - border: 1px solid #C00; | |
| 89 | - } | |
| 140 | + &.added { | |
| 141 | + border: 1px solid $added; | |
| 90 | 142 | } |
| 143 | + } | |
| 144 | + .image-info{ | |
| 145 | + font-size: 12px; | |
| 146 | + margin: 5px 0 0 0; | |
| 147 | + color: grey; | |
| 148 | + } | |
| 91 | 149 | |
| 92 | - &.diff_added { | |
| 93 | - img{ | |
| 94 | - border: 1px solid #0C0; | |
| 150 | + .view.swipe{ | |
| 151 | + position: relative; | |
| 152 | + | |
| 153 | + .swipe-frame{ | |
| 154 | + display: block; | |
| 155 | + margin: auto; | |
| 156 | + position: relative; | |
| 157 | + } | |
| 158 | + .swipe-wrap{ | |
| 159 | + overflow: hidden; | |
| 160 | + border-left: 1px solid #999; | |
| 161 | + position: absolute; | |
| 162 | + display: block; | |
| 163 | + top: 13px; | |
| 164 | + right: 7px; | |
| 165 | + } | |
| 166 | + .frame{ | |
| 167 | + top: 0; | |
| 168 | + right: 0; | |
| 169 | + position: absolute; | |
| 170 | + &.deleted{ | |
| 171 | + margin: 0; | |
| 172 | + display: block; | |
| 173 | + top: 13px; | |
| 174 | + right: 7px; | |
| 95 | 175 | } |
| 96 | 176 | } |
| 97 | - | |
| 98 | - .image-info{ | |
| 99 | - margin: 5px 0 0 0; | |
| 177 | + .swipe-bar{ | |
| 178 | + display: block; | |
| 179 | + height: 100%; | |
| 180 | + width: 15px; | |
| 181 | + z-index: 100; | |
| 182 | + position: absolute; | |
| 183 | + cursor: pointer; | |
| 184 | + &:hover{ | |
| 185 | + .top-handle{ | |
| 186 | + background-position: -15px 3px; | |
| 187 | + } | |
| 188 | + .bottom-handle{ | |
| 189 | + background-position: -15px -11px; | |
| 190 | + } | |
| 191 | + }; | |
| 192 | + .top-handle{ | |
| 193 | + display: block; | |
| 194 | + height: 14px; | |
| 195 | + width: 15px; | |
| 196 | + position: absolute; | |
| 197 | + top: 0px; | |
| 198 | + background: url('swipemode_sprites.gif') 0 3px no-repeat; | |
| 199 | + } | |
| 200 | + .bottom-handle{ | |
| 201 | + display: block; | |
| 202 | + height: 14px; | |
| 203 | + width: 15px; | |
| 204 | + position: absolute; | |
| 205 | + bottom: 0px; | |
| 206 | + background: url('swipemode_sprites.gif') 0 -11px no-repeat; | |
| 207 | + } | |
| 100 | 208 | } |
| 101 | - } | |
| 102 | - | |
| 103 | - &.img_compared { | |
| 104 | - .image { | |
| 105 | - max-width: 300px; | |
| 209 | + } //.view.swipe | |
| 210 | + .view.onion-skin{ | |
| 211 | + .onion-skin-frame{ | |
| 212 | + display: block; | |
| 213 | + margin: auto; | |
| 214 | + position: relative; | |
| 106 | 215 | } |
| 107 | - } | |
| 216 | + .frame.added, .frame.deleted { | |
| 217 | + position: absolute; | |
| 218 | + display: block; | |
| 219 | + top: 0px; | |
| 220 | + left: 0px; | |
| 221 | + } | |
| 222 | + .controls{ | |
| 223 | + display: block; | |
| 224 | + height: 14px; | |
| 225 | + width: 300px; | |
| 226 | + z-index: 100; | |
| 227 | + position: absolute; | |
| 228 | + bottom: 0px; | |
| 229 | + left: 50%; | |
| 230 | + margin-left: -150px; | |
| 231 | + | |
| 232 | + .drag-track{ | |
| 233 | + display: block; | |
| 234 | + position: absolute; | |
| 235 | + left: 12px; | |
| 236 | + height: 10px; | |
| 237 | + width: 276px; | |
| 238 | + background: url('onion_skin_sprites.gif') -4px -20px repeat-x; | |
| 239 | + } | |
| 240 | + | |
| 241 | + .dragger { | |
| 242 | + display: block; | |
| 243 | + position: absolute; | |
| 244 | + left: 0px; | |
| 245 | + top: 0px; | |
| 246 | + height: 14px; | |
| 247 | + width: 14px; | |
| 248 | + background: url('onion_skin_sprites.gif') 0px -34px repeat-x; | |
| 249 | + cursor: pointer; | |
| 250 | + } | |
| 251 | + | |
| 252 | + .transparent { | |
| 253 | + display: block; | |
| 254 | + position: absolute; | |
| 255 | + top: 2px; | |
| 256 | + right: 0px; | |
| 257 | + height: 10px; | |
| 258 | + width: 10px; | |
| 259 | + background: url('onion_skin_sprites.gif') -2px 0px no-repeat; | |
| 260 | + } | |
| 261 | + | |
| 262 | + .opaque { | |
| 263 | + display: block; | |
| 264 | + position: absolute; | |
| 265 | + top: 2px; | |
| 266 | + left: 0px; | |
| 267 | + height: 10px; | |
| 268 | + width: 10px; | |
| 269 | + background: url('onion_skin_sprites.gif') -2px -10px no-repeat; | |
| 270 | + } | |
| 271 | + } | |
| 272 | + } //.view.onion-skin | |
| 108 | 273 | } |
| 109 | -} | |
| 274 | + .view-modes{ | |
| 110 | 275 | |
| 111 | -.diff_file_content{ | |
| 112 | - table { | |
| 113 | - border: none; | |
| 114 | - margin: 0px; | |
| 115 | - padding: 0px; | |
| 116 | - tr { | |
| 117 | - td { | |
| 118 | - font-size: 12px; | |
| 119 | - } | |
| 276 | + padding: 10px; | |
| 277 | + text-align: center; | |
| 278 | + | |
| 279 | + background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); | |
| 280 | + background-image: -webkit-linear-gradient(#eee 6.6%, #dfdfdf); | |
| 281 | + background-image: -moz-linear-gradient(#eee 6.6%, #dfdfdf); | |
| 282 | + background-image: -o-linear-gradient(#eee 6.6%, #dfdfdf); | |
| 283 | + | |
| 284 | + ul, li{ | |
| 285 | + list-style: none; | |
| 286 | + margin: 0; | |
| 287 | + padding: 0; | |
| 288 | + display: inline-block; | |
| 120 | 289 | } |
| 121 | - } | |
| 122 | - .new_line, | |
| 123 | - .old_line, | |
| 124 | - .notes_line { | |
| 125 | - margin:0px; | |
| 126 | - padding:0px; | |
| 127 | - border:none; | |
| 128 | - background:#EEE; | |
| 129 | - color:#666; | |
| 130 | - padding: 0px 5px; | |
| 131 | - border-right: 1px solid #ccc; | |
| 132 | - text-align: right; | |
| 133 | - min-width: 35px; | |
| 134 | - max-width: 35px; | |
| 135 | - width: 35px; | |
| 136 | - moz-user-select: none; | |
| 137 | - -khtml-user-select: none; | |
| 138 | - user-select: none; | |
| 139 | - | |
| 140 | - a { | |
| 141 | - float: left; | |
| 142 | - width: 35px; | |
| 143 | - font-weight: normal; | |
| 144 | - color: #666; | |
| 145 | - &:hover { | |
| 290 | + | |
| 291 | + li{ | |
| 292 | + color: grey; | |
| 293 | + border-left: 1px solid #c1c1c1; | |
| 294 | + padding: 0 12px 0 16px; | |
| 295 | + cursor: pointer; | |
| 296 | + &:first-child{ | |
| 297 | + border-left: none; | |
| 298 | + } | |
| 299 | + &:hover{ | |
| 146 | 300 | text-decoration: underline; |
| 147 | 301 | } |
| 148 | - } | |
| 149 | - } | |
| 150 | - .line_content { | |
| 151 | - white-space: pre; | |
| 152 | - height: 14px; | |
| 153 | - margin: 0px; | |
| 154 | - padding: 0px; | |
| 155 | - border: none; | |
| 156 | - &.new { | |
| 157 | - background: #CFD; | |
| 158 | - } | |
| 159 | - &.old { | |
| 160 | - background: #FDD; | |
| 161 | - } | |
| 162 | - &.matched { | |
| 163 | - color: #ccc; | |
| 164 | - background: #fafafa; | |
| 302 | + &.active{ | |
| 303 | + &:hover{ | |
| 304 | + text-decoration: none; | |
| 305 | + } | |
| 306 | + cursor: default; | |
| 307 | + color: #333; | |
| 308 | + } | |
| 309 | + &.disabled{ | |
| 310 | + display: none; | |
| 311 | + } | |
| 165 | 312 | } |
| 166 | 313 | } |
| 167 | 314 | } |
| 168 | 315 | |
| 169 | 316 | /** COMMIT BLOCK **/ |
| 170 | -.commit-title{display: block;} | |
| 171 | -.commit-title{margin-bottom: 10px} | |
| 172 | -.commit-author, .commit-committer{display: block;color: #999; font-weight: normal; font-style: italic;} | |
| 173 | -.commit-author strong, .commit-committer strong{font-weight: bold; font-style: normal;} | |
| 317 | +.commit-title{ | |
| 318 | + display: block; | |
| 319 | +} | |
| 320 | +.commit-title{ | |
| 321 | + margin-bottom: 10px; | |
| 322 | +} | |
| 323 | +.commit-author, .commit-committer{ | |
| 324 | + display: block; | |
| 325 | + color: #999; | |
| 326 | + font-weight: normal; | |
| 327 | + font-style: italic; | |
| 328 | +} | |
| 329 | +.commit-author strong, .commit-committer strong{ | |
| 330 | + font-weight: bold; | |
| 331 | + font-style: normal; | |
| 332 | +} | |
| 174 | 333 | |
| 175 | 334 | |
| 176 | -/** COMMIT ROW **/ | |
| 335 | +/** | |
| 336 | + * COMMIT ROW | |
| 337 | + */ | |
| 177 | 338 | .commit { |
| 178 | 339 | .browse_code_link_holder { |
| 179 | 340 | @extend .span2; |
| ... | ... | @@ -199,11 +360,10 @@ |
| 199 | 360 | float: left; |
| 200 | 361 | @extend .lined; |
| 201 | 362 | min-width: 65px; |
| 202 | - font-family: $monospace; | |
| 363 | + font-family: $monospace_font; | |
| 203 | 364 | } |
| 204 | 365 | } |
| 205 | 366 | |
| 206 | -.diff_file_header a, | |
| 207 | 367 | .file-stats a { |
| 208 | 368 | color: $style_color; |
| 209 | 369 | } |
| ... | ... | @@ -237,7 +397,7 @@ |
| 237 | 397 | font-size: 13px; |
| 238 | 398 | background: #474D57; |
| 239 | 399 | color: #fff; |
| 240 | - font-family: $monospace; | |
| 400 | + font-family: $monospace_font; | |
| 241 | 401 | } |
| 242 | 402 | |
| 243 | 403 | ... | ... |
app/assets/stylesheets/sections/merge_requests.scss
| ... | ... | @@ -77,7 +77,7 @@ li.merge_request { |
| 77 | 77 | font-size: 14px; |
| 78 | 78 | background: #474D57; |
| 79 | 79 | color: #fff; |
| 80 | - font-family: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono','lucida console',monospace; | |
| 80 | + font-family: $monospace_font; | |
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | .mr_source_commit, | ... | ... |
app/assets/stylesheets/sections/notes.scss
| ... | ... | @@ -40,13 +40,13 @@ ul.notes { |
| 40 | 40 | .discussion-body { |
| 41 | 41 | margin-left: 50px; |
| 42 | 42 | |
| 43 | - .diff_file, | |
| 43 | + .file, | |
| 44 | 44 | .discussion-hidden, |
| 45 | 45 | .notes { |
| 46 | 46 | @extend .borders; |
| 47 | 47 | background-color: #F9F9F9; |
| 48 | 48 | } |
| 49 | - .diff_file .notes { | |
| 49 | + .file .notes { | |
| 50 | 50 | /* reset */ |
| 51 | 51 | background: inherit; |
| 52 | 52 | border: none; |
| ... | ... | @@ -109,7 +109,7 @@ ul.notes { |
| 109 | 109 | } |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | -.diff_file .notes_holder { | |
| 112 | +.file .notes_holder { | |
| 113 | 113 | font-family: $sansFontFamily; |
| 114 | 114 | font-size: 13px; |
| 115 | 115 | line-height: 18px; |
| ... | ... | @@ -134,8 +134,6 @@ ul.notes { |
| 134 | 134 | } |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | - | |
| 138 | - | |
| 139 | 137 | /** |
| 140 | 138 | * Actions for Discussions/Notes |
| 141 | 139 | */ |
| ... | ... | @@ -171,7 +169,7 @@ ul.notes { |
| 171 | 169 | } |
| 172 | 170 | } |
| 173 | 171 | } |
| 174 | -.diff_file .note .note-actions { | |
| 172 | +.file .note .note-actions { | |
| 175 | 173 | right: 0; |
| 176 | 174 | top: 0; |
| 177 | 175 | } |
| ... | ... | @@ -182,7 +180,7 @@ ul.notes { |
| 182 | 180 | * Line note button on the side of diffs |
| 183 | 181 | */ |
| 184 | 182 | |
| 185 | -.diff_file tr.line_holder { | |
| 183 | +.file tr.line_holder { | |
| 186 | 184 | .add-diff-note { |
| 187 | 185 | background: url("diff_note_add.png") no-repeat left 0; |
| 188 | 186 | height: 22px; |
| ... | ... | @@ -212,8 +210,6 @@ ul.notes { |
| 212 | 210 | } |
| 213 | 211 | } |
| 214 | 212 | |
| 215 | - | |
| 216 | - | |
| 217 | 213 | /** |
| 218 | 214 | * Note Form |
| 219 | 215 | */ |
| ... | ... | @@ -222,7 +218,12 @@ ul.notes { |
| 222 | 218 | .reply-btn { |
| 223 | 219 | @extend .save-btn; |
| 224 | 220 | } |
| 225 | -.diff_file, | |
| 221 | +.file .content tr.line_holder:hover > td { background: $hover !important; } | |
| 222 | +.file .content tr.line_holder:hover > td .line_note_link { | |
| 223 | + opacity: 1.0; | |
| 224 | + filter: alpha(opacity=100); | |
| 225 | +} | |
| 226 | +.file, | |
| 226 | 227 | .discussion { |
| 227 | 228 | .new_note { |
| 228 | 229 | margin: 8px 5px 8px 0; | ... | ... |
app/helpers/commits_helper.rb
app/views/commit/show.html.haml
| ... | ... | @@ -11,19 +11,7 @@ |
| 11 | 11 | |
| 12 | 12 | :javascript |
| 13 | 13 | $(function(){ |
| 14 | - var w, h; | |
| 15 | - $('.diff_file').each(function(){ | |
| 16 | - $('.image.diff_removed img', this).on('load', $.proxy(function(event){ | |
| 17 | - var w = event.currentTarget.naturalWidth | |
| 18 | - , h = event.currentTarget.naturalHeight; | |
| 19 | - $('.image.diff_removed .image-info', this).append(' | <b>W:</b> ' + w + 'px | <b>H:</b> ' + h + 'px'); | |
| 20 | - }, this)); | |
| 21 | - $('.image.diff_added img', this).on('load', $.proxy(function(event){ | |
| 22 | - var w = event.currentTarget.naturalWidth | |
| 23 | - , h = event.currentTarget.naturalHeight; | |
| 24 | - $('.image.diff_added .image-info', this).append(' | <b>W:</b> ' + w + 'px | <b>H:</b> ' + h + 'px'); | |
| 25 | - }, this)); | |
| 26 | - | |
| 14 | + $('.files .file').each(function(){ | |
| 15 | + new CommitFile(this); | |
| 27 | 16 | }); |
| 28 | - | |
| 29 | 17 | }); | ... | ... |
app/views/commits/_diffs.html.haml
| ... | ... | @@ -12,50 +12,38 @@ |
| 12 | 12 | .file-stats |
| 13 | 13 | = render "commits/diff_head", diffs: diffs |
| 14 | 14 | |
| 15 | -- unless @suppress_diff | |
| 16 | - - diffs.each_with_index do |diff, i| | |
| 17 | - - next if diff.diff.empty? | |
| 18 | - - file = (@commit.tree / diff.new_path) | |
| 19 | - - file = (@commit.prev_commit.tree / diff.old_path) unless file | |
| 20 | - - next unless file | |
| 21 | - .diff_file{id: "diff-#{i}"} | |
| 22 | - .diff_file_header | |
| 23 | - - if diff.deleted_file | |
| 24 | - %span= diff.old_path | |
| 15 | +.files | |
| 16 | + - unless @suppress_diff | |
| 17 | + - diffs.each_with_index do |diff, i| | |
| 18 | + - next if diff.diff.empty? | |
| 19 | + - file = (@commit.tree / diff.new_path) | |
| 20 | + - file = (@commit.prev_commit.tree / diff.old_path) unless file | |
| 21 | + - next unless file | |
| 22 | + .file{id: "diff-#{i}"} | |
| 23 | + .header | |
| 24 | + - if diff.deleted_file | |
| 25 | + %span= diff.old_path | |
| 25 | 26 | |
| 26 | - - if @commit.prev_commit | |
| 27 | - = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-commit'} do | |
| 27 | + - if @commit.prev_commit | |
| 28 | + = link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-file'} do | |
| 29 | + View file @ | |
| 30 | + %span.commit-short-id= @commit.short_id(6) | |
| 31 | + - else | |
| 32 | + %span= diff.new_path | |
| 33 | + - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode | |
| 34 | + %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}" | |
| 35 | + | |
| 36 | + = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn very_small right view-file'} do | |
| 28 | 37 | View file @ |
| 29 | 38 | %span.commit-short-id= @commit.short_id(6) |
| 30 | - - else | |
| 31 | - %span= diff.new_path | |
| 32 | - - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode | |
| 33 | - %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}" | |
| 34 | - | |
| 35 | - = link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn very_small right view-commit'} do | |
| 36 | - View file @ | |
| 37 | - %span.commit-short-id= @commit.short_id(6) | |
| 38 | 39 | |
| 39 | - %br/ | |
| 40 | - .diff_file_content | |
| 41 | - -# Skip all non-supported blobs | |
| 42 | - - next unless file.respond_to?('text?') | |
| 43 | - - if file.text? | |
| 44 | - = render "commits/text_diff", diff: diff, index: i | |
| 45 | - - elsif file.image? | |
| 46 | - - old_file = (@commit.prev_commit.tree / diff.old_path) if !@commit.prev_commit.nil? | |
| 47 | - - if diff.renamed_file || diff.new_file || diff.deleted_file | |
| 48 | - .diff_file_content_image | |
| 49 | - .image{class: image_diff_class(diff)} | |
| 50 | - %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 51 | - %div.image-info= "#{number_to_human_size file.size}" | |
| 40 | + .content | |
| 41 | + -# Skipp all non non-supported blobs | |
| 42 | + - next unless file.respond_to?('text?') | |
| 43 | + - if file.text? | |
| 44 | + = render "commits/text_file", diff: diff, index: i | |
| 45 | + - elsif file.image? | |
| 46 | + - old_file = (@commit.prev_commit.tree / diff.old_path) if !@commit.prev_commit.nil? | |
| 47 | + = render "commits/image", diff: diff, old_file: old_file, file: file, index: i | |
| 52 | 48 | - else |
| 53 | - .diff_file_content_image.img_compared | |
| 54 | - .image.diff_removed | |
| 55 | - %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(old_file.data)}"} | |
| 56 | - %div.image-info= "#{number_to_human_size file.size}" | |
| 57 | - .image.diff_added | |
| 58 | - %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 59 | - %div.image-info= "#{number_to_human_size file.size}" | |
| 60 | - - else | |
| 61 | - %p.nothing_here_message No preview for this file type | |
| 49 | + %p.nothing_here_message No preview for this file type | ... | ... |
| ... | ... | @@ -0,0 +1,63 @@ |
| 1 | +- if diff.renamed_file || diff.new_file || diff.deleted_file | |
| 2 | + .image | |
| 3 | + %span.wrap | |
| 4 | + .frame{class: image_diff_class(diff)} | |
| 5 | + %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 6 | + %p.image-info= "#{number_to_human_size file.size}" | |
| 7 | +- else | |
| 8 | + .image | |
| 9 | + %div.two-up.view | |
| 10 | + %span.wrap | |
| 11 | + .frame.deleted | |
| 12 | + %a{href: project_tree_path(@project, tree_join(@commit.id, diff.old_path))} | |
| 13 | + %img{src: "data:#{old_file.mime_type};base64,#{Base64.encode64(old_file.data)}"} | |
| 14 | + %p.image-info.hide | |
| 15 | + %span.meta-filesize= "#{number_to_human_size old_file.size}" | |
| 16 | + | | |
| 17 | + %b W: | |
| 18 | + %span.meta-width | |
| 19 | + | | |
| 20 | + %b H: | |
| 21 | + %span.meta-height | |
| 22 | + %span.wrap | |
| 23 | + .frame.added | |
| 24 | + %a{href: project_tree_path(@project, tree_join(@commit.id, diff.new_path))} | |
| 25 | + %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 26 | + %p.image-info.hide | |
| 27 | + %span.meta-filesize= "#{number_to_human_size file.size}" | |
| 28 | + | | |
| 29 | + %b W: | |
| 30 | + %span.meta-width | |
| 31 | + | | |
| 32 | + %b H: | |
| 33 | + %span.meta-height | |
| 34 | + | |
| 35 | + %div.swipe.view.hide | |
| 36 | + .swipe-frame | |
| 37 | + .frame.deleted | |
| 38 | + %img{src: "data:#{old_file.mime_type};base64,#{Base64.encode64(old_file.data)}"} | |
| 39 | + .swipe-wrap | |
| 40 | + .frame.added | |
| 41 | + %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 42 | + %span.swipe-bar | |
| 43 | + %span.top-handle | |
| 44 | + %span.bottom-handle | |
| 45 | + | |
| 46 | + %div.onion-skin.view.hide | |
| 47 | + .onion-skin-frame | |
| 48 | + .frame.deleted | |
| 49 | + %img{src: "data:#{old_file.mime_type};base64,#{Base64.encode64(old_file.data)}"} | |
| 50 | + .frame.added | |
| 51 | + %img{src: "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} | |
| 52 | + .controls | |
| 53 | + .transparent | |
| 54 | + .drag-track | |
| 55 | + .dragger{:style => "left: 0px;"} | |
| 56 | + .opaque | |
| 57 | + | |
| 58 | + | |
| 59 | + .view-modes.hide | |
| 60 | + %ul.view-modes-menu | |
| 61 | + %li.two-up{data: {mode: 'two-up'}} 2-up | |
| 62 | + %li.swipe{data: {mode: 'swipe'}} Swipe | |
| 63 | + %li.onion-skin{data: {mode: 'onion-skin'}} Onion skin | |
| 0 | 64 | \ No newline at end of file | ... | ... |
app/views/commits/_text_diff.html.haml
| ... | ... | @@ -1,23 +0,0 @@ |
| 1 | -- too_big = diff.diff.lines.count > 1000 | |
| 2 | -- if too_big | |
| 3 | - %a.supp_diff_link Diff suppressed. Click to show | |
| 4 | - | |
| 5 | -%table{class: "#{'hide' if too_big}"} | |
| 6 | - - each_diff_line(diff, index) do |line, type, line_code, line_new, line_old| | |
| 7 | - %tr.line_holder{ id: line_code } | |
| 8 | - - if type == "match" | |
| 9 | - %td.old_line= "..." | |
| 10 | - %td.new_line= "..." | |
| 11 | - %td.line_content.matched= line | |
| 12 | - - else | |
| 13 | - %td.old_line | |
| 14 | - = link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code | |
| 15 | - - if @comments_allowed | |
| 16 | - = render "notes/diff_note_link", line_code: line_code | |
| 17 | - %td.new_line= link_to raw(type == "old" ? " " : line_new) , "##{line_code}", id: line_code | |
| 18 | - %td.line_content{class: "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw diff_line_content(line) | |
| 19 | - | |
| 20 | - - if @reply_allowed | |
| 21 | - - comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at) | |
| 22 | - - unless comments.empty? | |
| 23 | - = render "notes/diff_notes_with_reply", notes: comments |
| ... | ... | @@ -0,0 +1,23 @@ |
| 1 | +- too_big = diff.diff.lines.count > 1000 | |
| 2 | +- if too_big | |
| 3 | + %a.supp_diff_link Diff suppressed. Click to show | |
| 4 | + | |
| 5 | +%table.text-file{class: "#{'hide' if too_big}"} | |
| 6 | + - each_diff_line(diff, index) do |line, type, line_code, line_new, line_old| | |
| 7 | + %tr.line_holder{ id: line_code } | |
| 8 | + - if type == "match" | |
| 9 | + %td.old_line= "..." | |
| 10 | + %td.new_line= "..." | |
| 11 | + %td.line_content.matched= line | |
| 12 | + - else | |
| 13 | + %td.old_line | |
| 14 | + = link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code | |
| 15 | + - if @comments_allowed | |
| 16 | + = render "notes/diff_note_link", line_code: line_code | |
| 17 | + %td.new_line= link_to raw(type == "old" ? " " : line_new) , "##{line_code}", id: line_code | |
| 18 | + %td.line_content{class: "noteable_line #{type} #{line_code}", "line_code" => line_code}= raw diff_line_content(line) | |
| 19 | + | |
| 20 | + - if @reply_allowed | |
| 21 | + - comments = @line_notes.select { |n| n.line_code == line_code }.sort_by(&:created_at) | |
| 22 | + - unless comments.empty? | |
| 23 | + = render "notes/diff_notes_with_reply", notes: comments | ... | ... |
app/views/commits/show.html.haml
app/views/notes/_discussion.html.haml
| ... | ... | @@ -38,7 +38,7 @@ |
| 38 | 38 | - if note.for_diff_line? |
| 39 | 39 | - if note.diff |
| 40 | 40 | .content |
| 41 | - .diff_file= render "notes/discussion_diff", discussion_notes: discussion_notes, note: note | |
| 41 | + .file= render "notes/discussion_diff", discussion_notes: discussion_notes, note: note | |
| 42 | 42 | - else |
| 43 | 43 | = link_to 'show outdated discussion', '#', class: 'js-show-outdated-discussion' |
| 44 | 44 | %div.hide.outdated-discussion | ... | ... |
app/views/notes/_discussion_diff.html.haml
| 1 | 1 | - diff = note.diff |
| 2 | -.diff_file_header | |
| 2 | +.header | |
| 3 | 3 | - if diff.deleted_file |
| 4 | 4 | %span= diff.old_path |
| 5 | 5 | - else |
| ... | ... | @@ -7,7 +7,7 @@ |
| 7 | 7 | - if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode |
| 8 | 8 | %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}" |
| 9 | 9 | %br/ |
| 10 | -.diff_file_content | |
| 10 | +.content | |
| 11 | 11 | %table |
| 12 | 12 | - each_diff_line(diff, note.diff_file_index) do |line, type, line_code, line_new, line_old| |
| 13 | 13 | %tr.line_holder{ id: line_code } | ... | ... |
features/steps/shared/diff_note.rb
| ... | ... | @@ -2,27 +2,27 @@ module SharedDiffNote |
| 2 | 2 | include Spinach::DSL |
| 3 | 3 | |
| 4 | 4 | Given 'I cancel the diff comment' do |
| 5 | - within(".diff_file") do | |
| 5 | + within(".file") do | |
| 6 | 6 | find(".js-close-discussion-note-form").trigger("click") |
| 7 | 7 | end |
| 8 | 8 | end |
| 9 | 9 | |
| 10 | 10 | Given 'I delete a diff comment' do |
| 11 | 11 | sleep 1 |
| 12 | - within(".diff_file") do | |
| 12 | + within(".file") do | |
| 13 | 13 | first(".js-note-delete").trigger("click") |
| 14 | 14 | end |
| 15 | 15 | end |
| 16 | 16 | |
| 17 | 17 | Given 'I haven\'t written any diff comment text' do |
| 18 | - within(".diff_file") do | |
| 18 | + within(".file") do | |
| 19 | 19 | fill_in "note[note]", with: "" |
| 20 | 20 | end |
| 21 | 21 | end |
| 22 | 22 | |
| 23 | 23 | Given 'I leave a diff comment like "Typo, please fix"' do |
| 24 | 24 | find("#586fb7c4e1add2d4d24e27566ed7064680098646_29_14.line_holder .js-add-diff-note-button").trigger("click") |
| 25 | - within(".diff_file") do | |
| 25 | + within(".file") do | |
| 26 | 26 | fill_in "note[note]", with: "Typo, please fix" |
| 27 | 27 | #click_button("Add Comment") |
| 28 | 28 | find(".js-comment-button").trigger("click") |
| ... | ... | @@ -32,7 +32,7 @@ module SharedDiffNote |
| 32 | 32 | |
| 33 | 33 | Given 'I preview a diff comment text like "Should fix it :smile:"' do |
| 34 | 34 | find("#586fb7c4e1add2d4d24e27566ed7064680098646_29_14.line_holder .js-add-diff-note-button").trigger("click") |
| 35 | - within(".diff_file") do | |
| 35 | + within(".file") do | |
| 36 | 36 | fill_in "note[note]", with: "Should fix it :smile:" |
| 37 | 37 | find(".js-note-preview-button").trigger("click") |
| 38 | 38 | end |
| ... | ... | @@ -40,7 +40,7 @@ module SharedDiffNote |
| 40 | 40 | |
| 41 | 41 | Given 'I preview another diff comment text like "DRY this up"' do |
| 42 | 42 | find("#586fb7c4e1add2d4d24e27566ed7064680098646_57_41.line_holder .js-add-diff-note-button").trigger("click") |
| 43 | - within(".diff_file") do | |
| 43 | + within(".file") do | |
| 44 | 44 | fill_in "note[note]", with: "DRY this up" |
| 45 | 45 | find(".js-note-preview-button").trigger("click") |
| 46 | 46 | end |
| ... | ... | @@ -55,13 +55,13 @@ module SharedDiffNote |
| 55 | 55 | end |
| 56 | 56 | |
| 57 | 57 | Given 'I write a diff comment like ":-1: I don\'t like this"' do |
| 58 | - within(".diff_file") do | |
| 58 | + within(".file") do | |
| 59 | 59 | fill_in "note[note]", with: ":-1: I don\'t like this" |
| 60 | 60 | end |
| 61 | 61 | end |
| 62 | 62 | |
| 63 | 63 | Given 'I submit the diff comment' do |
| 64 | - within(".diff_file") do | |
| 64 | + within(".file") do | |
| 65 | 65 | click_button("Add Comment") |
| 66 | 66 | end |
| 67 | 67 | end |
| ... | ... | @@ -69,49 +69,49 @@ module SharedDiffNote |
| 69 | 69 | |
| 70 | 70 | |
| 71 | 71 | Then 'I should not see the diff comment form' do |
| 72 | - within(".diff_file") do | |
| 72 | + within(".file") do | |
| 73 | 73 | page.should_not have_css("form.new_note") |
| 74 | 74 | end |
| 75 | 75 | end |
| 76 | 76 | |
| 77 | 77 | Then 'I should not see the diff comment preview button' do |
| 78 | - within(".diff_file") do | |
| 78 | + within(".file") do | |
| 79 | 79 | page.should have_css(".js-note-preview-button", visible: false) |
| 80 | 80 | end |
| 81 | 81 | end |
| 82 | 82 | |
| 83 | 83 | Then 'I should not see the diff comment text field' do |
| 84 | - within(".diff_file") do | |
| 84 | + within(".file") do | |
| 85 | 85 | page.should have_css(".js-note-text", visible: false) |
| 86 | 86 | end |
| 87 | 87 | end |
| 88 | 88 | |
| 89 | 89 | Then 'I should only see one diff form' do |
| 90 | - within(".diff_file") do | |
| 90 | + within(".file") do | |
| 91 | 91 | page.should have_css("form.new_note", count: 1) |
| 92 | 92 | end |
| 93 | 93 | end |
| 94 | 94 | |
| 95 | 95 | Then 'I should see a diff comment form with ":-1: I don\'t like this"' do |
| 96 | - within(".diff_file") do | |
| 96 | + within(".file") do | |
| 97 | 97 | page.should have_field("note[note]", with: ":-1: I don\'t like this") |
| 98 | 98 | end |
| 99 | 99 | end |
| 100 | 100 | |
| 101 | 101 | Then 'I should see a diff comment saying "Typo, please fix"' do |
| 102 | - within(".diff_file .note") do | |
| 102 | + within(".file .note") do | |
| 103 | 103 | page.should have_content("Typo, please fix") |
| 104 | 104 | end |
| 105 | 105 | end |
| 106 | 106 | |
| 107 | 107 | Then 'I should see a discussion reply button' do |
| 108 | - within(".diff_file") do | |
| 108 | + within(".file") do | |
| 109 | 109 | page.should have_link("Reply") |
| 110 | 110 | end |
| 111 | 111 | end |
| 112 | 112 | |
| 113 | 113 | Then 'I should see a temporary diff comment form' do |
| 114 | - within(".diff_file") do | |
| 114 | + within(".file") do | |
| 115 | 115 | page.should have_css(".js-temp-notes-holder form.new_note") |
| 116 | 116 | end |
| 117 | 117 | end |
| ... | ... | @@ -121,37 +121,37 @@ module SharedDiffNote |
| 121 | 121 | end |
| 122 | 122 | |
| 123 | 123 | Then 'I should see an empty diff comment form' do |
| 124 | - within(".diff_file") do | |
| 124 | + within(".file") do | |
| 125 | 125 | page.should have_field("note[note]", with: "") |
| 126 | 126 | end |
| 127 | 127 | end |
| 128 | 128 | |
| 129 | 129 | Then 'I should see the cancel comment button' do |
| 130 | - within(".diff_file form") do | |
| 130 | + within(".file form") do | |
| 131 | 131 | page.should have_css(".js-close-discussion-note-form", text: "Cancel") |
| 132 | 132 | end |
| 133 | 133 | end |
| 134 | 134 | |
| 135 | 135 | Then 'I should see the diff comment preview' do |
| 136 | - within(".diff_file form") do | |
| 136 | + within(".file form") do | |
| 137 | 137 | page.should have_css(".js-note-preview", visible: false) |
| 138 | 138 | end |
| 139 | 139 | end |
| 140 | 140 | |
| 141 | 141 | Then 'I should see the diff comment edit button' do |
| 142 | - within(".diff_file") do | |
| 142 | + within(".file") do | |
| 143 | 143 | page.should have_css(".js-note-edit-button", visible: true) |
| 144 | 144 | end |
| 145 | 145 | end |
| 146 | 146 | |
| 147 | 147 | Then 'I should see the diff comment preview button' do |
| 148 | - within(".diff_file") do | |
| 148 | + within(".file") do | |
| 149 | 149 | page.should have_css(".js-note-preview-button", visible: true) |
| 150 | 150 | end |
| 151 | 151 | end |
| 152 | 152 | |
| 153 | 153 | Then 'I should see two separate previews' do |
| 154 | - within(".diff_file") do | |
| 154 | + within(".file") do | |
| 155 | 155 | page.should have_css(".js-note-preview", visible: true, count: 2) |
| 156 | 156 | page.should have_content("Should fix it") |
| 157 | 157 | page.should have_content("DRY this up") | ... | ... |