diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee index ef4b2682..20002ac0 100644 --- a/assets/scripts/app/app.coffee +++ b/assets/scripts/app/app.coffee @@ -22,10 +22,12 @@ unless window.TravisApplication workers: Travis.Worker annotation: Travis.Annotation annotations: Travis.Annotation + request: Travis.Request + requests: Travis.Request ).property() modelClasses: (-> - [Travis.User, Travis.Build, Travis.Job, Travis.Repo, Travis.Commit, Travis.Worker, Travis.Account, Travis.Broadcast, Travis.Hook, Travis.Annotation] + [Travis.User, Travis.Build, Travis.Job, Travis.Repo, Travis.Commit, Travis.Worker, Travis.Account, Travis.Broadcast, Travis.Hook, Travis.Annotation, Travis.Request] ).property() setup: -> diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index 488e3eb7..14b33440 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -72,4 +72,5 @@ require 'controllers/repo' require 'controllers/stats' require 'controllers/current_user' require 'controllers/account_index' - +require 'controllers/request' +require 'controllers/requests' diff --git a/assets/scripts/app/controllers/repo.coffee b/assets/scripts/app/controllers/repo.coffee index 88276d71..5113fa52 100644 --- a/assets/scripts/app/controllers/repo.coffee +++ b/assets/scripts/app/controllers/repo.coffee @@ -1,8 +1,9 @@ Travis.RepoController = Travis.Controller.extend - needs: ['repos', 'currentUser', 'build'] + needs: ['repos', 'currentUser', 'build', 'request'] currentUserBinding: 'controllers.currentUser' build: Ember.computed.alias('controllers.build.build') + request: Ember.computed.alias('controllers.request.model') slug: (-> @get('repo.slug') ).property('repo.slug') isLoading: (-> @get('repo.isLoading') ).property('repo.isLoading') @@ -49,6 +50,12 @@ Travis.RepoController = Travis.Controller.extend viewJob: -> @connectTab('job') + viewRequests: -> + @connectTab('requests') + + viewRequest: -> + @connectTab('request') + lastBuildDidChange: -> Ember.run.scheduleOnce('data', this, @_lastBuildDidChange); diff --git a/assets/scripts/app/controllers/request.coffee b/assets/scripts/app/controllers/request.coffee new file mode 100644 index 00000000..e825c410 --- /dev/null +++ b/assets/scripts/app/controllers/request.coffee @@ -0,0 +1,21 @@ +Travis.RequestController = Ember.ObjectController.extend + requestClass: (-> + if @get('content.isAccepted') + 'accepted' + else + 'rejected' + ).property('content.isAccepted') + + type: (-> + if @get('isPullRequest') + 'Pull request' + else + 'Push' + ).property('isPullRequest') + + status: (-> + if @get('isAccepted') + 'Accepted' + else + 'Rejected' + ).property('isAccepted') diff --git a/assets/scripts/app/controllers/requests.coffee b/assets/scripts/app/controllers/requests.coffee new file mode 100644 index 00000000..3ea2a4a2 --- /dev/null +++ b/assets/scripts/app/controllers/requests.coffee @@ -0,0 +1 @@ +Travis.RequestsController = Ember.ArrayController.extend() diff --git a/assets/scripts/app/helpers/handlebars.coffee b/assets/scripts/app/helpers/handlebars.coffee index 08a59ab5..06944266 100644 --- a/assets/scripts/app/helpers/handlebars.coffee +++ b/assets/scripts/app/helpers/handlebars.coffee @@ -319,7 +319,7 @@ Ember.Handlebars.helper('formatCommit', (commit) -> safe Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')) if commit , 'sha', 'branch') -Ember.registerBoundHelper 'formatSha', (sha, options) -> +Ember.Handlebars.helper 'formatSha', (sha) -> safe Travis.Helpers.formatSha(sha) Ember.registerBoundHelper 'pathFrom', (url, options) -> diff --git a/assets/scripts/app/models.coffee b/assets/scripts/app/models.coffee index 6526b5b1..c2efe38d 100644 --- a/assets/scripts/app/models.coffee +++ b/assets/scripts/app/models.coffee @@ -10,6 +10,7 @@ require 'models/job' require 'models/log' require 'models/annotation' require 'models/repo' +require 'models/request' require 'models/user' require 'models/worker' diff --git a/assets/scripts/app/models/request.coffee b/assets/scripts/app/models/request.coffee new file mode 100644 index 00000000..4b23c1b3 --- /dev/null +++ b/assets/scripts/app/models/request.coffee @@ -0,0 +1,30 @@ +require 'travis/model' + +@Travis.Request = Travis.Model.extend + id: Ember.attr('string') + created_at: Ember.attr('string') + event_type: Ember.attr('string') + result: Ember.attr('string') + message: Ember.attr('string') + headCommit: Ember.attr('string') + baseCommit: Ember.attr('string') + branchName: Ember.attr('string', key: 'branch') + tagName: Ember.attr('string', key: 'tag') + pullRequest: Ember.attr('boolean') + pullRequestTitle: Ember.attr('string') + pullRequestNumber: Ember.attr(Number) + + repo: Ember.belongsTo('Travis.Request', key: 'repository_id') + commit: Ember.belongsTo('Travis.Commit', key: 'commit_id') + build: Ember.belongsTo('Travis.Build', key: 'build_id') + + isAccepted: (-> + # For some reason some of the requests have a null result beside the fact that + # the build was created. We need to look into it, but for now we can just assume + # that if build was created, the request was accepted + @get('result') == 'accepted' || @get('build') + ).property('result') + + isPullRequest: (-> + @get('event_type') == 'pull_request' + ).property('event_type') diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index a9a034b5..0f13a799 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -80,6 +80,8 @@ Travis.Router.map -> @resource 'builds', path: '/builds' @resource 'pullRequests', path: '/pull_requests' @resource 'branches', path: '/branches' + @resource 'requests', path: '/requests' + @resource 'request', path: '/requests/:request_id' # this can't be nested in repo, because we want a set of different # templates rendered for settings (for example no "current", "builds", ... tabs) @@ -111,6 +113,38 @@ Travis.SetupLastBuild = Ember.Mixin.create Ember.run.next => @render('builds/not_found', into: 'repo', outlet: 'pane') +Travis.RepoLoadingRoute = Travis.Route.extend + renderTemplate: -> + # TODO: the main outlet used on repo level is called 'pane' + # which makes a few things quite hard with current Ember.js + # conventions. Here, we need to specify render behaviour + # of a loading route explicitly, because otherwise it will + # render into 'main' outlet. It would be nice to change + # pane outlet into main outlet at some point + @render 'repo/loading', into: 'repo', outlet: 'pane' + +Travis.RequestsRoute = Travis.Route.extend + renderTemplate: -> + @render 'requests', into: 'repo', outlet: 'pane' + + setupController: -> + @_super.apply this, arguments + @controllerFor('repo').activate('requests') + + model: -> + Travis.Request.fetch repository_id: @modelFor('repo').get('id') + +Travis.RequestRoute = Travis.Route.extend + renderTemplate: -> + @render 'request', into: 'repo', outlet: 'pane' + + setupController: -> + @_super.apply this, arguments + @controllerFor('repo').activate('request') + + model: (params) -> + Travis.Request.fetch params.request_id + Travis.GettingStartedRoute = Travis.Route.extend renderTemplate: -> @render('no_owned_repos') diff --git a/assets/scripts/app/templates/index/error.hbs b/assets/scripts/app/templates/index/error.hbs index 57d6f053..96bae54e 100644 --- a/assets/scripts/app/templates/index/error.hbs +++ b/assets/scripts/app/templates/index/error.hbs @@ -1,3 +1,7 @@ -
There was an error while loading data, please try again
+{{/if}} diff --git a/assets/scripts/app/templates/repo/loading.hbs b/assets/scripts/app/templates/repo/loading.hbs new file mode 100644 index 00000000..0277cf2e --- /dev/null +++ b/assets/scripts/app/templates/repo/loading.hbs @@ -0,0 +1 @@ +
+ {{#if isPullRequest}}
+ This request is based on the
+ #{{pullRequestNumber}}
+ pull request.
+ {{else}}
+ This request is based on a commit {{formatCommit commit}} by {{commit.authorName}}
+ pushed to
+ {{#if branchName}}
+ to {{branchName}}
+ {{/if}}
+ {{/if}}
+
+ A build created based on this request: {{#link-to "build" build}}#{{build.number}}{{/link-to}} +
+ {{/if}} +Id | +Commit | +Build | +Commit message | +Type | +Message | +
---|---|---|---|---|---|
+ + {{request.id}} + | +{{formatSha request.commit.sha}} | ++ {{#if build}} + {{#link-to "build" build}}#{{build.number}}{{/link-to}} + {{else}} + - + {{/if}} + | +{{{formatMessage request.commit.message short="true" repoBinding=build.repo}}} | +{{request.type}} | +{{request.message}} | +