Fix log errors on 1.8.1
This part needs further refactoring, but for now I just fixed log view to teardown and setup things properly in all cases something changes (when element is inserted or removed, but also when log object is changed).
This commit is contained in:
parent
e6800c80c6
commit
0a69a5424d
assets/scripts/app
|
@ -1,7 +1,6 @@
|
||||||
Travis.JobController = Em.Controller.extend
|
Travis.JobController = Em.Controller.extend
|
||||||
needs: ['repo']
|
needs: ['repo']
|
||||||
|
|
||||||
jobBinding: 'controllers.repo.job'
|
|
||||||
repoBinding: 'controllers.repo.repo'
|
repoBinding: 'controllers.repo.repo'
|
||||||
commitBinding: 'job.commit'
|
commitBinding: 'job.commit'
|
||||||
annotationsBinding: 'job.annotations'
|
annotationsBinding: 'job.annotations'
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
Travis.RepoController = Travis.Controller.extend
|
Travis.RepoController = Travis.Controller.extend
|
||||||
needs: ['repos', 'currentUser', 'build', 'request']
|
needs: ['repos', 'currentUser', 'build', 'request', 'job']
|
||||||
currentUserBinding: 'controllers.currentUser'
|
currentUserBinding: 'controllers.currentUser'
|
||||||
|
|
||||||
build: Ember.computed.alias('controllers.build.build')
|
build: Ember.computed.alias('controllers.build.build')
|
||||||
|
job: Ember.computed.alias('controllers.job.job')
|
||||||
request: Ember.computed.alias('controllers.request.model')
|
request: Ember.computed.alias('controllers.request.model')
|
||||||
|
|
||||||
slug: (-> @get('repo.slug') ).property('repo.slug')
|
slug: (-> @get('repo.slug') ).property('repo.slug')
|
||||||
|
@ -24,6 +25,9 @@ Travis.RepoController = Travis.Controller.extend
|
||||||
if build && jobs = build.get('jobs')
|
if build && jobs = build.get('jobs')
|
||||||
jobs.forEach (j) -> j.updateTimes()
|
jobs.forEach (j) -> j.updateTimes()
|
||||||
|
|
||||||
|
deactivate: ->
|
||||||
|
@stopObservingLastBuild()
|
||||||
|
|
||||||
activate: (action) ->
|
activate: (action) ->
|
||||||
@stopObservingLastBuild()
|
@stopObservingLastBuild()
|
||||||
this["view#{$.camelize(action)}"]()
|
this["view#{$.camelize(action)}"]()
|
||||||
|
|
|
@ -6,9 +6,6 @@ require 'travis/log_chunks'
|
||||||
isLoaded: false
|
isLoaded: false
|
||||||
length: 0
|
length: 0
|
||||||
|
|
||||||
init: ->
|
|
||||||
@setParts()
|
|
||||||
|
|
||||||
fetchMissingParts: (partNumbers, after) ->
|
fetchMissingParts: (partNumbers, after) ->
|
||||||
return if @get('notStarted')
|
return if @get('notStarted')
|
||||||
|
|
||||||
|
@ -27,31 +24,34 @@ require 'travis/log_chunks'
|
||||||
for part in parts
|
for part in parts
|
||||||
@append part
|
@append part
|
||||||
|
|
||||||
setParts: ->
|
parts: (->
|
||||||
if parts = @get('parts')
|
#if Travis.config.pusher_log_fallback
|
||||||
|
# Travis.LogChunks.create(content: [], missingPartsCallback: => @fetchMissingParts.apply(this, arguments))
|
||||||
|
#else
|
||||||
|
Ember.ArrayProxy.create(content: [])
|
||||||
|
).property()
|
||||||
|
|
||||||
|
clearParts: ->
|
||||||
|
parts = @get('parts')
|
||||||
|
@notifyPropertyChange('parts')
|
||||||
|
Ember.run.next ->
|
||||||
|
# destroy old parts after they're refreshed
|
||||||
parts.destroy()
|
parts.destroy()
|
||||||
|
|
||||||
if Travis.config.pusher_log_fallback
|
|
||||||
parts = Travis.LogChunks.create(content: [], missingPartsCallback: => @fetchMissingParts.apply(this, arguments))
|
|
||||||
else
|
|
||||||
parts = Ember.ArrayProxy.create(content: [])
|
|
||||||
|
|
||||||
@set 'parts', parts
|
|
||||||
# @set 'parts', Travis.ChunkBuffer.create(content: [])
|
|
||||||
|
|
||||||
fetch: ->
|
fetch: ->
|
||||||
console.log 'log model: fetching log' if Log.DEBUG
|
console.log 'log model: fetching log' if Log.DEBUG
|
||||||
@setParts()
|
@clearParts()
|
||||||
handlers =
|
handlers =
|
||||||
json: (json) => @loadParts(json['log']['parts'])
|
json: (json) => @loadParts(json['log']['parts'])
|
||||||
text: (text) => @loadText(text)
|
text: (text) => @loadText(text)
|
||||||
Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id')
|
Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id')
|
||||||
|
|
||||||
clear: ->
|
clear: ->
|
||||||
@setParts()
|
@clearParts()
|
||||||
@incrementProperty('version')
|
@incrementProperty('version')
|
||||||
|
|
||||||
append: (part) ->
|
append: (part) ->
|
||||||
|
return if @get('parts').isDestroying || @get('parts').isDestroyed
|
||||||
@get('parts').pushObject(part)
|
@get('parts').pushObject(part)
|
||||||
|
|
||||||
loadParts: (parts) ->
|
loadParts: (parts) ->
|
||||||
|
|
|
@ -208,18 +208,17 @@ Travis.BuildRoute = Travis.Route.extend
|
||||||
model = Travis.Build.find(model) if model && !model.get
|
model = Travis.Build.find(model) if model && !model.get
|
||||||
|
|
||||||
repo = @controllerFor('repo')
|
repo = @controllerFor('repo')
|
||||||
repo.set('build', model)
|
#repo.set('build', model)
|
||||||
repo.activate('build')
|
|
||||||
@controllerFor('build').set('build', model)
|
@controllerFor('build').set('build', model)
|
||||||
repo.set('build', model)
|
repo.activate('build')
|
||||||
|
#repo.set('build', model)
|
||||||
|
|
||||||
model: (params) ->
|
model: (params) ->
|
||||||
Travis.Build.fetch(params.build_id)
|
Travis.Build.fetch(params.build_id)
|
||||||
|
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
repo = @controllerFor('repo')
|
@controllerFor('job').set('job', null)
|
||||||
repo.set('build', null)
|
@controllerFor('build').set('build', null)
|
||||||
repo.set('job', null)
|
|
||||||
|
|
||||||
Travis.JobRoute = Travis.Route.extend
|
Travis.JobRoute = Travis.Route.extend
|
||||||
serialize: (model, params) ->
|
serialize: (model, params) ->
|
||||||
|
@ -231,19 +230,19 @@ Travis.JobRoute = Travis.Route.extend
|
||||||
model = Travis.Job.find(model) if model && !model.get
|
model = Travis.Job.find(model) if model && !model.get
|
||||||
|
|
||||||
repo = @controllerFor('repo')
|
repo = @controllerFor('repo')
|
||||||
repo.set('job', model)
|
@controllerFor('job').set('job', model)
|
||||||
repo.activate('job')
|
repo.activate('job')
|
||||||
|
|
||||||
if build = model.get('build')
|
if build = model.get('build')
|
||||||
@controllerFor('build').set('build', build)
|
@controllerFor('build').set('build', build)
|
||||||
repo.set('build', build)
|
|
||||||
|
|
||||||
model: (params) ->
|
model: (params) ->
|
||||||
Travis.Job.fetch(params.job_id)
|
Travis.Job.fetch(params.job_id)
|
||||||
|
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
repo = @controllerFor('repo')
|
@controllerFor('build').set('build', null)
|
||||||
repo.set('job', null)
|
@controllerFor('job').set('job', null)
|
||||||
|
|
||||||
|
|
||||||
Travis.RepoIndexRoute = Travis.Route.extend
|
Travis.RepoIndexRoute = Travis.Route.extend
|
||||||
setupController: (controller, model) ->
|
setupController: (controller, model) ->
|
||||||
|
@ -258,8 +257,8 @@ Travis.RepoIndexRoute = Travis.Route.extend
|
||||||
|
|
||||||
deactivate: ->
|
deactivate: ->
|
||||||
repo = @controllerFor('repo')
|
repo = @controllerFor('repo')
|
||||||
repo.set('build', null)
|
@controllerFor('build').set('build', null)
|
||||||
repo.set('job', null)
|
@controllerFor('job').set('job', null)
|
||||||
|
|
||||||
Travis.RepoRoute = Travis.Route.extend
|
Travis.RepoRoute = Travis.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
|
@ -280,6 +279,9 @@ Travis.RepoRoute = Travis.Route.extend
|
||||||
slug = "#{params.owner}/#{params.name}"
|
slug = "#{params.owner}/#{params.name}"
|
||||||
Travis.Repo.fetchBySlug(slug)
|
Travis.Repo.fetchBySlug(slug)
|
||||||
|
|
||||||
|
resetController: ->
|
||||||
|
@controllerFor('repo').deactivate()
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
error: (error) ->
|
error: (error) ->
|
||||||
# if error throwed has a slug (ie. it was probably repo not found)
|
# if error throwed has a slug (ie. it was probably repo not found)
|
||||||
|
|
|
@ -2,28 +2,46 @@ require 'log'
|
||||||
require 'travis/lines_selector'
|
require 'travis/lines_selector'
|
||||||
require 'travis/log_folder'
|
require 'travis/log_folder'
|
||||||
|
|
||||||
Log.DEBUG = false
|
Log.DEBUG = true
|
||||||
Log.LIMIT = 10000
|
Log.LIMIT = 10000
|
||||||
|
|
||||||
Travis.reopen
|
Travis.reopen
|
||||||
LogView: Travis.View.extend
|
LogView: Travis.View.extend
|
||||||
templateName: 'jobs/log'
|
templateName: 'jobs/log'
|
||||||
logBinding: 'job.log'
|
logBinding: 'job.log'
|
||||||
contextBinding: 'job'
|
|
||||||
|
|
||||||
didInsertElement: ->
|
didInsertElement: ->
|
||||||
|
@setupLog()
|
||||||
|
|
||||||
|
logDidChange: (->
|
||||||
|
@setupLog()
|
||||||
|
).observes('log')
|
||||||
|
|
||||||
|
logWillChange: (->
|
||||||
|
@teardownLog()
|
||||||
|
).observesBefore('log')
|
||||||
|
|
||||||
|
willDestroyElement: ->
|
||||||
|
@teardownLog()
|
||||||
|
|
||||||
|
teardownLog: ->
|
||||||
|
job = @get('job')
|
||||||
|
job.unsubscribe() if job
|
||||||
|
|
||||||
|
setupLog: ->
|
||||||
job = @get('job')
|
job = @get('job')
|
||||||
if job
|
if job
|
||||||
job.get('log').fetch()
|
job.get('log').fetch()
|
||||||
job.subscribe()
|
job.subscribe()
|
||||||
|
|
||||||
willDestroyElement: ->
|
|
||||||
job = @get('job')
|
|
||||||
job.unsubscribe() if job
|
|
||||||
|
|
||||||
PreView: Em.View.extend
|
PreView: Em.View.extend
|
||||||
templateName: 'jobs/pre'
|
templateName: 'jobs/pre'
|
||||||
|
|
||||||
|
logWillChange: (->
|
||||||
|
console.log 'log view: log will change' if Log.DEBUG
|
||||||
|
@teardownLog()
|
||||||
|
).observesBefore('log')
|
||||||
|
|
||||||
didInsertElement: ->
|
didInsertElement: ->
|
||||||
console.log 'log view: did insert' if Log.DEBUG
|
console.log 'log view: did insert' if Log.DEBUG
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
|
@ -31,10 +49,7 @@ Travis.reopen
|
||||||
|
|
||||||
willDestroyElement: ->
|
willDestroyElement: ->
|
||||||
console.log 'log view: will destroy' if Log.DEBUG
|
console.log 'log view: will destroy' if Log.DEBUG
|
||||||
parts = @get('log.parts')
|
@teardownLog()
|
||||||
parts.removeArrayObserver(@, didChange: 'partsDidChange', willChange: 'noop')
|
|
||||||
parts.destroy()
|
|
||||||
@lineSelector?.willDestroy()
|
|
||||||
|
|
||||||
versionDidChange: (->
|
versionDidChange: (->
|
||||||
@rerender() if @get('_state') == 'inDOM'
|
@rerender() if @get('_state') == 'inDOM'
|
||||||
|
@ -42,17 +57,28 @@ Travis.reopen
|
||||||
|
|
||||||
logDidChange: (->
|
logDidChange: (->
|
||||||
console.log 'log view: log did change: rerender' if Log.DEBUG
|
console.log 'log view: log did change: rerender' if Log.DEBUG
|
||||||
@rerender() if @get('_state') == 'inDOM'
|
|
||||||
|
if @get('log')
|
||||||
|
@createEngine()
|
||||||
|
@rerender() if @get('_state') == 'inDOM'
|
||||||
).observes('log')
|
).observes('log')
|
||||||
|
|
||||||
|
teardownLog: ->
|
||||||
|
if @get('log')
|
||||||
|
parts = @get('log.parts')
|
||||||
|
parts.removeArrayObserver(@, didChange: 'partsDidChange', willChange: 'noop')
|
||||||
|
parts.destroy()
|
||||||
|
@lineSelector?.willDestroy()
|
||||||
|
|
||||||
createEngine: ->
|
createEngine: ->
|
||||||
console.log 'log view: create engine' if Log.DEBUG
|
if @get('log')
|
||||||
@scroll = new Log.Scroll beforeScroll: =>
|
console.log 'log view: create engine' if Log.DEBUG
|
||||||
@unfoldHighlight()
|
@scroll = new Log.Scroll beforeScroll: =>
|
||||||
@engine = Log.create(limit: Log.LIMIT, listeners: [@scroll])
|
@unfoldHighlight()
|
||||||
@logFolder = new Travis.LogFolder(@$().find('#log'))
|
@engine = Log.create(limit: Log.LIMIT, listeners: [@scroll])
|
||||||
@lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll, @logFolder)
|
@logFolder = new Travis.LogFolder(@$().find('#log'))
|
||||||
@observeParts()
|
@lineSelector = new Travis.LinesSelector(@$().find('#log'), @scroll, @logFolder)
|
||||||
|
@observeParts()
|
||||||
|
|
||||||
unfoldHighlight: ->
|
unfoldHighlight: ->
|
||||||
@lineSelector.unfoldLines()
|
@lineSelector.unfoldLines()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user