From 1150a5f703575cf2eafab6c1a7725072b3be08f1 Mon Sep 17 00:00:00 2001 From: Sven Fuchs Date: Sat, 7 Jul 2012 16:00:12 +0200 Subject: [PATCH] fix tabs tools --- .../javascripts/app/controllers/stats.coffee | 13 ++---- assets/javascripts/app/helpers/urls.coffee | 3 ++ assets/javascripts/app/models.coffee | 1 + .../javascripts/app/models/repository.coffee | 4 ++ .../app/templates/repositories/_tabs.hbs | 31 ------------- .../app/templates/repositories/show.hbs | 2 +- .../app/templates/repositories/tabs.hbs | 46 +++++++++++++++++++ assets/javascripts/app/views/repo.coffee | 46 +++++++++++++++---- assets/javascripts/lib/mocks.coffee | 13 ++++++ public/javascripts/application.js | 2 +- 10 files changed, 111 insertions(+), 50 deletions(-) delete mode 100644 assets/javascripts/app/templates/repositories/_tabs.hbs create mode 100644 assets/javascripts/app/templates/repositories/tabs.hbs diff --git a/assets/javascripts/app/controllers/stats.coffee b/assets/javascripts/app/controllers/stats.coffee index 3017b8a8..cdc96bee 100644 --- a/assets/javascripts/app/controllers/stats.coffee +++ b/assets/javascripts/app/controllers/stats.coffee @@ -4,12 +4,9 @@ Travis.StatsController = Travis.Controller.extend name: 'stats' init: -> - @_super('top', 'stats', 'hooks') - - viewShow: (params) -> - if @currentUser - @connectStats() - - connectStats: () -> - @statsController.connectOutlet(outletName: 'main', name: 'stats') + @_super('top') + @connectTop() + @connectOutlet(outletName: 'main', controller: this, viewClass: Travis.StatsView) + activate: (action, params) -> + # noop diff --git a/assets/javascripts/app/helpers/urls.coffee b/assets/javascripts/app/helpers/urls.coffee index 34d20299..1c094f67 100644 --- a/assets/javascripts/app/helpers/urls.coffee +++ b/assets/javascripts/app/helpers/urls.coffee @@ -26,5 +26,8 @@ githubAdmin: (slug) -> "http://github.com/#{slug}/admin/hooks#travis_minibucket" + statusImage: (slug, branch) -> + "https://secure.travis-ci.org/#{slug}.png" + if branch then "?branch=#{branch}" else '' + email: (email) -> "mailto:#{email}" diff --git a/assets/javascripts/app/models.coffee b/assets/javascripts/app/models.coffee index 171b195c..9ae6a6ae 100644 --- a/assets/javascripts/app/models.coffee +++ b/assets/javascripts/app/models.coffee @@ -1,4 +1,5 @@ require 'models/artifact' +require 'models/branch' require 'models/build' require 'models/commit' require 'models/hook' diff --git a/assets/javascripts/app/models/repository.coffee b/assets/javascripts/app/models/repository.coffee index b853003c..b2d382b0 100644 --- a/assets/javascripts/app/models/repository.coffee +++ b/assets/javascripts/app/models/repository.coffee @@ -21,6 +21,10 @@ require 'travis/model' Travis.Build.byRepositoryId @get('id'), event_type: 'pull_request' ).property() + branches: (-> + Travis.Branch.byRepositoryId @get('id') + ).property() + lastBuildDuration: (-> duration = @getPath('data.last_build_duration') duration = Travis.Helpers.durationFrom(@get('lastBuildStartedAt'), @get('lastBuildFinishedAt')) unless duration diff --git a/assets/javascripts/app/templates/repositories/_tabs.hbs b/assets/javascripts/app/templates/repositories/_tabs.hbs deleted file mode 100644 index 9cafa613..00000000 --- a/assets/javascripts/app/templates/repositories/_tabs.hbs +++ /dev/null @@ -1,31 +0,0 @@ - - -
- -
-

-

-

-

-

