diff --git a/services/web/public/coffee/track-changes/ChangeListView.coffee b/services/web/public/coffee/track-changes/ChangeListView.coffee index ac8e918622..11487a2e83 100644 --- a/services/web/public/coffee/track-changes/ChangeListView.coffee +++ b/services/web/public/coffee/track-changes/ChangeListView.coffee @@ -3,6 +3,15 @@ define [ "libs/mustache" "libs/backbone" ], (moment)-> + + moment.lang "en", calendar: + lastDay : '[Yesterday at] h:mm a' + sameDay : '[Today at] h:mm a' + nextDay : '[Tomorrow at] h:mm a' + lastWeek : "Do MMM YYYY, h:mm a" + nextWeek : "Do MMM YYYY, h:mm a" + sameElse : 'Do MMM YYYY, h:mm a' + ChangeListView = Backbone.View.extend template: $("#changeListTemplate").html() @@ -39,7 +48,10 @@ define [ view.$el.insertBefore(elementAtIndex) view.on "click", (e, v) => - @setSelectionRange(index, index) + if e.shiftKey + @selectRangeTo(index) + else + @setSelectionRange(index, index) view.on "selected:to", (e, v) => @setSelectionRange(@selectedFromIndex, index) @@ -74,6 +86,13 @@ define [ @resetAllSelectors() @triggerChangeDiff() + selectRangeTo: (index) -> + return unless @selectedFromIndex? and @selectedToIndex? + if index < @selectedToIndex + @setSelectionRange(@selectedFromIndex, index) + else + @setSelectionRange(index, @selectedToIndex) + resetAllSelectors: () -> for view, i in @itemViews view.resetSelector(i, @selectedFromIndex, @selectedToIndex) diff --git a/services/web/public/coffee/track-changes/DiffView.coffee b/services/web/public/coffee/track-changes/DiffView.coffee index 7fc95e77ba..174e7547ee 100644 --- a/services/web/public/coffee/track-changes/DiffView.coffee +++ b/services/web/public/coffee/track-changes/DiffView.coffee @@ -20,6 +20,7 @@ define [ @insertMarkers() @insertNameTag() @insertMoreChangeLabels() + @bindToScrollEvents() @scrollToFirstChange() return @ @@ -43,7 +44,8 @@ define [ e.position = position @updateVisibleNames(e) - session.on "changeScrollTop", (e) => + bindToScrollEvents: () -> + @aceEditor.getSession().on "changeScrollTop", (e) => @updateMoreChangeLabels() getPlainDiffContent: () -> @@ -84,20 +86,27 @@ define [ markerBackLayer = @aceEditor.renderer.$markerBack markerFrontLayer = @aceEditor.renderer.$markerFront lineHeight = @aceEditor.renderer.lineHeight + + dark = @_isDarkTheme() + if entry.i? or entry.d? hue = entry.meta.user.hue() if entry.i? - @_addMarkerWithCustomStyle session, markerBackLayer, range, "inserted-change-background", false, """ - background-color : hsl(#{hue}, 70%, 85%); - """ + if dark + style = "background-color : hsl(#{hue}, 100%, 28%);" + else + style = "background-color : hsl(#{hue}, 70%, 85%);" + @_addMarkerWithCustomStyle session, markerBackLayer, range, "inserted-change-background", false, style if entry.d? - @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, """ - background-color : hsl(#{hue}, 70%, 95%); - """ - @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-foreground", true, """ - height: #{Math.round(lineHeight/2) - 1}px; - border-bottom: 2px solid hsl(#{hue}, 70%, 40%); - """ + if dark + bgStyle = "background-color: hsl(#{hue}, 100%, 20%);" + fgStyle = "border-bottom: 2px solid hsl(#{hue}, 100%, 60%);" + else + bgStyle = "background-color: hsl(#{hue}, 70%, 95%);" + fgStyle = "border-bottom: 2px solid hsl(#{hue}, 70%, 40%);" + fgStyle += "; height: #{Math.round(lineHeight/2) - 1}px;" + @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, bgStyle + @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-foreground", true, fgStyle _addMarkerWithCustomStyle: (session, markerLayer, range, klass, foreground, style) -> session.addMarker range, klass, (html, range, left, top, config) -> @@ -107,6 +116,14 @@ define [ markerLayer.drawSingleLineMarker(html, range, "#{klass} ace_start", config, 0, style) , foreground + _isDarkTheme: () -> + rgb = $(".ace_editor").css("background-color"); + [m, r, g, b] = rgb.match(/rgb\(([0-9]+), ([0-9]+), ([0-9]+)\)/) + r = parseInt(r, 10) + g = parseInt(g, 10) + b = parseInt(b, 10) + return r + g + b < 3 * 128 + insertNameTag: () -> @$nameTagEl = $("
") @$nameTagEl.css({ @@ -116,17 +133,23 @@ define [ @$ace.append(@$nameTagEl) insertMoreChangeLabels: () -> - @$changesBefore = $("