From f7aeda897b9bd5f7c20980d72c5742a3b6afd8dc Mon Sep 17 00:00:00 2001 From: Sven Fuchs Date: Sat, 23 Jun 2012 17:44:28 +0200 Subject: [PATCH] stuff --- AssetFile | 4 + assets/javascripts/app/app.coffee | 46 +- assets/javascripts/app/foo.js | 23 - assets/javascripts/app/models/build.coffee | 40 +- .../javascripts/app/models/repository.coffee | 22 +- assets/javascripts/app/routes.coffee | 144 ++- .../javascripts/app/templates/builds/show.hbs | 86 +- .../app/templates/repositories/list.hbs | 42 +- assets/javascripts/lib/hax0rs.coffee | 2 +- .../travis/data_store/fixture_adapter.coffee | 30 + .../lib/travis/data_store/rest_adapter.coffee | 76 ++ .../lib/travis/data_store_adapter.coffee | 127 -- assets/javascripts/lib/travis/model.coffee | 20 +- assets/javascripts/vendor/ember-data.js | 500 ++++++-- assets/javascripts/vendor/jquery.mockjax.js | 521 +++++++++ .../javascripts/app/templates/application.hbs | 1 - .../javascripts/app/templates/builds/list.hbs | 1 - .../javascripts/app/templates/builds/show.hbs | 1 - .../javascripts/app/templates/jobs/list.hbs | 1 - public/javascripts/app/templates/jobs/log.hbs | 1 - .../javascripts/app/templates/jobs/show.hbs | 1 - public/javascripts/app/templates/loading.hbs | 1 - .../app/templates/repositories/list.hbs | 1 - .../app/templates/repositories/show.hbs | 1 - .../app/templates/repositories/tabs.hbs | 1 - public/javascripts/application.js | 2 +- public/javascripts/vendor.js | 1021 +++++++++++++++-- 27 files changed, 2192 insertions(+), 524 deletions(-) delete mode 100644 assets/javascripts/app/foo.js create mode 100644 assets/javascripts/lib/travis/data_store/fixture_adapter.coffee create mode 100644 assets/javascripts/lib/travis/data_store/rest_adapter.coffee delete mode 100644 assets/javascripts/lib/travis/data_store_adapter.coffee create mode 100644 assets/javascripts/vendor/jquery.mockjax.js delete mode 100644 public/javascripts/app/templates/application.hbs delete mode 100644 public/javascripts/app/templates/builds/list.hbs delete mode 100644 public/javascripts/app/templates/builds/show.hbs delete mode 100644 public/javascripts/app/templates/jobs/list.hbs delete mode 100644 public/javascripts/app/templates/jobs/log.hbs delete mode 100644 public/javascripts/app/templates/jobs/show.hbs delete mode 100644 public/javascripts/app/templates/loading.hbs delete mode 100644 public/javascripts/app/templates/repositories/list.hbs delete mode 100644 public/javascripts/app/templates/repositories/show.hbs delete mode 100644 public/javascripts/app/templates/repositories/tabs.hbs diff --git a/AssetFile b/AssetFile index 0e716642..2e8c10f6 100644 --- a/AssetFile +++ b/AssetFile @@ -1,3 +1,7 @@ +# TODO add neuter for production +# https://github.com/wycats/rake-pipeline-web-filters/blob/master/lib/rake-pipeline-web-filters/neuter_filter.rb +# http://blog.nulayer.com/post/23294069876/building-simple-javascript-libraries-with-rake-pipeline?15bb0420 + require 'rake-pipeline-web-filters' output 'public/javascripts' diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index 10402c20..46f14e56 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -1,8 +1,42 @@ +$.mockjax + url: '/repositories', + responseTime: 0, + responseText: + repositories: [ + { id: 1, owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_result: 0 }, + { id: 2, owner: 'travis-ci', name: 'travis-assets', slug: 'travis-ci/travis-assets', build_ids: [3], last_build_id: 3, last_build_number: 3}, + { id: 3, owner: 'travis-ci', name: 'travis-hub', slug: 'travis-ci/travis-hub', build_ids: [4], last_build_id: 4, last_build_number: 4}, + ], + +$.mockjax + url: '/travis-ci/travis-core', + responseTime: 0, + responseText: + repository: { id: 1, owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_result: 0 } + +$.mockjax + url: '/travis-ci/travis-assets', + responseTime: 0, + responseText: + repository: { id: 1, owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_result: 0 } + +$.mockjax + url: '/builds/1', + resposeTime: 0, + responseText: + build: { id: 1, repository_id: 'travis-ci/travis-core', commit_id: 1, job_ids: [1, 2], number: 1, event_type: 'push', config: { rvm: ['rbx', '1.9.3'] }, finished_at: '2012-06-20T00:21:20Z', duration: 35, result: 0 } + +$.mockjax + url: '/builds/2', + resposeTime: 0, + responseText: + build: { id: 1, repository_id: 'travis-ci/travis-assets', commit_id: 1, job_ids: [1, 2], number: 1, event_type: 'push', config: { rvm: ['rbx'] }, finished_at: '2012-06-20T00:21:20Z', duration: 35, result: 0 } + @Travis = Em.Application.create() require 'ext/jquery' require 'locales' -require 'travis/data_store_adapter' +require 'travis/data_store/rest_adapter' require 'helpers' require 'models' require 'views' @@ -13,14 +47,8 @@ require 'routes' # Travis = window.Travis Travis.store = DS.Store.extend( revision: 4 - adapter: Travis.FixtureAdapter.create() + adapter: Travis.RestAdapter.create() + # adapter: Travis.FixtureAdapter.create() ).create() -# apparently fixtures behave weird unless preloaded :/ should move to mockjax for testing -Travis.Repository.find() -Travis.Build.find() -Travis.Commit.find() -Travis.Job.find() -Travis.Artifact.find() - Travis.initialize() diff --git a/assets/javascripts/app/foo.js b/assets/javascripts/app/foo.js deleted file mode 100644 index ca28674d..00000000 --- a/assets/javascripts/app/foo.js +++ /dev/null @@ -1,23 +0,0 @@ -window.Util = window.Util || {} - -window.Util.counter = (function () { - var value = 0; - - return { - getValue: function () { - return value; - }, - increment: function (i) { - if (!i) i = 1; - return value += i; - }, - decrement: function (i) { - if (!i) i = 1; - return value -= i; - }, - reset: function (i) { - if (!i) i = 0; - return value = i; - } - } -}()); diff --git a/assets/javascripts/app/models/build.coffee b/assets/javascripts/app/models/build.coffee index a482eed3..b1c6f97e 100644 --- a/assets/javascripts/app/models/build.coffee +++ b/assets/javascripts/app/models/build.coffee @@ -28,30 +28,30 @@ require 'travis/model' @getPath('data.job_ids.length') > 1 ).property('data.job_ids.length') - isFailureMatrix: (-> - @getPath('allowedFailureJobs.length') > 0 - ).property('allowedFailureJobs.length') + # isFailureMatrix: (-> + # @getPath('allowedFailureJobs.length') > 0 + # ).property('allowedFailureJobs.length') - # TODO why does the hasMany association not work? - jobs: (-> - Travis.Job.findMany(@getPath('data.job_ids')) - ).property('data.job_ids.length') + # # TODO why does the hasMany association not work? + # jobs: (-> + # Travis.Job.findMany(@getPath('data.job_ids') || []) + # ).property('data.job_ids.length') - requiredJobs: (-> - @get('jobs').filter (job) -> job.get('allow_failure') != true - ).property('jobs') + # requiredJobs: (-> + # @get('jobs').filter (job) -> job.get('allow_failure') != true + # ).property('jobs') - allowedFailureJobs: (-> - @get('jobs').filter (job) -> job.get 'allow_failure' - ).property('jobs') + # allowedFailureJobs: (-> + # @get('jobs').filter (job) -> job.get 'allow_failure' + # ).property('jobs') - configKeys: (-> - config = @get('config') - return [] unless config - keys = $.keys($.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala')) - headers = [I18n.t('build.job'), I18n.t('build.duration'), I18n.t('build.finished_at')] - $.map(headers.concat(keys), (key) -> return $.camelize(key)) - ).property('config') + # configKeys: (-> + # config = @get('config') + # return [] unless config + # keys = $.keys($.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala')) + # headers = [I18n.t('build.job'), I18n.t('build.duration'), I18n.t('build.finished_at')] + # $.map(headers.concat(keys), (key) -> return $.camelize(key)) + # ).property('config') tick: -> @notifyPropertyChange 'duration' diff --git a/assets/javascripts/app/models/repository.coffee b/assets/javascripts/app/models/repository.coffee index 9de70d67..828aa8d1 100644 --- a/assets/javascripts/app/models/repository.coffee +++ b/assets/javascripts/app/models/repository.coffee @@ -11,8 +11,6 @@ require 'travis/model' primaryKey: 'slug' - lastBuild: DS.belongsTo('Travis.Build') - builds: (-> Travis.Build.byRepositoryId @get('id'), event_type: 'push' ).property() @@ -22,13 +20,22 @@ require 'travis/model' ).property() owner: (-> - (@get('slug') || '').split('/')[0] + (@get('slug') || @_id).split('/')[0] ).property('owner', 'name'), name: (-> - (@get('slug') || '').split('/')[1] + (@get('slug') || @_id).split('/')[1] ).property('owner', 'name'), + # TODO this is used in router#serializeObject for the last_build links in the + # repositories list. should be in some item controller i guess, but i'm not + # sure how to use one with #each + lastBuild: (-> + owner: @get('owner') + name: @get('name') + id: @get('last_build_id') + ).property('last_build_id') + last_build_duration: (-> duration = @getPath('data.last_build_duration') duration = Travis.Helpers.durationFrom(@get('last_build_started_at'), @get('last_build_finished_at')) unless duration @@ -67,10 +74,7 @@ require 'travis/model' @find().forEach (repository) -> repository.set 'selected', repository.get('id') is id -@Travis.Repository.FIXTURES = [ - { id: 1, owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_result: 0 }, - { id: 2, owner: 'travis-ci', name: 'travis-assets', slug: 'travis-ci/travis-assets', build_ids: [3], last_build_id: 3, last_build_number: 3}, - { id: 3, owner: 'travis-ci', name: 'travis-hub', slug: 'travis-ci/travis-hub', build_ids: [4], last_build_id: 4, last_build_number: 4}, -] + buildURL: (slug) -> + if slug then slug else 'repositories' diff --git a/assets/javascripts/app/routes.coffee b/assets/javascripts/app/routes.coffee index 26cbc345..5dd748fd 100644 --- a/assets/javascripts/app/routes.coffee +++ b/assets/javascripts/app/routes.coffee @@ -5,83 +5,98 @@ require 'hax0rs' location: 'hash' root: Em.Route.extend - viewCurrent: Ember.Route.transitionTo('current') - viewBuilds: Ember.Route.transitionTo('builds') - viewBuild: Ember.Route.transitionTo('build') - viewJob: Ember.Route.transitionTo('job') - - index: Em.Route.extend + default: Em.Route.extend route: '/' + viewCurrent: Ember.Route.transitionTo('current') + viewBuilds: Ember.Route.transitionTo('builds') + viewBuild: Ember.Route.transitionTo('build') + viewJob: Ember.Route.transitionTo('job') + connectOutlets: (router) -> repositories = Travis.Repository.find() router.connectLeft(repositories) - onceLoaded repositories, => - repository = repositories.get('firstObject') + router.set('repositories', repositories) + + index: Em.Route.extend + route: '/' + + connectOutlets: (router) -> + repositories = router.get('repositories') + onceLoaded repositories, => + repository = repositories.get('firstObject') + router.connectRepository repository + router.connectTabs repository + router.connectCurrent repository.get('lastBuild') + + current: Em.Route.extend + route: '/:owner/:name' + + serialize: (router, repository) -> + router.serializeRepository(repository) + + deserialize: (router, params) -> + router.deserializeRepository(params) + + connectOutlets: (router, repository) -> router.connectRepository repository router.connectTabs repository router.connectCurrent repository.get('lastBuild') - current: Em.Route.extend - route: '/:owner/:name' + builds: Em.Route.extend + route: '/:owner/:name/builds' - serialize: (router, repository) -> - router.serializeRepository repository + serialize: (router, repository) -> + router.serializeRepository repository - connectOutlets: (router, repository) -> - repositories = Travis.Repository.find() - router.connectLeft(repositories) - onceLoaded repository, => - router.connectRepository repository - router.connectTabs repository - router.connectCurrent repository.get('lastBuild') + deserialize: (router, params) -> + router.deserializeRepository(params) - builds: Em.Route.extend - route: '/:owner/:name/builds' - - serialize: (router, repository) -> - router.serializeRepository repository - - connectOutlets: (router, repository) -> - repositories = Travis.Repository.find() - router.connectLeft(repositories) - onceLoaded repository, => + connectOutlets: (router, repository) -> router.connectRepository repository router.connectTabs repository router.connectBuilds repository.get('builds') - build: Em.Route.extend - route: '/:owner/:name/builds/:id' + build: Em.Route.extend + route: '/:owner/:name/builds/:id' - serialize: (router, build) -> - router.serializeObject build + serialize: (router, build) -> + r = router.serializeObject build + console.log(r.owner, r.name, r.id) + r - connectOutlets: (router, build) -> - repositories = Travis.Repository.find() - repository = build.get('repository') + deserialize: (router, params) -> + router.deserializeBuild(params) - router.connectLeft(repositories) - onceLoaded repository, => - router.connectRepository repository - router.connectTabs repository, build - router.connectBuild build + connectOutlets: (router, build) -> + build = Travis.Build.find(build.id) unless build instanceof Travis.Build + onceLoaded build, => + repository = build.get('repository') + onceLoaded repository, => + router.connectRepository repository + router.connectTabs repository, build + router.connectBuild build - job: Em.Route.extend - route: '/:owner/:name/jobs/:id' + job: Em.Route.extend + route: '/:owner/:name/jobs/:id' - serialize: (router, job) -> - router.serializeObject job + serialize: (router, job) -> + router.serializeObject job - connectOutlets: (router, job) -> - repositories = Travis.Repository.find() - repository = job.get('repository') - build = job.get('build') + deserialize: (router, params) -> + router.deserializeBuild(params) - router.connectLeft(repositories) - onceLoaded repository, build, => - router.connectRepository repository - router.connectTabs repository, build, job - router.connectJob job + connectOutlets: (router, job) -> + # repositories = Travis.Repository.find() + # job = Travis.Job.find(job.id) unless job instanceof Travis.Job + # repository = job.get('repository') + # build = job.get('build') + + # router.connectLeft(repositories) + # onceLoaded repository, build, => + # router.connectRepository repository + # router.connectTabs repository, build, job + # router.connectJob job connectLeft: (repositories) -> @@ -109,17 +124,30 @@ require 'hax0rs' @get('repositoryController').connectOutlet outletName: 'tab', name: 'job', context: job - serializeRepository: (repository) -> - if repository instanceof DS.Model - repository.getProperties 'owner', 'name' + serializeRepository: (object) -> + if object instanceof DS.Model + slug = object.get('slug') || object._id # wat. + parts = slug.split('/') + { owner: parts[0], name: parts[1] } else - repository or {} + object || {} serializeObject: (object) -> if object instanceof DS.Model repository = object.get('repository') params = @serializeRepository(repository) + object.get('id') || debugger $.extend params, id: object.get('id') else object or {} + + deserializeRepository: (params) -> + Travis.Repository.find("#{params.owner}/#{params.name}") + + deserializeBuild: (params) -> + Travis.Build.find(params.id) + + deserializeJob: (params) -> + Travis.Job.find(params.id) + diff --git a/assets/javascripts/app/templates/builds/show.hbs b/assets/javascripts/app/templates/builds/show.hbs index 7bd4ce4d..ce26b626 100644 --- a/assets/javascripts/app/templates/builds/show.hbs +++ b/assets/javascripts/app/templates/builds/show.hbs @@ -1,46 +1,48 @@ -
-
-
-
{{t builds.name}}
-
{{number}}
-
{{t builds.finished_at}}
-
{{formatTime finished_at}}
-
{{t builds.duration}}
-
{{formatDuration duration}}
-
+{{#if isLoaded}} +
+
+
+
{{t builds.name}}
+
{{number}}
+
{{t builds.finished_at}}
+
{{formatTime finished_at}}
+
{{t builds.duration}}
+
{{formatDuration duration}}
+
-
-
{{t builds.commit}}
-
{{formatCommit commit}}
- {{#if commit.compare_url}} -
{{t builds.compare}}
-
{{pathFrom commit.compare_url}}
- {{/if}} - {{#if commit.author_name}} -
{{t builds.author}}
-
{{commit.author_name}}
- {{/if}} - {{#if commit.committer_name}} -
{{t builds.committer}}
-
{{commit.committer_name}}
- {{/if}} -
+
+
{{t builds.commit}}
+
{{formatCommit commit}}
+ {{#if commit.compare_url}} +
{{t builds.compare}}
+
{{pathFrom commit.compare_url}}
+ {{/if}} + {{#if commit.author_name}} +
{{t builds.author}}
+
{{commit.author_name}}
+ {{/if}} + {{#if commit.committer_name}} +
{{t builds.committer}}
+
{{commit.committer_name}}
+ {{/if}} +
-
{{t builds.message}}
-
{{{formatMessage commit.message}}}
+
{{t builds.message}}
+
{{{formatMessage commit.message}}}
- {{#if isMatrix}} - {{else}} -
{{t builds.config}}
-
{{formatConfig config}}
+ {{#if isMatrix}} + {{else}} +
{{t builds.config}}
+
{{formatConfig config}}
+ {{/if}} +
+ + {{#if isLoaded}} + {{#if isMatrix}} + {{view Travis.JobsView}} + {{else}} + {{view Travis.LogView}} + {{/if}} {{/if}} -
- - {{#if isLoaded}} - {{#if isMatrix}} - {{view Travis.JobsView}} - {{else}} - {{view Travis.LogView}} - {{/if}} - {{/if}} -
+ +{{/if}} diff --git a/assets/javascripts/app/templates/repositories/list.hbs b/assets/javascripts/app/templates/repositories/list.hbs index 2d85aa58..76c50b3c 100644 --- a/assets/javascripts/app/templates/repositories/list.hbs +++ b/assets/javascripts/app/templates/repositories/list.hbs @@ -1,20 +1,22 @@ -