]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5007 SONAR-5012 Full handling of facets
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 23 May 2014 09:03:34 +0000 (11:03 +0200)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 23 May 2014 09:08:30 +0000 (11:08 +0200)
sonar-core/src/main/resources/org/sonar/l10n/core.properties
sonar-server/src/main/coffee/coding-rules/app.coffee
sonar-server/src/main/coffee/coding-rules/views/coding-rules-facets-view.coffee
sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-item-view.coffee
sonar-server/src/main/coffee/coding-rules/views/filters/activation-filter-view.coffee
sonar-server/src/main/coffee/coding-rules/views/filters/tag-filter-view.coffee
sonar-server/src/main/hbs/coding-rules/coding-rules-facets.hbs
sonar-server/src/main/java/org/sonar/server/rule2/ws/AppAction.java
sonar-server/src/test/resources/org/sonar/server/rule2/ws/AppActionTest/app.json

index 9e49c89fcde78e74a4d463c467eb3dfabd40f0ce..7191f0150b96650d3f4f54463ece30f26bb2ac1b 100644 (file)
@@ -1792,6 +1792,10 @@ coding_rules.filters.severity=Severity
 coding_rules.filters.status=Status
 coding_rules.filters.tag=Tag
 
+coding_rules.facets.languages=Languages
+coding_rules.facets.tags=Tags
+coding_rules.facets.repositories=Repositories
+
 coding_rules.sort.creation_date=Creation Date
 coding_rules.sort.name=Name
 
