From 918b6e043e852a529b85b2358679237eaac72976 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 7 Apr 2015 14:42:38 +0200 Subject: [PATCH] If there's no repos on landing page for 10s, fetch some --- app/models/repo.coffee | 10 +++++----- app/routes/home.coffee | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/models/repo.coffee b/app/models/repo.coffee index fdfe7ebf..b3083982 100644 --- a/app/models/repo.coffee +++ b/app/models/repo.coffee @@ -108,12 +108,12 @@ Repo = Model.extend ).property('_lastBuildDuration', 'lastBuildStartedAt', 'lastBuildFinishedAt') sortOrder: (-> - # cuz sortAscending seems buggy when set to false - if lastBuildFinishedAt = @get('lastBuildFinishedAt') - - new Date(lastBuildFinishedAt).getTime() + state = @get('lastBuildState') + if state != 'passed' && state != 'failed' + 0 else - - new Date('9999').getTime() - parseInt(@get('lastBuildId')) - ).property('lastBuildFinishedAt', 'lastBuildId') + parseInt(@get('lastBuildId')) + ).property('lastBuildId', 'lastBuildState') stats: (-> if @get('slug') diff --git a/app/routes/home.coffee b/app/routes/home.coffee index 772b0ea5..c11760cc 100644 --- a/app/routes/home.coffee +++ b/app/routes/home.coffee @@ -12,9 +12,11 @@ Route = BasicRoute.extend if store.hasRecordForId('build', buildId) state = repo.get('lastBuild.state') 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') - sortedReposKeys: ['sortOrder:asc'] + sortedReposKeys: ['sortOrder:desc'] limit: 3 ).create() @@ -24,6 +26,12 @@ Route = BasicRoute.extend @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: -> @@ -42,7 +50,9 @@ Route = BasicRoute.extend if @get('repos.length') < 3 return true - if event == 'build:finished' && @get('letMoreReposThrough') + if event == 'build:finished' && + ['passed', 'failed'].indexOf(data.build.state) != -1 && + @get('letMoreReposThrough') @set('letMoreReposThrough', false) return true