diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-06-12 16:37:36 +0200 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-06-12 16:38:07 +0200 |
commit | 58e9546400d146a4fb64f5a7ef57d3804f50b318 (patch) | |
tree | 69ee7309c694855e18ef66fa1fbf46987083990f | |
parent | dc8b390ae307fe0f9a417ca5ac0d434a50fcecfb (diff) | |
download | sonarqube-58e9546400d146a4fb64f5a7ef57d3804f50b318.tar.gz sonarqube-58e9546400d146a4fb64f5a7ef57d3804f50b318.zip |
SONAR-5353 Display list of custom rules in the details of a template rule
4 files changed, 107 insertions, 18 deletions
diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rule-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rule-view.coffee new file mode 100644 index 00000000000..033dffee5a2 --- /dev/null +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rule-view.coffee @@ -0,0 +1,26 @@ +define [ + 'backbone.marionette' + 'templates/coding-rules' +], ( + Marionette + Templates +) -> + + class CodingRulesDetailCustomRuleView extends Marionette.ItemView + className: 'coding-rules-detail-custom-rule' + template: Templates['coding-rules-detail-custom-rule'] + + ui: + delete: '.coding-rules-detail-custom-rule-delete' + + events: + 'click @ui.delete': 'delete' + + delete: -> + confirm('Are you sure ?') + + + serializeData: -> + _.extend super, + templateRule: @options.templateRule + canWrite: @options.app.canWrite diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rules-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rules-view.coffee new file mode 100644 index 00000000000..258bd9e3c39 --- /dev/null +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-custom-rules-view.coffee @@ -0,0 +1,14 @@ +define [ + 'backbone.marionette' + 'coding-rules/views/coding-rules-detail-custom-rule-view' +], ( + Marionette + CodingRulesDetailCustomRuleView +) -> + + class CodingRulesDetailCustomRulesView extends Marionette.CollectionView + itemView: CodingRulesDetailCustomRuleView + + itemViewOptions: -> + app: @options.app + templateRule: @options.templateRule diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee index 9ab21979bd3..54b69efdf97 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-detail-view.coffee @@ -3,12 +3,14 @@ define [ 'backbone.marionette' 'coding-rules/views/coding-rules-detail-quality-profiles-view' 'coding-rules/views/coding-rules-detail-quality-profile-view' + 'coding-rules/views/coding-rules-detail-custom-rules-view' 'templates/coding-rules' ], ( Backbone Marionette CodingRulesDetailQualityProfilesView CodingRulesDetailQualityProfileView + CodingRulesDetailCustomRulesView Templates ) -> @@ -18,7 +20,8 @@ define [ regions: qualityProfilesRegion: '#coding-rules-detail-quality-profiles' - customRulesRegion: '#coding-rules-detail-custom-rules' + customRulesRegion: '.coding-rules-detail-custom-rules-section' + customRulesListRegion: '#coding-rules-detail-custom-rules' contextRegion: '.coding-rules-detail-context' @@ -63,20 +66,7 @@ define [ if @model.get 'params' @model.set 'params', _.sortBy(@model.get('params'), 'key') - if @model.get 'isTemplate' - customRules = new Backbone.Collection() - jQuery.ajax - url: "#{baseUrl}/api/rules/search" - data: - template_key: @model.get 'key' - f: 'name' - .done (r) => - customRules.add r.rules - #@customRulesView = new CodingrulesDetailCustomRulesView - # app: @options.app - # collection: customRules - # rule: @model - else + unless @model.get 'isTemplate' _.map options.actives, (active) => _.extend active, options.app.getQualityProfileByKey active.qProfile qualityProfiles = new Backbone.Collection options.actives, @@ -106,8 +96,35 @@ define [ if @model.get 'isTemplate' @$(@contextRegion.el).hide() - # @customRulesRegion.show @customRulesView + @$(@qualityProfilesRegion.el).hide() + @$(@customRulesRegion.el).show() + + customRulesOriginal = @$(@customRulesRegion.el).html() + + @$(@customRulesRegion.el).html '<i class="spinner"></i>' + + customRules = new Backbone.Collection() + jQuery.ajax + url: "#{baseUrl}/api/rules/search" + data: + template_key: @model.get 'key' + f: 'name,severity,params' + .done (r) => + customRules.add r.rules + + if customRules.isEmpty() and not @options.app.canWrite + @$(@customRulesRegion.el).hide() + else + @customRulesView = new CodingRulesDetailCustomRulesView + app: @options.app + collection: customRules + templateRule: @model + @$(@customRulesRegion.el).html customRulesOriginal + @customRulesListRegion.show @customRulesView + else + @$(@customRulesRegion.el).hide() + @$(@qualityProfilesRegion.el).show() @qualityProfilesRegion.show @qualityProfilesView if @options.app.getQualityProfile() @@ -206,8 +223,8 @@ define [ @options.app.codingRulesQualityProfileActivationView.show() createCustomRule: -> - #@options.app.codingRulesCustomRuleView.model = @model - #@options.app.codingRulesCustomRuleView.show() + #@options.app.codingRulesCreateCustomRuleView.template = @model + #@options.app.codingRulesCreateCustomRuleView.show() serializeData: -> diff --git a/sonar-server/src/main/hbs/coding-rules/coding-rules-detail-custom-rule.hbs b/sonar-server/src/main/hbs/coding-rules/coding-rules-detail-custom-rule.hbs new file mode 100644 index 00000000000..eaedc7f3663 --- /dev/null +++ b/sonar-server/src/main/hbs/coding-rules/coding-rules-detail-custom-rule.hbs @@ -0,0 +1,32 @@ +<table class="width100"> + <tbody> + <tr> + <td class="coding-rules-detail-custom-rule-name"> + <a class="nolink" href="#rule_key={{key}}">{{name}}</a> + </td> + + <td class="coding-rules-detail-custom-rule-severity"> + {{severityIcon severity}} {{t "severity" severity}} + </td> + + <td class="coding-rules-detail-custom-rule-parameters"> + {{#each parameters}} + <div class="coding-rules-detail-custom-rule-parameter"> + <span class="key">{{key}}</span><span class="sep">: </span><span class="value" title="{{value}}">{{value}}</span> + </div> + {{/each}} + + </td> + + {{#if canWrite}} + <td class="coding-rules-detail-custom-rule-actions"> + <div class="button-group"> + <button class="coding-rules-detail-custom-rule-delete button-red"> + {{t 'delete'}} + </button> + </div> + </td> + {{/if}} + </tr> + </tbody> +</table> |