unsubscribe from log channels
This commit is contained in:
parent
6f0678c137
commit
8a2ba379aa
|
@ -87,6 +87,11 @@ require 'travis/model'
|
||||||
@set('subscribed', true)
|
@set('subscribed', true)
|
||||||
Travis.pusher.subscribe "job-#{@get('id')}"
|
Travis.pusher.subscribe "job-#{@get('id')}"
|
||||||
|
|
||||||
|
unsubscribe: ->
|
||||||
|
return unless @get('subscribed')
|
||||||
|
@set('subscribed', false)
|
||||||
|
Travis.pusher.unsubscribe "job-#{@get('id')}"
|
||||||
|
|
||||||
onStateChange: (->
|
onStateChange: (->
|
||||||
if @get('state') == 'finished' && Travis.pusher
|
if @get('state') == 'finished' && Travis.pusher
|
||||||
Travis.pusher.unsubscribe "job-#{@get('id')}"
|
Travis.pusher.unsubscribe "job-#{@get('id')}"
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
require 'log'
|
require 'log'
|
||||||
|
|
||||||
|
Log.DEBUG = true
|
||||||
|
|
||||||
Travis.reopen
|
Travis.reopen
|
||||||
LogView: Travis.View.extend
|
LogView: Travis.View.extend
|
||||||
templateName: 'jobs/log'
|
templateName: 'jobs/log'
|
||||||
|
@ -10,6 +12,10 @@ Travis.reopen
|
||||||
job = @get('job')
|
job = @get('job')
|
||||||
job.subscribe() if job && !job.get('isFinished')
|
job.subscribe() if job && !job.get('isFinished')
|
||||||
|
|
||||||
|
willDestroyElement: ->
|
||||||
|
job = @get('job')
|
||||||
|
job.unsubscribe() if job
|
||||||
|
|
||||||
toTop: () ->
|
toTop: () ->
|
||||||
$(window).scrollTop(0)
|
$(window).scrollTop(0)
|
||||||
|
|
||||||
|
@ -40,8 +46,7 @@ Travis.reopen
|
||||||
console.log 'log view: create engine'
|
console.log 'log view: create engine'
|
||||||
@limit = new Log.Limit
|
@limit = new Log.Limit
|
||||||
@scroll = new Log.Scroll
|
@scroll = new Log.Scroll
|
||||||
# @engine = Log.create(listeners: [@limit, new Log.FragmentRenderer, new Log.Logger, new Log.Folds, @scroll])
|
@engine = Log.create(listeners: [@limit, new Log.FragmentRenderer, new Log.Folds, @scroll])
|
||||||
@engine = Log.create(listeners: [new Log.FragmentRenderer, new Log.Folds])
|
|
||||||
@observeParts()
|
@observeParts()
|
||||||
@numberLineOnHover()
|
@numberLineOnHover()
|
||||||
|
|
||||||
|
@ -54,8 +59,12 @@ Travis.reopen
|
||||||
partsDidChange: (parts, start, _, added) ->
|
partsDidChange: (parts, start, _, added) ->
|
||||||
console.log 'log view: parts did change'
|
console.log 'log view: parts did change'
|
||||||
unless @get('isLimited')
|
unless @get('isLimited')
|
||||||
@engine.set(part.number, part.content) for part, i in parts.slice(start, start + added)
|
for part, i in parts.slice(start, start + added)
|
||||||
|
console.log(part.number, part.content)
|
||||||
|
@engine.set(part.number, part.content)
|
||||||
@propertyDidChange('isLimited')
|
@propertyDidChange('isLimited')
|
||||||
|
else
|
||||||
|
console.log('skipping part because the log was limited')
|
||||||
|
|
||||||
lineNumberDidChange: (->
|
lineNumberDidChange: (->
|
||||||
@scroll.set(number) if !@get('isDestroyed') && number = @get('controller.lineNumber')
|
@scroll.set(number) if !@get('isDestroyed') && number = @get('controller.lineNumber')
|
||||||
|
@ -75,7 +84,7 @@ Travis.reopen
|
||||||
|
|
||||||
numberLineOnHover: ->
|
numberLineOnHover: ->
|
||||||
$('#log').on 'mouseenter', 'a', ->
|
$('#log').on 'mouseenter', 'a', ->
|
||||||
$(this).attr('href', '#L' + ($(this.parentNode).prevAll('p').length + 1))
|
$(this).attr('href', '#L' + ($(this.parentNode).prevAll('p:visible').length + 1))
|
||||||
|
|
||||||
click: ->
|
click: ->
|
||||||
if (href = $(event.target).attr('href')) && matches = href?.match(/#L(\d+)$/)
|
if (href = $(event.target).attr('href')) && matches = href?.match(/#L(\d+)$/)
|
||||||
|
@ -99,13 +108,13 @@ Log.Scroll.prototype = $.extend new Log.Listener,
|
||||||
@number = number
|
@number = number
|
||||||
@tryScroll()
|
@tryScroll()
|
||||||
|
|
||||||
insert: (log, after, data) ->
|
insert: (log, line, pos) ->
|
||||||
@tryScroll() if @number
|
@tryScroll() if @number
|
||||||
|
|
||||||
tryScroll: ->
|
tryScroll: ->
|
||||||
if (element = $("#log p:nth-child(#{@number})")) && element.length
|
if element = $("#log p:visible")[@number - 1]
|
||||||
$('#main').scrollTop(0)
|
$('#main').scrollTop(0)
|
||||||
$('html, body').scrollTop(element.offset()?.top) # weird, html works in chrome, body in firefox
|
$('html, body').scrollTop($(element).offset()?.top) # weird, html works in chrome, body in firefox
|
||||||
@highlight(element)
|
@highlight(element)
|
||||||
@number = undefined
|
@number = undefined
|
||||||
|
|
||||||
|
@ -118,21 +127,19 @@ Log.Limit.prototype = $.extend new Log.Listener,
|
||||||
MAX_LINES: 5000
|
MAX_LINES: 5000
|
||||||
count: 0
|
count: 0
|
||||||
|
|
||||||
insert: (log, after, lines) ->
|
insert: (log, line, pos) ->
|
||||||
@count += lines.length
|
@count += 1 if line.type == 'paragraph' && !line.hidden
|
||||||
lines.length = @MAX_LINES if lines.length > @MAX_LINES
|
|
||||||
|
|
||||||
isLimited: ->
|
isLimited: ->
|
||||||
@count > @MAX_LINES
|
@count > @MAX_LINES
|
||||||
false
|
|
||||||
|
|
||||||
Log.Logger = ->
|
Log.Logger = ->
|
||||||
Log.Logger.prototype = $.extend new Log.Listener,
|
Log.Logger.prototype = $.extend new Log.Listener,
|
||||||
receive: (log, num, string) ->
|
receive: (log, num, string) ->
|
||||||
@log("rcv #{num} #{JSON.stringify(string)}")
|
@log("rcv #{num} #{JSON.stringify(string)}")
|
||||||
insert: (log, after, datas) ->
|
insert: (log, element, pos) ->
|
||||||
@log("ins #{datas.map((data) -> data.id).join(', ')}, after: #{after || '?'}, #{JSON.stringify(datas)}")
|
@log("ins #{element.id}, #{if pos.before then 'before' else 'after'}: #{pos.before || pos.after || '?'}, #{JSON.stringify(element)}")
|
||||||
remove: (log, id) ->
|
remove: (log, element) ->
|
||||||
@log("rem #{id}")
|
@log("rem #{element.id}")
|
||||||
log: (line) ->
|
log: (line) ->
|
||||||
console.log(line)
|
console.log(line)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user