From 1bccb5d1777156283bdd984fea5105317178109e Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sat, 23 Feb 2013 01:08:18 +0100 Subject: [PATCH] Fix line numbers when loading an url --- assets/scripts/app/routes.coffee | 11 +++++++++-- assets/scripts/app/views/log.coffee | 3 ++- assets/scripts/lib/travis/line_number_parser.coffee | 5 +++++ 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 assets/scripts/lib/travis/line_number_parser.coffee diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 026159aa..8f022afb 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -1,4 +1,5 @@ require 'travis/location' +require 'travis/line_number_parser' Ember.Router.reopen location: (if testMode? then Ember.HashLocation.create() else Travis.Location.create()) @@ -45,7 +46,7 @@ Travis.BuildsRoute = Travis.AbstractBuidsRoute.extend(contentType: 'builds') Travis.PullRequestsRoute = Travis.AbstractBuidsRoute.extend(contentType: 'pull_requests') Travis.BranchesRoute = Travis.AbstractBuidsRoute.extend(contentType: 'branches') -Travis.BuildRoute = Ember.Route.extend +Travis.BuildRoute = Ember.Route.extend Travis.LineNumberParser, renderTemplate: -> @render 'build', outlet: 'pane', into: 'repo' @@ -57,11 +58,14 @@ Travis.BuildRoute = Ember.Route.extend setupController: (controller, model) -> model = Travis.Build.find(model) if model && !model.get + if lineNumber = @fetchLineNumber() + controller.set('lineNumber', lineNumber) + repo = @container.lookup('controller:repo') repo.set('build', model) repo.activate('build') -Travis.JobRoute = Ember.Route.extend +Travis.JobRoute = Ember.Route.extend Travis.LineNumberParser, renderTemplate: -> @render 'job', outlet: 'pane', into: 'repo' @@ -73,6 +77,9 @@ Travis.JobRoute = Ember.Route.extend setupController: (controller, model) -> model = Travis.Job.find(model) if model && !model.get + if lineNumber = @fetchLineNumber() + controller.set('lineNumber', lineNumber) + repo = @container.lookup('controller:repo') console.log model.toString() repo.set('job', model) diff --git a/assets/scripts/app/views/log.coffee b/assets/scripts/app/views/log.coffee index d5474659..67c23d26 100644 --- a/assets/scripts/app/views/log.coffee +++ b/assets/scripts/app/views/log.coffee @@ -19,6 +19,7 @@ Travis.reopen didInsertElement: -> @_super.apply this, arguments @createEngine() + @lineNumberDidChange() willDestroyElement: -> parts = @get('log.parts') @@ -96,7 +97,7 @@ Log.Scroll.prototype = $.extend new Log.Listener, @tryScroll() if @number tryScroll: -> - if element = $("#log p:nth-child(#{@number})") + if (element = $("#log p:nth-child(#{@number})")) && element.length $('#main').scrollTop(0) $('html, body').scrollTop(element.offset()?.top) # weird, html works in chrome, body in firefox @highlight(element) diff --git a/assets/scripts/lib/travis/line_number_parser.coffee b/assets/scripts/lib/travis/line_number_parser.coffee new file mode 100644 index 00000000..d77020fe --- /dev/null +++ b/assets/scripts/lib/travis/line_number_parser.coffee @@ -0,0 +1,5 @@ +Travis.LineNumberParser = Ember.Mixin.create + fetchLineNumber: -> + url = @container.lookup('router:main').get('url') + if match = url.match(/#L(\d+)$/) + match[1]