diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index ec8d3b00..b1d20d25 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -132,10 +132,8 @@ require 'travis/model' ).property('finishedAt') canRemoveLog: (-> - # This should somehow get the status of removed log, but unfortunately there is - # no easy way to do that at the moment - true - ).property() + !@get('log.removed') + ).property('log.removed') slug: (-> "#{@get('repo.slug')} ##{@get('number')}" diff --git a/assets/scripts/app/models/log.coffee b/assets/scripts/app/models/log.coffee index 6056731f..08fb1973 100644 --- a/assets/scripts/app/models/log.coffee +++ b/assets/scripts/app/models/log.coffee @@ -39,7 +39,10 @@ require 'travis/log_chunks' console.log 'log model: fetching log' if Log.DEBUG @clearParts() handlers = - json: (json) => @loadParts(json['log']['parts']) + json: (json) => + if json['log']['removed_at'] + @set('removed', true) + @loadParts(json['log']['parts']) text: (text) => @loadText(text) Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id') diff --git a/assets/scripts/app/templates/remove_log.hbs b/assets/scripts/app/templates/remove_log.hbs new file mode 100644 index 00000000..ad8e2fa7 --- /dev/null +++ b/assets/scripts/app/templates/remove_log.hbs @@ -0,0 +1,8 @@ + +

This action will remove the log permanently!

+

Do you want to continue?

+

+ Yes, please! + or + Cancel +

diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index 5f1232fd..504d70c2 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -32,16 +32,22 @@ {{/if}} {{/if}} - {{#if view.showDownloadLog}} -
  • - -
  • + {{#if view.jobIdForLog}} + {{#if view.showDownloadLog}} +
  • + +
  • + {{/if}} {{/if}} - {{#if view.displayRemoveLog}} -
  • - -
  • + {{! the next if is a hack for refreshing displayRemoveLog when we change + views, it sometimes doesn't work properly }} + {{#if view.jobIdForLog}} + {{#if view.displayRemoveLog}} +
  • + +
  • + {{/if}} {{/if}} {{#if view.displayCodeClimate}}
  • @@ -53,3 +59,14 @@ + + diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee index 6076bd2f..036c8c7a 100644 --- a/assets/scripts/app/views.coffee +++ b/assets/scripts/app/views.coffee @@ -20,7 +20,7 @@ Travis.NotFoundView = Ember.View.extend name = event?.target?.name || name $("##{name}").toggleClass('display') popupClose: -> - $(event.target).closest('.popup').removeClass('display') + $('.popup').removeClass('display') popupCloseAll: -> if view = Travis.View.currentPopupView view.destroy() diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index 51a8a45d..9f02f081 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -19,12 +19,12 @@ Travis.reopen ).property('controller.repo.slug') actions: - statusImages: -> + statusImages: () -> @popupCloseAll() view = Travis.StatusImagesView.create(toolsView: this) Travis.View.currentPopupView = view view.appendTo($('body')) - event.stopPropagation() + return false ReposEmptyView: Travis.View.extend template: (-> @@ -116,14 +116,14 @@ Travis.reopen menu: -> @popupCloseAll() $('#tools .menu').toggleClass('display') - event.stopPropagation() + return false regenerateKeyPopup: -> if @get('canRegenerateKey') @set('active', true) @closeMenu() - @popup(event) - event.stopPropagation() + @popup('regenerate-key-popup') + return false regenerateKey: -> @popupCloseAll() @@ -181,7 +181,7 @@ Travis.reopen requeueJob: -> if @get('canRequeueJob') - @requeue @get('job') + @requeue @get('_job') cancelBuild: -> if @get('canCancelBuild') @@ -198,8 +198,9 @@ Travis.reopen removeLog: -> + @popupCloseAll() if @get('canRemoveLog') - job = @get('job') || @get('build.jobs.firstObject') + job = @get('_job') || @get('build.jobs.firstObject') job.removeLog().then -> Travis.flash(success: 'Log has been successfully removed.') , (xhr) -> @@ -213,7 +214,7 @@ Travis.reopen cancelJob: -> if @get('canCancelJob') Travis.flash(notice: 'Job cancellation has been scheduled.') - @get('job').cancel().then -> + @get('_job').cancel().then -> Travis.flash(success: 'Job has been successfully canceled.') , (xhr) -> if xhr.status == 422 @@ -226,7 +227,13 @@ Travis.reopen codeClimatePopup: -> @popupCloseAll() @popup('code-climate') - event.stopPropagation() if event? + return false + + removeLogPopup: -> + if @get('canRemoveLog') + @set('active', true) + @popup('remove-log-popup') + return false hasPermission: (-> if permissions = @get('currentUser.permissions') @@ -258,16 +265,18 @@ Travis.reopen @get('jobIdForLog') ).property('jobIdForLog') - jobIdForLog: (-> - @get('job.id') || - (@get('build.jobs.length') == 1 && @get('build.jobs').objectAt(0).get?('id')) - ).property('job.id', 'build.jobs.firstObject.id', 'build.jobs.length') - - job: (-> + _job: (-> if id = @get('jobIdForLog') Travis.Job.find(id) ).property('jobIdForLog') + jobIdForLog: (-> + job = @get('job.id') + unless job + if @get('build.jobs.length') == 1 + job = @get('build.jobs').objectAt?(0).get?('id') + job + ).property('job.id', 'build.jobs.firstObject.id', 'build.jobs.length') plainTextLogUrl: (-> if id = @get('jobIdForLog') @@ -279,14 +288,14 @@ Travis.reopen ).property('jobIdForLog', 'job.log.token', 'build.jobs.firstObject.log.token') canRemoveLog: (-> - @get('displayRemoveLog') && @get('hasPermission') - ).property('displayRemoveLog', 'hasPermission') + @get('displayRemoveLog') + ).property('displayRemoveLog') displayRemoveLog: (-> - #(@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && - # @get('build.jobs').objectAt(0).get?('canRemoveLog') - false - ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog') + if job = @get('_job') + (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && + job.get('canRemoveLog') && @get('hasPermission') + ).property('isJobTab', 'isBuildTab', 'build.jobs.length', '_job.canRemoveLog', 'jobIdForLog', 'canRemoveLog', 'hasPermission') canCancelBuild: (-> @get('displayCancelBuild') && @get('hasPermission') diff --git a/assets/styles/app/popup.sass b/assets/styles/app/popup.sass index 26934957..1d8c86ca 100644 --- a/assets/styles/app/popup.sass +++ b/assets/styles/app/popup.sass @@ -72,7 +72,8 @@ p:last-child margin-top: 10px -#regenerate-key +#regenerate-key, +#remove-log-popup .cancel text-decoration: underline p @@ -84,6 +85,8 @@ margin-bottom: 5px a.button font-size: 13px + strong + color: $red #status-images, #regenerate-key input @@ -108,3 +111,4 @@ padding-left: 15px img#code-climate-logo margin-right: 50px +