From 34b14e12bebafed93d21ac620e7b2b5dc3ef7d55 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Tue, 8 Dec 2015 15:05:06 +0100 Subject: [PATCH] improve code quality --- server/sonar-web/.eslintrc | 22 ++++++++++-- .../main/js/apps/background-tasks/search.js | 12 ++++--- .../main/js/apps/background-tasks/stats.js | 5 ++- .../main/js/apps/background-tasks/tasks.js | 4 +-- .../components/coverage-measures-list.js | 5 ++- .../overview/components/coverage-measures.js | 10 ++++-- .../main/js/apps/overview/components/event.js | 4 +-- .../overview/components/timeline-chart.js | 14 +++++--- .../js/apps/overview/domains/debt-domain.js | 5 ++- .../overview/domains/duplications-domain.js | 10 ++++-- .../js/apps/overview/domains/size-domain.js | 30 ++++++++++++---- .../main/js/apps/overview/main/coverage.js | 9 +++-- .../js/apps/overview/main/duplications.js | 9 +++-- .../src/main/js/apps/overview/main/issues.js | 4 +-- .../src/main/js/apps/overview/main/main.js | 4 +-- .../src/main/js/apps/overview/main/size.js | 4 +-- .../js/apps/project-permissions/search.js | 6 +++- .../src/main/js/apps/projects/search.js | 8 +++-- .../main/js/components/charts/bar-chart.js | 27 ++++++++++---- .../main/js/components/charts/bubble-chart.js | 36 ++++++++++++++----- .../main/js/components/charts/donut-chart.js | 10 ++++-- .../main/js/components/charts/histogram.js | 4 +-- .../main/js/components/charts/line-chart.js | 33 ++++++++++++----- .../src/main/js/components/charts/treemap.js | 11 +++--- .../main/js/components/charts/word-cloud.js | 4 +-- .../src/main/js/components/shared/avatar.js | 6 +++- .../main/js/components/shared/radio-toggle.js | 9 +++-- .../js/main/nav/global/global-nav-branding.js | 6 +++- 28 files changed, 230 insertions(+), 81 deletions(-) diff --git a/server/sonar-web/.eslintrc b/server/sonar-web/.eslintrc index 6a403ba8a2f..a063471955c 100644 --- a/server/sonar-web/.eslintrc +++ b/server/sonar-web/.eslintrc @@ -32,7 +32,25 @@ ], "rules": { - "quotes": [ 2, "single", "avoid-escape" ], - "react/jsx-uses-react": 1 + "quotes": [2, "single", "avoid-escape"], + + "react/jsx-closing-bracket-location": [1, "after-props"], + "react/jsx-handler-names": 0, + "react/jsx-key": 2, + "react/jsx-max-props-per-line": [1, { "maximum": 3 }], + "react/jsx-no-duplicate-props": 2, + "react/jsx-no-undef": 2, + "react/jsx-pascal-case": 1, + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 2, + "react/no-did-mount-set-state": [2, "allow-in-func"], + "react/no-did-update-set-state": [2, "allow-in-func"], + "react/no-direct-mutation-state": 2, + "react/no-multi-comp": 0, + "react/no-unknown-property": 2, + "react/prop-types": 0, + "react/react-in-jsx-scope": 2, + "react/self-closing-comp": 2, + "react/sort-comp": 1 } } diff --git a/server/sonar-web/src/main/js/apps/background-tasks/search.js b/server/sonar-web/src/main/js/apps/background-tasks/search.js index a1624f02aae..8c68049cf14 100644 --- a/server/sonar-web/src/main/js/apps/background-tasks/search.js +++ b/server/sonar-web/src/main/js/apps/background-tasks/search.js @@ -5,11 +5,11 @@ import RadioToggle from '../../components/shared/radio-toggle'; import { STATUSES, CURRENTS, DATE, DATE_FORMAT } from './constants'; export default React.createClass({ - componentDidUpdate() { + componentDidMount() { this.attachDatePicker(); }, - componentDidMount() { + componentDidUpdate() { this.attachDatePicker(); }, @@ -102,8 +102,12 @@ export default React.createClass({ - + ); }, diff --git a/server/sonar-web/src/main/js/apps/background-tasks/stats.js b/server/sonar-web/src/main/js/apps/background-tasks/stats.js index f8010c93d68..308d7e4d8a8 100644 --- a/server/sonar-web/src/main/js/apps/background-tasks/stats.js +++ b/server/sonar-web/src/main/js/apps/background-tasks/stats.js @@ -64,7 +64,10 @@ export default React.createClass({ if (this.props.failuresCount > 0) { return ( - {this.props.failuresCount}   diff --git a/server/sonar-web/src/main/js/apps/background-tasks/tasks.js b/server/sonar-web/src/main/js/apps/background-tasks/tasks.js index 54b05fa0eed..edffaf43198 100644 --- a/server/sonar-web/src/main/js/apps/background-tasks/tasks.js +++ b/server/sonar-web/src/main/js/apps/background-tasks/tasks.js @@ -10,12 +10,12 @@ import { TooltipsMixin } from '../../components/mixins/tooltips-mixin'; export default React.createClass({ - mixins: [TooltipsMixin], - propTypes: { tasks: React.PropTypes.arrayOf(React.PropTypes.object).isRequired }, + mixins: [TooltipsMixin], + onTaskCanceled (task, e) { e.preventDefault(); this.props.onTaskCanceled(task); diff --git a/server/sonar-web/src/main/js/apps/overview/components/coverage-measures-list.js b/server/sonar-web/src/main/js/apps/overview/components/coverage-measures-list.js index 0ce2db9c0d4..96520d0ffda 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/coverage-measures-list.js +++ b/server/sonar-web/src/main/js/apps/overview/components/coverage-measures-list.js @@ -54,7 +54,10 @@ export const CoverageMeasuresList = React.createClass({ } metrics = metrics.map(metric => { - return ; }); return
{metrics}
; diff --git a/server/sonar-web/src/main/js/apps/overview/components/coverage-measures.js b/server/sonar-web/src/main/js/apps/overview/components/coverage-measures.js index 3fdf521a872..731aafa9740 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/coverage-measures.js +++ b/server/sonar-web/src/main/js/apps/overview/components/coverage-measures.js @@ -72,7 +72,10 @@ export const CoverageMeasures = React.createClass({
- + ; + return ; }, render() { diff --git a/server/sonar-web/src/main/js/apps/overview/components/event.js b/server/sonar-web/src/main/js/apps/overview/components/event.js index 05fe615a93b..80fe89648ce 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/event.js +++ b/server/sonar-web/src/main/js/apps/overview/components/event.js @@ -5,8 +5,6 @@ import { TooltipsMixin } from '../../../components/mixins/tooltips-mixin'; export const Event = React.createClass({ - mixins: [TooltipsMixin], - propTypes: { event: React.PropTypes.shape({ id: React.PropTypes.string.isRequired, @@ -17,6 +15,8 @@ export const Event = React.createClass({ }) }, + mixins: [TooltipsMixin], + render () { const { event } = this.props; return
  • diff --git a/server/sonar-web/src/main/js/apps/overview/components/timeline-chart.js b/server/sonar-web/src/main/js/apps/overview/components/timeline-chart.js index 62610c2f190..e82f5a3c457 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/timeline-chart.js +++ b/server/sonar-web/src/main/js/apps/overview/components/timeline-chart.js @@ -9,8 +9,6 @@ import { TooltipsMixin } from '../../../components/mixins/tooltips-mixin'; export const Timeline = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, padding: React.PropTypes.arrayOf(React.PropTypes.number), @@ -18,6 +16,8 @@ export const Timeline = React.createClass({ interpolate: React.PropTypes.string }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { padding: [10, 10, 10, 10], @@ -93,7 +93,11 @@ export const Timeline = React.createClass({ let nextTick = index + 1 < ticks.length ? ticks[index + 1] : xScale.domain()[1]; let x = (xScale(tick) + xScale(nextTick)) / 2; let y = yScale.range()[0]; - return {format(tick)}; + return {format(tick)}; }); return {ticks}; }, @@ -113,11 +117,11 @@ export const Timeline = React.createClass({ }, renderLine (xScale, yScale) { - let path = d3.svg.line() + let p = d3.svg.line() .x(d => xScale(d.x)) .y(d => yScale(d.y)) .interpolate(this.props.interpolate); - return ; + return ; }, renderEvents(xScale, yScale) { diff --git a/server/sonar-web/src/main/js/apps/overview/domains/debt-domain.js b/server/sonar-web/src/main/js/apps/overview/domains/debt-domain.js index 179520a106f..7527c23c18e 100644 --- a/server/sonar-web/src/main/js/apps/overview/domains/debt-domain.js +++ b/server/sonar-web/src/main/js/apps/overview/domains/debt-domain.js @@ -109,7 +109,10 @@ export const IssuesMain = React.createClass({ .filter(metric => KNOWN_METRICS.indexOf(metric.key) === -1) .filter(metric => this.state.measures[metric.key] != null) .map(metric => { - return ; }); if (!metrics.length) { diff --git a/server/sonar-web/src/main/js/apps/overview/domains/duplications-domain.js b/server/sonar-web/src/main/js/apps/overview/domains/duplications-domain.js index 321595b779d..2223139a760 100644 --- a/server/sonar-web/src/main/js/apps/overview/domains/duplications-domain.js +++ b/server/sonar-web/src/main/js/apps/overview/domains/duplications-domain.js @@ -84,7 +84,10 @@ export const DuplicationsMain = React.createClass({ let metrics = filterMetricsForDomains(this.props.metrics, ['Duplication']) .filter(metric => metric.key !== 'duplicated_lines_density') .map(metric => { - return ; }); return
    {metrics}
    ; @@ -97,7 +100,10 @@ export const DuplicationsMain = React.createClass({ { value: duplications, fill: '#f3ca8e' }, { value: Math.max(0, 20 - duplications), fill: '#e6e6e6' } ]; - return ; + return ; }, renderDuplicationsLeak() { diff --git a/server/sonar-web/src/main/js/apps/overview/domains/size-domain.js b/server/sonar-web/src/main/js/apps/overview/domains/size-domain.js index 26f4af61cb1..05a23ae3d51 100644 --- a/server/sonar-web/src/main/js/apps/overview/domains/size-domain.js +++ b/server/sonar-web/src/main/js/apps/overview/domains/size-domain.js @@ -71,7 +71,10 @@ export const SizeMain = React.createClass({ let metrics = filterMetricsForDomains(this.props.metrics, [domain]) .filter(metric => hiddenMetrics.indexOf(metric.key) === -1) .map(metric => { - return ; }); return
    {metrics}
    ; @@ -112,16 +115,28 @@ export const SizeMain = React.createClass({ return
    - - + + {this.renderComplexityDistribution(this.state.measures['function_complexity_distribution'], { of: 'function' })} - + {this.renderComplexityDistribution(this.state.measures['file_complexity_distribution'], { of: 'file' })} - + {this.renderOtherComplexityMeasures()}
    ; @@ -141,7 +156,10 @@ export const SizeMain = React.createClass({
    - + {this.renderLanguageDistribution()} {this.renderOtherSizeMeasures()} diff --git a/server/sonar-web/src/main/js/apps/overview/main/coverage.js b/server/sonar-web/src/main/js/apps/overview/main/coverage.js index 49d08a91f31..36168a35b5f 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/coverage.js +++ b/server/sonar-web/src/main/js/apps/overview/main/coverage.js @@ -9,8 +9,6 @@ import { formatMeasure } from '../../../helpers/measures'; export const GeneralCoverage = React.createClass({ - mixins: [TooltipsMixin, DomainMixin], - propTypes: { measures: React.PropTypes.object.isRequired, leakPeriodLabel: React.PropTypes.string, @@ -18,6 +16,8 @@ export const GeneralCoverage = React.createClass({ coverageMetricPrefix: React.PropTypes.string.isRequired }, + mixins: [TooltipsMixin, DomainMixin], + getCoverageMetric () { return this.props.coverageMetricPrefix + 'coverage'; }, @@ -86,7 +86,10 @@ export const GeneralCoverage = React.createClass({
    - +
    diff --git a/server/sonar-web/src/main/js/apps/overview/main/duplications.js b/server/sonar-web/src/main/js/apps/overview/main/duplications.js index 7e64f5184e5..eb08696c9bc 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/duplications.js +++ b/server/sonar-web/src/main/js/apps/overview/main/duplications.js @@ -9,13 +9,13 @@ import { formatMeasure, formatMeasureVariation } from '../../../helpers/measures export const GeneralDuplications = React.createClass({ - mixins: [TooltipsMixin, DomainMixin], - propTypes: { leakPeriodLabel: React.PropTypes.string, leakPeriodDate: React.PropTypes.object }, + mixins: [TooltipsMixin, DomainMixin], + renderLeak () { if (!this.hasLeakPeriod()) { return null; @@ -59,7 +59,10 @@ export const GeneralDuplications = React.createClass({
    - +
    diff --git a/server/sonar-web/src/main/js/apps/overview/main/issues.js b/server/sonar-web/src/main/js/apps/overview/main/issues.js index f92e7ce12a9..9993f49c720 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/issues.js +++ b/server/sonar-web/src/main/js/apps/overview/main/issues.js @@ -12,13 +12,13 @@ import { formatMeasure } from '../../../helpers/measures'; export const GeneralIssues = React.createClass({ - mixins: [TooltipsMixin, DomainMixin], - propTypes: { leakPeriodLabel: React.PropTypes.string, leakPeriodDate: React.PropTypes.object }, + mixins: [TooltipsMixin, DomainMixin], + renderLeak () { if (!this.hasLeakPeriod()) { return null; diff --git a/server/sonar-web/src/main/js/apps/overview/main/main.js b/server/sonar-web/src/main/js/apps/overview/main/main.js index 3d458a74c55..39e17057257 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/main.js +++ b/server/sonar-web/src/main/js/apps/overview/main/main.js @@ -36,12 +36,12 @@ const HISTORY_METRICS_LIST = [ export default React.createClass({ - mixins: [CoverageSelectionMixin], - propTypes: { leakPeriodIndex: React.PropTypes.string.isRequired }, + mixins: [CoverageSelectionMixin], + getInitialState() { return { ready: false, diff --git a/server/sonar-web/src/main/js/apps/overview/main/size.js b/server/sonar-web/src/main/js/apps/overview/main/size.js index 0ae35795ccb..683d23f5270 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/size.js +++ b/server/sonar-web/src/main/js/apps/overview/main/size.js @@ -9,13 +9,13 @@ import { LanguageDistribution } from '../components/language-distribution'; export const GeneralSize = React.createClass({ - mixins: [TooltipsMixin, DomainMixin], - propTypes: { leakPeriodLabel: React.PropTypes.string, leakPeriodDate: React.PropTypes.object }, + mixins: [TooltipsMixin, DomainMixin], + renderLeak () { if (!this.hasLeakPeriod()) { return null; diff --git a/server/sonar-web/src/main/js/apps/project-permissions/search.js b/server/sonar-web/src/main/js/apps/project-permissions/search.js index 9f6bdbf12d0..547d5fe696b 100644 --- a/server/sonar-web/src/main/js/apps/project-permissions/search.js +++ b/server/sonar-web/src/main/js/apps/project-permissions/search.js @@ -38,7 +38,11 @@ export default React.createClass({ - +
    ); diff --git a/server/sonar-web/src/main/js/apps/projects/search.js b/server/sonar-web/src/main/js/apps/projects/search.js index 02b7229421a..c07450d93ca 100644 --- a/server/sonar-web/src/main/js/apps/projects/search.js +++ b/server/sonar-web/src/main/js/apps/projects/search.js @@ -105,8 +105,12 @@ export default React.createClass({ - + diff --git a/server/sonar-web/src/main/js/components/charts/bar-chart.js b/server/sonar-web/src/main/js/components/charts/bar-chart.js index 761ae960c65..6b95a6ec42c 100644 --- a/server/sonar-web/src/main/js/components/charts/bar-chart.js +++ b/server/sonar-web/src/main/js/components/charts/bar-chart.js @@ -5,8 +5,6 @@ import { ResizeMixin } from './../mixins/resize-mixin'; import { TooltipsMixin } from './../mixins/tooltips-mixin'; export const BarChart = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, xTicks: React.PropTypes.arrayOf(React.PropTypes.any), @@ -16,6 +14,8 @@ export const BarChart = React.createClass({ barsWidth: React.PropTypes.number }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { xTicks: [], @@ -43,7 +43,12 @@ export const BarChart = React.createClass({ tooltipAtts['title'] = d.tooltip; tooltipAtts['data-toggle'] = 'tooltip'; } - return {tick}; + return {tick}; }); return {ticks}; }, @@ -62,7 +67,12 @@ export const BarChart = React.createClass({ tooltipAtts['title'] = d.tooltip; tooltipAtts['data-toggle'] = 'tooltip'; } - return {value}; + return {value}; }); return {ticks}; }, @@ -78,8 +88,13 @@ export const BarChart = React.createClass({ tooltipAtts['title'] = d.tooltip; tooltipAtts['data-toggle'] = 'tooltip'; } - return ; + return ; }); return {bars}; }, diff --git a/server/sonar-web/src/main/js/components/charts/bubble-chart.js b/server/sonar-web/src/main/js/components/charts/bubble-chart.js index ab1d1833358..270bec31d12 100644 --- a/server/sonar-web/src/main/js/components/charts/bubble-chart.js +++ b/server/sonar-web/src/main/js/components/charts/bubble-chart.js @@ -37,8 +37,6 @@ export const Bubble = React.createClass({ export const BubbleChart = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { items: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, sizeRange: React.PropTypes.arrayOf(React.PropTypes.number), @@ -52,6 +50,8 @@ export const BubbleChart = React.createClass({ formatYTick: React.PropTypes.func }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { sizeRange: [5, 45], @@ -94,7 +94,12 @@ export const BubbleChart = React.createClass({ let x = xScale(tick); let y1 = yScale.range()[0]; let y2 = yScale.range()[1]; - return ; + return ; }); return {lines}; @@ -109,7 +114,12 @@ export const BubbleChart = React.createClass({ let y = yScale(tick); let x1 = xScale.range()[0]; let x2 = xScale.range()[1]; - return ; + return ; }); return {lines}; @@ -123,8 +133,12 @@ export const BubbleChart = React.createClass({ let ticks = xScale.ticks().map((tick, index) => { let x = xScale(tick); let y = yScale.range()[0]; - let text = this.props.formatXTick(tick); - return {text}; + let innerText = this.props.formatXTick(tick); + return {innerText}; }); return {ticks}; @@ -138,9 +152,13 @@ export const BubbleChart = React.createClass({ let ticks = yScale.ticks(5).map((tick, index) => { let x = xScale.range()[0]; let y = yScale(tick); - let text = this.props.formatYTick(tick); - return {text}; + let innerText = this.props.formatYTick(tick); + return {innerText}; }); return {ticks}; diff --git a/server/sonar-web/src/main/js/components/charts/donut-chart.js b/server/sonar-web/src/main/js/components/charts/donut-chart.js index b54597dd208..de07bd6f169 100644 --- a/server/sonar-web/src/main/js/components/charts/donut-chart.js +++ b/server/sonar-web/src/main/js/components/charts/donut-chart.js @@ -16,12 +16,12 @@ const Sector = React.createClass({ export const DonutChart = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { thickness: 6, padding: [0, 0, 0, 0] }; }, @@ -45,7 +45,11 @@ export const DonutChart = React.createClass({ .sort(null) .value(d => d.value); let sectors = pie(this.props.data).map((d, i) => { - return ; + return ; }); return diff --git a/server/sonar-web/src/main/js/components/charts/histogram.js b/server/sonar-web/src/main/js/components/charts/histogram.js index 0843e76126a..ffac187583c 100644 --- a/server/sonar-web/src/main/js/components/charts/histogram.js +++ b/server/sonar-web/src/main/js/components/charts/histogram.js @@ -5,8 +5,6 @@ import { ResizeMixin } from './../mixins/resize-mixin'; import { TooltipsMixin } from './../mixins/tooltips-mixin'; export const Histogram = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, yTicks: React.PropTypes.arrayOf(React.PropTypes.any), @@ -18,6 +16,8 @@ export const Histogram = React.createClass({ onBarClick: React.PropTypes.func }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { xTicks: [], diff --git a/server/sonar-web/src/main/js/components/charts/line-chart.js b/server/sonar-web/src/main/js/components/charts/line-chart.js index 375931ea9f5..e4f66c7c9c8 100644 --- a/server/sonar-web/src/main/js/components/charts/line-chart.js +++ b/server/sonar-web/src/main/js/components/charts/line-chart.js @@ -6,8 +6,6 @@ import { TooltipsMixin } from './../mixins/tooltips-mixin'; export const LineChart = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, xTicks: React.PropTypes.arrayOf(React.PropTypes.any), @@ -21,6 +19,8 @@ export const LineChart = React.createClass({ interpolate: React.PropTypes.string }, + mixins: [ResizeMixin, TooltipsMixin], + getDefaultProps() { return { displayBackdrop: true, @@ -63,7 +63,11 @@ export const LineChart = React.createClass({ let points = this.props.data.map((point, index) => { let x = xScale(point.x); let y = yScale(point.y); - return ; + return ; }); return {points}; }, @@ -76,7 +80,12 @@ export const LineChart = React.createClass({ let x = xScale(point.x); let y1 = yScale.range()[0]; let y2 = yScale(point.y); - return ; + return ; }); return {lines}; }, @@ -89,7 +98,11 @@ export const LineChart = React.createClass({ let point = this.props.data[index]; let x = xScale(point.x); let y = yScale.range()[0]; - return {tick}; + return {tick}; }); return {ticks}; }, @@ -102,18 +115,22 @@ export const LineChart = React.createClass({ let point = this.props.data[index]; let x = xScale(point.x); let y = yScale(point.y); - return {value}; + return {value}; }); return {ticks}; }, renderLine (xScale, yScale) { - let path = d3.svg.line() + let p = d3.svg.line() .x(d => xScale(d.x)) .y(d => yScale(d.y)) .interpolate(this.props.interpolate); - return ; + return ; }, render () { diff --git a/server/sonar-web/src/main/js/components/charts/treemap.js b/server/sonar-web/src/main/js/components/charts/treemap.js index f06eda570d0..ad851948113 100644 --- a/server/sonar-web/src/main/js/components/charts/treemap.js +++ b/server/sonar-web/src/main/js/components/charts/treemap.js @@ -48,7 +48,7 @@ export const TreemapRect = React.createClass({ return e.stopPropagation()} className="treemap-link" href={this.props.link} - style={{ fontSize: 12 }}>; + style={{ fontSize: 12 }}>; }, render () { @@ -70,7 +70,10 @@ export const TreemapRect = React.createClass({ cursor: typeof this.props.onClick === 'function' ? 'pointer' : 'default' }; let isTextVisible = this.props.width >= 40 && this.props.height >= 40; - return
    + return
    {this.renderLink()} @@ -80,14 +83,14 @@ export const TreemapRect = React.createClass({ export const Treemap = React.createClass({ - mixins: [ResizeMixin, TooltipsMixin], - propTypes: { items: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, height: React.PropTypes.number, onRectangleClick: React.PropTypes.func }, + mixins: [ResizeMixin, TooltipsMixin], + getInitialState() { return { width: this.props.width, height: this.props.height }; }, diff --git a/server/sonar-web/src/main/js/components/charts/word-cloud.js b/server/sonar-web/src/main/js/components/charts/word-cloud.js index 1edbc2274ec..3744d3fa6de 100644 --- a/server/sonar-web/src/main/js/components/charts/word-cloud.js +++ b/server/sonar-web/src/main/js/components/charts/word-cloud.js @@ -26,13 +26,13 @@ export const Word = React.createClass({ export const WordCloud = React.createClass({ - mixins: [TooltipsMixin], - propTypes: { items: React.PropTypes.arrayOf(React.PropTypes.object).isRequired, sizeRange: React.PropTypes.arrayOf(React.PropTypes.number) }, + mixins: [TooltipsMixin], + getDefaultProps() { return { sizeRange: [10, 24] diff --git a/server/sonar-web/src/main/js/components/shared/avatar.js b/server/sonar-web/src/main/js/components/shared/avatar.js index 5060e088a00..6178343a7f7 100644 --- a/server/sonar-web/src/main/js/components/shared/avatar.js +++ b/server/sonar-web/src/main/js/components/shared/avatar.js @@ -16,6 +16,10 @@ export default React.createClass({ const url = ('' + window.SS.lf.gravatarServerUrl) .replace('{EMAIL_MD5}', emailHash) .replace('{SIZE}', this.props.size * 2); - return {this.props.email}/; + return {this.props.email}/; } }); diff --git a/server/sonar-web/src/main/js/components/shared/radio-toggle.js b/server/sonar-web/src/main/js/components/shared/radio-toggle.js index eca4026c69f..126a486fcae 100644 --- a/server/sonar-web/src/main/js/components/shared/radio-toggle.js +++ b/server/sonar-web/src/main/js/components/shared/radio-toggle.js @@ -22,8 +22,13 @@ export default React.createClass({ let htmlId = this.props.name + '__' + option.value; return (
  • - +
  • ); diff --git a/server/sonar-web/src/main/js/main/nav/global/global-nav-branding.js b/server/sonar-web/src/main/js/main/nav/global/global-nav-branding.js index 1860d5eaf2a..1421220263f 100644 --- a/server/sonar-web/src/main/js/main/nav/global/global-nav-branding.js +++ b/server/sonar-web/src/main/js/main/nav/global/global-nav-branding.js @@ -6,7 +6,11 @@ export default React.createClass({ width = this.props.logoWidth || 100, height = 30, title = window.t('layout.sonar.slogan'); - return {title}; + return {title}; }, render() { -- 2.39.5