]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5209 Filter by rules
authorStas Vilchik <vilchiks@gmail.com>
Mon, 19 May 2014 16:02:19 +0000 (18:02 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 19 May 2014 16:02:19 +0000 (18:02 +0200)
sonar-server/src/main/coffee/component-viewer/header.coffee
sonar-server/src/main/coffee/component-viewer/main.coffee
sonar-server/src/main/hbs/component-viewer/header/_issues-header.hbs

index e76529da1a8478c6a70c10c5a0299c6bded10261..1f8107510b3468ea27dc141616b8cec0ec84cbcf 100644 (file)
@@ -31,14 +31,15 @@ define [
 
       'click .js-filter-current-issue': 'filterByCurrentIssue'
       'click .js-filter-all-issues': 'filterByAllIssues'
+      'click .js-filter-rule': 'filterByRule'
       'click .js-filter-resolved-issues': 'filterByResolvedIssues'
       'click .js-filter-unresolved-issues': 'filterByUnresolvedIssues'
       'click .js-filter-false-positive-issues': 'filterByFalsePositiveIssues'
-      'click .js-filter-blocker-issues': 'filterByBlockerIssues'
-      'click .js-filter-critical-issues': 'filterByCriticalIssues'
-      'click .js-filter-major-issues': 'filterByMajorIssues'
-      'click .js-filter-minor-issues': 'filterByMinorIssues'
-      'click .js-filter-info-issues': 'filterByInfoIssues'
+      'click .js-filter-BLOCKER-issues': 'filterByBlockerIssues'
+      'click .js-filter-CRITICAL-issues': 'filterByCriticalIssues'
+      'click .js-filter-MAJOR-issues': 'filterByMajorIssues'
+      'click .js-filter-MINOR-issues': 'filterByMinorIssues'
+      'click .js-filter-INFO-issues': 'filterByInfoIssues'
 
       'click .js-filter-lines-to-cover': 'filterByLinesToCover'
       'click .js-filter-covered-lines': 'filterByCoveredLines'
@@ -109,10 +110,11 @@ define [
         openModalWindow url, {}
 
 
-    filterLines: (e, method) ->
+    filterLines: (e, methodName, extra) ->
       @$('.component-viewer-header-expanded-bar-section-list .active').removeClass 'active'
       $(e.currentTarget).addClass 'active'
-      _.result @options.main, method
+      method = @options.main[methodName]
+      method.call @options.main, extra
 
 
     # Issues
@@ -122,6 +124,8 @@ define [
     filterByUnresolvedIssues: (e) -> @filterLines e, 'filterByUnresolvedIssues'
     filterByFalsePositiveIssues: (e) -> @filterLines e, 'filterByFalsePositiveIssues'
 
+    filterByRule: (e) -> @filterLines e, 'filterByRule', $(e.currentTarget).data 'rule'
+
     filterByBlockerIssues: (e) -> @filterLines e, 'filterByBlockerIssues'
     filterByCriticalIssues: (e) -> @filterLines e, 'filterByCriticalIssues'
     filterByMajorIssues: (e) -> @filterLines e, 'filterByMajorIssues'
@@ -156,6 +160,11 @@ define [
           component.measures.fInfoIssues || 0
         )
 
+      if component.severities
+        order = ['BLOCKER', 'CRITICAL', 'MAJOR', 'MINOR', 'INFO']
+        component.severities = _.sortBy component.severities, (s) -> order.indexOf s[0]
+
+
       settings: @options.main.settings.toJSON()
       showSettings: @showSettings
       component: component
\ No newline at end of file
index 07924a1ae086e45358f49c40830e901d02731537..1dfd57266b0670349ab5c6923d671299fbe9e701 100644 (file)
@@ -59,7 +59,7 @@ define [
     initialize: (options) ->
       @settings = new Backbone.Model
         issues: false
-        coverage: true
+        coverage: false
         duplications: false
         scm: false
         workspace: false
@@ -271,6 +271,9 @@ define [
     # False Positive
     filterByFalsePositiveIssues: -> @filterByIssues (issue) -> issue.resolution == 'FALSE-POSITIVE'
 
+    # Rule
+    filterByRule: (rule) -> @filterByIssues (issue) -> issue.rule == rule
+
     # Severity
     filterByBlockerIssues: -> @filterByIssues (issue) -> issue.severity == 'BLOCKER' && !issue.resolution
     filterByCriticalIssues: -> @filterByIssues (issue) -> issue.severity == 'CRITICAL' && !issue.resolution
index 358b049bbf4247f225224c574e7a5cab6643f8f5..00412038c4680166fd70a70581294bf60f52e39e 100644 (file)
@@ -4,41 +4,13 @@
       {{t 'component_viewer.measure_section.severities'}}
     </div>
     <ul class="component-viewer-header-expanded-bar-section-list">
-      {{#if component.msr.blocker_violations}}
-        <li><a class="item js-filter-blocker-issues">
-          <span><i class="icon-severity-blocker"></i> {{t 'severity.BLOCKER'}}</span>
-          <span class="number">{{component.msr.blocker_violations}}</span>
+      {{#each component.severities}}
+        <li><a class="item js-filter-{{this.[0]}}-issues">
+          <span>{{severityIcon this.[0]}} {{t 'severity' this.[0]}}</span>
+          <span class="number">{{this.[2]}}</span>
           <i class="icon-chevron-right"></i>
         </a></li>
-      {{/if}}
-      {{#if component.msr.critical_violations}}
-        <li><a class="item js-filter-critical-issues">
-          <span><i class="icon-severity-critical"></i> {{t 'severity.CRITICAL'}}</span>
-          <span class="number">{{component.msr.critical_violations}}</span>
-          <i class="icon-chevron-right"></i>
-        </a></li>
-      {{/if}}
-      {{#if component.msr.major_violations}}
-        <li><a class="item js-filter-major-issues">
-          <span><i class="icon-severity-major"></i> {{t 'severity.MAJOR'}}</span>
-          <span class="number">{{component.msr.major_violations}}</span>
-          <i class="icon-chevron-right"></i>
-        </a></li>
-      {{/if}}
-      {{#if component.msr.minor_violations}}
-        <li><a class="item js-filter-minor-issues">
-          <span><i class="icon-severity-minor"></i> {{t 'severity.MINOR'}}</span>
-          <span class="number">{{component.msr.minor_violations}}</span>
-          <i class="icon-chevron-right"></i>
-        </a></li>
-      {{/if}}
-      {{#if component.msr.info_violations}}
-        <li><a class="item js-filter-info-issues">
-          <span><i class="icon-severity-info"></i> {{t 'severity.INFO'}}</span>
-          <span class="number">{{component.msr.info_violations}}</span>
-          <i class="icon-chevron-right"></i>
-        </a></li>
-      {{/if}}
+      {{/each}}
     </ul>
   </div>
 {{/if}}
       {{t 'component_viewer.measure_section.rules'}}
     </div>
     <ul class="component-viewer-header-expanded-bar-section-list">
+      {{#each component.rules}}
+        <li><a class="item js-filter-rule" data-rule="{{this.[0]}}">
+          <span>{{this.[1]}}</span>
+          <span class="number">{{this.[2]}}</span>
+          <i class="icon-chevron-right"></i>
+        </a></li>
+      {{/each}}
     </ul>
   </div>
 {{/if}}