From 1a0e3787327c04052d39c4b6ccf1e308fdee9ad9 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sat, 7 Sep 2013 17:44:43 +0200 Subject: [PATCH] Fix rendering job when moving from index route The hack which is needed for wrong outlet behaviour renders a template when outlet is not rendered automatically, but it was done immediately. Because of that when changing routes from index to job route, sometimes the hack was kicking in and rendering build instead of job template. This commit fixes it to check if rendering is needed in "afterRender" phase on runloop. --- assets/scripts/app/routes.coffee | 5 +---- assets/scripts/app/views/repo/show.coffee | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 1dfe80e5..899411fd 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -225,10 +225,7 @@ Travis.BuildRoute = Ember.Route.extend Travis.JobRoute = Ember.Route.extend renderTemplate: -> - # TODO: this run.next should not be needed here, I couldn't reproduce it on a clean - # app, so it's most likely because of some weird thing that we do. - Ember.run.next this, -> - @render 'job', outlet: 'pane', into: 'repo' + @render 'job', outlet: 'pane', into: 'repo' serialize: (model, params) -> id = if model.get then model.get('id') else model diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index d49b9330..f5dd9435 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -15,15 +15,18 @@ Travis.reopen # in repos/show.hbs is empty when view is rerendered without routing # taking place. Try to render the default outlet in such case # TODO: look into fixing it in more general way - pane = Ember.get('_outlets.pane') - if @get('controller.repo.isLoaded') && @state == 'inDOM' && - @get('controller.repo.lastBuild') && - @get('controller.tab') == 'current' && (!pane || pane.state == 'destroyed') - view = @get('controller.container').lookup('view:build') - view.set('controller', @get('controller.container').lookup('controller:build')) - Ember.run.next => - @set('_outlets', {}) if !@get('_outlets') && !@isDestroyed - @connectOutlet('pane', view) unless @isDestroyed + Ember.run.schedule('afterRender', this, -> + pane = Ember.get('_outlets.pane') + console.log('tab', @get('controller.tab')) + if @get('controller.repo.isLoaded') && @state == 'inDOM' && + @get('controller.repo.lastBuild') && + @get('controller.tab') == 'current' && (!pane || pane.state == 'destroyed') + view = @get('controller.container').lookup('view:build') + view.set('controller', @get('controller.container').lookup('controller:build')) + Ember.run.next => + @set('_outlets', {}) if !@get('_outlets') && !@isDestroyed + @connectOutlet('pane', view) unless @isDestroyed + ) ).observes('controller.repo.isLoaded') ReposEmptyView: Travis.View.extend