]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5718 Implement the manual selection of facet values
authorStas Vilchik <vilchiks@gmail.com>
Thu, 30 Oct 2014 15:14:36 +0000 (16:14 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Thu, 30 Oct 2014 15:14:36 +0000 (16:14 +0100)
server/sonar-web/src/main/coffee/issues/facets/assignee-facet.coffee
server/sonar-web/src/main/coffee/issues/facets/reporter-facet.coffee
server/sonar-web/src/main/coffee/issues/facets/rule-facet.coffee
server/sonar-web/src/main/hbs/issues/facets/issues-assignee-facet.hbs
server/sonar-web/src/main/hbs/issues/facets/issues-reporter-facet.hbs [new file with mode: 0644]
server/sonar-web/src/main/hbs/issues/facets/issues-rule-facet.hbs [new file with mode: 0644]

index 7d6c15dd8af33dbdf9e22bc0ef9010c2ae1b9ba1..9eb484e653329e3cfebf71d2de030a0bac07c363 100644 (file)
@@ -13,6 +13,11 @@ define [
     template: Templates['issues-assignee-facet']
 
 
+    events: ->
+      _.extend super,
+        'change .js-issues-custom-value': 'addCustomValue'
+
+
     onRender: ->
       super
 
@@ -20,6 +25,20 @@ define [
       if value? && (!value || value == 'false')
         @$('.js-issues-facet').filter("[data-unassigned]").addClass 'active'
 
+      @$('.js-issues-custom-value').select2
+        placeholder: 'Add assignee'
+        minimumInputLength: 2
+        allowClear: false
+        formatNoMatches: -> t 'select2.noMatches'
+        formatSearching: -> t 'select2.searching'
+        formatInputTooShort: -> tp 'select2.tooShort', 2
+        width: '100%'
+        ajax:
+          quietMillis: 300
+          url: "#{baseUrl}/api/users/search?f=s2"
+          data: (term, page) -> { s: term, p: page }
+          results: (data) -> { more: data.more, results: data.results }
+
 
     toggleFacet: (e) ->
       unassigned = $(e.currentTarget).is "[data-unassigned]"
@@ -49,6 +68,18 @@ define [
       @options.app.state.updateFilter assigned: null, assignees: null
 
 
+    addCustomValue: ->
+      property = @model.get 'property'
+      customValue = @$('.js-issues-custom-value').select2 'val'
+      value = @getValue()
+      value += ',' if value.length > 0
+      value += customValue
+      obj = {}
+      obj[property] = value
+      obj.assigned = null
+      @options.app.state.updateFilter obj
+
+
     serializeData: ->
       _.extend super,
         values: @getValuesWithLabels()
index 0625fe3bbe74cf278e30927d86fd29345b08e5be..73e00faa9a8be2570e5f82494aedfc8b1412ffc1 100644 (file)
@@ -1,11 +1,37 @@
 define [
   'issues/facets/base-facet'
+  'templates/issues'
 ], (
   BaseFacet
+  Templates
 ) ->
 
 
   class extends BaseFacet
+    template: Templates['issues-reporter-facet']
+
+
+    events: ->
+      _.extend super,
+        'change .js-issues-custom-value': 'addCustomValue'
+
+
+    onRender: ->
+      super
+      @$('.js-issues-custom-value').select2
+        placeholder: 'Add reporter'
+        minimumInputLength: 2
+        allowClear: false
+        formatNoMatches: -> t 'select2.noMatches'
+        formatSearching: -> t 'select2.searching'
+        formatInputTooShort: -> tp 'select2.tooShort', 2
+        width: '100%'
+        ajax:
+          quietMillis: 300
+          url: "#{baseUrl}/api/users/search?f=s2"
+          data: (term, page) -> { s: term, p: page }
+          results: (data) -> { more: data.more, results: data.results }
+
 
     getValuesWithLabels: ->
       values = @model.getValues()
@@ -20,6 +46,17 @@ define [
       values
 
 
+    addCustomValue: ->
+      property = @model.get 'property'
+      customValue = @$('.js-issues-custom-value').select2 'val'
+      value = @getValue()
+      value += ',' if value.length > 0
+      value += customValue
+      obj = {}
+      obj[property] = value
+      @options.app.state.updateFilter obj
+
+
     serializeData: ->
       _.extend super,
         values: @getValuesWithLabels()
index df5b544bb9afc354dec4d139906b5915f9ac51d0..274238cf389f6cac0d895a6ce32f63474553f764 100644 (file)
@@ -1,11 +1,40 @@
 define [
   'issues/facets/base-facet'
+  'templates/issues'
 ], (
   BaseFacet
+  Templates
 ) ->
 
 
   class extends BaseFacet
+    template: Templates['issues-rule-facet']
+
+
+    events: ->
+      _.extend super,
+        'change .js-issues-custom-value': 'addCustomValue'
+
+
+    onRender: ->
+      super
+      @$('.js-issues-custom-value').select2
+        placeholder: 'Add rule'
+        minimumInputLength: 2
+        allowClear: false
+        formatNoMatches: -> t 'select2.noMatches'
+        formatSearching: -> t 'select2.searching'
+        formatInputTooShort: -> tp 'select2.tooShort', 2
+        width: '100%'
+        ajax:
+          quietMillis: 300
+          url: "#{baseUrl}/api/rules/search?f=name"
+          data: (term, page) -> { q: term, p: page }
+          results: (data) ->
+            results = data.rules.map (rule) ->
+              id: rule.key, text: rule.name
+            { more: (data.p * data.ps < data.total), results: results }
+
 
     getValuesWithLabels: ->
       values = @model.getValues()
@@ -20,6 +49,17 @@ define [
       values
 
 
+    addCustomValue: ->
+      property = @model.get 'property'
+      customValue = @$('.js-issues-custom-value').select2 'val'
+      value = @getValue()
+      value += ',' if value.length > 0
+      value += customValue
+      obj = {}
+      obj[property] = value
+      @options.app.state.updateFilter obj
+
+
     serializeData: ->
       _.extend super,
         values: @getValuesWithLabels()
index 835b6a5b4a453800abbaa718e0ef215ad0abaa8f..8065434d2830fbe65ab1f7dd4432f70b4c5ced74 100644 (file)
@@ -1,6 +1,10 @@
 {{> '_issues-facet-header'}}
 
 <div class="issues-facet-list">
+  <div class="issues-facet-custom-value">
+    <input type="hidden" class="js-issues-custom-value">
+  </div>
+
   {{#each values}}
     {{#eq val ''}}
       {{! unassigned }}
diff --git a/server/sonar-web/src/main/hbs/issues/facets/issues-reporter-facet.hbs b/server/sonar-web/src/main/hbs/issues/facets/issues-reporter-facet.hbs
new file mode 100644 (file)
index 0000000..af181c5
--- /dev/null
@@ -0,0 +1,14 @@
+{{> '_issues-facet-header'}}
+
+<div class="issues-facet-list">
+  <div class="issues-facet-custom-value">
+    <input type="hidden" class="js-issues-custom-value">
+  </div>
+
+  {{#each values}}
+    <a class="facet issues-facet js-issues-facet" data-value="{{val}}">
+      <span class="facet-name">{{default label val}}</span>
+      <span class="facet-stat">{{count}}</span>
+    </a>
+  {{/each}}
+</div>
diff --git a/server/sonar-web/src/main/hbs/issues/facets/issues-rule-facet.hbs b/server/sonar-web/src/main/hbs/issues/facets/issues-rule-facet.hbs
new file mode 100644 (file)
index 0000000..af181c5
--- /dev/null
@@ -0,0 +1,14 @@
+{{> '_issues-facet-header'}}
+
+<div class="issues-facet-list">
+  <div class="issues-facet-custom-value">
+    <input type="hidden" class="js-issues-custom-value">
+  </div>
+
+  {{#each values}}
+    <a class="facet issues-facet js-issues-facet" data-value="{{val}}">
+      <span class="facet-name">{{default label val}}</span>
+      <span class="facet-stat">{{count}}</span>
+    </a>
+  {{/each}}
+</div>