Fix automatic log append

This commit is contained in:
Piotr Sarnacki 2012-08-08 03:47:38 +02:00
parent 236ac25cbf
commit 1512f8d108
7 changed files with 32 additions and 9 deletions

View File

@ -2,3 +2,6 @@ require 'travis/model'
@Travis.Artifact = Travis.Model.extend
body: DS.attr('string')
append: (body) ->
@set('body', @get('body') + body)

View File

@ -35,14 +35,16 @@ require 'travis/model'
[]
).property('config')
appendLog: (log) ->
@set('log', @get('log') + log)
appendLog: (text) ->
if log = @get('log')
log.append(text)
subscribe: ->
# Travis.app.subscribe 'job-' + @get('id')
if id = @get('id')
Travis.app.pusher.subscribe "job-#{id}"
onStateChange: (->
# Travis.app.unsubscribe 'job-' + @get('id') if @get('state') == 'finished'
Travis.app.pusher.unsubscribe "job-#{@get('id')}" if @get('state') == 'finished'
).observes('state')
tick: ->

View File

@ -28,13 +28,13 @@ $.extend Travis.Pusher.prototype,
receive: (event, data) ->
if data.id
data = @normalize(event, data)
Travis.app.store.receive(event.split(':')[0], data)
Travis.app.store.receive(event, data)
normalize: (event, data) ->
switch event
when 'build:started', 'build:finished'
data
when 'job:created', 'job:started', 'job:finished'
when 'job:created', 'job:started', 'job:finished', 'job:log'
data.queue = data.queue.replace('builds.', '') if data.queue
{ job: data }
when 'worker:added', 'worker:updated', 'worker:removed'

View File

@ -36,11 +36,16 @@ Travis.Store = DS.Store.extend
{ id: id, clientId: clientId }
receive: (name, data) ->
receive: (event, data) ->
[name, type] = event.split(':')
mappings = @adapter.get('mappings')
type = mappings[name]
if data[type.singularName()]
if event == 'job:log'
if job = @find(Travis.Job, data['job']['id'])
job.appendLog(data['job']['_log'])
else if data[type.singularName()]
@_loadOne(this, type, data)
else if data[type.pluralName()]
@_loadMany(this, type, data)

View File

@ -1,3 +1,4 @@
{{view.logSubscriber}}
{{#if log.isLoaded}}
<pre id="log">{{{formatLog log.body}}}</pre>

View File

@ -49,7 +49,19 @@
LogView: Travis.View.extend
templateName: 'jobs/log'
logBinding: 'job.log'
click: (event) ->
$(event.target).closest('.fold').toggleClass('open')
jobBinding: 'context'
logSubscriber: (->
# for some reason observing context does not work,
# TODO: find out why
job = @get('job')
state = @get('job.state')
if job && state != 'finished'
job.subscribe()
null
).property('job', 'job.state')

File diff suppressed because one or more lines are too long