Don't require loading repos when dislaying queues and workers

This commit is contained in:
Piotr Sarnacki 2012-11-27 22:36:13 +01:00
parent df69a4a221
commit 834e45ceb5
6 changed files with 34 additions and 11 deletions

View File

@ -14,11 +14,21 @@ require 'travis/model'
finishedAt: DS.attr('string')
allowFailure: DS.attr('boolean', key: 'allow_failure')
repositorySlug: DS.attr('string')
repo: DS.belongsTo('Travis.Repo', key: 'repository_id')
build: DS.belongsTo('Travis.Build', key: 'build_id')
commit: DS.belongsTo('Travis.Commit', key: 'commit_id')
log: DS.belongsTo('Travis.Artifact', key: 'log_id')
repoSlug: (->
@get('repositorySlug')
).property('repositorySlug')
repoData: (->
{ id: @get('repoId'), slug: @get('repoSlug') }
).property('repoSlug', 'repoId')
config: (->
Travis.Helpers.compact(@get('data.config'))
).property('data.config')

View File

@ -84,11 +84,12 @@ require 'travis/model'
).property('lastBuildFinishedAt', 'lastBuildId')
stats: (->
@get('_stats') || $.get("https://api.github.com/repos/#{@get('slug')}", (data) =>
@set('_stats', data)
@notifyPropertyChange 'stats'
) && {}
).property()
if @get('slug')
@get('_stats') || $.get("https://api.github.com/repos/#{@get('slug')}", (data) =>
@set('_stats', data)
@notifyPropertyChange 'stats'
) && {}
).property('slug')
updateTimes: ->
@notifyPropertyChange 'lastBuildDuration'

View File

@ -26,6 +26,10 @@ require 'travis/model'
Travis.Job.find @get('job_id')
).property('jobId')
repoData: (->
{ id: @get('repoId'), slug: @get('repoSlug') }
).property('repoSlug', 'repoId')
repo: (->
Travis.Repo.find(@get('payload.repository.id') || @get('payload.repo.id'))
).property('payload.repository.id', 'payload.repo.id')
@ -34,6 +38,10 @@ require 'travis/model'
@get('payload.repo.slug') || @get('payload.repository.slug')
).property('payload.repo.slug', 'payload.repository.slug')
repoId: (->
@get('payload.repo.id') || @get('payload.repository.id')
).property('payload.repo.id', 'payload.repository.id')
nameForSort: (->
if name = @get('name')
match = name.match /(.*?)-(\d+)/

View File

@ -202,6 +202,8 @@ Travis.Router = Ember.Router.extend
dynamicSegmentPattern: "([^/#]+)"
connectOutlets: (router, repo) ->
unless repo.constructor == Travis.Repo
repo = Travis.Repo.find(repo.id)
router.get('repoController').set 'repo', repo
deserialize: (router, params) ->
@ -225,8 +227,11 @@ Travis.Router = Ember.Router.extend
if typeof repo == 'string'
[owner, name] = repo.split '/'
{ owner: owner, name: name }
else if repo
else if repo && repo.constructor == Travis.Repo
{ owner: repo.get('owner'), name: repo.get('name') }
else if repo && repo.id && repo.slug
[owner, name] = repo.slug.split '/'
{ owner: owner, name: name }
else
# TODO: it would be nice to handle 404 somehow
{}

View File

@ -5,11 +5,10 @@
<ul {{bindAttr id="queue.id"}}>
{{#each job in queue}}
{{#view Travis.QueueItemView jobBinding="job"}}
{{#if job.repo.slug}}
<a {{action showJob job.repo job target="Travis.app.router" href=true}}>
{{#if job.repoSlug}}
<a {{action showJob job.repoData job target="Travis.app.router" href=true}}>
<span class="slug">
{{job.repo.slug}}
{{job.repoSlug}}
</span>
#{{job.number}}
</a>

View File

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