From b5c7e52eaa6a7b1fd0487b8aadbc7675dea69593 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 7 Feb 2013 05:09:46 +0100 Subject: [PATCH] Wait for slug being present on runnning jobs list --- .../app/controllers/running_jobs.coffee | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/assets/scripts/app/controllers/running_jobs.coffee b/assets/scripts/app/controllers/running_jobs.coffee index d8d57f54..936da73a 100644 --- a/assets/scripts/app/controllers/running_jobs.coffee +++ b/assets/scripts/app/controllers/running_jobs.coffee @@ -46,19 +46,36 @@ Travis.RunningJobsController = Em.ArrayProxy.extend addedJobs: (jobs) -> self = this jobs.forEach (job) -> - slug = job.get('repoSlug') - group = self.groupForSlug(slug) - group.add(job) + self.waitForSlug(job, 'addJob') removedJobs: (jobs) -> self = this jobs.forEach (job) -> - slug = job.get('repoSlug') - group = self.groupForSlug(slug) - group.remove(job) + self.waitForSlug(job, 'removeJob') + + addJob: (job) -> + slug = job.get('repoSlug') + group = @groupForSlug(slug) + group.add(job) + + removeJob: (job) -> + slug = job.get('repoSlug') + group = @groupForSlug(slug) + group.remove(job) + + waitForSlug: (job, callbackName) -> + callback = @[callbackName] + self = this + if job.get('repoSlug')? + callback.call self, job + else + observer = -> + if job.get('repoSlug')? + callback.call self, job + job.removeObserver 'repoSlug', observer + job.addObserver 'repoSlug', observer groupForSlug: (slug) -> - console.log 'slug', slug @groupsBySlug[slug] ||= @Group.create(slug: slug, parent: this) addGroup: (group) ->