travis-web/app/routes/home.coffee

69 lines
1.9 KiB
CoffeeScript

`import BasicRoute from 'travis/routes/basic'`
`import config from 'travis/config/environment'`
`import limit from 'travis/utils/computed-limit'`
Route = BasicRoute.extend
init: ->
store = @store
repos = Ember.ArrayProxy.extend(
isLoadedBinding: 'repos.isLoaded'
repos: @store.filter 'repo', (repo) ->
buildId = repo.get('lastBuildId')
if store.hasRecordForId('build', buildId)
state = repo.get('lastBuild.state')
state == 'passed' || state == 'failed'
external: []
withExternal: Ember.computed.union('repos', 'external')
sorted: Ember.computed.sort('withExternal', 'sortedReposKeys')
content: limit('sorted', 'limit')
sortedReposKeys: ['sortOrder:desc']
limit: 3
).create()
@set('repos', repos)
setInterval =>
@set('letMoreReposThrough', true)
, 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
activate: ->
if !config.pro && @pusher
@pusher.subscribeAll(['common'])
@store.addPusherEventHandlerGuard('landing-page', (event, data) =>
@allowMoreRepos(event, data)
)
@_super.apply(this, arguments)
@controllerFor('top').set('landingPage', true)
allowMoreRepos: (event, data) ->
if @get('repos.length') < 3
return true
if event == 'build:finished' &&
['passed', 'failed'].indexOf(data.build.state) != -1 &&
@get('letMoreReposThrough')
@set('letMoreReposThrough', false)
return true
deactivate: ->
@_super.apply(this, arguments)
@store.removePusherEventHandlerGuard('landing-page')
@controllerFor('top').set('landingPage', false)
setupController: (controller, model) ->
controller.set('repos', @get('repos'))
`export default Route`