From c38d8c46b5fa407f5d68d19722400078bdbe38db Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Wed, 5 Nov 2014 16:17:40 +0100 Subject: [PATCH] SONAR-5718 Add shortcuts to perform actions on issues --- .../src/main/coffee/issue/issue-view.coffee | 2 ++ .../issue/views/assign-form-view.coffee | 4 ++- .../coffee/issue/views/plan-form-view.coffee | 2 ++ .../issue/views/set-severity-form-view.coffee | 3 +++ .../issues/component-viewer/main.coffee | 2 +- .../coffee/issues/workspace-list-view.coffee | 25 ++++++++++++++++++- server/sonar-web/src/main/js/application.js | 6 ++++- 7 files changed, 40 insertions(+), 4 deletions(-) diff --git a/server/sonar-web/src/main/coffee/issue/issue-view.coffee b/server/sonar-web/src/main/coffee/issue/issue-view.coffee index ad34cc81547..92107b5164b 100644 --- a/server/sonar-web/src/main/coffee/issue/issue-view.coffee +++ b/server/sonar-web/src/main/coffee/issue/issue-view.coffee @@ -74,6 +74,8 @@ define [ @changeLog = new ChangeLog() @changeLogRegion.show new ChangeLogView collection: @changeLog, issue: @model + key 'escape', (=> @updateAfterAction false) + onClose: -> @ruleRegion.reset() if @ruleRegion diff --git a/server/sonar-web/src/main/coffee/issue/views/assign-form-view.coffee b/server/sonar-web/src/main/coffee/issue/views/assign-form-view.coffee index 2e2b6698006..16e44fc0e11 100644 --- a/server/sonar-web/src/main/coffee/issue/views/assign-form-view.coffee +++ b/server/sonar-web/src/main/coffee/issue/views/assign-form-view.coffee @@ -60,7 +60,9 @@ define [ data: (term, page) -> s: term, p: page results: (data) -> more: data.more, results: data.results - @ui.select.select2(select2Options).select2 'open' + @ui.select.select2 select2Options + @ui.select.on 'change', => @$('[type=submit]').focus() + @ui.select.select2 'open' cancel: -> diff --git a/server/sonar-web/src/main/coffee/issue/views/plan-form-view.coffee b/server/sonar-web/src/main/coffee/issue/views/plan-form-view.coffee index 1e0c6b38a14..21a248da34d 100644 --- a/server/sonar-web/src/main/coffee/issue/views/plan-form-view.coffee +++ b/server/sonar-web/src/main/coffee/issue/views/plan-form-view.coffee @@ -30,6 +30,8 @@ define [ @ui.select.select2 width: '250px' minimumResultsForSearch: 100 + @ui.select.on 'change', => @$('[type=submit]').focus() + @ui.select.select2 'open' @$('.error a').prop('href', baseUrl + '/action_plans/index/' + this.options.issue.get('project')) diff --git a/server/sonar-web/src/main/coffee/issue/views/set-severity-form-view.coffee b/server/sonar-web/src/main/coffee/issue/views/set-severity-form-view.coffee index 3842a2d0bdc..d8266bc5ad8 100644 --- a/server/sonar-web/src/main/coffee/issue/views/set-severity-form-view.coffee +++ b/server/sonar-web/src/main/coffee/issue/views/set-severity-form-view.coffee @@ -33,6 +33,9 @@ define [ formatSelection: format escapeMarkup: (m) -> m + @ui.select.on 'change', => @$('[type=submit]').focus() + @ui.select.select2 'open' + cancel: -> @options.detailView.updateAfterAction false diff --git a/server/sonar-web/src/main/coffee/issues/component-viewer/main.coffee b/server/sonar-web/src/main/coffee/issues/component-viewer/main.coffee index a05373fe66a..0420dbabacf 100644 --- a/server/sonar-web/src/main/coffee/issues/component-viewer/main.coffee +++ b/server/sonar-web/src/main/coffee/issues/component-viewer/main.coffee @@ -48,7 +48,7 @@ define [ bindShortcuts: -> - key 'delete,backspace,left', 'componentViewer', => + key 'left', 'componentViewer', => @options.app.controller.closeComponentViewer() false diff --git a/server/sonar-web/src/main/coffee/issues/workspace-list-view.coffee b/server/sonar-web/src/main/coffee/issues/workspace-list-view.coffee index 78001175c05..487959e6fee 100644 --- a/server/sonar-web/src/main/coffee/issues/workspace-list-view.coffee +++ b/server/sonar-web/src/main/coffee/issues/workspace-list-view.coffee @@ -57,11 +57,34 @@ define [ bindShortcuts: -> - key 'return,right', 'list', => + doTransition = (transition) => + selectedIssue = @collection.at @options.app.state.get 'selectedIndex' + return unless selectedIssue? + selectedIssueView = @children.findByModel selectedIssue + selectedIssueView.$("[data-transition=#{transition}]").click() + + doAction = (action) => + selectedIssue = @collection.at @options.app.state.get 'selectedIndex' + return unless selectedIssue? + selectedIssueView = @children.findByModel selectedIssue + selectedIssueView.$("#issue-#{action}").click() + + key 'right', 'list', => selectedIssue = @collection.at @options.app.state.get 'selectedIndex' @options.app.controller.showComponentViewer selectedIssue return false + key 'c', -> doTransition 'confirm' + key 'u', -> doTransition 'unconfirm' + key 'r', -> doTransition 'resolve' + key 'r', -> doTransition 'reopen' + key 'f', -> doTransition 'falsepositive' + + key 'a', -> doAction 'assign' + key 'm', -> doAction 'assign-to-me' + key 'p', -> doAction 'plan' + key 'i', -> doAction 'set-severity' + loadMore: -> unless @options.app.state.get 'maxResultsReached' diff --git a/server/sonar-web/src/main/js/application.js b/server/sonar-web/src/main/js/application.js index 43e29aa07ba..37bf12e75a9 100644 --- a/server/sonar-web/src/main/js/application.js +++ b/server/sonar-web/src/main/js/application.js @@ -479,7 +479,11 @@ jQuery(function() { // Define global shortcuts key('s', function() { - jQuery('#searchInput').focus(); + jQuery('#searchInput').focus().on('keydown', function (e) { + if (e.keyCode == 27) { + jQuery('#searchInput').blur(); + } + }); return false; }); }); -- 2.39.5