From ee52beaa108e821db24bab67570b7841687986a8 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 18 Aug 2015 10:37:00 +0200 Subject: [PATCH] Fix log After update to glimmer log started to be rendered incorrectly, with log lines being inserted in the wrong places. I'm not sure what's the underlying problem, but rewriting to components seems to fix the issue. Since views are deprecated anyway I'm not going to investigate the problem deeper. --- .../log.coffee => components/job-log.coffee} | 8 ++-- .../log-content.coffee} | 47 +++++++------------ app/models/log.coffee | 13 +++-- app/templates/build.hbs | 2 +- app/templates/components/job-log.hbs | 5 ++ .../pre.hbs => components/log-content.hbs} | 30 ++++++------ app/templates/job.hbs | 2 +- app/templates/jobs/log.hbs | 5 -- 8 files changed, 53 insertions(+), 59 deletions(-) rename app/{views/log.coffee => components/job-log.coffee} (70%) rename app/{views/pre.coffee => components/log-content.coffee} (83%) create mode 100644 app/templates/components/job-log.hbs rename app/templates/{jobs/pre.hbs => components/log-content.hbs} (68%) delete mode 100644 app/templates/jobs/log.hbs 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}}