Unfold lines before trying to scroll

(closes travis-ci/travis-ci#1501)
This commit is contained in:
Piotr Sarnacki 2014-06-18 15:36:23 +02:00
parent 00ccb07a49
commit 2fd1af29ec

View File

@ -46,12 +46,16 @@ Travis.reopen
createEngine: -> createEngine: ->
console.log 'log view: create engine' if Log.DEBUG console.log 'log view: create engine' if Log.DEBUG
@scroll = new Log.Scroll @scroll = new Log.Scroll beforeScroll: =>
@unfoldHighlight()
@engine = Log.create(limit: Log.LIMIT, listeners: [@scroll]) @engine = Log.create(limit: Log.LIMIT, listeners: [@scroll])
@logFolder = new Travis.LogFolder(@$().find('#log')) @logFolder = new Travis.LogFolder(@$().find('#log'))
@lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll, @logFolder) @lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll, @logFolder)
@observeParts() @observeParts()
unfoldHighlight: ->
@lineSelector.unfoldLines()
observeParts: -> observeParts: ->
parts = @get('log.parts') parts = @get('log.parts')
parts.addArrayObserver(@, didChange: 'partsDidChange', willChange: 'noop') parts.addArrayObserver(@, didChange: 'partsDidChange', willChange: 'noop')
@ -85,7 +89,10 @@ Travis.reopen
noop: -> # TODO required? noop: -> # TODO required?
Log.Scroll = -> Log.Scroll = (options) ->
options ||= {}
@beforeScroll = options.beforeScroll
this
Log.Scroll.prototype = $.extend new Log.Listener, Log.Scroll.prototype = $.extend new Log.Listener,
insert: (log, data, pos) -> insert: (log, data, pos) ->
@tryScroll() if @numbers @tryScroll() if @numbers
@ -93,6 +100,8 @@ Log.Scroll.prototype = $.extend new Log.Listener,
tryScroll: -> tryScroll: ->
if element = $("#log p:visible.highlight:first") if element = $("#log p:visible.highlight:first")
if @beforeScroll
@beforeScroll()
$('#main').scrollTop(0) $('#main').scrollTop(0)
$('html, body').scrollTop(element.offset()?.top - (window.innerHeight / 3)) # weird, html works in chrome, body in firefox $('html, body').scrollTop(element.offset()?.top - (window.innerHeight / 3)) # weird, html works in chrome, body in firefox