diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2016-03-07 17:31:21 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2016-03-07 17:31:21 +0100 |
commit | 94d4858fcc910344715a47cda6fe0fe402d65491 (patch) | |
tree | 15030bc757b2496b9e7d1aecd47db976e9aed510 /server | |
parent | a38c73d58564cd929614f372ee88b414e12b50de (diff) | |
download | sonarqube-94d4858fcc910344715a47cda6fe0fe402d65491.tar.gz sonarqube-94d4858fcc910344715a47cda6fe0fe402d65491.zip |
SONAR-7402 fix corner cases caused by views and developers
Diffstat (limited to 'server')
5 files changed, 33 insertions, 17 deletions
diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasures.js b/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasures.js index 26c6ca254d2..69d1709ef86 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasures.js +++ b/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasures.js @@ -24,7 +24,7 @@ import Spinner from './Spinner'; import AllMeasuresDomain from './AllMeasuresDomain'; import { getLeakValue } from '../utils'; import { getMeasuresAndMeta } from '../../../api/measures'; -import { getLeakPeriodLabel } from '../../../helpers/periods'; +import { getLeakPeriod, getLeakPeriodLabel } from '../../../helpers/periods'; export default class AllMeasures extends React.Component { state = { @@ -51,13 +51,18 @@ export default class AllMeasures extends React.Component { getMeasuresAndMeta(component.key, metricKeys, { additionalFields: 'periods' }).then(r => { if (this.mounted) { + const leakPeriod = getLeakPeriod(r.periods); const measures = r.component.measures .map(measure => { const metric = metrics.find(metric => metric.key === measure.metric); const leak = getLeakValue(measure); return { ...measure, metric, leak }; }) - .filter(measure => measure.value != null || measure.leak != null); + .filter(measure => { + const hasValue = measure.value != null; + const hasLeakValue = !!leakPeriod && measure.leak != null; + return hasValue || hasLeakValue; + }); this.setState({ measures, diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasuresDomain.js b/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasuresDomain.js index 25d2861d25e..4b3f7222ec1 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasuresDomain.js +++ b/server/sonar-web/src/main/js/apps/component-measures/components/AllMeasuresDomain.js @@ -25,11 +25,13 @@ import { formatMeasure } from '../../../helpers/measures'; import { translateWithParameters } from '../../../helpers/l10n'; export default function AllMeasuresDomain ({ domain, component, displayLeakHeader, leakPeriodLabel }) { + const hasLeak = !!leakPeriodLabel; + return ( <li> <header className="page-header"> <h3 className="page-title">{domain.name}</h3> - {displayLeakHeader && ( + {displayLeakHeader && hasLeak && ( <div className="measures-domains-leak-header"> {translateWithParameters('overview.leak_period_x', leakPeriodLabel)} </div> @@ -50,13 +52,15 @@ export default function AllMeasuresDomain ({ domain, component, displayLeakHeade </span> )} </div> - <div className="domain-measures-value domain-measures-leak"> - {measure.leak != null && ( - <span> + {hasLeak && ( + <div className="domain-measures-value domain-measures-leak"> + {measure.leak != null && ( + <span> {formatLeak(measure.leak, measure.metric)} </span> - )} - </div> + )} + </div> + )} </Link> </li> ))} diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldown.js b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldown.js index 0c250d07110..c8205cb0a50 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldown.js +++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldown.js @@ -34,6 +34,8 @@ export default class MeasureDrilldown extends React.Component { const { children, metric, ...other } = this.props; const { component } = this.context; + const showListView = ['VW', 'SVW', 'DEV'].indexOf(component.qualifier) === -1; + const child = React.cloneElement(children, { component, metric, ...other }); return ( @@ -48,14 +50,16 @@ export default class MeasureDrilldown extends React.Component { </Link> </li> - <li> - <Link - activeClassName="active" - to={{ pathname: `${metric.key}/list`, query: { id: component.key } }}> - <IconList/> - {translate('component_measures.tab.list')} - </Link> - </li> + {showListView && ( + <li> + <Link + activeClassName="active" + to={{ pathname: `${metric.key}/list`, query: { id: component.key } }}> + <IconList/> + {translate('component_measures.tab.list')} + </Link> + </li> + )} {hasBubbleChart(metric.key) && ( <li> diff --git a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldownTree.js b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldownTree.js index 47ae38b67cb..5e2a2a65d64 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldownTree.js +++ b/server/sonar-web/src/main/js/apps/component-measures/components/MeasureDrilldownTree.js @@ -60,9 +60,11 @@ export default class MeasureDrilldownTree extends React.Component { asc }; + const componentKey = baseComponent.refKey || baseComponent.key; + this.setState({ fetching: true }); - getChildren(baseComponent.key, [metric.key], options).then(children => { + getChildren(componentKey, [metric.key], options).then(children => { if (this.mounted) { const components = enhanceWithSingleMeasure(children); diff --git a/server/sonar-web/src/main/js/apps/component-measures/styles.css b/server/sonar-web/src/main/js/apps/component-measures/styles.css index d5d4d22c2c3..b9cbca5ccec 100644 --- a/server/sonar-web/src/main/js/apps/component-measures/styles.css +++ b/server/sonar-web/src/main/js/apps/component-measures/styles.css @@ -20,6 +20,7 @@ .domain-measures > li > a { display: flex; + justify-content: space-between; border: none; } |