travis-web/app/components/branch-row.coffee
2016-01-04 12:19:14 +01:00

91 lines
2.5 KiB
CoffeeScript

`import Ember from 'ember'`
`import { githubCommit as githubCommitUrl } from 'travis/utils/urls'`
`import TravisRoute from 'travis/routes/basic'`
`import config from 'travis/config/environment'`
BranchRowComponent = Ember.Component.extend
routing: Ember.inject.service('-routing')
tagName: 'li'
classNameBindings: ['build.last_build.state']
classNames: ['branch-row', 'row-li']
isLoading: false
isTriggering: false
hasTriggered: false
urlGithubCommit: (->
githubCommitUrl(@get('build.repository.slug'), @get('build.last_build.commit.sha'))
).property('build.last_build')
getLast5Builds: (->
lastBuilds = Ember.ArrayProxy.create(
content: [{}, {}, {}, {}, {}]
isLoading: true,
count: 0
)
if !@get('build.last_build')
lastBuilds.set('isLoading', false)
else
apiEndpoint = config.apiEndpoint
repoId = @get('build.repository.id')
branchName = @get('build.name')
options = {}
if @get('auth.signedIn')
options.headers = { Authorization: "token #{@auth.token()}" }
$.ajax("#{apiEndpoint}/v3/repo/#{repoId}/builds?branch.name=#{branchName}&limit=5&build.event_type=push,api", options).then (response) ->
array = response.builds.map( (build) ->
Ember.Object.create(build)
)
if array.length < 5
for i in [1..5 - array.length] by 1
array.push({})
lastBuilds.set('count', response['@pagination'].count)
lastBuilds.set('content', array)
lastBuilds.set('isLoading', false)
lastBuilds
).property()
canTrigger: (->
if !@get('auth.signedIn')
false
else
permissions = @get('auth.currentUser.permissions')
if permissions.contains parseInt(@get('build.repository.id'))
true
else
false
).property()
triggerBuild: (->
apiEndpoint = config.apiEndpoint
repoId = @get('build.repository.id')
options = {
type: 'POST',
body: {
request: {
branch: @get('build.name')
}
}
}
if @get('auth.signedIn')
options.headers = { Authorization: "token #{@auth.token()}" }
$.ajax("#{apiEndpoint}/v3/repo/#{repoId}/requests", options).then (response) =>
@set('isTriggering', false)
@set('hasTriggered', true)
)
actions:
tiggerBuild: (branch) ->
@set('isTriggering', true)
@triggerBuild()
viewAllBuilds: (branch) ->
@get('routing').transitionTo('builds')
`export default BranchRowComponent`