@@ -35,7 +35,7 @@ import { getLeakPeriod } from '../../../helpers/periods'; | |||
import { TooltipsContainer } from '../../../components/mixins/tooltips-mixin'; | |||
import { getCustomGraph, getGraph } from '../../../helpers/storage'; | |||
import { METRICS, HISTORY_METRICS_LIST } from '../utils'; | |||
import { getDisplayedHistoryMetrics } from '../../projectActivity/utils'; | |||
import { DEFAULT_GRAPH, getDisplayedHistoryMetrics } from '../../projectActivity/utils'; | |||
import type { Component, History, MeasuresList, Period } from '../types'; | |||
import '../styles.css'; | |||
@@ -103,7 +103,7 @@ export default class OverviewApp extends React.PureComponent { | |||
loadHistory(component: Component) { | |||
let graphMetrics = getDisplayedHistoryMetrics(getGraph(), getCustomGraph()); | |||
if (!graphMetrics || graphMetrics.length <= 0) { | |||
graphMetrics = getDisplayedHistoryMetrics('overview', []); | |||
graphMetrics = getDisplayedHistoryMetrics(DEFAULT_GRAPH, []); | |||
} | |||
const metrics = uniq(HISTORY_METRICS_LIST.concat(graphMetrics)); |
@@ -22,6 +22,7 @@ import React from 'react'; | |||
import { minBy } from 'lodash'; | |||
import { AutoSizer } from 'react-virtualized'; | |||
import { | |||
DEFAULT_GRAPH, | |||
getDisplayedHistoryMetrics, | |||
generateSeries, | |||
getSeriesMetricType, | |||
@@ -100,7 +101,7 @@ export default class PreviewGraph extends React.PureComponent { | |||
getDisplayedMetrics = (graph: string, customMetrics: Array<string>): Array<string> => { | |||
const metrics: Array<string> = getDisplayedHistoryMetrics(graph, customMetrics); | |||
if (!metrics || metrics.length <= 0) { | |||
return getDisplayedHistoryMetrics('overview', customMetrics); | |||
return getDisplayedHistoryMetrics(DEFAULT_GRAPH, customMetrics); | |||
} | |||
return metrics; | |||
}; |
@@ -20,6 +20,7 @@ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import PreviewGraphTooltips from '../PreviewGraphTooltips'; | |||
import { DEFAULT_GRAPH } from '../../../projectActivity/utils'; | |||
const SERIES_OVERVIEW = [ | |||
{ | |||
@@ -74,7 +75,7 @@ const METRICS = [ | |||
const DEFAULT_PROPS = { | |||
formatValue: val => 'Formated.' + val, | |||
graph: 'overview', | |||
graph: DEFAULT_GRAPH, | |||
graphWidth: 150, | |||
metrics: METRICS, | |||
selectedDate: new Date('2011-10-01T22:01:00.000Z'), |
@@ -80,7 +80,7 @@ const METRICS = [ | |||
const QUERY = { | |||
category: '', | |||
from: new Date('2017-04-27T08:21:32+0200'), | |||
graph: 'overview', | |||
graph: utils.DEFAULT_GRAPH, | |||
project: 'foo', | |||
to: undefined, | |||
selectedDate: undefined, | |||
@@ -117,7 +117,7 @@ describe('getAnalysesByVersionByDay', () => { | |||
utils.getAnalysesByVersionByDay(ANALYSES, { | |||
category: '', | |||
customMetrics: [], | |||
graph: 'overview', | |||
graph: utils.DEFAULT_GRAPH, | |||
project: 'foo' | |||
}) | |||
).toMatchSnapshot(); | |||
@@ -127,7 +127,7 @@ describe('getAnalysesByVersionByDay', () => { | |||
utils.getAnalysesByVersionByDay(ANALYSES, { | |||
category: 'QUALITY_PROFILE', | |||
customMetrics: [], | |||
graph: 'overview', | |||
graph: utils.DEFAULT_GRAPH, | |||
project: 'foo' | |||
}) | |||
).toMatchSnapshot(); | |||
@@ -135,7 +135,7 @@ describe('getAnalysesByVersionByDay', () => { | |||
utils.getAnalysesByVersionByDay(ANALYSES, { | |||
category: '', | |||
customMetrics: [], | |||
graph: 'overview', | |||
graph: utils.DEFAULT_GRAPH, | |||
project: 'foo', | |||
to: new Date('2017-06-09T11:12:27+0200'), | |||
from: new Date('2017-05-18T14:13:07+0200') | |||
@@ -147,7 +147,7 @@ describe('getAnalysesByVersionByDay', () => { | |||
describe('getDisplayedHistoryMetrics', () => { | |||
const customMetrics = ['foo', 'bar']; | |||
it('should return only displayed metrics on the graph', () => { | |||
expect(utils.getDisplayedHistoryMetrics('overview', [])).toEqual([ | |||
expect(utils.getDisplayedHistoryMetrics(utils.DEFAULT_GRAPH, [])).toEqual([ | |||
'bugs', | |||
'code_smells', | |||
'vulnerabilities' | |||
@@ -165,7 +165,7 @@ describe('getDisplayedHistoryMetrics', () => { | |||
describe('getHistoryMetrics', () => { | |||
const customMetrics = ['foo', 'bar']; | |||
it('should return all metrics', () => { | |||
expect(utils.getHistoryMetrics('overview', [])).toEqual([ | |||
expect(utils.getHistoryMetrics(utils.DEFAULT_GRAPH, [])).toEqual([ | |||
'bugs', | |||
'code_smells', | |||
'vulnerabilities', |
@@ -25,7 +25,8 @@ import GraphsTooltipsContent from './GraphsTooltipsContent'; | |||
import GraphsTooltipsContentEvents from './GraphsTooltipsContentEvents'; | |||
import GraphsTooltipsContentCoverage from './GraphsTooltipsContentCoverage'; | |||
import GraphsTooltipsContentDuplication from './GraphsTooltipsContentDuplication'; | |||
import GraphsTooltipsContentOverview from './GraphsTooltipsContentOverview'; | |||
import GraphsTooltipsContentIssues from './GraphsTooltipsContentIssues'; | |||
import { DEFAULT_GRAPH } from '../utils'; | |||
import type { Event, MeasureHistory } from '../types'; | |||
import type { Serie } from '../../../components/charts/AdvancedTimeline'; | |||
@@ -68,9 +69,9 @@ export default class GraphsTooltips extends React.PureComponent { | |||
if (!point || (!point.y && point.y !== 0)) { | |||
return null; | |||
} | |||
if (this.props.graph === 'overview') { | |||
if (this.props.graph === DEFAULT_GRAPH) { | |||
return ( | |||
<GraphsTooltipsContentOverview | |||
<GraphsTooltipsContentIssues | |||
key={serie.name} | |||
measuresHistory={measuresHistory} | |||
name={serie.name} |
@@ -39,7 +39,7 @@ const METRIC_RATING = { | |||
code_smells: 'sqale_rating' | |||
}; | |||
export default function GraphsTooltipsContentOverview(props: Props) { | |||
export default function GraphsTooltipsContentIssues(props: Props) { | |||
const rating = props.measuresHistory.find( | |||
measure => measure.metric === METRIC_RATING[props.name] | |||
); | |||
@@ -48,7 +48,7 @@ export default function GraphsTooltipsContentOverview(props: Props) { | |||
} | |||
const ratingValue = rating.history[props.tooltipIdx].value; | |||
return ( | |||
<tr key={props.name} className="project-activity-graph-tooltip-overview-line"> | |||
<tr key={props.name} className="project-activity-graph-tooltip-issues-line"> | |||
<td className="thin"> | |||
<ChartLegendIcon | |||
className={classNames( |
@@ -32,6 +32,7 @@ import * as actions from '../actions'; | |||
import { getCustomGraph, getGraph } from '../../../helpers/storage'; | |||
import { | |||
customMetricsChanged, | |||
DEFAULT_GRAPH, | |||
getHistoryMetrics, | |||
isCustomGraph, | |||
parseQuery, | |||
@@ -271,7 +272,7 @@ class ProjectActivityAppContainer extends React.PureComponent { | |||
// if there is no filter, but there are saved preferences in the localStorage | |||
const graph = getGraph(); | |||
return !filtered && graph != null && graph !== 'overview'; | |||
return !filtered && graph != null && graph !== DEFAULT_GRAPH; | |||
} | |||
}; | |||
@@ -20,6 +20,7 @@ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import GraphHistory from '../GraphHistory'; | |||
import { DEFAULT_GRAPH } from '../../utils'; | |||
const SERIES = [ | |||
{ | |||
@@ -35,7 +36,7 @@ const SERIES = [ | |||
const DEFAULT_PROPS = { | |||
events: [], | |||
graph: 'overview', | |||
graph: DEFAULT_GRAPH, | |||
graphEndDate: null, | |||
graphStartDate: null, | |||
leakPeriodDate: '2017-05-16T13:50:02+0200', |
@@ -20,6 +20,7 @@ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import GraphsHistory from '../GraphsHistory'; | |||
import { DEFAULT_GRAPH } from '../../utils'; | |||
const ANALYSES = [ | |||
{ | |||
@@ -71,7 +72,7 @@ const SERIES = [ | |||
const DEFAULT_PROPS = { | |||
analyses: ANALYSES, | |||
eventFilter: '', | |||
graph: 'overview', | |||
graph: DEFAULT_GRAPH, | |||
graphs: [SERIES], | |||
graphEndDate: null, | |||
graphStartDate: null, |
@@ -20,8 +20,9 @@ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import GraphsTooltips from '../GraphsTooltips'; | |||
import { DEFAULT_GRAPH } from '../../utils'; | |||
const SERIES_OVERVIEW = [ | |||
const SERIES_ISSUES = [ | |||
{ | |||
name: 'bugs', | |||
translatedName: 'Bugs', | |||
@@ -68,16 +69,16 @@ const SERIES_OVERVIEW = [ | |||
const DEFAULT_PROPS = { | |||
formatValue: val => 'Formated.' + val, | |||
graph: 'overview', | |||
graph: DEFAULT_GRAPH, | |||
graphWidth: 500, | |||
measuresHistory: [], | |||
selectedDate: new Date('2011-10-01T22:01:00.000Z'), | |||
series: SERIES_OVERVIEW, | |||
series: SERIES_ISSUES, | |||
tooltipIdx: 0, | |||
tooltipPos: 666 | |||
}; | |||
it('should render correctly for overview graphs', () => { | |||
it('should render correctly for issues graphs', () => { | |||
expect(shallow(<GraphsTooltips {...DEFAULT_PROPS} />)).toMatchSnapshot(); | |||
}); | |||
@@ -19,9 +19,9 @@ | |||
*/ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import GraphsTooltipsContentOverview from '../GraphsTooltipsContentOverview'; | |||
import GraphsTooltipsContentIssues from '../GraphsTooltipsContentIssues'; | |||
const MEASURES_OVERVIEW = [ | |||
const MEASURES_ISSUES = [ | |||
{ | |||
metric: 'bugs', | |||
history: [ | |||
@@ -50,7 +50,7 @@ const MEASURES_OVERVIEW = [ | |||
]; | |||
const DEFAULT_PROPS = { | |||
measuresHistory: MEASURES_OVERVIEW, | |||
measuresHistory: MEASURES_ISSUES, | |||
name: 'bugs', | |||
style: '2', | |||
tooltipIdx: 1, | |||
@@ -59,11 +59,11 @@ const DEFAULT_PROPS = { | |||
}; | |||
it('should render correctly', () => { | |||
expect(shallow(<GraphsTooltipsContentOverview {...DEFAULT_PROPS} />)).toMatchSnapshot(); | |||
expect(shallow(<GraphsTooltipsContentIssues {...DEFAULT_PROPS} />)).toMatchSnapshot(); | |||
}); | |||
it('should render correctly when rating data is missing', () => { | |||
expect( | |||
shallow(<GraphsTooltipsContentOverview {...DEFAULT_PROPS} tooltipIdx={0} value="500" />) | |||
shallow(<GraphsTooltipsContentIssues {...DEFAULT_PROPS} tooltipIdx={0} value="500" />) | |||
).toMatchSnapshot(); | |||
}); |
@@ -77,7 +77,7 @@ const DEFAULT_PROPS = { | |||
deleteAnalysis: () => {}, | |||
deleteEvent: () => {}, | |||
loading: false, | |||
query: { category: '', graph: 'overview', project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
query: { category: '', graph: 'issues', project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
updateQuery: () => {} | |||
}; | |||
@@ -80,7 +80,7 @@ const DEFAULT_PROPS = { | |||
] | |||
} | |||
], | |||
query: { category: '', graph: 'overview', project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
query: { category: '', graph: 'issues', project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
updateQuery: () => {} | |||
}; | |||
@@ -20,6 +20,7 @@ | |||
import React from 'react'; | |||
import { shallow } from 'enzyme'; | |||
import ProjectActivityGraphs from '../ProjectActivityGraphs'; | |||
import { DEFAULT_GRAPH } from '../../utils'; | |||
const ANALYSES = [ | |||
{ | |||
@@ -73,7 +74,7 @@ const DEFAULT_PROPS = { | |||
} | |||
], | |||
metrics: METRICS, | |||
query: { category: '', graph: 'overview', project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
query: { category: '', graph: DEFAULT_GRAPH, project: 'org.sonarsource.sonarqube:sonarqube' }, | |||
updateQuery: () => {} | |||
}; | |||
@@ -31,7 +31,7 @@ exports[`should correctly render a graph 1`] = ` | |||
> | |||
<GraphHistory | |||
events={Array []} | |||
graph="overview" | |||
graph="issues" | |||
graphEndDate={null} | |||
graphStartDate={null} | |||
isCustom={false} | |||
@@ -75,7 +75,7 @@ exports[`should correctly render multiple graphs 1`] = ` | |||
> | |||
<GraphHistory | |||
events={Array []} | |||
graph="overview" | |||
graph="issues" | |||
graphEndDate={null} | |||
graphStartDate={null} | |||
isCustom={false} | |||
@@ -112,7 +112,7 @@ exports[`should correctly render multiple graphs 1`] = ` | |||
/> | |||
<GraphHistory | |||
events={Array []} | |||
graph="overview" | |||
graph="issues" | |||
graphEndDate={null} | |||
graphStartDate={null} | |||
isCustom={false} |
@@ -1,6 +1,6 @@ | |||
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||
exports[`should render correctly for overview graphs 1`] = ` | |||
exports[`should render correctly for issues graphs 1`] = ` | |||
<BubblePopup | |||
customClass="bubble-popup-right" | |||
position={ | |||
@@ -26,7 +26,7 @@ exports[`should render correctly for overview graphs 1`] = ` | |||
className="width-100" | |||
> | |||
<tbody> | |||
<GraphsTooltipsContentOverview | |||
<GraphsTooltipsContentIssues | |||
measuresHistory={Array []} | |||
name="bugs" | |||
style="0" | |||
@@ -34,7 +34,7 @@ exports[`should render correctly for overview graphs 1`] = ` | |||
translatedName="Bugs" | |||
value="Formated.3" | |||
/> | |||
<GraphsTooltipsContentOverview | |||
<GraphsTooltipsContentIssues | |||
measuresHistory={Array []} | |||
name="code_smells" | |||
style="1" | |||
@@ -42,7 +42,7 @@ exports[`should render correctly for overview graphs 1`] = ` | |||
translatedName="Code Smells" | |||
value="Formated.18" | |||
/> | |||
<GraphsTooltipsContentOverview | |||
<GraphsTooltipsContentIssues | |||
measuresHistory={Array []} | |||
name="vulnerabilities" | |||
style="2" |
@@ -2,7 +2,7 @@ | |||
exports[`should render correctly 1`] = ` | |||
<tr | |||
className="project-activity-graph-tooltip-overview-line" | |||
className="project-activity-graph-tooltip-issues-line" | |||
> | |||
<td | |||
className="thin" | |||
@@ -34,7 +34,7 @@ exports[`should render correctly 1`] = ` | |||
exports[`should render correctly when rating data is missing 1`] = ` | |||
<tr | |||
className="project-activity-graph-tooltip-overview-line" | |||
className="project-activity-graph-tooltip-issues-line" | |||
> | |||
<td | |||
className="thin" |
@@ -67,7 +67,7 @@ exports[`should render correctly 1`] = ` | |||
query={ | |||
Object { | |||
"category": "", | |||
"graph": "overview", | |||
"graph": "issues", | |||
"project": "org.sonarsource.sonarqube:sonarqube", | |||
} | |||
} | |||
@@ -145,7 +145,7 @@ exports[`should render correctly 1`] = ` | |||
query={ | |||
Object { | |||
"category": "", | |||
"graph": "overview", | |||
"graph": "issues", | |||
"project": "org.sonarsource.sonarqube:sonarqube", | |||
} | |||
} |
@@ -6,7 +6,7 @@ exports[`should render correctly the graph and legends 1`] = ` | |||
> | |||
<ProjectActivityGraphsHeader | |||
addCustomMetric={[Function]} | |||
graph="overview" | |||
graph="issues" | |||
metrics={ | |||
Array [ | |||
Object { | |||
@@ -57,7 +57,7 @@ exports[`should render correctly the graph and legends 1`] = ` | |||
] | |||
} | |||
eventFilter="" | |||
graph="overview" | |||
graph="issues" | |||
graphEndDate={null} | |||
graphStartDate={null} | |||
graphs={ |
@@ -98,7 +98,7 @@ | |||
margin-top: 1px; | |||
} | |||
.project-activity-graph-tooltip-overview-line { | |||
.project-activity-graph-tooltip-issues-line { | |||
height: 26px; | |||
padding-bottom: 4px; | |||
} |
@@ -35,14 +35,15 @@ import type { RawQuery } from '../../helpers/query'; | |||
import type { Serie } from '../../components/charts/AdvancedTimeline'; | |||
export const EVENT_TYPES = ['VERSION', 'QUALITY_GATE', 'QUALITY_PROFILE', 'OTHER']; | |||
export const GRAPH_TYPES = ['overview', 'coverage', 'duplications', 'custom']; | |||
export const DEFAULT_GRAPH = 'issues'; | |||
export const GRAPH_TYPES = ['issues', 'coverage', 'duplications', 'custom']; | |||
export const GRAPHS_METRICS_DISPLAYED = { | |||
overview: ['bugs', 'code_smells', 'vulnerabilities'], | |||
issues: ['bugs', 'code_smells', 'vulnerabilities'], | |||
coverage: ['uncovered_lines', 'lines_to_cover'], | |||
duplications: ['duplicated_lines', 'ncloc'] | |||
}; | |||
export const GRAPHS_METRICS = { | |||
overview: GRAPHS_METRICS_DISPLAYED['overview'].concat([ | |||
issues: GRAPHS_METRICS_DISPLAYED['issues'].concat([ | |||
'reliability_rating', | |||
'security_rating', | |||
'sqale_rating' | |||
@@ -184,10 +185,10 @@ export const getHistoryMetrics = (graph: string, customMetrics: Array<string>): | |||
const parseGraph = (value?: string): string => { | |||
const graph = parseAsString(value); | |||
return GRAPH_TYPES.includes(graph) ? graph : 'overview'; | |||
return GRAPH_TYPES.includes(graph) ? graph : DEFAULT_GRAPH; | |||
}; | |||
const serializeGraph = (value: string): ?string => (value === 'overview' ? undefined : value); | |||
const serializeGraph = (value: string): ?string => (value === DEFAULT_GRAPH ? undefined : value); | |||
export const parseQuery = (urlQuery: RawQuery): Query => ({ | |||
category: parseAsString(urlQuery['category']), |
@@ -71,4 +71,4 @@ export const getCustomGraph = (): Array<string> => | |||
export const saveGraph = (graph: ?string) => save(PROJECT_ACTIVITY_GRAPH, graph); | |||
export const getGraph = (): string => | |||
window.localStorage.getItem(PROJECT_ACTIVITY_GRAPH) || 'overview'; | |||
window.localStorage.getItem(PROJECT_ACTIVITY_GRAPH) || 'issues'; |
@@ -1285,7 +1285,7 @@ project_activity.delete_analysis=Delete Analysis | |||
project_activity.delete_analysis.question=Are you sure you want to delete this analysis from the project history? | |||
project_activity.filter_events=Filter events | |||
project_activity.graphs.overview=Overview | |||
project_activity.graphs.issues=Issues | |||
project_activity.graphs.coverage=Coverage | |||
project_activity.graphs.duplications=Duplications | |||
project_activity.graphs.custom=Custom |