index 848322fbca3eded167856533c6c889402777b876..230bdd4e4896966233a3cba7eb5129308b261349 100644 (file)
@@ -166,6 +166,14 @@ requirejs [
 
 
 
+  App.facetLabel = (property, value) ->
+    return value unless App.facetPropertyToLabels[property]
+    if App.facetPropertyToLabels[property][value]
+      return App.facetPropertyToLabels[property][value]
+    else
+      return _.findWhere(App.facetPropertyToLabels[property], key: value).name
+
+
   App.fetchFirstPage = (fromFacets = false) ->
     @pageIndex = 1
     App.fetchList true, fromFacets
@@ -257,7 +265,6 @@ requirejs [
       name: t 'coding_rules.filters.tag'
       property: 'tags'
       type: TagFilterView
-      choices: @tags
 
     @filters.add new BaseFilters.Filter
       name: t 'coding_rules.filters.characteristic'
@@ -352,10 +359,13 @@ requirejs [
       App.languages = r.languages
       App.repositories = r.repositories
       App.statuses = r.statuses
-      App.tags = r.tags
       App.characteristics = r.characteristics
       window.messages = r.messages
 
+      App.facetPropertyToLabels =
+        'languages': App.languages
+        'repositories': App.repositories
+
       # Remove the initial spinner
       jQuery('#coding-rules-page-loader').remove()
 
index a9e16014042b433d46e395712f100965f716ae75..1d66c2ee5a55301c66f79246603ed092f79f7087 100644 (file)
@@ -19,6 +19,16 @@ define [
       'click @ui.options': 'selectOption'
 
 
+    initialize: ->
+      super()
+      that = @
+      @options.collection.each (facet) ->
+        property = facet.get 'property'
+        facet.set 'property_message', 'coding_rules.facets.' + property
+        _.each(facet.get('values'), (value) ->
+          value.text = that.options.app.facetLabel(property, value.val)
+        )
+
     selectOption: (e) ->
       option = jQuery(e.currentTarget)
       option.toggleClass 'active'
index 31648dc10f355050d8e6b970fae72439b4e1afa2..e8a3a82f32cddef10d500f6b190602b03dcca45e 100644 (file)
@@ -27,6 +27,7 @@ define [
         url: "#{baseUrl}/api/rules/show"
         data:
           key: @model.get('key')
+          actives: true
       .done (r) =>
         @model.set r.rule
         @options.app.codingRulesQualityProfileActivationView.rule = @model
index 896ee64c050f2ab34ee6fa96349cdaee4eb56b16..eb603c6ec06120fdd2e789f1f9114be5cd304996 100644 (file)
@@ -34,8 +34,8 @@ define [
 
 
     makeActive: ->
-      @choices.each (item) -> item.set 'checked', item.id == 'active'
+      @choices.each (item) -> item.set 'checked', item.id == 'true'
       @detailsView.updateValue()
       @detailsView.updateLists()
       @render()
-      super
\ No newline at end of file
+      super
index 772c093329beebb34199c5752ca4ac484ee7e406..606d2182fb71c3dcc9cf3329b654da738392f016 100644 (file)
@@ -1,23 +1,27 @@
 define [
-  'navigator/filters/ajax-select-filters'
+  'navigator/filters/choice-filters'
 ], (
-  AjaxSelectFilters
+  ChoiceFilters
 ) ->
 
-  class TagSuggestions extends AjaxSelectFilters.Suggestions
+  class TagFilterView extends ChoiceFilters.ChoiceFilterView
 
-    url: ->
-      "#{baseUrl}/api/rules/tags"
+    initialize: ->
+      super()
+      @loadTags()
+      # TODO Register an event handler to reload tags when they are modified on a rule
 
-    parse: (r) ->
-      return _.map(r.tags, (tag) ->
-        new Backbone.Model
-          id: tag
-          text: tag
-      )
 
-  class TagFilterView extends AjaxSelectFilters.AjaxSelectFilterView
+    loadTags: ->
+      tagsXHR = jQuery.ajax
+        url: "#{baseUrl}/api/rules/tags"
 
-    initialize: ->
-      super
-      @choices = new TagSuggestions
+      that = @
+      jQuery.when(tagsXHR).done (r) ->
+        that.choices = new Backbone.Collection(
+          _.map(r.tags, (tag) ->
+            new Backbone.Model
+              id: tag
+              text: tag
+          ))
+        that.render()
index dd597b1081241b61564290b454928bb86e1536cc..c3b2a33a4a8a79f6bf46c8cb3d221447eba549ed 100644 (file)
@@ -1,11 +1,11 @@
 <div class="navigator-facets-list">
   {{#each items}}
     <div class="navigator-facets-list-item" data-property="{{property}}">
-      <div class="navigator-facets-list-item-name">{{name}}</div>
+      <div class="navigator-facets-list-item-name">{{t property_message}}</div>
       <div class="navigator-facets-list-item-options">
         {{#each values}}
-          <a class="navigator-facets-list-item-option" data-key="{{key}}" data-property="{{../name}}">
-            <span class="navigator-facets-list-item-option-name">{{val}}</span>
+          <a class="navigator-facets-list-item-option" data-key="{{val}}" data-property="{{../property}}">
+            <span class="navigator-facets-list-item-option-name">{{text}}</span>
             <span class="navigator-facets-list-item-option-stat">{{count}}</span>
           </a>
         {{/each}}
index d8a31577300126e9d0c8451be1697b9c7510f213..59763896c808ccf0817b937b945e66727c609324 100644 (file)
@@ -131,6 +131,10 @@ public class AppAction implements RequestHandler {
     "coding_rules.filters.status",
     "coding_rules.filters.tag",
 
+    "coding_rules.facets.tags",
+    "coding_rules.facets.languages",
+    "coding_rules.facets.repositories",
+
     "coding_rules.sort.creation_date",
     "coding_rules.sort.name"
   };
index 221569c93eadce5705524abafd5467ad2721b83b..24e8512f8e0cae96008b705ef614f830a50c2649 100644 (file)
     "coding_rules.filters.status": "coding_rules.filters.status",
     "coding_rules.filters.tag": "coding_rules.filters.tag",
 
+    "coding_rules.facets.tags": "coding_rules.facets.tags",
+    "coding_rules.facets.languages": "coding_rules.facets.languages",
+    "coding_rules.facets.repositories": "coding_rules.facets.repositories",
+
     "coding_rules.sort.creation_date": "coding_rules.sort.creation_date",
     "coding_rules.sort.name": "coding_rules.sort.name"
   }