diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-10-28 10:25:13 +0100 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-10-30 10:46:02 +0100 |
commit | 1e5830fb652fda2da6f18460c92f82d93c52130c (patch) | |
tree | 8383c08cc17ed71555b1cd8468292968f9bf07f1 /server/sonar-web/src/main/js/apps/overview/general/coverage.js | |
parent | a3528799883487e180ce90985e96cf87281e645f (diff) | |
download | sonarqube-1e5830fb652fda2da6f18460c92f82d93c52130c.tar.gz sonarqube-1e5830fb652fda2da6f18460c92f82d93c52130c.zip |
SONAR-6331 improve UX of the project overview page
Diffstat (limited to 'server/sonar-web/src/main/js/apps/overview/general/coverage.js')
-rw-r--r-- | server/sonar-web/src/main/js/apps/overview/general/coverage.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/apps/overview/general/coverage.js b/server/sonar-web/src/main/js/apps/overview/general/coverage.js new file mode 100644 index 00000000000..bec2f468bf1 --- /dev/null +++ b/server/sonar-web/src/main/js/apps/overview/general/coverage.js @@ -0,0 +1,64 @@ +import React from 'react'; + +import { Domain, DomainHeader, DomainPanel, DomainNutshell, DomainLeak, MeasuresList, Measure, DomainMixin } from './components'; +import DrilldownLink from '../helpers/drilldown-link'; +import { TooltipsMixin } from '../../../components/mixins/tooltips-mixin'; +import { getMetricName } from '../helpers/metrics'; + + +export const GeneralCoverage = React.createClass({ + mixins: [TooltipsMixin, DomainMixin], + + propTypes: { + measures: React.PropTypes.object.isRequired, + leakPeriodLabel: React.PropTypes.string, + leakPeriodDate: React.PropTypes.object + }, + + renderLeak () { + if (!this.hasLeakPeriod()) { + return null; + } + + return <DomainLeak> + <MeasuresList> + <Measure label={getMetricName('new_coverage')}> + <DrilldownLink component={this.props.component.key} metric="new_overall_coverage" period="1"> + {window.formatMeasure(this.props.leak['new_overall_coverage'], 'PERCENT')} + </DrilldownLink> + </Measure> + </MeasuresList> + {this.renderTimeline('after')} + </DomainLeak>; + }, + + render () { + if (this.props.measures['overall_coverage'] == null) { + return null; + } + + return <Domain> + <DomainHeader title="Tests" + leakPeriodLabel={this.props.leakPeriodLabel} leakPeriodDate={this.props.leakPeriodDate}/> + + <DomainPanel domain="coverage"> + <DomainNutshell> + <MeasuresList> + <Measure label={getMetricName('coverage')}> + <DrilldownLink component={this.props.component.key} metric="overall_coverage"> + {window.formatMeasure(this.props.measures['overall_coverage'], 'PERCENT')} + </DrilldownLink> + </Measure> + <Measure label={getMetricName('tests')}> + <DrilldownLink component={this.props.component.key} metric="tests"> + {window.formatMeasure(this.props.measures['tests'], 'SHORT_INT')} + </DrilldownLink> + </Measure> + </MeasuresList> + {this.renderTimeline('before')} + </DomainNutshell> + {this.renderLeak()} + </DomainPanel> + </Domain>; + } +}); |