]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8692 Replace calls to api/timemachine/index WS by api/measures/search_history 1547/head
authorStas Vilchik <vilchiks@gmail.com>
Tue, 24 Jan 2017 12:11:34 +0000 (13:11 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 24 Jan 2017 16:37:23 +0000 (17:37 +0100)
server/sonar-web/src/main/js/api/time-machine.js
server/sonar-web/src/main/js/apps/component-measures/details/history/MeasureHistory.js
server/sonar-web/src/main/js/apps/overview/components/OverviewApp.js

index 25d65c43c711e16c250611aa17e1ba7710feb558..8f81cd82f94f5640f29debe75cb3b2f9dadc207d 100644 (file)
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
+// @flow
 import { getJSON } from '../helpers/request';
 
-export function getTimeMachineData (componentKey, metrics) {
-  const url = '/api/timemachine/index';
-  const data = { resource: componentKey, metrics };
-  return getJSON(url, data);
-}
+type Response = {
+  measures: Array<{
+    metric: string,
+    history: Array<{
+      date: string,
+      value: string
+    }>
+  }>,
+  paging: {
+    pageIndex: number,
+    pageSize: number,
+    total: number
+  }
+};
+
+export const getTimeMachineData = (component: string, metrics: Array<string>, other?: {}): Promise<Response> => (
+    getJSON('/api/measures/search_history', {
+      component,
+      metrics: metrics.join(),
+      ps: 1000,
+      ...other
+    })
+);
index fb365808e3d7d14cca18b07c7dc971040d37f0ec..6b0859d9e40a240c9a4a92c4af6fc0041df84170 100644 (file)
@@ -29,10 +29,6 @@ import { translate } from '../../../../helpers/l10n';
 
 const HEIGHT = 500;
 
-function parseValue (value, type) {
-  return type === 'RATING' && typeof value === 'string' ? value.charCodeAt(0) - 'A'.charCodeAt(0) + 1 : value;
-}
-
 export default class MeasureHistory extends React.Component {
   state = {
     components: [],
@@ -79,13 +75,14 @@ export default class MeasureHistory extends React.Component {
       metricsToRequest.push(comparisonMetric);
     }
 
-    return getTimeMachineData(this.props.component.key, metricsToRequest.join()).then(r => {
-      return r[0].cells.map(cell => {
-        return {
-          date: moment(cell.d).toDate(),
-          values: cell.v
-        };
-      });
+    return getTimeMachineData(this.props.component.key, metricsToRequest).then(r => {
+      if (r.measures.length === 0) {
+        return [];
+      }
+      return r.measures[0].history.map(analysis => ({
+        date: moment(analysis.date).toDate(),
+        value: analysis.value
+      }));
     });
   }
 
@@ -104,7 +101,7 @@ export default class MeasureHistory extends React.Component {
     });
   }
 
-  renderLineChart (snapshots, metric, index) {
+  renderLineChart (snapshots, metric) {
     if (!metric) {
       return null;
     }
@@ -116,7 +113,7 @@ export default class MeasureHistory extends React.Component {
     const data = snapshots.map(snapshot => {
       return {
         x: snapshot.date,
-        y: parseValue(snapshot.values[index], metric.type)
+        y: Number(snapshot.value)
       };
     });
 
@@ -139,17 +136,6 @@ export default class MeasureHistory extends React.Component {
     );
   }
 
-  renderLineCharts () {
-    const { metric } = this.props;
-
-    return (
-        <div>
-          {this.renderLineChart(this.state.snapshots, metric, 0)}
-          {this.renderLineChart(this.state.snapshots, this.state.comparisonMetric, 1)}
-        </div>
-    );
-  }
-
   render () {
     const { fetching, snapshots } = this.state;
 
@@ -175,7 +161,7 @@ export default class MeasureHistory extends React.Component {
 
     return (
         <div className="measure-details-history">
-          {this.renderLineCharts()}
+          {this.renderLineChart(this.state.snapshots, this.props.metric)}
         </div>
     );
   }
index a27917811682fcea7d32aed4658038e23c8be006..f65429c3c255bd08106ef7fedcf1ae9c6e680e5c 100644 (file)
@@ -131,16 +131,15 @@ export default class OverviewApp extends React.Component {
   }
 
   loadHistory (component) {
-    const metrics = HISTORY_METRICS_LIST.join(',');
-    return getTimeMachineData(component.key, metrics).then(r => {
+    return getTimeMachineData(component.key, HISTORY_METRICS_LIST).then(r => {
       if (this.mounted) {
         const history = {};
-        r[0].cols.forEach((col, index) => {
-          history[col.metric] = r[0].cells.map(cell => {
-            const date = moment(cell.d).toDate();
-            const value = cell.v[index] || 0;
-            return { date, value };
-          });
+        r.measures.forEach(measure => {
+          const measureHistory = measure.history.map(analysis => ({
+            date: moment(analysis.date).toDate(),
+            value: analysis.value
+          }));
+          history[measure.metric] = measureHistory;
         });
         const historyStartDate = history[HISTORY_METRICS_LIST[0]][0].date;
         this.setState({ history, historyStartDate });