]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6870 pre-select unresolved on the issues home page
authorStas Vilchik <vilchiks@gmail.com>
Mon, 5 Oct 2015 11:56:34 +0000 (13:56 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 5 Oct 2015 12:06:42 +0000 (14:06 +0200)
server/sonar-web/src/main/js/apps/issues/controller.js
server/sonar-web/src/main/js/apps/issues/facets/resolution-facet.js
server/sonar-web/src/main/js/apps/issues/models/state.js
server/sonar-web/src/main/js/apps/issues/templates/facets/issues-resolution-facet.hbs

index fb952246b91ab517324ed932aa7e7c866138634f..54e74f399802c8ab7c7cd8ecc72f7eccabdf14f8 100644 (file)
@@ -34,12 +34,6 @@ export default Controller.extend({
     }
   },
 
-  ensureResolution(query) {
-    return query.resolutions || query.statuses ?
-        _.omit(query, 'resolved') :
-        _.extend({}, query, { resolved: false });
-  },
-
   fetchList: function (firstPage) {
     var that = this;
     if (firstPage == null) {
@@ -50,9 +44,8 @@ export default Controller.extend({
       this.hideHomePage();
       this.closeComponentViewer();
     }
-    var data = this._issuesParameters(),
-        query = this.ensureResolution(this.options.app.state.get('query'));
-    _.extend(data, query);
+    var data = this._issuesParameters();
+    _.extend(data, this.options.app.state.get('query'));
     if (this.options.app.state.get('isContext')) {
       _.extend(data, this.options.app.state.get('contextQuery'));
     }
@@ -151,7 +144,7 @@ export default Controller.extend({
 
   newSearch: function () {
     this.options.app.state.unset('filter');
-    return this.options.app.state.setQuery({});
+    return this.options.app.state.setQuery({ resolved: 'false' });
   },
 
   applyFilter: function (filter, ignoreQuery) {
@@ -179,7 +172,7 @@ export default Controller.extend({
     if (addContext == null) {
       addContext = false;
     }
-    var filter = this.ensureResolution(this.options.app.state.get('query'));
+    var filter = this.options.app.state.get('query');
     if (addContext && this.options.app.state.get('isContext')) {
       _.extend(filter, this.options.app.state.get('contextQuery'));
     }
@@ -237,6 +230,7 @@ export default Controller.extend({
   },
 
   showHomePage: function () {
+    this.options.app.state.set({ query: { resolved: 'false' } }, { silent: true });
     this.fetchList();
     this.options.app.layout.workspaceComponentViewerRegion.reset();
     key.setScope('home');
index 8c09c1cfccb607c876e5f1d1ecb1233ccab928e1..a15cf51aed7706fec4e706e19d9751db10b859fd 100644 (file)
@@ -1,3 +1,4 @@
+import $ from 'jquery';
 import _ from 'underscore';
 import BaseFacet from './base-facet';
 import '../templates';
@@ -5,8 +6,41 @@ import '../templates';
 export default BaseFacet.extend({
   template: Templates['issues-resolution-facet'],
 
+  onRender: function () {
+    BaseFacet.prototype.onRender.apply(this, arguments);
+    var value = this.options.app.state.get('query').resolved;
+    if ((value != null) && (!value || value === 'false')) {
+      return this.$('.js-facet').filter('[data-unresolved]').addClass('active');
+    }
+  },
+
+  toggleFacet: function (e) {
+    var unresolved = $(e.currentTarget).is('[data-unresolved]');
+    $(e.currentTarget).toggleClass('active');
+    if (unresolved) {
+      var checked = $(e.currentTarget).is('.active'),
+          value = checked ? 'false' : null;
+      return this.options.app.state.updateFilter({
+        resolved: value,
+        resolutions: null
+      });
+    } else {
+      return this.options.app.state.updateFilter({
+        resolved: null,
+        resolutions: this.getValue()
+      });
+    }
+  },
+
+  disable: function () {
+    return this.options.app.state.updateFilter({
+      resolved: null,
+      resolutions: null
+    });
+  },
+
   sortValues: function (values) {
-    var order = ['FIXED', 'FALSE-POSITIVE', 'REMOVED', 'WONTFIX'];
+    var order = ['', 'FIXED', 'FALSE-POSITIVE', 'WONTFIX', 'REMOVED'];
     return _.sortBy(values, function (v) {
       return order.indexOf(v.val);
     });
index bb4f6c7427fe260a81cf003d782bbd39ee154abc..f49d2566dfcf762b4417dd6c0a8df573e956d622 100644 (file)
@@ -6,14 +6,14 @@ export default State.extend({
     page: 1,
     maxResultsReached: false,
     query: {},
-    facets: ['facetMode', 'severities'],
+    facets: ['facetMode', 'severities', 'resolutions'],
     isContext: false,
     allFacets: [
       'facetMode',
       'issues',
       'severities',
-      'statuses',
       'resolutions',
+      'statuses',
       'createdAt',
       'rules',
       'tags',
@@ -45,6 +45,7 @@ export default State.extend({
       'createdAt'
     ],
     transform: {
+      'resolved': 'resolutions',
       'assigned': 'assignees',
       'planned': 'actionPlans',
       'createdBefore': 'createdAt',
index 9150250b08dd07769f4159991000bae1c2c78fac..19e47071f8b4c3ee6e40e63ff777a856783d467b 100644 (file)
@@ -4,6 +4,13 @@
   {{#each values}}
     {{#eq val ""}}
     {{! unresolved }}
+      <a class="facet search-navigator-facet search-navigator-facet-half js-facet" data-unresolved
+         title="{{t "issue.unresolved.description"}}" data-toggle="tooltip" data-placement="right">
+        <span class="facet-name">{{t "unresolved"}}</span>
+        <span class="facet-stat">
+          {{#eq ../../state.facetMode 'count'}}{{numberShort count}}{{else}}{{formatMeasure count 'SHORT_WORK_DUR'}}{{/eq}}
+        </span>
+      </a>
     {{else}}
       <a class="facet search-navigator-facet search-navigator-facet-half js-facet" data-value="{{val}}"
          title="{{t "issue.resolution" val "description"}}" data-toggle="tooltip" data-placement="right">