From 80e13ed339f19c4342f0b225c2d6423a6d1a6d75 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Mon, 30 Mar 2015 18:01:05 +0200 Subject: [PATCH] SONAR-6331 do not fail if any piece of information is missing --- .../src/main/hbs/overview/overview-issues.hbs | 32 +++++---- .../sonar-web/src/main/js/overview/layout.js | 8 ++- .../src/main/js/overview/models/state.js | 66 +++++++++++-------- .../WEB-INF/app/views/overview/index.html.erb | 34 +++++++--- 4 files changed, 88 insertions(+), 52 deletions(-) diff --git a/server/sonar-web/src/main/hbs/overview/overview-issues.hbs b/server/sonar-web/src/main/hbs/overview/overview-issues.hbs index 2aa91ce663c..5a7ba8090c3 100644 --- a/server/sonar-web/src/main/hbs/overview/overview-issues.hbs +++ b/server/sonar-web/src/main/hbs/overview/overview-issues.hbs @@ -11,30 +11,34 @@ - - {{formatMeasureVariation issues1 'INT'}} - - new -

{{period1Name}}

+ {{#notNull issues1}} + + {{formatMeasureVariation issues1 'INT'}} + + new +

{{period1Name}}

+ {{/notNull}} -
+ {{#notNull issues2}} {{formatMeasureVariation issues2 'INT'}} new

{{period2Name}}

-
+ {{/notNull}} - - {{formatMeasureVariation issues3 'INT'}} - - new -

{{period3Name}}

+ {{#notNull issues3}} + + {{formatMeasureVariation issues3 'INT'}} + + new +

{{period3Name}}

+ {{/notNull}} diff --git a/server/sonar-web/src/main/js/overview/layout.js b/server/sonar-web/src/main/js/overview/layout.js index adca32d5261..5e83b9334fd 100644 --- a/server/sonar-web/src/main/js/overview/layout.js +++ b/server/sonar-web/src/main/js/overview/layout.js @@ -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); } }); diff --git a/server/sonar-web/src/main/js/overview/models/state.js b/server/sonar-web/src/main/js/overview/models/state.js index 6bb3eb340be..10d51657a77 100644 --- a/server/sonar-web/src/main/js/overview/models/state.js +++ b/server/sonar-web/src/main/js/overview/models/state.js @@ -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 }); }); }, diff --git a/server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb b/server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb index 87de54463aa..4627c31d911 100644 --- a/server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb +++ b/server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb @@ -1,16 +1,34 @@
+<% + 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) +%> + -- 2.39.5