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)
|
safe Travis.Helpers.formatConfig(config)
|
||||||
|
|
||||||
Ember.registerBoundHelper 'formatLog', (log, options) ->
|
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
|
message = message.split(/\n/)[0] if options.short
|
||||||
@_emojize(@_escape(message)).replace /\n/g, '<br/>'
|
@_emojize(@_escape(message)).replace /\n/g, '<br/>'
|
||||||
|
|
||||||
formatLog: (log) ->
|
formatLog: (log, repo, item) ->
|
||||||
Travis.Log.filter(log)
|
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) ->
|
pathFrom: (url) ->
|
||||||
(url || '').split('/').pop()
|
(url || '').split('/').pop()
|
||||||
|
|
|
@ -7,6 +7,9 @@ defaultRoute = Ember.Route.extend
|
||||||
lineNumberRoute = Ember.Route.extend
|
lineNumberRoute = Ember.Route.extend
|
||||||
route: '#L:number'
|
route: '#L:number'
|
||||||
index: 1
|
index: 1
|
||||||
|
connectOutlets: (router) ->
|
||||||
|
router.saveLineNumberHash()
|
||||||
|
|
||||||
routeMatcher: Ember.computed(->
|
routeMatcher: Ember.computed(->
|
||||||
if route = @get 'route'
|
if route = @get 'route'
|
||||||
Ember._RouteMatcher.create
|
Ember._RouteMatcher.create
|
||||||
|
@ -127,6 +130,12 @@ Travis.Router = Ember.Router.extend
|
||||||
showAccount: Ember.Route.transitionTo('root.profile.account')
|
showAccount: Ember.Route.transitionTo('root.profile.account')
|
||||||
showUserProfile: Ember.Route.transitionTo('root.profile.account.profile')
|
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: ->
|
reload: ->
|
||||||
url = @get('location').getURL()
|
url = @get('location').getURL()
|
||||||
@transitionTo 'loading'
|
@transitionTo 'loading'
|
||||||
|
@ -143,8 +152,7 @@ Travis.Router = Ember.Router.extend
|
||||||
|
|
||||||
loading: Ember.Route.extend
|
loading: Ember.Route.extend
|
||||||
routePath: (router, path) ->
|
routePath: (router, path) ->
|
||||||
if match = path.match(/#.*$/)
|
router.saveLineNumberHash(path)
|
||||||
router.set 'lineNumberHash', match[0]
|
|
||||||
|
|
||||||
sessionStorage.setItem('travis.path', path)
|
sessionStorage.setItem('travis.path', path)
|
||||||
if router.needsAuth(path)
|
if router.needsAuth(path)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<pre id="log" class="ansi"><a href="#" id="tail" {{action toggleTailing target="view"}}>
|
<pre id="log" class="ansi"><a href="#" id="tail" {{action toggleTailing target="view"}}>
|
||||||
<span class="status"></span>
|
<span class="status"></span>
|
||||||
<label>Follow logs</label>
|
<label>Follow logs</label>
|
||||||
</a>{{{formatLog log.body}}}</pre>
|
</a>{{{formatLog log.body repo="repository" item="parentView.currentItem"}}}</pre>
|
||||||
|
|
||||||
{{#if sponsor.name}}
|
{{#if sponsor.name}}
|
||||||
<p class="sponsor">
|
<p class="sponsor">
|
||||||
|
|
|
@ -52,6 +52,8 @@
|
||||||
buildBinding: 'controller.build'
|
buildBinding: 'controller.build'
|
||||||
commitBinding: 'build.commit'
|
commitBinding: 'build.commit'
|
||||||
|
|
||||||
|
currentItemBinding: 'build'
|
||||||
|
|
||||||
loading: (->
|
loading: (->
|
||||||
!@get('build.isLoaded')
|
!@get('build.isLoaded')
|
||||||
).property('build.isLoaded')
|
).property('build.isLoaded')
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
jobBinding: 'controller.job'
|
jobBinding: 'controller.job'
|
||||||
commitBinding: 'job.commit'
|
commitBinding: 'job.commit'
|
||||||
|
|
||||||
|
currentItemBinding: 'job'
|
||||||
|
|
||||||
color: (->
|
color: (->
|
||||||
Travis.Helpers.colorForResult(@get('job.result'))
|
Travis.Helpers.colorForResult(@get('job.result'))
|
||||||
).property('job.result')
|
).property('job.result')
|
||||||
|
@ -50,12 +52,14 @@
|
||||||
|
|
||||||
scrollTo: (hash) ->
|
scrollTo: (hash) ->
|
||||||
$('body').scrollTop $(hash).offset().top
|
$('body').scrollTop $(hash).offset().top
|
||||||
Travis.app.router.set 'lineNumberHash', null
|
@set 'controller.lineNumberHash', null
|
||||||
|
|
||||||
didInsertElement: ->
|
lineNumberHashDidChange: (->
|
||||||
@_super.apply this, arguments
|
@tryScrollingToHashLineNumber()
|
||||||
|
).observes('controller.lineNumberHash')
|
||||||
|
|
||||||
if hash = Travis.app.router.get 'lineNumberHash'
|
tryScrollingToHashLineNumber: ->
|
||||||
|
if hash = @get 'controller.lineNumberHash'
|
||||||
self = this
|
self = this
|
||||||
|
|
||||||
checker = ->
|
checker = ->
|
||||||
|
@ -68,8 +72,20 @@
|
||||||
|
|
||||||
checker()
|
checker()
|
||||||
|
|
||||||
|
didInsertElement: ->
|
||||||
|
@_super.apply this, arguments
|
||||||
|
|
||||||
|
@tryScrollingToHashLineNumber()
|
||||||
|
|
||||||
click: (event) ->
|
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: () ->
|
toTop: () ->
|
||||||
$(window).scrollTop(0)
|
$(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
|
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
|
exec: /(<p.*?\/a>[\/\w]*.rvm\/rubies\/[\S]*?\/(ruby|rbx|jruby) .*?<\/p>)/g
|
||||||
|
|
||||||
filter: (log) ->
|
filter: (log, path) ->
|
||||||
log = @escape(log)
|
log = @escape(log)
|
||||||
log = @deansi(log)
|
log = @deansi(log)
|
||||||
log = log.replace(/\r/g, '')
|
log = log.replace(/\r/g, '')
|
||||||
log = @number(log)
|
log = @number(log, path)
|
||||||
log = @fold(log)
|
log = @fold(log)
|
||||||
log = log.replace(/\n/g, '')
|
log = log.replace(/\n/g, '')
|
||||||
log
|
log
|
||||||
|
@ -23,12 +23,13 @@
|
||||||
escapeRuby: (log) ->
|
escapeRuby: (log) ->
|
||||||
log.replace /#<(\w+.*?)>/, '#<$1>'
|
log.replace /#<(\w+.*?)>/, '#<$1>'
|
||||||
|
|
||||||
number: (log) ->
|
number: (log, path) ->
|
||||||
|
path = "#{path}/"
|
||||||
result = ''
|
result = ''
|
||||||
$.each log.trim().split('\n'), (ix, line) ->
|
$.each log.trim().split('\n'), (ix, line) ->
|
||||||
number = ix + 1
|
number = ix + 1
|
||||||
path = Travis.Log.location().substr(1).replace(/L\d+/, '') + 'L' + number
|
pathWithNumber = "#{path}#L#{number}"
|
||||||
result += '<p><a href=\'#%@\' id=\'%@\' name=\'L%@\'>%@</a>%@</p>\n'.fmt(path, path, number, number, line)
|
result += '<p><a href="%@" id="L%@" class="log-line-number" name="L%@">%@</a>%@</p>\n'.fmt(pathWithNumber, number, number, number, line)
|
||||||
result.trim()
|
result.trim()
|
||||||
|
|
||||||
deansi: (log) ->
|
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