*/
export const domains = {
'Reliability': {
- main: [
- 'bugs',
- 'new_bugs',
- 'reliability_rating'
- ],
order: [
'bugs',
'new_bugs',
},
'Security': {
- main: [
- 'vulnerabilities',
- 'new_vulnerabilities',
- 'security_rating'
- ],
order: [
'vulnerabilities',
'new_vulnerabilities',
+ 'security_rating',
'security_remediation_effort',
'new_security_remediation_effort',
'effort_to_reach_security_rating_a'
},
'Maintainability': {
- main: [
- 'code_smells',
- 'new_code_smells',
- 'sqale_index',
- 'new_technical_debt',
- 'sqale_rating'
- ],
order: [
'code_smells',
'new_code_smells',
'sqale_index',
'new_technical_debt',
+ 'sqale_rating',
'sqale_debt_ratio',
'new_sqale_debt_ratio',
'effort_to_reach_maintainability_rating_a'
},
'Tests': {
- main: [
- 'overall_coverage',
- 'new_overall_coverage',
- 'coverage',
- 'new_coverage',
- 'it_coverage',
- 'new_it_coverage',
- 'tests'
- ],
order: [
'overall_coverage',
'new_overall_coverage',
'skipped_tests',
'test_success_density',
'test_execution_time'
+ ],
+ spaces: [
+ 'coverage',
+ 'it_coverage',
+ 'tests'
]
},
'Duplication': {
- main: [
- 'duplicated_lines_density',
- 'duplicated_blocks'
- ],
order: [
'duplicated_lines_density',
'duplicated_blocks',
},
'Size': {
- main: [
- 'ncloc',
- 'files'
- ],
- order: []
+ order: [
+ 'ncloc'
+ ]
},
'Issues': {
- main: [],
order: [
'violations',
'new_violations',
const hasLeak = !!leakPeriodLabel;
const { measures } = domain;
- const domainConfig = domains[domain.name] || { main: [], order: [] };
- const mainMetrics = domainConfig.main;
+ const domainConfig = domains[domain.name] || { order: [] };
const orderedMeasures = domainConfig.order;
- const [mainMeasures, otherMeasures] = partition(measures,
- measure => mainMetrics.indexOf(measure.metric.key) !== -1);
- const sortedMainMeasures = sortMeasures(mainMeasures, orderedMeasures);
- const sortedOtherMeasures = sortMeasures(otherMeasures, orderedMeasures);
- const finalMeasures = [...sortedMainMeasures, ...sortedOtherMeasures];
+ const sortedMeasures = sortMeasures(measures, orderedMeasures);
return (
<li>
)}
<MeasuresList
- measures={finalMeasures}
+ measures={sortedMeasures}
hasLeak={hasLeak}
- component={component}/>
+ component={component}
+ spaces={domainConfig.spaces || []}/>
</li>
);
}
import partition from '../../../../../../node_modules/lodash/partition';
import React from 'react';
-import MainMeasures from './MainMeasures';
import MeasuresList from './MeasuresList';
import MeasureBubbleChartContainer from '../components/bubbleChart/MeasureBubbleChartContainer';
import { getLeakPeriodLabel } from '../../../helpers/periods';
const leakPeriodLabel = getLeakPeriodLabel(periods);
const conf = domainsConf[domainName];
- const mainMetrics = conf ? conf.main : [];
const order = conf ? conf.order : [];
- const [mainMeasures, otherMeasures] = partition(measures, m => mainMetrics.includes(m.metric.key));
- const sortedMainMeasures = sortMeasures(mainMeasures, order);
- const sortedOtherMeasures = sortMeasures(otherMeasures, order);
+ const spaces = conf && conf.spaces ? conf.spaces : [];
+ const sortedMeasures = sortMeasures(measures, order);
return (
<section id="component-measures-domain">
- {mainMeasures.length > 0 && (
- <MainMeasures
- measures={sortedMainMeasures}
- component={component}
- hasLeak={leakPeriodLabel != null}/>
- )}
-
- {otherMeasures.length > 0 && (
- <MeasuresList
- measures={sortedOtherMeasures}
- component={component}
- hasLeak={leakPeriodLabel != null}/>
- )}
+ <MeasuresList
+ measures={sortedMeasures}
+ component={component}
+ spaces={spaces}
+ hasLeak={leakPeriodLabel != null}/>
{hasBubbleChart(domainName) && (
<MeasureBubbleChartContainer domainName={domainName}/>
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-import React from 'react';
-import { Link } from 'react-router';
-import classNames from 'classnames';
-
-import Measure from '../components/Measure';
-import { isDiffMetric } from '../utils';
-
-const MainMeasures = ({ measures, component }) => {
- return (
- <ul className="domain-main-measures">
- {measures.map(measure => (
- <li key={measure.metric.key}>
- <div className={classNames('measure-details-value', {
- 'measure-details-value-absolute': !isDiffMetric(measure.metric),
- 'measure-details-value-leak': isDiffMetric(measure.metric)
- })}>
- <Link to={{ pathname: `metric/${measure.metric.key}`, query: { id: component.key } }}>
- <Measure measure={measure}/>
- </Link>
- </div>
-
- <div className="domain-main-measures-label">
- {measure.metric.name}
- </div>
- </li>
- ))}
- </ul>
- );
-};
-
-export default MainMeasures;
*/
import React from 'react';
import { Link } from 'react-router';
+import classNames from 'classnames';
import Measure from '../components/Measure';
import { formatLeak } from '../utils';
-const MeasuresList = ({ measures, hasLeak, component }) => {
+const shouldPutSpace = (spaces, measure, index) => {
+ return index !== 0 && spaces.includes(measure.metric.key);
+};
+
+const MeasuresList = ({ measures, hasLeak, component, spaces }) => {
return (
<ul className="domain-measures">
- {measures.map(measure => (
- <li key={measure.metric.key} id={`measure-${measure.metric.key}`}>
+ {measures.map((measure, index) => (
+ <li
+ key={measure.metric.key}
+ id={`measure-${measure.metric.key}`}
+ className={classNames({ 'big-spacer-top': shouldPutSpace(spaces, measure, index) })}>
<Link to={{ pathname: `metric/${measure.metric.key}`, query: { id: component.key } }}>
<div className="domain-measures-name">
<span id={`measure-${measure.metric.key}-name`}>