-
-
diff --git a/assets/javascripts/app/templates/repositories/show.hbs b/assets/javascripts/app/templates/repositories/show.hbs index 7572c178..44fdfb19 100644 --- a/assets/javascripts/app/templates/repositories/show.hbs +++ b/assets/javascripts/app/templates/repositories/show.hbs @@ -13,7 +13,7 @@
  • {{stats.forks}}
  • - {{view templateName="repositories/_tabs" contextBinding="view"}} + {{view Travis.TabsView}}
    diff --git a/assets/javascripts/app/templates/repositories/tabs.hbs b/assets/javascripts/app/templates/repositories/tabs.hbs new file mode 100644 index 00000000..5265fcda --- /dev/null +++ b/assets/javascripts/app/templates/repositories/tabs.hbs @@ -0,0 +1,46 @@ + + +
    + +
    +

    + + {{view Ember.Select contentBinding="view.branches" selectionBinding="view.branch" optionLabelPath="content.commit.branch" optionValuePath="content.commit.branch"}} +

    +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +
    +
    diff --git a/assets/javascripts/app/views/repo.coffee b/assets/javascripts/app/views/repo.coffee index e3292791..28ec916d 100644 --- a/assets/javascripts/app/views/repo.coffee +++ b/assets/javascripts/app/views/repo.coffee @@ -28,6 +28,23 @@ RepositoryView: Em.View.extend templateName: 'repositories/show' + repositoryBinding: 'controller.repository' + + urlGithub: (-> + Travis.Urls.githubRepository(@getPath('repository.slug')) + ).property('repository.slug'), + + urlGithubWatchers: (-> + Travis.Urls.githubWatchers(@getPath('repository.slug')) + ).property('repository.slug'), + + urlGithubNetwork: (-> + Travis.Urls.githubNetwork(@getPath('repository.slug')) + ).property('repository.slug'), + + TabsView: Em.View.extend + templateName: 'repositories/tabs' + repositoryBinding: 'controller.repository' buildBinding: 'controller.build' jobBinding: 'controller.job' @@ -73,15 +90,26 @@ Travis.Urls.job(@getPath('repository.slug'), @getPath('job.id')) ).property('repository.slug', 'job.id') - urlGithub: (-> - Travis.Urls.githubRepository(@getPath('repository.slug')) - ).property('repository.slug'), + branches: (-> + @getPath('repository.branches') + ).property('repository.id') + + urlStatusImage: (-> + Travis.Urls.statusImage(@getPath('repository.slug'), @getPath('branch.commit.branch')) + ).property('repository.slug', 'branch') + + markdownStatusImage: (-> + "[![Build Status](#{@get('urlStatusImage')})](#{@get('urlRepository')})" + ).property('urlStatusImage') + + textileStatusImage: (-> + "!#{@get('urlStatusImage')}!:#{@get('urlRepository')}" + ).property('urlStatusImage') + + rdocStatusImage: (-> + "{\"Build}[#{@get('urlRepository')}]" + ).property('urlStatusImage') + - urlGithubWatchers: (-> - Travis.Urls.githubWatchers(@getPath('repository.slug')) - ).property('repository.slug'), - urlGithubNetwork: (-> - Travis.Urls.githubNetwork(@getPath('repository.slug')) - ).property('repository.slug'), diff --git a/assets/javascripts/lib/mocks.coffee b/assets/javascripts/lib/mocks.coffee index 17760214..0dc7513d 100644 --- a/assets/javascripts/lib/mocks.coffee +++ b/assets/javascripts/lib/mocks.coffee @@ -40,6 +40,12 @@ artifacts = [ { id: 5, body: 'log 4' } ] +branches = [ + { branches: [builds[0], builds[1]], commits: [commits[0], commits[1]] }, + { branches: [builds[2]], commits: [commits[2]] }, + { branches: [builds[3]], commits: [commits[3]] }, +] + workers = [ { id: 1, name: 'ruby-1', host: 'worker.travis-ci.org', state: 'ready' } { id: 2, name: 'ruby-2', host: 'worker.travis-ci.org', state: 'ready' } @@ -89,6 +95,13 @@ for job in jobs job: job, commit: commits[job.commit_id - 1] +for data in branches + $.mockjax + url: '/branches' + data: { repository_id: data.branches[0].repository_id } + responseTime: responseTime + responseText: data + for artifact in artifacts $.mockjax url: '/artifacts/' + artifact.id diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 5ec3bb51..31eed619 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1 +1 @@ -minispade.register('templates', "(function() {Ember.TEMPLATES['builds/list']=Ember.Handlebars.compile(\"{{#if builds.isLoaded}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n {{#each build in builds}}\\n {{#view Travis.BuildsItemView contextBinding=\\\"build\\\"}}\\n \\n \\n \\n \\n \\n \\n \\n {{/view}}\\n {{/each}}\\n \\n
    {{t builds.name}}{{t builds.commit}}{{t builds.message}}{{t builds.duration}}{{t builds.finished_at}}
    {{number}}{{formatCommit commit}}{{{formatMessage commit.message short=\\\"true\\\"}}}{{formatDuration duration}}{{formatTime finishedAt}}
    \\n\\n

    \\n \\n

    \\n{{else}}\\n
    \\n Loading\\n
    \\n{{/if}}\\n\");Ember.TEMPLATES['builds/show']=Ember.Handlebars.compile(\"{{#with view}}\\n {{#if build.isLoaded}}\\n
    \\n
    \\n
    \\n
    {{t builds.name}}
    \\n
    {{build.number}}
    \\n
    {{t builds.finished_at}}
    \\n
    {{formatTime build.finished_at}}
    \\n
    {{t builds.duration}}
    \\n
    {{formatDuration build.duration}}
    \\n
    \\n\\n
    \\n
    {{t builds.commit}}
    \\n
    {{formatCommit build.commit}}
    \\n {{#if commit.compareUrl}}\\n
    {{t builds.compare}}
    \\n
    {{pathFrom build.commit.compareUrl}}
    \\n {{/if}}\\n {{#if commit.authorName}}\\n
    {{t builds.author}}
    \\n
    {{build.commit.authorName}}
    \\n {{/if}}\\n {{#if commit.committerName}}\\n
    {{t builds.committer}}
    \\n
    {{build.commit.committerName}}
    \\n {{/if}}\\n
    \\n\\n
    {{t builds.message}}
    \\n
    {{{formatMessage build.commit.message}}}
    \\n\\n {{#unless isMatrix}}\\n
    {{t builds.config}}
    \\n
    {{formatConfig build.config}}
    \\n {{/unless}}\\n
    \\n\\n {{#if build.isMatrix}}\\n {{view Travis.JobsView jobsBinding=\\\"requiredJobs\\\" required=\\\"true\\\"}}\\n {{view Travis.JobsView jobsBinding=\\\"allowedFailureJobs\\\"}}\\n {{else}}\\n {{view Travis.LogView contextBinding=\\\"build.jobs.firstObject\\\"}}\\n {{/if}}\\n
    \\n {{else}}\\n
    \\n Loading\\n
    \\n {{/if}}\\n{{/with}}\\n\");Ember.TEMPLATES['jobs/list']=Ember.Handlebars.compile(\"{{#with view}}\\n {{#if jobs.length}}\\n {{#if required}}\\n \\n \\n {{else}}\\n
    \\n {{t jobs.build_matrix}}\\n
    \\n \\n {{/if}}\\n \\n \\n {{#each build.configKeys}}\\n \\n {{/each}}\\n \\n \\n \\n {{#each job in jobs}}\\n {{#view Travis.JobsItemView contextBinding=\\\"job\\\"}}\\n \\n \\n \\n \\n {{#each configValues}}\\n \\n {{/each}}\\n \\n {{/view}}\\n {{/each}}\\n \\n
    \\n {{t jobs.allowed_failures}}\\n \\n
    {{this}}
    {{number}}{{formatDuration duration}}{{formatTime finished_at}}{{this}}
    \\n\\n {{#unless required}}\\n
    \\n
    {{t \\\"jobs.allowed_failures\\\"}}
    \\n
    \\n

    \\n Allowed Failures are items in your build matrix that are allowed to\\n fail without causing the entire build to be shown as failed. This lets you add\\n in experimental and preparatory builds to test against versions or\\n configurations that you are not ready to officially support.\\n

    \\n

    \\n You can define allowed failures in the build matrix as follows:\\n

    \\n
     matrix:\\n    allow_failures:\\n      - rvm: ruby-head 
    \\n
    \\n
    \\n {{/unless}}\\n {{/if}}\\n{{/with}}\\n\");Ember.TEMPLATES['jobs/log']=Ember.Handlebars.compile(\"
    {{{formatLog log.body}}}
    \\n\\n{{#if sponsor.name}}\\n

    \\n {{t builds.messages.sponsored_by}}\\n {{sponsor.name}}\\n

    \\n{{/if}}\\n\");Ember.TEMPLATES['jobs/show']=Ember.Handlebars.compile(\"{{#with view}}\\n {{#if job.isLoaded}}\\n
    \\n
    \\n
    \\n
    Job
    \\n
    {{job.number}}
    \\n
    {{t jobs.finished_at}}
    \\n
    {{formatTime job.finished_at}}
    \\n
    {{t jobs.duration}}
    \\n
    {{formatDuration job.duration}}
    \\n
    \\n\\n
    \\n
    {{t jobs.commit}}
    \\n
    {{formatCommit commit}}
    \\n {{#if commit.compareUrl}}\\n
    {{t jobs.compare}}
    \\n
    {{pathFrom commit.compareUrl}}
    \\n {{/if}}\\n {{#if commit.authorName}}\\n
    {{t jobs.author}}
    \\n
    {{commit.authorName}}
    \\n {{/if}}\\n {{#if commit.committerName}}\\n
    {{t jobs.committer}}
    \\n
    {{commit.committerName}}
    \\n {{/if}}\\n
    \\n\\n
    {{t jobs.message}}
    \\n
    {{formatMessage commit.message}}
    \\n
    {{t jobs.config}}
    \\n
    {{formatConfig job.config}}
    \\n
    \\n\\n {{view Travis.LogView contextBinding=\\\"job\\\"}}}\\n
    \\n {{/if}}\\n{{/with}}\\n\");Ember.TEMPLATES['layouts/home']=Ember.Handlebars.compile(\"
    \\n {{outlet top}}\\n
    \\n\\n
    \\n
    \\n \\n
    \\n\\n \\n\\n
    \\n {{outlet left}}\\n
    \\n
    \\n\\n
    \\n {{outlet main}}\\n\\n
    \\n {{outlet right}}\\n
    \\n
    \\n\\n\");Ember.TEMPLATES['layouts/sidebar']=Ember.Handlebars.compile(\"\\n {{t layouts.application.fork_me}}\\n\\n\\n
    \\n
     \\n
    \\n\\n{{outlet decks}}\\n{{outlet workers}}\\n{{outlet queues}}\\n{{outlet links}}\\n\\n
    \\n

    {{t layouts.about.alpha}}

    \\n

    {{{t layouts.about.messages.alpha}}}

    \\n
    \\n\\n
    \\n

    {{t layouts.about.join}}

    \\n \\n
    \\n\");Ember.TEMPLATES['layouts/simple']=Ember.Handlebars.compile(\"
    \\n {{outlet top}}\\n
    \\n\\n
    \\n {{outlet main}}\\n
    \\n\\n\");Ember.TEMPLATES['layouts/top']=Ember.Handlebars.compile(\"\\n

    Travis

    \\n
    \\n\\n\\n\");Ember.TEMPLATES['profile/hooks']=Ember.Handlebars.compile(\"{{#if content.length}}\\n \\n{{else}}\\n

    Please wait while we sync with GitHub

    \\n{{/if}}\\n\\n\");Ember.TEMPLATES['profile/show']=Ember.Handlebars.compile(\"

    {{name}}

    \\n\\n\\n
    \\n
    \\n {{t profiles.show.github}}:\\n
    \\n
    \\n {{login}}\\n
    \\n
    \\n {{t profiles.show.email}}:\\n
    \\n
    \\n {{email}}\\n
    \\n
    \\n {{t profiles.show.token}}:\\n
    \\n
    \\n {{token}}\\n
    \\n
    \\n\\n

    \\n {{{t profiles.show.messages.notice}}}\\n

    \\n\\n

    {{t profiles.show.your_locale}}

    \\n
    \\n \\n \\n
    \\n\\n

    {{t profiles.show.your_repos}}

    \\n

    \\n {{{t profiles.show.message.your_repos}}}\\n \\n {{{t profiles.show.message.config}}}\\n \\n

    \\n\\n{{outlet hooks}}\\n\");Ember.TEMPLATES['queues/list']=Ember.Handlebars.compile(\"{{#each queue in controller}}\\n

    {{t queue}}: {{queue.name}}

    \\n \\n{{/each}}\\n\");Ember.TEMPLATES['repositories/_tabs']=Ember.Handlebars.compile(\"\\n\\n
    \\n \\n
    \\n

    \\n

    \\n

    \\n

    \\n

    \\n
    \\n
    \\n\");Ember.TEMPLATES['repositories/list']=Ember.Handlebars.compile(\"