]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6145 change the way to select current user in the facet on the issues page
authorStas Vilchik <vilchiks@gmail.com>
Mon, 9 Mar 2015 16:59:06 +0000 (17:59 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 9 Mar 2015 16:59:14 +0000 (17:59 +0100)
server/sonar-web/src/main/coffee/issues/controller.coffee
server/sonar-web/src/main/coffee/issues/facets/assignee-facet.coffee
server/sonar-web/src/main/hbs/issues/facets/issues-assignee-facet.hbs

index a07ded97aeaa3c41327429eaf48f216f1208510e..d30e8c7978c02aa51ae556c1e02ffccaf80be2c3 100644 (file)
@@ -35,6 +35,12 @@ define [
 
   class extends Controller
 
+    _facetsFromServer: ->
+      facets = super || []
+      facets.push 'assigned_to_me'
+      facets
+
+
     _issuesParameters: ->
       p: @options.app.state.get 'page'
       ps: @pageSize
@@ -44,6 +50,14 @@ define [
       facets: @_facetsFromServer().join()
 
 
+    _myIssuesFromResponse: (r) ->
+      myIssuesData = _.findWhere r.facets, property: 'assigned_to_me'
+      if myIssuesData? && _.isArray(myIssuesData.values) && myIssuesData.values.length > 0
+        @options.app.state.set { myIssues: myIssuesData.values[0].count }, { silent: true }
+      else
+        @options.app.state.unset 'myIssues', { silent: true }
+
+
     fetchList: (firstPage = true) ->
       if firstPage
         @options.app.state.set { selectedIndex: 0, page: 1 }, { silent: true }
@@ -63,7 +77,8 @@ define [
         @options.app.list.setIndex()
         FACET_DATA_FIELDS.forEach (field) => @options.app.facets[field] = r[field]
         @options.app.facets.reset @_allFacets()
-        @options.app.facets.add r.facets, merge: true
+        @options.app.facets.add _.reject(r.facets, (f) -> f.property == 'assigned_to_me'), merge: true
+        @_myIssuesFromResponse r
         @enableFacets @_enabledFacets()
         @options.app.state.set
           page: r.p
@@ -94,6 +109,7 @@ define [
 
 
     requestFacet: (id) ->
+      return @requestAssigneeFacet() if id == 'assignees'
       facet = @options.app.facets.get id
       data = _.extend { facets: id, ps: 1 }, @options.app.state.get('query')
       _.extend data, @options.app.state.get 'contextQuery' if @options.app.state.get 'isContext'
@@ -104,6 +120,18 @@ define [
         facet.set facetData if facetData?
 
 
+    requestAssigneeFacet: ->
+      facet = @options.app.facets.get 'assignees'
+      data = _.extend { facets: 'assignees,assigned_to_me', ps: 1 }, @options.app.state.get('query')
+      _.extend data, @options.app.state.get 'contextQuery' if @options.app.state.get 'isContext'
+      $.get "#{baseUrl}/api/issues/search", data, (r) =>
+        FACET_DATA_FIELDS.forEach (field) =>
+          @options.app.facets[field] = @_mergeCollections @options.app.facets[field], r[field]
+        facetData = _.findWhere r.facets, property: 'assignees'
+        @_myIssuesFromResponse r
+        facet.set facetData if facetData?
+
+
     newSearch: ->
       @options.app.state.unset 'filter'
       @options.app.state.setQuery resolved: 'false'
index e2f6819a2596107f62e44a98faf96d12646ff8db..673cb5db44c047508aa2c726ab44f4a8388e8ada 100644 (file)
@@ -90,6 +90,11 @@ define [
         x
 
 
+    getNumberOfMyIssues: ->
+      @options.app.state.get 'myIssues'
+
+
     serializeData: ->
       _.extend super,
+        myIssues: @getNumberOfMyIssues()
         values: @sortValues @getValuesWithLabels()
index 1e16846e377bd342a5e6623013d5408dcd251b7b..7aadc06260595c6402698798448572b80af4b901 100644 (file)
@@ -1,9 +1,16 @@
 {{> '_issues-facet-header'}}
 
 <div class="search-navigator-facet-list">
+  {{#notNull myIssues}}
+    <a class="facet search-navigator-facet js-facet" data-value="__me__" title="{{t 'me'}}">
+      <span class="facet-name">{{t 'me'}}</span>
+      <span class="facet-stat">{{myIssues}}</span>
+    </a>
+  {{/notNull}}
+
   {{#each values}}
     {{#eq val ''}}
-      {{! unassigned }}
+    {{! unassigned }}
       <a class="facet search-navigator-facet js-facet" data-unassigned title="{{t 'unassigned'}}">
         <span class="facet-name">{{t 'unassigned'}}</span>
         <span class="facet-stat">{{numberShort count}}</span>