Fix logs to always point to build or job view
This commit is contained in:
parent
a3ec12bda7
commit
2575218ddb
|
@ -31,5 +31,8 @@ Ember.registerBoundHelper 'formatConfig', (config, options) ->
|
|||
safe Travis.Helpers.formatConfig(config)
|
||||
|
||||
Ember.registerBoundHelper 'formatLog', (log, options) ->
|
||||
Travis.Helpers.formatLog(log) || ''
|
||||
parentView = @get 'parentView'
|
||||
repo = parentView.get(options.repo)
|
||||
item = parentView.get(options.item)
|
||||
Travis.Helpers.formatLog(log, repo, item) || ''
|
||||
|
||||
|
|
|
@ -31,8 +31,15 @@ require 'config/emoij'
|
|||
message = message.split(/\n/)[0] if options.short
|
||||
@_emojize(@_escape(message)).replace /\n/g, '<br/>'
|
||||
|
||||
formatLog: (log) ->
|
||||
Travis.Log.filter(log)
|
||||
formatLog: (log, repo, item) ->
|
||||
event = if item.constructor == Travis.Build
|
||||
'showBuild'
|
||||
else
|
||||
'showJob'
|
||||
|
||||
url = Travis.app.get('router').urlForEvent(event, repo, item)
|
||||
|
||||
Travis.Log.filter(log, url)
|
||||
|
||||
pathFrom: (url) ->
|
||||
(url || '').split('/').pop()
|
||||
|
|
|
@ -7,6 +7,9 @@ defaultRoute = Ember.Route.extend
|
|||
lineNumberRoute = Ember.Route.extend
|
||||
route: '#L:number'
|
||||
index: 1
|
||||
connectOutlets: (router) ->
|
||||
router.saveLineNumberHash()
|
||||
|
||||
routeMatcher: Ember.computed(->
|
||||
if route = @get 'route'
|
||||
Ember._RouteMatcher.create
|
||||
|
@ -127,6 +130,12 @@ Travis.Router = Ember.Router.extend
|
|||
showAccount: Ember.Route.transitionTo('root.profile.account')
|
||||
showUserProfile: Ember.Route.transitionTo('root.profile.account.profile')
|
||||
|
||||
saveLineNumberHash: (path) ->
|
||||
Ember.run.next this, ->
|
||||
path = path || @get('location').getURL()
|
||||
if match = path.match(/#L\d+$/)
|
||||
@set 'repoController.lineNumberHash', match[0]
|
||||
|
||||
reload: ->
|
||||
url = @get('location').getURL()
|
||||
@transitionTo 'loading'
|
||||
|
@ -143,8 +152,7 @@ Travis.Router = Ember.Router.extend
|
|||
|
||||
loading: Ember.Route.extend
|
||||
routePath: (router, path) ->
|
||||
if match = path.match(/#.*$/)
|
||||
router.set 'lineNumberHash', match[0]
|
||||
router.saveLineNumberHash(path)
|
||||
|
||||
sessionStorage.setItem('travis.path', path)
|
||||
if router.needsAuth(path)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<pre id="log" class="ansi"><a href="#" id="tail" {{action toggleTailing target="view"}}>
|
||||
<span class="status"></span>
|
||||
<label>Follow logs</label>
|
||||
</a>{{{formatLog log.body}}}</pre>
|
||||
</a>{{{formatLog log.body repo="repository" item="parentView.currentItem"}}}</pre>
|
||||
|
||||
{{#if sponsor.name}}
|
||||
<p class="sponsor">
|
||||
|
|
|
@ -52,6 +52,8 @@
|
|||
buildBinding: 'controller.build'
|
||||
commitBinding: 'build.commit'
|
||||
|
||||
currentItemBinding: 'build'
|
||||
|
||||
loading: (->
|
||||
!@get('build.isLoaded')
|
||||
).property('build.isLoaded')
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
jobBinding: 'controller.job'
|
||||
commitBinding: 'job.commit'
|
||||
|
||||
currentItemBinding: 'job'
|
||||
|
||||
color: (->
|
||||
Travis.Helpers.colorForResult(@get('job.result'))
|
||||
).property('job.result')
|
||||
|
@ -50,12 +52,14 @@
|
|||
|
||||
scrollTo: (hash) ->
|
||||
$('body').scrollTop $(hash).offset().top
|
||||
Travis.app.router.set 'lineNumberHash', null
|
||||
@set 'controller.lineNumberHash', null
|
||||
|
||||
didInsertElement: ->
|
||||
@_super.apply this, arguments
|
||||
lineNumberHashDidChange: (->
|
||||
@tryScrollingToHashLineNumber()
|
||||
).observes('controller.lineNumberHash')
|
||||
|
||||
if hash = Travis.app.router.get 'lineNumberHash'
|
||||
tryScrollingToHashLineNumber: ->
|
||||
if hash = @get 'controller.lineNumberHash'
|
||||
self = this
|
||||
|
||||
checker = ->
|
||||
|
@ -68,8 +72,20 @@
|
|||
|
||||
checker()
|
||||
|
||||
didInsertElement: ->
|
||||
@_super.apply this, arguments
|
||||
|
||||
@tryScrollingToHashLineNumber()
|
||||
|
||||
click: (event) ->
|
||||
$(event.target).closest('.fold').toggleClass('open')
|
||||
target = $(event.target)
|
||||
|
||||
target.closest('.fold').toggleClass('open')
|
||||
if target.is('.log-line-number')
|
||||
path = target.attr 'href'
|
||||
Travis.app.get('router').route(path)
|
||||
event.stopPropagation()
|
||||
return false
|
||||
|
||||
toTop: () ->
|
||||
$(window).scrollTop(0)
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
bundle: /(<p.*?\/a>\$ bundle install.*<\/p>\n(<p.*?\/a>(Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\/p>\n|<p.*?\/a><\/p>\n)*)/g
|
||||
exec: /(<p.*?\/a>[\/\w]*.rvm\/rubies\/[\S]*?\/(ruby|rbx|jruby) .*?<\/p>)/g
|
||||
|
||||
filter: (log) ->
|
||||
filter: (log, path) ->
|
||||
log = @escape(log)
|
||||
log = @deansi(log)
|
||||
log = log.replace(/\r/g, '')
|
||||
log = @number(log)
|
||||
log = @number(log, path)
|
||||
log = @fold(log)
|
||||
log = log.replace(/\n/g, '')
|
||||
log
|
||||
|
@ -23,12 +23,13 @@
|
|||
escapeRuby: (log) ->
|
||||
log.replace /#<(\w+.*?)>/, '#<$1>'
|
||||
|
||||
number: (log) ->
|
||||
number: (log, path) ->
|
||||
path = "#{path}/"
|
||||
result = ''
|
||||
$.each log.trim().split('\n'), (ix, line) ->
|
||||
number = ix + 1
|
||||
path = Travis.Log.location().substr(1).replace(/L\d+/, '') + 'L' + number
|
||||
result += '<p><a href=\'#%@\' id=\'%@\' name=\'L%@\'>%@</a>%@</p>\n'.fmt(path, path, number, number, line)
|
||||
pathWithNumber = "#{path}#L#{number}"
|
||||
result += '<p><a href="%@" id="L%@" class="log-line-number" name="L%@">%@</a>%@</p>\n'.fmt(pathWithNumber, number, number, number, line)
|
||||
result.trim()
|
||||
|
||||
deansi: (log) ->
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user