]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6331 do not fail if any piece of information is missing
authorStas Vilchik <vilchiks@gmail.com>
Mon, 30 Mar 2015 16:01:05 +0000 (18:01 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 30 Mar 2015 16:01:13 +0000 (18:01 +0200)
server/sonar-web/src/main/hbs/overview/overview-issues.hbs
server/sonar-web/src/main/js/overview/layout.js
server/sonar-web/src/main/js/overview/models/state.js
server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb

index 2aa91ce663c0f8278498f082a7b5d785f7c58384..5a7ba8090c3e22187c50c7af9c33a854b3ff144e 100644 (file)
       </div>
     </td>
     <td class="width-15">
-      <a href="{{urlForIssuesOverview componentKey period1Date}}"
-         class="overview-measure {{#gt issues1 0}}text-danger{{else}}text-success{{/gt}}">
-        {{formatMeasureVariation issues1 'INT'}}
-      </a>
-      <span class="note">new</span>
-      <p class="note">{{period1Name}}</p>
+      {{#notNull issues1}}
+        <a href="{{urlForIssuesOverview componentKey period1Date}}"
+           class="overview-measure {{#gt issues1 0}}text-danger{{else}}text-success{{/gt}}">
+          {{formatMeasureVariation issues1 'INT'}}
+        </a>
+        <span class="note">new</span>
+        <p class="note">{{period1Name}}</p>
+      {{/notNull}}
     </td>
     <td class="width-15">
-      <div style="display: inline-block; vertical-align: middle;">
+      {{#notNull issues2}}
         <a href="{{urlForIssuesOverview componentKey period2Date}}"
            class="overview-measure {{#gt issues2 0}}text-danger{{else}}text-success{{/gt}}">
           {{formatMeasureVariation issues2 'INT'}}
         </a>
         <span class="note">new</span>
         <p class="note">{{period2Name}}</p>
-      </div>
+      {{/notNull}}
     </td>
     <td class="width-15">
-      <a href="{{urlForIssuesOverview componentKey period3Date}}"
-         class="overview-measure {{#gt issues3 0}}text-danger{{else}}text-success{{/gt}}">
-        {{formatMeasureVariation issues3 'INT'}}
-      </a>
-      <span class="note">new</span>
-      <p class="note">{{period3Name}}</p>
+      {{#notNull issues3}}
+        <a href="{{urlForIssuesOverview componentKey period3Date}}"
+           class="overview-measure {{#gt issues3 0}}text-danger{{else}}text-success{{/gt}}">
+          {{formatMeasureVariation issues3 'INT'}}
+        </a>
+        <span class="note">new</span>
+        <p class="note">{{period3Name}}</p>
+      {{/notNull}}
     </td>
   </tr>
 </table>
index adca32d5261ee503b7ef8d4709cafe889b14fa88..5e83b9334fdd65a293aed6527b4b4e83ea45c370 100644 (file)
@@ -34,13 +34,15 @@ define([
     },
 
     modelEvents: {
-      'change:gateConditions': 'toggleGate'
+      'change': 'toggleRegions'
     },
 
-    toggleGate: function () {
+    toggleRegions: function () {
       var conditions = this.model.get('gateConditions'),
-          hasGate = _.isArray(conditions) && conditions.length > 0;
+          hasGate = _.isArray(conditions) && conditions.length > 0,
+          hasCoverage = !!this.model.get('coverage');
       this.$(this.gateRegion.el).toggle(hasGate);
+      this.$(this.coverageRegion.el).toggle(hasCoverage);
     }
   });
 
index 6bb3eb340be3a8a82c710fd9037a8d5abd11370a..10d51657a7779b74ad89e3dd2c246a2765dc3ef9 100644 (file)
@@ -60,6 +60,9 @@ define(function () {
             metrics: 'quality_gate_details'
           };
       return $.get(url, options).done(function (r) {
+        if (!r || !r[0] || !r[0].msr || !r[0].msr[0] || !r[0].msr[0].data) {
+          return;
+        }
         var gateData = JSON.parse(r[0].msr[0].data),
             gateConditions = gateData.conditions,
             urlMetrics = baseUrl + '/api/metrics';
@@ -106,21 +109,21 @@ define(function () {
             functionComplexityMeasure =  _.findWhere(msr, { key: 'function_complexity' }),
             fileComplexityMeasure =  _.findWhere(msr, { key: 'file_complexity' });
         that.set({
-          ncloc: nclocMeasure.val,
-          ncloc1: nclocMeasure.var1,
-          ncloc2: nclocMeasure.var2,
-          ncloc3: nclocMeasure.var3,
+          ncloc: nclocMeasure && nclocMeasure.val,
+          ncloc1: nclocMeasure && nclocMeasure.var1,
+          ncloc2: nclocMeasure && nclocMeasure.var2,
+          ncloc3: nclocMeasure && nclocMeasure.var3,
           nclocLang: nclocLang,
 
-          functionComplexity: functionComplexityMeasure.val,
-          functionComplexity1: functionComplexityMeasure.var1,
-          functionComplexity2: functionComplexityMeasure.var2,
-          functionComplexity3: functionComplexityMeasure.var3,
+          functionComplexity: functionComplexityMeasure && functionComplexityMeasure.val,
+          functionComplexity1: functionComplexityMeasure && functionComplexityMeasure.var1,
+          functionComplexity2: functionComplexityMeasure && functionComplexityMeasure.var2,
+          functionComplexity3: functionComplexityMeasure && functionComplexityMeasure.var3,
 
-          fileComplexity: fileComplexityMeasure.val,
-          fileComplexity1: fileComplexityMeasure.var1,
-          fileComplexity2: fileComplexityMeasure.var2,
-          fileComplexity3: fileComplexityMeasure.var3
+          fileComplexity: fileComplexityMeasure && fileComplexityMeasure.val,
+          fileComplexity1: fileComplexityMeasure && fileComplexityMeasure.var1,
+          fileComplexity2: fileComplexityMeasure && fileComplexityMeasure.var2,
+          fileComplexity3: fileComplexityMeasure && fileComplexityMeasure.var3
         });
       });
     },
@@ -177,6 +180,9 @@ define(function () {
     },
 
     fetchIssues1: function () {
+      if (!this.get('period1Date')) {
+        return;
+      }
       var that = this,
           url = baseUrl + '/api/issues/search',
           options = {
@@ -201,6 +207,9 @@ define(function () {
     },
 
     fetchIssues2: function () {
+      if (!this.get('period2Date')) {
+        return;
+      }
       var that = this,
           url = baseUrl + '/api/issues/search',
           options = {
@@ -225,6 +234,9 @@ define(function () {
     },
 
     fetchIssues3: function () {
+      if (!this.get('period3Date')) {
+        return;
+      }
       var that = this,
           url = baseUrl + '/api/issues/search',
           options = {
@@ -275,10 +287,10 @@ define(function () {
         var msr = r[0].msr,
             debtMeasure = _.findWhere(msr, { key: 'sqale_index' });
         that.set({
-          debt: debtMeasure.val,
-          debt1: debtMeasure.var1,
-          debt2: debtMeasure.var2,
-          debt3: debtMeasure.var3
+          debt: debtMeasure && debtMeasure.val,
+          debt1: debtMeasure && debtMeasure.var1,
+          debt2: debtMeasure && debtMeasure.var2,
+          debt3: debtMeasure && debtMeasure.var3
         });
       });
     },
@@ -311,13 +323,13 @@ define(function () {
             coverageMeasure = _.findWhere(msr, { key: 'overall_coverage' }),
             newCoverageMeasure = _.findWhere(msr, { key: 'new_overall_coverage' });
         that.set({
-          coverage: coverageMeasure.val,
-          coverage1: coverageMeasure.var1,
-          coverage2: coverageMeasure.var2,
-          coverage3: coverageMeasure.var3,
-          newCoverage1: newCoverageMeasure.var1,
-          newCoverage2: newCoverageMeasure.var2,
-          newCoverage3: newCoverageMeasure.var3
+          coverage: coverageMeasure && coverageMeasure.val,
+          coverage1: coverageMeasure && coverageMeasure.var1,
+          coverage2: coverageMeasure && coverageMeasure.var2,
+          coverage3: coverageMeasure && coverageMeasure.var3,
+          newCoverage1: newCoverageMeasure && newCoverageMeasure.var1,
+          newCoverage2: newCoverageMeasure && newCoverageMeasure.var2,
+          newCoverage3: newCoverageMeasure && newCoverageMeasure.var3
         });
       });
     },
@@ -349,10 +361,10 @@ define(function () {
         var msr = r[0].msr,
             duplicationsMeasure = _.findWhere(msr, { key: 'duplicated_lines_density' });
         that.set({
-          duplications: duplicationsMeasure.val,
-          duplications1: duplicationsMeasure.var1,
-          duplications2: duplicationsMeasure.var2,
-          duplications3: duplicationsMeasure.var3
+          duplications: duplicationsMeasure && duplicationsMeasure.val,
+          duplications1: duplicationsMeasure && duplicationsMeasure.var1,
+          duplications2: duplicationsMeasure && duplicationsMeasure.var2,
+          duplications3: duplicationsMeasure && duplicationsMeasure.var3
         });
       });
     },
index 87de54463aa56c31809a0cd4f89868c929433076..4627c31d9115e5853beaedb808e00d1ba555baa5 100644 (file)
@@ -1,16 +1,34 @@
 <div class="overview"></div>
 
+<%
+   period1Name = short_period_label(@snapshot, 1)
+   period2Name = short_period_label(@snapshot, 2)
+   period3Name = short_period_label(@snapshot, 3)
+
+   period1Date = @snapshot.period_datetime(1)
+   period2Date = @snapshot.period_datetime(2)
+   period3Date = @snapshot.period_datetime(3)
+%>
+
 <script>
   window.overviewConf = {
-    componentKey: '<%= @resource.key -%>',
-    componentUuid: '<%= @resource.uuid -%>',
+    <% if period1Date %>
+    period1Name: '<%= period1Name -%>',
+    period1Date: '<%= period1Date.strftime('%FT%T%z') -%>',
+    <% end %>
 
-    period1Name: '<%= short_period_label(@snapshot, 1) -%>',
-    period1Date: '<%= @snapshot.period_datetime(1).strftime('%FT%T%z') -%>',
-    period2Name: '<%= short_period_label(@snapshot, 2) -%>',
-    period2Date: '<%= @snapshot.period_datetime(2).strftime('%FT%T%z') -%>',
-    period3Name: '<%= short_period_label(@snapshot, 3) -%>',
-    period3Date: '<%= @snapshot.period_datetime(3).strftime('%FT%T%z') -%>'
+    <% if period2Date %>
+    period2Name: '<%= period2Name -%>',
+    period2Date: '<%= period2Date.strftime('%FT%T%z') -%>',
+    <% end %>
+
+    <% if period3Date %>
+    period3Name: '<%= period3Name -%>',
+    period3Date: '<%= period3Date.strftime('%FT%T%z') -%>',
+    <% end %>
+
+    componentKey: '<%= @resource.key -%>',
+    componentUuid: '<%= @resource.uuid -%>'
   };
   require(['overview/app']);
 </script>