import BasicRoute from 'travis/routes/basic'; import config from 'travis/config/environment'; import limit from 'travis/utils/computed-limit'; import Ember from 'ember'; export default BasicRoute.extend({ init: function() { var repos, store; store = this.store; repos = Ember.ArrayProxy.extend({ isLoadedBinding: 'repos.isLoaded', repos: [], sorted: Ember.computed.sort('repos', 'sortedReposKeys'), content: limit('sorted', 'limit'), sortedReposKeys: ['sortOrderForLandingPage:desc'], limit: 3 }).create(); this.set('repos', repos); this.loadMoreRepos(); return this._super.apply(this, arguments); }, loadMoreRepos() { return this.store.findAll('build').then( (builds) => { var repoIds, repos; repoIds = builds.mapBy('data.repo').uniq(); repos = this.get('repos.repos'); return this.store.query('repo', { ids: repoIds }).then(function(reposFromRequest) { return reposFromRequest.toArray().forEach(function(repo) { if (!repos.contains(repo)) { return repos.pushObject(repo); } }); }); }); }, activate() { var interval; this._super.apply(this, arguments); interval = setInterval(() => { return this.loadMoreRepos(); }, 60000); this.set('interval', interval); return this.controllerFor('top').set('landingPage', true); }, deactivate() { var interval; this._super.apply(this, arguments); if (interval = this.get('interval')) { clearInterval(interval); } return this.controllerFor('top').set('landingPage', false); }, setupController(controller, model) { return controller.set('repos', this.get('repos')); } });