diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee index 36dcd0c1..47238290 100644 --- a/assets/scripts/app/app.coffee +++ b/assets/scripts/app/app.coffee @@ -22,6 +22,9 @@ unless window.TravisApplication lookup: -> @__container__.lookup.apply @__container__, arguments + flash: (options) -> + Travis.lookup('controller:flash').loadFlashes([options]) + storeAfterSignInPath: (path) -> @get('auth').storeAfterSignInPath(path) diff --git a/assets/scripts/app/models/build.coffee b/assets/scripts/app/models/build.coffee index 9906e770..49aefe00 100644 --- a/assets/scripts/app/models/build.coffee +++ b/assets/scripts/app/models/build.coffee @@ -62,11 +62,11 @@ require 'travis/model' ).property('rawConfigKeys.length') canCancel: (-> - @get('state') == 'created' # TODO - ).property('state') + !@get('isFinished') && @get('jobs').filter( (j) -> j.get('canCancel') ).get('length') > 0 + ).property('isFinished', 'jobs.@each.canCancel') cancel: (-> - Travis.ajax.post "/builds/#{@get('id')}", _method: 'delete' + Travis.ajax.post "/builds/#{@get('id')}/cancel" ) requeue: -> diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index b8c02d26..7c18420e 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -73,11 +73,11 @@ require 'travis/model' ).property('config', 'build.rawConfigKeys.length') canCancel: (-> - @get('state') == 'created' || @get('state') == 'queued' # TODO + @get('state') == 'created' ).property('state') cancel: (-> - Travis.ajax.post "/jobs/#{@get('id')}", _method: 'delete' + Travis.ajax.post "/jobs/#{@get('id')}/cancel" ) requeue: -> diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index fc0b6177..07891de9 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -94,12 +94,30 @@ Travis.reopen cancelBuild: -> if @get('canCancelBuild') @closeMenu() - @get('build').cancel() + Travis.flash(notice: 'Build cancelation has been scheduled.') + @get('build').cancel().then -> + Travis.flash(success: 'Build has been successfuly canceled.') + , (xhr) -> + if xhr.status == 422 + Travis.flash(error: 'This build can\'t be canceled') + else if xhr.status == 403 + Travis.flash(error: 'You don\'t have sufficient access to cancel this build') + else + Travis.flash(error: 'An error occured when canceling the build') cancelJob: -> if @get('canCancelJob') @closeMenu() - @get('job').cancel() + Travis.flash(notice: 'Job cancelation has been scheduled.') + @get('job').cancel().then -> + Travis.flash(success: 'Job has been successfuly canceled.') + , (xhr) -> + if xhr.status == 422 + Travis.flash(error: 'This job can\'t be canceled') + else if xhr.status == 403 + Travis.flash(error: 'You don\'t have sufficient access to cancel this job') + else + Travis.flash(error: 'An error occured when canceling the job') statusImages: -> @set('active', true) @@ -168,26 +186,22 @@ Travis.reopen Travis.Urls.plainTextLog(id) ).property('jobIdForLog') - displayCancelBuild: (-> - # @get('isBuildTab') && @get('build.canCancel') - false - ).property('build.state', 'tab') - canCancelBuild: (-> - # @get('displayCancelBuild') && @get('hasPermission') - false + @get('displayCancelBuild') && @get('hasPermission') ).property('displayCancelBuild', 'hasPermission') - displayCancelJob: (-> - # @get('isJobTab') && @get('job.canCancel') - false - ).property('job.state', 'tab') + displayCancelBuild: (-> + @get('isBuildTab') && @get('build.canCancel') + ).property('isBuildTab', 'build.canCancel') canCancelJob: (-> - # @get('displayCancelJob') && @get('hasPermission') - false + @get('displayCancelJob') && @get('hasPermission') ).property('displayCancelJob', 'hasPermission') + displayCancelJob: (-> + @get('isJobTab') && @get('job.canCancel') + ).property('isJobTab', 'job.canCancel') + displayRegenerateKey: true canRegenerateKey: (->