diff --git a/app/views/log.coffee b/app/components/job-log.coffee similarity index 70% rename from app/views/log.coffee rename to app/components/job-log.coffee index 4591adfe..5adb3f97 100644 --- a/app/views/log.coffee +++ b/app/components/job-log.coffee @@ -1,8 +1,6 @@ -`import BasicView from 'travis/views/basic'` -`import config from 'travis/config/environment'` +`import Ember from 'ember'` -View = BasicView.extend - templateName: 'jobs/log' +JobLogComponent = Ember.Component.extend logBinding: 'job.log' didInsertElement: -> @@ -29,4 +27,4 @@ View = BasicView.extend job.get('log').fetch() job.subscribe() -`export default View` +`export default JobLogComponent` diff --git a/app/views/pre.coffee b/app/components/log-content.coffee similarity index 83% rename from app/views/pre.coffee rename to app/components/log-content.coffee index fa7cb118..78c774c3 100644 --- a/app/views/pre.coffee +++ b/app/components/log-content.coffee @@ -1,8 +1,8 @@ +`import Ember from 'ember'` `import LinesSelector from 'travis/utils/lines-selector'` `import LogFolder from 'travis/utils/log-folder'` `import config from 'travis/config/environment'` `import { plainTextLog as plainTextLogUrl } from 'travis/utils/urls'` -`import BasicView from 'travis/views/basic'` Log.DEBUG = false Log.LIMIT = 10000 @@ -41,16 +41,11 @@ Object.defineProperty Log.Limit.prototype, 'limited', get: -> @count >= @max_lines -View = BasicView.extend +LogContentComponent = Ember.Component.extend popup: Ember.inject.service() + auth: Ember.inject.service() - templateName: 'jobs/pre' - currentUserBinding: 'controller.auth.currentUser' - - logWillChange: (-> - console.log 'log view: log will change' if Log.DEBUG - @teardownLog() - ).observesBefore('log') + currentUserBinding: 'auth.currentUser' didInsertElement: -> console.log 'log view: did insert' if Log.DEBUG @@ -61,21 +56,6 @@ View = BasicView.extend console.log 'log view: will destroy' if Log.DEBUG @teardownLog() - versionDidChange: (-> - this.$('#log').empty() - @teardownLog() - @createEngine() - ).observes('log.version') - - logDidChange: (-> - console.log 'log view: log did change: rerender' if Log.DEBUG - - this.$('#log').empty() - @teardownLog() - if @get('log') - @createEngine() - ).observes('log') - teardownLog: -> if log = @get('log') parts = log.get('parts') @@ -83,20 +63,30 @@ View = BasicView.extend parts.destroy() log.notifyPropertyChange('parts') @lineSelector?.willDestroy() + # log should do it on destroy + this.$('#log').empty() createEngine: -> - if @get('log') + if log = @get('log') console.log 'log view: create engine' if Log.DEBUG + log.onClear => + @teardownLog() + @createEngine() + @scroll = new Log.Scroll beforeScroll: => @unfoldHighlight() @limit = new Log.Limit Log.LIMIT, => @set('limited', true) @engine = Log.create(listeners: [@scroll, @limit]) @engine.limit = @limit - @logFolder = new LogFolder(@$().find('#log')) - @lineSelector = new LinesSelector(@$().find('#log'), @scroll, @logFolder) + @logFolder = new LogFolder(@$('#log')) + @lineSelector = new LinesSelector(@$('#log'), @scroll, @logFolder) @observeParts() + didUpdateAttrs: -> + @teardownLog() + @createEngine() + unfoldHighlight: -> @lineSelector.unfoldLines() @@ -154,5 +144,4 @@ View = BasicView.extend noop: -> # TODO required? -`export default View` -Travis.PreView = View +`export default LogContentComponent` diff --git a/app/models/log.coffee b/app/models/log.coffee index fd4c0471..f3c8e28c 100644 --- a/app/models/log.coffee +++ b/app/models/log.coffee @@ -85,19 +85,26 @@ Log = Ember.Object.extend clear: -> @clearParts() - @incrementProperty('version') + @runOnClear() + + runOnClear: -> + if callback = @get('onClearCallback') + callback() + + onClear: (callback) -> + @set('onClearCallback', callback) append: (part) -> return if @get('parts').isDestroying || @get('parts').isDestroyed @get('parts').pushObject(part) loadParts: (parts) -> - console.log 'log model: load parts' if Log.DEBUG + console.log 'log model: load parts' @append(part) for part in parts @set('isLoaded', true) loadText: (text) -> - console.log 'log model: load text' if Log.DEBUG + console.log 'log model: load text' @append(number: 1, content: text, final: true) @set('isLoaded', true) diff --git a/app/templates/build.hbs b/app/templates/build.hbs index 7e41a868..4e9766ca 100644 --- a/app/templates/build.hbs +++ b/app/templates/build.hbs @@ -84,7 +84,7 @@ {{loading-indicator center=true}} {{/if}} {{else}} - {{view 'log' job=build.jobs.firstObject}} + {{job-log job=build.jobs.firstObject}} {{/if}} {{/if}} diff --git a/app/templates/components/job-log.hbs b/app/templates/components/job-log.hbs new file mode 100644 index 00000000..71a2be1e --- /dev/null +++ b/app/templates/components/job-log.hbs @@ -0,0 +1,5 @@ +{{#if log.isLoaded}} + {{log-content job=job log=log}} +{{else}} + {{loading-indicator}} +{{/if}} diff --git a/app/templates/jobs/pre.hbs b/app/templates/components/log-content.hbs similarity index 68% rename from app/templates/jobs/pre.hbs rename to app/templates/components/log-content.hbs index 5e2914ad..27048e2f 100644 --- a/app/templates/jobs/pre.hbs +++ b/app/templates/components/log-content.hbs @@ -1,10 +1,10 @@ -{{remove-log-popup job=view.job}} +{{remove-log-popup job=job}}
{{#if auth.signedIn}} - {{#if view.job.isLegacyInfrastructure}} - {{#if view.job.isFinished}} + {{#if job.isLegacyInfrastructure}} + {{#if job.isFinished}}

This job ran on our legacy infrastructure. Please read our docs on how to upgrade

{{else}} @@ -14,23 +14,23 @@ {{/if}} {{/if}} - {{#if view.job.notStarted}} + {{#if job.notStarted}}
Hang tight, the log cannot be shown until the build has started.
{{/if}} -
+ - {{#if view.limited}} + {{#if limited}}

This log is too long to be displayed. Please reduce the verbosity of your - build or download the raw log. + build or download the raw log.

{{/if}}
diff --git a/app/templates/job.hbs b/app/templates/job.hbs index b6238897..62d4c79f 100644 --- a/app/templates/job.hbs +++ b/app/templates/job.hbs @@ -63,7 +63,7 @@ {{view 'annotations' annotations=view.annotations}} - {{view 'log' job=job}} + {{job-log job=job}} {{else}}
diff --git a/app/templates/jobs/log.hbs b/app/templates/jobs/log.hbs deleted file mode 100644 index 4ae18401..00000000 --- a/app/templates/jobs/log.hbs +++ /dev/null @@ -1,5 +0,0 @@ -{{#if view.log.isLoaded}} - {{view 'pre' job=view.job log=view.log}} -{{else}} - {{loading-indicator}} -{{/if}}