summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-12-08 15:05:06 +0100
committerStas Vilchik <vilchiks@gmail.com>2015-12-08 15:05:06 +0100
commit34b14e12bebafed93d21ac620e7b2b5dc3ef7d55 (patch)
tree0d25b8cee29e47f3dc0d9f3326897e4c84de207c
parent0a3a9ea2a47fe09082d9079fdc89a2a025de79e2 (diff)
downloadsonarqube-34b14e12bebafed93d21ac620e7b2b5dc3ef7d55.tar.gz
sonarqube-34b14e12bebafed93d21ac620e7b2b5dc3ef7d55.zip
improve code quality
-rw-r--r--server/sonar-web/.eslintrc22
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/search.js12
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/stats.js5
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/tasks.js4
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/coverage-measures-list.js5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/coverage-measures.js10
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/event.js4
-rw-r--r--server/sonar-web/src/main/js/apps/overview/components/timeline-chart.js14
-rw-r--r--server/sonar-web/src/main/js/apps/overview/domains/debt-domain.js5
-rw-r--r--server/sonar-web/src/main/js/apps/overview/domains/duplications-domain.js10
-rw-r--r--server/sonar-web/src/main/js/apps/overview/domains/size-domain.js30
-rw-r--r--server/sonar-web/src/main/js/apps/overview/main/coverage.js9
-rw-r--r--server/sonar-web/src/main/js/apps/overview/main/duplications.js9
-rw-r--r--server/sonar-web/src/main/js/apps/overview/main/issues.js4
-rw-r--r--server/sonar-web/src/main/js/apps/overview/main/main.js4
-rw-r--r--server/sonar-web/src/main/js/apps/overview/main/size.js4
-rw-r--r--server/sonar-web/src/main/js/apps/project-permissions/search.js6
-rw-r--r--server/sonar-web/src/main/js/apps/projects/search.js8
-rw-r--r--server/sonar-web/src/main/js/components/charts/bar-chart.js27
-rw-r--r--server/sonar-web/src/main/js/components/charts/bubble-chart.js36
-rw-r--r--server/sonar-web/src/main/js/components/charts/donut-chart.js10
-rw-r--r--server/sonar-web/src/main/js/components/charts/histogram.js4
-rw-r--r--server/sonar-web/src/main/js/components/charts/line-chart.js33
-rw-r--r--server/sonar-web/src/main/js/components/charts/treemap.js11
-rw-r--r--server/sonar-web/src/main/js/components/charts/word-cloud.js4
-rw-r--r--server/sonar-web/src/main/js/components/shared/avatar.js6
-rw-r--r--server/sonar-web/src/main/js/components/shared/radio-toggle.js9
-rw-r--r--server/sonar-web/src/main/js/main/nav/global/global-nav-branding.js6
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({
<button className="search-box-submit button-clean">
<i className="icon-search"></i>
</button>
- <input onChange={this.onSearch} value={this.props.searchQuery} ref="searchInput" className="search-box-input"
- type="search" placeholder="Search"/>
+ <input onChange={this.onSearch}
+ value={this.props.searchQuery}
+ ref="searchInput"
+ className="search-box-input"
+ type="search"
+ placeholder="Search"/>
</form>
);
},
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 (
<span>
- <a ref="failureCount" onClick={this.onFailuresClick} className="emphasised-measure" data-toggle="tooltip"
+ <a ref="failureCount"
+ onClick={this.onFailuresClick}
+ className="emphasised-measure"
+ data-toggle="tooltip"
title="Count of projects where processing of most recent analysis report failed"
href="#">{this.props.failuresCount}</a>
&nbsp;
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 <DetailedMeasure key={metric.key} {...this.props} {...this.props} metric={metric.key}
+ return <DetailedMeasure key={metric.key}
+ {...this.props}
+ {...this.props}
+ metric={metric.key}
type={metric.type}/>;
});
return <div className="overview-detailed-measures-list">{metrics}</div>;
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({
<div className="overview-detailed-measure-leak">
<span className="overview-detailed-measure-value">
<span className="spacer-right">
- <DonutChart width="30" height="30" thickness="4" data={donutData}/>
+ <DonutChart width="30"
+ height="30"
+ thickness="4"
+ data={donutData}/>
</span>
<DrilldownLink component={this.props.component.key}
metric={newCoverageMetricName}
@@ -90,7 +93,10 @@ export const CoverageMeasures = React.createClass({
{ value: coverage, fill: '#85bb43' },
{ value: 100 - coverage, fill: '#d4333f' }
];
- return <DonutChart width="30" height="30" thickness="4" data={donutData}/>;
+ return <DonutChart width="30"
+ height="30"
+ thickness="4"
+ data={donutData}/>;
},
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 <li className="spacer-top">
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 <text key={index} className="line-chart-tick" x={x} y={y} dy="1.5em">{format(tick)}</text>;
+ return <text key={index}
+ className="line-chart-tick"
+ x={x}
+ y={y}
+ dy="1.5em">{format(tick)}</text>;
});
return <g>{ticks}</g>;
},
@@ -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 <path className="line-chart-path" d={path(this.props.data)}/>;
+ return <path className="line-chart-path" d={p(this.props.data)}/>;
},
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 <DetailedMeasure key={metric.key} {...this.props} {...this.state} metric={metric.key}
+ return <DetailedMeasure key={metric.key}
+ {...this.props}
+ {...this.state}
+ metric={metric.key}
type={metric.type}/>;
});
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 <DetailedMeasure key={metric.key} {...this.props} {...this.state} metric={metric.key}
+ return <DetailedMeasure key={metric.key}
+ {...this.props}
+ {...this.state}
+ metric={metric.key}
type={metric.type}/>;
});
return <div>{metrics}</div>;
@@ -97,7 +100,10 @@ export const DuplicationsMain = React.createClass({
{ value: duplications, fill: '#f3ca8e' },
{ value: Math.max(0, 20 - duplications), fill: '#e6e6e6' }
];
- return <DonutChart width="30" height="30" thickness="4" data={donutData}/>;
+ return <DonutChart width="30"
+ height="30"
+ thickness="4"
+ data={donutData}/>;
},
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 <DetailedMeasure key={metric.key} {...this.props} {...this.state} metric={metric.key}
+ return <DetailedMeasure key={metric.key}
+ {...this.props}
+ {...this.state}
+ metric={metric.key}
type={metric.type}/>;
});
return <div>{metrics}</div>;
@@ -112,16 +115,28 @@ export const SizeMain = React.createClass({
return <div className="overview-detailed-layout-column">
<div className="overview-detailed-measures-list">
- <DetailedMeasure {...this.props} {...this.state} metric="complexity" type="INT"/>
- <DetailedMeasure {...this.props} {...this.state} metric="function_complexity" type="FLOAT">
+ <DetailedMeasure {...this.props}
+ {...this.state}
+ metric="complexity"
+ type="INT"/>
+ <DetailedMeasure {...this.props}
+ {...this.state}
+ metric="function_complexity"
+ type="FLOAT">
{this.renderComplexityDistribution(this.state.measures['function_complexity_distribution'],
{ of: 'function' })}
</DetailedMeasure>
- <DetailedMeasure {...this.props} {...this.state} metric="file_complexity" type="FLOAT">
+ <DetailedMeasure {...this.props}
+ {...this.state}
+ metric="file_complexity"
+ type="FLOAT">
{this.renderComplexityDistribution(this.state.measures['file_complexity_distribution'],
{ of: 'file' })}
</DetailedMeasure>
- <DetailedMeasure {...this.props} {...this.state} metric="class_complexity" type="FLOAT"/>
+ <DetailedMeasure {...this.props}
+ {...this.state}
+ metric="class_complexity"
+ type="FLOAT"/>
{this.renderOtherComplexityMeasures()}
</div>
</div>;
@@ -141,7 +156,10 @@ export const SizeMain = React.createClass({
<div className="overview-detailed-layout-size">
<div className="overview-detailed-layout-column">
<div className="overview-detailed-measures-list">
- <DetailedMeasure {...this.props} {...this.state} metric="ncloc" type="INT">
+ <DetailedMeasure {...this.props}
+ {...this.state}
+ metric="ncloc"
+ type="INT">
{this.renderLanguageDistribution()}
</DetailedMeasure>
{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({
<Measure composite={true}>
<div className="display-inline-block text-middle big-spacer-right">
- <DonutChart width="40" height="40" thickness="4" data={donutData}/>
+ <DonutChart width="40"
+ height="40"
+ thickness="4"
+ data={donutData}/>
</div>
<div className="display-inline-block text-middle">
<div className="overview-domain-measure-value">
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({
<Measure composite={true}>
<div className="display-inline-block text-middle big-spacer-right">
- <DonutChart width="40" height="40" thickness="4" data={donutData}/>
+ <DonutChart width="40"
+ height="40"
+ thickness="4"
+ data={donutData}/>
</div>
<div className="display-inline-block text-middle">
<div className="overview-domain-measure-value">
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({
<button className="search-box-submit button-clean">
<i className="icon-search"></i>
</button>
- <input onChange={this.search} ref="input" className="search-box-input" type="search" placeholder="Search"/>
+ <input onChange={this.search}
+ ref="input"
+ className="search-box-input"
+ type="search"
+ placeholder="Search"/>
</form>
</div>
);
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({
<button className="search-box-submit button-clean">
<i className="icon-search"></i>
</button>
- <input onChange={this.search} value={this.props.query} ref="input" className="search-box-input"
- type="search" placeholder="Search"/>
+ <input onChange={this.search}
+ value={this.props.query}
+ ref="input"
+ className="search-box-input"
+ type="search"
+ placeholder="Search"/>
</form>
</td>
<td className="thin text-middle">
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 <text key={index} className="bar-chart-tick" x={x} y={y} dy="1.5em" {...tooltipAtts}>{tick}</text>;
+ return <text key={index}
+ className="bar-chart-tick"
+ x={x}
+ y={y}
+ dy="1.5em"
+ {...tooltipAtts}>{tick}</text>;
});
return <g>{ticks}</g>;
},
@@ -62,7 +67,12 @@ export const BarChart = React.createClass({
tooltipAtts['title'] = d.tooltip;
tooltipAtts['data-toggle'] = 'tooltip';
}
- return <text key={index} className="bar-chart-tick" x={x} y={y} dy="-1em" {...tooltipAtts}>{value}</text>;
+ return <text key={index}
+ className="bar-chart-tick"
+ x={x}
+ y={y}
+ dy="-1em"
+ {...tooltipAtts}>{value}</text>;
});
return <g>{ticks}</g>;
},
@@ -78,8 +88,13 @@ export const BarChart = React.createClass({
tooltipAtts['title'] = d.tooltip;
tooltipAtts['data-toggle'] = 'tooltip';
}
- return <rect key={index} className="bar-chart-bar" {...tooltipAtts}
- x={x} y={y} width={this.props.barsWidth} height={height}/>;
+ return <rect key={index}
+ className="bar-chart-bar"
+ {...tooltipAtts}
+ x={x}
+ y={y}
+ width={this.props.barsWidth}
+ height={height}/>;
});
return <g>{bars}</g>;
},
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 <line key={index} x1={x} x2={x} y1={y1} y2={y2} className="bubble-chart-grid"/>;
+ return <line key={index}
+ x1={x}
+ x2={x}
+ y1={y1}
+ y2={y2}
+ className="bubble-chart-grid"/>;
});
return <g ref="xGrid">{lines}</g>;
@@ -109,7 +114,12 @@ export const BubbleChart = React.createClass({
let y = yScale(tick);
let x1 = xScale.range()[0];
let x2 = xScale.range()[1];
- return <line key={index} x1={x1} x2={x2} y1={y} y2={y} className="bubble-chart-grid"/>;
+ return <line key={index}
+ x1={x1}
+ x2={x2}
+ y1={y}
+ y2={y}
+ className="bubble-chart-grid"/>;
});
return <g ref="yGrid">{lines}</g>;
@@ -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 key={index} className="bubble-chart-tick" x={x} y={y} dy="1.5em">{text}</text>;
+ let innerText = this.props.formatXTick(tick);
+ return <text key={index}
+ className="bubble-chart-tick"
+ x={x}
+ y={y}
+ dy="1.5em">{innerText}</text>;
});
return <g>{ticks}</g>;
@@ -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 key={index} className="bubble-chart-tick bubble-chart-tick-y"
- x={x} y={y} dx="-0.5em" dy="0.3em">{text}</text>;
+ let innerText = this.props.formatYTick(tick);
+ return <text key={index}
+ className="bubble-chart-tick bubble-chart-tick-y"
+ x={x}
+ y={y}
+ dx="-0.5em"
+ dy="0.3em">{innerText}</text>;
});
return <g>{ticks}</g>;
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 <Sector key={i} data={d} radius={radius} fill={this.props.data[i].fill} thickness={this.props.thickness}/>;
+ return <Sector key={i}
+ data={d}
+ radius={radius}
+ fill={this.props.data[i].fill}
+ thickness={this.props.thickness}/>;
});
return <svg className="donut-chart" width={this.state.width} height={this.state.height}>
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 <circle key={index} className="line-chart-point" r="3" cx={x} cy={y}/>;
+ return <circle key={index}
+ className="line-chart-point"
+ r="3"
+ cx={x}
+ cy={y}/>;
});
return <g>{points}</g>;
},
@@ -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 <line key={index} className="line-chart-grid" x1={x} x2={x} y1={y1} y2={y2}/>;
+ return <line key={index}
+ className="line-chart-grid"
+ x1={x}
+ x2={x}
+ y1={y1}
+ y2={y2}/>;
});
return <g>{lines}</g>;
},
@@ -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 <text key={index} className="line-chart-tick" x={x} y={y} dy="1.5em">{tick}</text>;
+ return <text key={index}
+ className="line-chart-tick"
+ x={x}
+ y={y}
+ dy="1.5em">{tick}</text>;
});
return <g>{ticks}</g>;
},
@@ -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 <text key={index} className="line-chart-tick" x={x} y={y} dy="-1em">{value}</text>;
+ return <text key={index}
+ className="line-chart-tick"
+ x={x}
+ y={y}
+ dy="-1em">{value}</text>;
});
return <g>{ticks}</g>;
},
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 <path className="line-chart-path" d={path(this.props.data)}/>;
+ return <path className="line-chart-path" d={p(this.props.data)}/>;
},
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 <a onClick={e => e.stopPropagation()}
className="treemap-link"
href={this.props.link}
- style={{ fontSize: 12 }}><i className="icon-link"/></a>;
+ style={{ fontSize: 12 }}><span className="icon-link"/></a>;
},
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 <div className="treemap-cell" {...tooltipAttrs} style={cellStyles} onClick={this.props.onClick}>
+ return <div className="treemap-cell"
+ {...tooltipAttrs}
+ style={cellStyles}
+ onClick={this.props.onClick}>
<div className="treemap-inner" dangerouslySetInnerHTML={{ __html: this.props.label }}
style={{ maxWidth: this.props.width, visibility: isTextVisible ? 'visible': 'hidden' }}/>
{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 <img className="rounded" src={url} width={this.props.size} height={this.props.size} alt={this.props.email}/>;
+ return <img className="rounded"
+ src={url}
+ width={this.props.size}
+ height={this.props.size}
+ alt={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 (
<li key={option.value}>
- <input onChange={this.onChange} type="radio" name={this.props.name} value={option.value} id={htmlId}
- checked={checked} disabled={this.props.disabled}/>
+ <input onChange={this.onChange}
+ type="radio"
+ name={this.props.name}
+ value={option.value}
+ id={htmlId}
+ checked={checked}
+ disabled={this.props.disabled}/>
<label htmlFor={htmlId}>{option.label}</label>
</li>
);
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 <img src={url} width={width} height={height} alt={title} title={title}/>;
+ return <img src={url}
+ width={width}
+ height={height}
+ alt={title}
+ title={title}/>;
},
render() {
noid/prepare-phpunit-10 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib/Group_Proxy.php
blob: 64b85427f8f9cfd53bb2c445fa0a7b8bd8d91423 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199