From c0a681e73b56d372777e3f007b65c086cf66b5e7 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Thu, 8 Jan 2015 15:38:46 +0100 Subject: [PATCH 01/12] add popup stub --- assets/scripts/app/templates/remove_log.hbs | 8 ++++++++ assets/styles/app/popup.sass | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 assets/scripts/app/templates/remove_log.hbs 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/styles/app/popup.sass b/assets/styles/app/popup.sass index 26934957..fcd6dcad 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 .cancel text-decoration: underline p @@ -108,3 +109,4 @@ padding-left: 15px img#code-climate-logo margin-right: 50px + From 97050b8111122b65845babcb6be9afe965ec7ee1 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Thu, 8 Jan 2015 16:28:37 +0100 Subject: [PATCH 02/12] Add actions for remove log --- .../app/templates/repos/show/actions.hbs | 13 ++++++- assets/scripts/app/views/repo/show.coffee | 37 ++++++++++++------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index 5f1232fd..28c0006d 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -39,7 +39,7 @@ {{/if}} {{#if view.displayRemoveLog}}
  • -
  • {{/if}} @@ -53,3 +53,14 @@ + + diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index d1779239..c74f92f5 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -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 @@ -228,6 +229,12 @@ Travis.reopen @popup('code-climate') event.stopPropagation() if event? + removeLogPopup: -> + if @get('canRemoveLog') + @set('active', true) + @popup(event) + event.stopPropagation() + hasPermission: (-> if permissions = @get('currentUser.permissions') permissions.contains parseInt(@get('repo.id')) @@ -255,19 +262,21 @@ Travis.reopen ).property('displayRequeueJob', 'hasPermission') showDownloadLog: (-> - @get('jobIdForLog') - ).property('jobIdForLog') + @get('_job') + ).property('_job') - 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') @@ -283,9 +292,9 @@ Travis.reopen ).property('displayRemoveLog', 'hasPermission') displayRemoveLog: (-> - (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && - @get('build.jobs').objectAt(0).get?('canRemoveLog') - ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog') + if job = Travis.Job.find(@get('jobIdForLog')) + (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && job.get('canRemoveLog') + ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog', 'jobIdForLog') canCancelBuild: (-> @get('displayCancelBuild') && @get('hasPermission') From 78dccd194c1d898a643b17583ab5aebbb30463c6 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 8 Jan 2015 17:03:34 +0100 Subject: [PATCH 03/12] Bring back hack for download log button --- assets/scripts/app/templates/repos/show/actions.hbs | 10 ++++++---- assets/scripts/app/views/repo/show.coffee | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index 28c0006d..d8c62e7f 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -32,10 +32,12 @@ {{/if}} {{/if}} - {{#if view.showDownloadLog}} -
  • - -
  • + {{#if view.jobIdForLog}} + {{#if view.showDownloadLog}} +
  • + +
  • + {{/if}} {{/if}} {{#if view.displayRemoveLog}}
  • diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index c74f92f5..65995374 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -262,8 +262,8 @@ Travis.reopen ).property('displayRequeueJob', 'hasPermission') showDownloadLog: (-> - @get('_job') - ).property('_job') + @get('jobIdForLog') + ).property('jobIdForLog') _job: (-> if id = @get('jobIdForLog') @@ -294,7 +294,7 @@ Travis.reopen displayRemoveLog: (-> if job = Travis.Job.find(@get('jobIdForLog')) (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && job.get('canRemoveLog') - ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog', 'jobIdForLog') + ).property('isJobTab', 'isBuildTab', 'build.jobs.length', '_job.canRemoveLog', 'jobIdForLog') canCancelBuild: (-> @get('displayCancelBuild') && @get('hasPermission') From 3582969e900368a7f3948d9568e2998cd0eec487 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Thu, 8 Jan 2015 15:38:46 +0100 Subject: [PATCH 04/12] add popup stub --- assets/scripts/app/templates/remove_log.hbs | 8 ++++++++ assets/styles/app/popup.sass | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 assets/scripts/app/templates/remove_log.hbs 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/styles/app/popup.sass b/assets/styles/app/popup.sass index 26934957..fcd6dcad 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 .cancel text-decoration: underline p @@ -108,3 +109,4 @@ padding-left: 15px img#code-climate-logo margin-right: 50px + From 3bf326a94214df4c70aa3c8a5552c3baa506e1a9 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Thu, 8 Jan 2015 16:28:37 +0100 Subject: [PATCH 05/12] Add actions for remove log --- .../app/templates/repos/show/actions.hbs | 13 ++++++- assets/scripts/app/views/repo/show.coffee | 38 +++++++++++-------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index 5f1232fd..28c0006d 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -39,7 +39,7 @@ {{/if}} {{#if view.displayRemoveLog}}
  • -
  • {{/if}} @@ -53,3 +53,14 @@ + + diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index 51a8a45d..c74f92f5 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -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 @@ -228,6 +229,12 @@ Travis.reopen @popup('code-climate') event.stopPropagation() if event? + removeLogPopup: -> + if @get('canRemoveLog') + @set('active', true) + @popup(event) + event.stopPropagation() + hasPermission: (-> if permissions = @get('currentUser.permissions') permissions.contains parseInt(@get('repo.id')) @@ -255,19 +262,21 @@ Travis.reopen ).property('displayRequeueJob', 'hasPermission') showDownloadLog: (-> - @get('jobIdForLog') - ).property('jobIdForLog') + @get('_job') + ).property('_job') - 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') @@ -283,10 +292,9 @@ Travis.reopen ).property('displayRemoveLog', 'hasPermission') 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 = Travis.Job.find(@get('jobIdForLog')) + (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && job.get('canRemoveLog') + ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog', 'jobIdForLog') canCancelBuild: (-> @get('displayCancelBuild') && @get('hasPermission') From 4d9d0f10d9b14da379c5d1346b2cb4a587927452 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 8 Jan 2015 17:03:34 +0100 Subject: [PATCH 06/12] Bring back hack for download log button --- assets/scripts/app/templates/repos/show/actions.hbs | 10 ++++++---- assets/scripts/app/views/repo/show.coffee | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index 28c0006d..d8c62e7f 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -32,10 +32,12 @@ {{/if}} {{/if}} - {{#if view.showDownloadLog}} -
  • - -
  • + {{#if view.jobIdForLog}} + {{#if view.showDownloadLog}} +
  • + +
  • + {{/if}} {{/if}} {{#if view.displayRemoveLog}}
  • diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index c74f92f5..65995374 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -262,8 +262,8 @@ Travis.reopen ).property('displayRequeueJob', 'hasPermission') showDownloadLog: (-> - @get('_job') - ).property('_job') + @get('jobIdForLog') + ).property('jobIdForLog') _job: (-> if id = @get('jobIdForLog') @@ -294,7 +294,7 @@ Travis.reopen displayRemoveLog: (-> if job = Travis.Job.find(@get('jobIdForLog')) (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && job.get('canRemoveLog') - ).property('isJobTab', 'isBuildTab', 'build.jobs.length', 'job.canRemoveLog', 'jobIdForLog') + ).property('isJobTab', 'isBuildTab', 'build.jobs.length', '_job.canRemoveLog', 'jobIdForLog') canCancelBuild: (-> @get('displayCancelBuild') && @get('hasPermission') From eb78d62adb22acf472ebb238188044b4dc31e574 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 9 Jan 2015 10:55:13 +0100 Subject: [PATCH 07/12] Change popup functions to not use events --- assets/scripts/app/views/repo/show.coffee | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index 65995374..07dc6359 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() @@ -227,13 +227,13 @@ Travis.reopen codeClimatePopup: -> @popupCloseAll() @popup('code-climate') - event.stopPropagation() if event? + return false removeLogPopup: -> if @get('canRemoveLog') @set('active', true) - @popup(event) - event.stopPropagation() + @popup('remove-log-popup') + return false hasPermission: (-> if permissions = @get('currentUser.permissions') From aca82a037908bbabb0681e955b54c56d4e0455f8 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 9 Jan 2015 14:59:19 +0100 Subject: [PATCH 08/12] Display remove log only when user hasPermissions to use it --- .../scripts/app/templates/repos/show/actions.hbs | 14 +++++++++----- assets/scripts/app/views/repo/show.coffee | 11 ++++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/assets/scripts/app/templates/repos/show/actions.hbs b/assets/scripts/app/templates/repos/show/actions.hbs index d8c62e7f..504d70c2 100644 --- a/assets/scripts/app/templates/repos/show/actions.hbs +++ b/assets/scripts/app/templates/repos/show/actions.hbs @@ -39,11 +39,15 @@
  • {{/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}}
  • diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index 07dc6359..9f02f081 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -288,13 +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: (-> - if job = Travis.Job.find(@get('jobIdForLog')) - (@get('isJobTab') || (@get('isBuildTab') && @get('build.jobs.length') == 1)) && job.get('canRemoveLog') - ).property('isJobTab', 'isBuildTab', 'build.jobs.length', '_job.canRemoveLog', 'jobIdForLog') + 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') From 486e417d122710459bf81b06beaafbdb96a22fef Mon Sep 17 00:00:00 2001 From: Lisa P Date: Fri, 9 Jan 2015 15:01:07 +0100 Subject: [PATCH 09/12] some styles for remove-log-popup --- assets/styles/app/popup.sass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/styles/app/popup.sass b/assets/styles/app/popup.sass index fcd6dcad..1d8c86ca 100644 --- a/assets/styles/app/popup.sass +++ b/assets/styles/app/popup.sass @@ -73,7 +73,7 @@ margin-top: 10px #regenerate-key, -#remove-log +#remove-log-popup .cancel text-decoration: underline p @@ -85,6 +85,8 @@ margin-bottom: 5px a.button font-size: 13px + strong + color: $red #status-images, #regenerate-key input From 09075e880d9152986a934432a8198e778d253cec Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 9 Jan 2015 15:02:34 +0100 Subject: [PATCH 10/12] Don't display remove log button if it's already removed --- assets/scripts/app/models/job.coffee | 6 ++---- assets/scripts/app/models/log.coffee | 5 ++++- 2 files changed, 6 insertions(+), 5 deletions(-) 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') From 9023d0ca06be4f1aa8f5aa7c271e60dae9388e1d Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 9 Jan 2015 15:19:36 +0100 Subject: [PATCH 11/12] Remove extra removeLogPopup function (merge leftover) --- assets/scripts/app/views/repo/show.coffee | 6 ------ 1 file changed, 6 deletions(-) diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index d8a3712f..9f02f081 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -235,12 +235,6 @@ Travis.reopen @popup('remove-log-popup') return false - removeLogPopup: -> - if @get('canRemoveLog') - @set('active', true) - @popup(event) - event.stopPropagation() - hasPermission: (-> if permissions = @get('currentUser.permissions') permissions.contains parseInt(@get('repo.id')) From 0db4a3a6ca9c16dd0ce10d5a18f4d931ce2db494 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Fri, 9 Jan 2015 15:33:19 +0100 Subject: [PATCH 12/12] Don't use 'event' in popupClose It doesn't work on firefox and we don't need it anyway --- assets/scripts/app/views.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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()