If there's no repos on landing page for 10s, fetch some

This commit is contained in:
Piotr Sarnacki 2015-04-07 14:42:38 +02:00
parent 17a8edba50
commit 918b6e043e
2 changed files with 18 additions and 8 deletions

View File

@ -108,12 +108,12 @@ Repo = Model.extend
).property('_lastBuildDuration', 'lastBuildStartedAt', 'lastBuildFinishedAt') ).property('_lastBuildDuration', 'lastBuildStartedAt', 'lastBuildFinishedAt')
sortOrder: (-> sortOrder: (->
# cuz sortAscending seems buggy when set to false state = @get('lastBuildState')
if lastBuildFinishedAt = @get('lastBuildFinishedAt') if state != 'passed' && state != 'failed'
- new Date(lastBuildFinishedAt).getTime() 0
else else
- new Date('9999').getTime() - parseInt(@get('lastBuildId')) parseInt(@get('lastBuildId'))
).property('lastBuildFinishedAt', 'lastBuildId') ).property('lastBuildId', 'lastBuildState')
stats: (-> stats: (->
if @get('slug') if @get('slug')

View File

@ -12,9 +12,11 @@ Route = BasicRoute.extend
if store.hasRecordForId('build', buildId) if store.hasRecordForId('build', buildId)
state = repo.get('lastBuild.state') state = repo.get('lastBuild.state')
state == 'passed' || state == 'failed' state == 'passed' || state == 'failed'
sorted: Ember.computed.sort('repos', 'sortedReposKeys') external: []
withExternal: Ember.computed.union('repos', 'external')
sorted: Ember.computed.sort('withExternal', 'sortedReposKeys')
content: limit('sorted', 'limit') content: limit('sorted', 'limit')
sortedReposKeys: ['sortOrder:asc'] sortedReposKeys: ['sortOrder:desc']
limit: 3 limit: 3
).create() ).create()
@ -24,6 +26,12 @@ Route = BasicRoute.extend
@set('letMoreReposThrough', true) @set('letMoreReposThrough', true)
, 5000 , 5000
setTimeout =>
unless repos.get('length')
@store.find('repo').then (reposFromRequest) ->
repos.get('external').pushObjects reposFromRequest.toArray().slice(0, 3)
, 10000
@_super.apply this, arguments @_super.apply this, arguments
activate: -> activate: ->
@ -42,7 +50,9 @@ Route = BasicRoute.extend
if @get('repos.length') < 3 if @get('repos.length') < 3
return true return true
if event == 'build:finished' && @get('letMoreReposThrough') if event == 'build:finished' &&
['passed', 'failed'].indexOf(data.build.state) != -1 &&
@get('letMoreReposThrough')
@set('letMoreReposThrough', false) @set('letMoreReposThrough', false)
return true return true