]> source.dussan.org Git - sonarqube.git/commitdiff
Display missing data on the activity graph preview on the project dashboard page
authorGrégoire Aubert <gregoire.aubert@sonarsource.com>
Tue, 11 Jul 2017 08:14:03 +0000 (10:14 +0200)
committerGrégoire Aubert <gregoire.aubert@sonarsource.com>
Thu, 13 Jul 2017 12:34:17 +0000 (14:34 +0200)
server/sonar-web/src/main/js/apps/overview/events/AnalysesList.js
server/sonar-web/src/main/js/apps/overview/events/PreviewGraph.js
server/sonar-web/src/main/js/apps/overview/events/PreviewGraphTooltips.js

index 05856e6601e4b57180bc0d13ea708ce0318dbe25..cf8aa197c0ac415d19a2c7c1c06f9844aaee4eb4 100644 (file)
@@ -29,7 +29,7 @@ import type { Analysis as AnalysisType } from '../../projectActivity/types';
 import type { History, Metric } from '../types';
 
 type Props = {
-  history: History,
+  history: ?History,
   project: string,
   router: { replace: ({ pathname: string, query?: {} }) => void }
 };
index 148557d6b68383bfdb7846d1b08ac29e9f4c5310..171c6d87975b50deaba57c755743d5a1929f4513 100644 (file)
@@ -19,7 +19,7 @@
  */
 // @flow
 import React from 'react';
-import { map } from 'lodash';
+import { minBy } from 'lodash';
 import { AutoSizer } from 'react-virtualized';
 import { generateSeries, GRAPHS_METRICS_DISPLAYED } from '../../projectActivity/utils';
 import { getGraph } from '../../../helpers/storage';
@@ -30,7 +30,7 @@ import type { Serie } from '../../../components/charts/AdvancedTimeline';
 import type { History, Metric } from '../types';
 
 type Props = {
-  history: History,
+  history: ?History,
   metrics: Array<Metric>,
   project: string,
   router: { replace: ({ pathname: string, query?: {} }) => void }
@@ -88,12 +88,23 @@ export default class PreviewGraph extends React.PureComponent {
     return metrics;
   };
 
-  getSeries = (history: History, graph: string, metricsType: string) => {
-    const measureHistory = map(history, (item, key) => ({
-      metric: key,
-      history: item.filter(p => p.value != null)
+  getSeries = (history: ?History, graph: string, metricsType: string) => {
+    const myHistory = history;
+    if (!myHistory) {
+      return [];
+    }
+    const metrics = this.getDisplayedMetrics(graph);
+    const firstValid = minBy(
+      metrics.map(metric => myHistory[metric].find(p => p.value || p.value === 0)),
+      'date'
+    );
+    const measureHistory = metrics.map(metric => ({
+      metric,
+      history: firstValid
+        ? myHistory[metric].filter(p => p.date >= firstValid.date)
+        : myHistory[metric]
     }));
-    return generateSeries(measureHistory, graph, metricsType, this.getDisplayedMetrics(graph));
+    return generateSeries(measureHistory, graph, metricsType, metrics);
   };
 
   getMetricType = (metrics: Array<Metric>, graph: string) => {
@@ -110,7 +121,7 @@ export default class PreviewGraph extends React.PureComponent {
     this.setState({ selectedDate, tooltipXPos, tooltipIdx });
 
   render() {
-    const { graph, selectedDate, tooltipIdx, tooltipXPos } = this.state;
+    const { graph, selectedDate, series, tooltipIdx, tooltipXPos } = this.state;
     return (
       <div
         className="overview-analysis-graph big-spacer-bottom spacer-top"
@@ -130,7 +141,7 @@ export default class PreviewGraph extends React.PureComponent {
                 interpolate="linear"
                 metricType={this.state.metricsType}
                 padding={GRAPH_PADDING}
-                series={this.state.series}
+                series={series}
                 showAreas={['coverage', 'duplications'].includes(graph)}
                 updateTooltip={this.updateTooltip}
               />
@@ -143,7 +154,7 @@ export default class PreviewGraph extends React.PureComponent {
                   graphWidth={width}
                   metrics={this.props.metrics}
                   selectedDate={selectedDate}
-                  series={this.state.series}
+                  series={series}
                   tooltipIdx={tooltipIdx}
                   tooltipPos={tooltipXPos}
                 />}
index dfcf88e1289ef3a92f4e3b34e4b58adb598f102a..982320a3a7c42d382f257496e6698883afc239d6 100644 (file)
@@ -45,7 +45,7 @@ export default class PreviewGraphTooltips extends React.PureComponent {
     const top = 16;
     let left = this.props.tooltipPos;
     let customClass;
-    if (left > this.props.graphWidth - TOOLTIP_WIDTH + 20) {
+    if (left > this.props.graphWidth - TOOLTIP_WIDTH) {
       left -= TOOLTIP_WIDTH;
       customClass = 'bubble-popup-right';
     }