Load worker related records from pusher payload

This commit is contained in:
Piotr Sarnacki 2012-10-24 11:28:01 +02:00
parent 7f979c8a5e
commit 231f3b8723
8 changed files with 146 additions and 20 deletions

View File

@ -18,17 +18,21 @@ require 'travis/model'
@get('state') == 'working'
).property('state')
repo: (->
Travis.Repo.find(@get('payload.repository.id') || @get('payload.repo.id'))
).property('payload.repository.id', 'payload.repo.id')
job_id: (->
jobId: (->
@get('payload.job.id')
).property('payload.job.id')
job: (->
Travis.Job.find @get('job_id')
).property('job_id')
).property('jobId')
repo: (->
Travis.Repo.find(@get('payload.repository.id') || @get('payload.repo.id'))
).property('payload.repository.id', 'payload.repo.id')
repoSlug: (->
@get('payload.repo.slug') || @get('payload.repository.slug')
).property('payload.repo.slug', 'payload.repository.slug')
nameForSort: (->
if name = @get('name')

View File

@ -211,9 +211,13 @@ Travis.Router = Ember.Router.extend
deferred.promise()
serialize: (router, repo) ->
if repo
if typeof repo == 'string'
[owner, name] = repo.split '/'
{ owner: owner, name: name }
else if repo
{ owner: repo.get('owner'), name: repo.get('name') }
else
# TODO: it would be nice to handle 404 somehow
{}
show: Ember.Route.extend

View File

@ -42,6 +42,8 @@ Travis.Store = DS.Store.extend
if clientId != undefined
if data = dataCache[clientId]
# trying to set id here fails, TODO: talk with ember core team to create merge-like function
delete hash.id
$.extend(data, hash)
else
dataCache[clientId] = hash
@ -80,7 +82,12 @@ Travis.Store = DS.Store.extend
# if we need sideload becasue we have side records with other events it needs to
# be revised
if type == Travis.Build && (json.repository || json.repo)
result = @loadIncomplete(Travis.Repo, json.repository || json.repo)
@loadIncomplete(Travis.Repo, json.repository || json.repo)
else if type == Travis.Worker && json.worker.payload
if repo = (json.worker.payload.repo || json.worker.payload.repository)
@loadIncomplete(Travis.Repo, repo)
if job = json.worker.payload.job
@loadIncomplete(Travis.Job, job)
@loadIncomplete(type, json[root])
addLoadedData: (type, clientId, hash) ->

View File

@ -16,8 +16,8 @@
<li class="worker">
<div class="status"></div>
{{#if worker.isWorking}}
{{#if worker.job_id}}
<a {{action showJob worker.repo worker.job_id target="Travis.app.router" href=true}} {{bindAttr title="worker.lastSeenAt"}}>
{{#if worker.jobId}}
<a {{action showJob worker.repoSlug worker.jobId target="Travis.app.router" href=true}} {{bindAttr title="worker.lastSeenAt"}}>
{{view.display}}
</a>
{{/if}}

View File

@ -66,7 +66,7 @@
payload = @get('worker.payload')
if state == 'working' && payload?.repository && payload?.build
repo = payload.repository.slug
repo = @get('worker.repoSlug')
number = ' #' + payload.build.number
"<span class='name'>#{name}: #{repo}</span> #{number}".htmlSafe()
else

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
376c1880
0a9ef10c