From 5fbf153ed95803530b44ebe97a181d7ab69cf07f Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sun, 27 Jan 2013 02:46:18 +0100 Subject: [PATCH] Use /jobs/:id/log.txt endpoint for fetching logs --- assets/scripts/app/models/artifact.coffee | 17 +++++++++++++++-- assets/scripts/app/models/job.coffee | 4 +++- assets/scripts/app/store.coffee | 1 + assets/scripts/app/templates/jobs/log.hbs | 4 +--- assets/scripts/lib/travis/ajax.coffee | 2 +- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/assets/scripts/app/models/artifact.coffee b/assets/scripts/app/models/artifact.coffee index 39df7f16..2aaa9eb5 100644 --- a/assets/scripts/app/models/artifact.coffee +++ b/assets/scripts/app/models/artifact.coffee @@ -1,10 +1,15 @@ require 'travis/model' -@Travis.Artifact = Travis.Model.extend +@Travis.Artifact = Em.Object.extend version: 1 # used to refresh log on requeue - body: DS.attr('string') + body: null + isLoaded: false + init: -> @_super.apply this, arguments + + @fetchBody() + @set 'queue', Ember.A([]) @set 'parts', Ember.ArrayProxy.create(content: []) @@ -15,6 +20,14 @@ require 'travis/model' @set('body', '') @incrementProperty('version') + fetchBody: -> + self = this + Travis.ajax.ajax "/jobs/#{@get('job.id')}/log.txt", 'GET', + dataType: 'text' + success: (data) -> + self.set 'body', data + self.set 'isLoaded', true + append: (body) -> if @get('isInitialized') @get('parts').pushObject body diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index fd37ae93..2ac799e9 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -17,7 +17,9 @@ require 'travis/model' repo: DS.belongsTo('Travis.Repo', key: 'repository_id') build: DS.belongsTo('Travis.Build', key: 'build_id') commit: DS.belongsTo('Travis.Commit', key: 'commit_id') - log: DS.belongsTo('Travis.Artifact', key: 'log_id') + log: ( -> + Travis.Artifact.create(job: this) + ).property() repoSlug: (-> @get('repositorySlug') diff --git a/assets/scripts/app/store.coffee b/assets/scripts/app/store.coffee index 2ad698cb..b400984d 100644 --- a/assets/scripts/app/store.coffee +++ b/assets/scripts/app/store.coffee @@ -71,6 +71,7 @@ Travis.Store = DS.Store.extend !!@typeMapFor(type).idToCid[id] receive: (event, data) -> + console.log event, data [name, type] = event.split(':') mappings = @adapter.get('mappings') diff --git a/assets/scripts/app/templates/jobs/log.hbs b/assets/scripts/app/templates/jobs/log.hbs index c601a99a..36979890 100644 --- a/assets/scripts/app/templates/jobs/log.hbs +++ b/assets/scripts/app/templates/jobs/log.hbs @@ -4,9 +4,7 @@ {{! this #with + #if is needed because I want to rerender 'pre' when log changes to properly clean it up, this should probably be refactored to use container view}} {{#with view.job.log}} - {{#if id}} - {{view Travis.PreView logBinding="view.context.log" logUrlBinding="view.logUrl"}} - {{/if}} + {{view Travis.PreView logBinding="view.context.log" logUrlBinding="view.logUrl"}} {{/with}} {{#if sponsor.name}} diff --git a/assets/scripts/lib/travis/ajax.coffee b/assets/scripts/lib/travis/ajax.coffee index d8ff2deb..b7589ebb 100644 --- a/assets/scripts/lib/travis/ajax.coffee +++ b/assets/scripts/lib/travis/ajax.coffee @@ -21,7 +21,7 @@ jQuery.support.cors = true options.url = "#{endpoint}#{url}" options.type = method - options.dataType = 'json' + options.dataType = options.dataType || 'json' options.contentType = 'application/json; charset=utf-8' options.context = this