]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5479 Allow to filter on Lines and Lines of Code in the Component Viewer
authorStas Vilchik <vilchiks@gmail.com>
Wed, 23 Jul 2014 10:23:49 +0000 (12:23 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Wed, 23 Jul 2014 10:23:49 +0000 (12:23 +0200)
server/sonar-web/src/main/coffee/component-viewer/header/basic-header.coffee
server/sonar-web/src/main/coffee/component-viewer/main.coffee
server/sonar-web/src/main/hbs/component-viewer/header/cw-basic-header.hbs

index 2f8a2300b39fd9045f79ce26acf9e06309005590..e39ebeca502f33a49ad8b69db1479b1ea4b180a6 100644 (file)
@@ -11,3 +11,18 @@ define [
 
   class extends BaseHeaderView
     template: Templates['cw-basic-header']
+
+
+    events:
+      'click .js-filter-lines': 'filterByLines'
+      'click .js-filter-ncloc': 'filterByNcloc'
+
+
+    filterByLines: (e) ->
+      @header.filterLines e, 'filterByLines'
+      @state.set 'activeHeaderItem', '.js-filter-lines'
+
+
+    filterByNcloc: (e) ->
+      @header.filterLines e, 'filterByNcloc'
+      @state.set 'activeHeaderItem', '.js-filter-ncloc'
index 737b6bd417aa2b241f2d04ea5ce31485d58e3709..a7f4c7415a2fe86a5305e2c07fd69f7146b99411 100644 (file)
@@ -47,7 +47,7 @@ define [
   API_TESTS = "#{baseUrl}/api/tests/show"
 
   SOURCE_METRIC_LIST = 'accessors,classes,functions,statements,' +
-    'ncloc,lines,generated_ncloc,generated_lines,' +
+    'ncloc,ncloc_data,lines,generated_ncloc,generated_lines,' +
     'complexity,function_complexity,' +
     'comment_lines,comment_lines_density,public_api,public_undocumented_api,public_documented_api_density'
 
@@ -204,8 +204,9 @@ define [
         measuresList = data[0].msr || []
         measures = @component.get 'measures'
         measuresList.forEach (m) ->
-          measures[m.key] = m.frmt_val
+          measures[m.key] = m.frmt_val || m.data
         @component.set 'measures', measures
+        @augmentWithNclocData()
 
 
     requestTrends: (key, period) ->
@@ -234,6 +235,20 @@ define [
           formattedSource: formattedSource
 
 
+    augmentWithNclocData: ->
+      nclocDataRaw = @component.has('measures') && @component.get('measures')['ncloc_data']
+      if nclocDataRaw?
+        formattedSource = @source.get 'formattedSource'
+        nclocData = nclocDataRaw.split(';').map (item) ->
+          tokens = item.split '='
+          lineNumber: +tokens[0]
+          executable: tokens[1] == '1'
+        nclocData.forEach (n) ->
+          line = _.findWhere formattedSource, lineNumber: n.lineNumber
+          line.executable = n.executable
+        @source.set 'formattedSource', formattedSource
+
+
     requestTests: (key) ->
       $.get API_TESTS, key: key, (data) =>
         @state.set 'hasTests', true
@@ -363,3 +378,21 @@ define [
 
     scrollPlusDelta: (delta) ->
       @$(@sourceRegion.$el).scrollTop delta
+
+
+    _filterByLines: (predicate) ->
+      formattedSource = @source.get 'formattedSource'
+      @sourceView.resetShowBlocks()
+      formattedSource.forEach (line) =>
+        if predicate line
+          ln = line.lineNumber
+          @sourceView.addShowBlock ln, ln
+      @sourceView.render()
+
+
+    filterByLines: ->
+      @showAllLines()
+
+
+    filterByNcloc: ->
+      @_filterByLines (line) -> line?.executable
index 0e9a93367b27bc5a6d62ef2b619ace4b4bdb433b..32cd2c1730f0f113f47c924c710912605c8e1818 100644 (file)
@@ -4,8 +4,12 @@
       {{t 'component_viewer.measure_section.size'}}
     </div>
     <ul class="component-viewer-header-expanded-bar-section-list">
-      {{{componentViewerHeaderItem lines 'lines'}}}
-      {{{componentViewerHeaderItem ncloc 'ncloc'}}}
+      {{{componentViewerHeaderLink lines 'lines' 'js-filter-lines'}}}
+      {{#if 'ncloc_data'}}
+        {{{componentViewerHeaderLink ncloc 'ncloc' 'js-filter-ncloc'}}}
+      {{else}}
+        {{{componentViewerHeaderItem ncloc 'ncloc'}}}
+      {{/if}}
       {{{componentViewerHeaderItem generated_lines 'generated_lines'}}}
       {{{componentViewerHeaderItem generated_ncloc 'generated_ncloc'}}}
     </ul>
@@ -45,4 +49,4 @@
       {{{componentViewerHeaderItem public_documented_api_density 'public_documented_api_density'}}}
     </ul>
   </div>
-{{/with}}
\ No newline at end of file
+{{/with}}