"block-scoped-var": 2,
"block-spacing": 2,
"brace-style": 2,
- "comma-dangle": 2,
+ "comma-dangle": [2, "never"],
"comma-spacing": 2,
"comma-style": 2,
"computed-property-spacing": 2,
"jsx-quotes": 2,
"key-spacing": 2,
"keyword-spacing": 2,
- "max-len": [2, 120],
+ "max-len": [2, 100],
"new-parens": 2,
"no-lonely-if": 2,
"no-multi-spaces": 2,
"jsx-a11y/tabindex-no-positive": 2,
"react/jsx-boolean-value": [2, "always"],
+ "react/jsx-closing-bracket-location": [2, {
+ "nonEmpty": "after-props",
+ "selfClosing": "tag-aligned"
+ }],
"react/jsx-curly-spacing": [2, "never"],
"react/jsx-equals-spacing": [2, "never"],
"react/jsx-key": 2,
"less-loader": "2.2.3",
"path-exists": "2.1.0",
"postcss-loader": "0.8.0",
- "prettier": "^0.22.0",
+ "prettier-eslint-cli": "^3.1.3",
"react-addons-test-utils": "15.4.2",
"react-dev-utils": "0.2.1",
"react-transform-hmr": "1.0.4",
"build": "node scripts/build.js",
"test": "node scripts/test.js",
"coverage": "npm test -- --coverage",
- "format": "prettier --write --list-different --print-width 100 --single-quote --parser flow \"src/main/js/!(libs)/**/*.js\"",
+ "format": "prettier-eslint --write \"src/main/js/!(libs)/**/*.js\"",
"lint": "eslint src/main/js",
"typecheck": "flow src/main/js",
"validate": "eslint src/main/js && flow check src/main/js && NODE_ENV=test jest --runInBand"
Embedded database should be used for evaluation purpose only
</p>
<p>
- The embedded database will not scale, it will not support upgrading to newer versions of SonarQube,
- and there is no support for migrating your data out of it into a different database engine.
+ The embedded database will not scale, it will not support upgrading to newer
+ {' '}
+ versions of SonarQube, and there is no support for migrating your data out of it
+ {' '}
+ into a different database engine.
</p>
</div>}
</span>}
<Link
to={{ pathname: '/dashboard', query: { id: item.key } }}
- className="link-base-color"
- >
+ className="link-base-color">
{index === breadcrumbs.length - 1
? <strong>{item.name}</strong>
: <span>{item.name}</span>}
<li>
<Link
to={{ pathname: '/code', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{this.isView() ? translate('view_projects.page') : translate('code.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/activity', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('project_activity.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/component_issues', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('issues.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/component_measures', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('layout.measures')}
</Link>
</li>
className="dropdown-toggle navbar-admin-link"
id="component-navigation-admin"
data-toggle="dropdown"
- href="#"
- >
+ href="#">
{translate('layout.settings')}
<i className="icon-dropdown" />
</a>
<li>
<Link
to={{ pathname: '/project/settings', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('project_settings.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/quality_profiles', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('project_quality_profiles.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/quality_gate', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('project_quality_gate.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/custom_measures', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('custom_measures.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/links', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('project_links.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project_roles', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('permissions.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/background_tasks', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('background_tasks.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/key', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('update_key.page')}
</Link>
</li>
<li>
<Link
to={{ pathname: '/project/deletion', query: { id: this.props.component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('deletion.page')}
</Link>
</li>
className="dropdown-toggle"
id="component-navigation-more"
data-toggle="dropdown"
- href="#"
- >
+ href="#">
{translate('more')}
<i className="icon-dropdown" />
</a>
const shouldReturnToCurrentPage = window.location.pathname !== `${window.baseUrl}/about`;
if (shouldReturnToCurrentPage) {
const returnTo = encodeURIComponent(window.location.pathname + window.location.search);
- window.location = `${window.baseUrl}/sessions/new?return_to=${returnTo}${window.location.hash}`;
+ window.location = window.baseUrl +
+ `/sessions/new?return_to=${returnTo}${window.location.hash}`;
} else {
window.location = `${window.baseUrl}/sessions/new`;
}
className="dropdown-toggle"
data-toggle="dropdown"
id="settings-navigation-configuration"
- href="#"
- >
+ href="#">
{translate('sidebar.project_settings')} <i className="icon-dropdown" />
</a>
<ul className="dropdown-menu">
<a
className="button button-active"
href="https://about.sonarqube.com/get-started/"
- target="_blank"
- >
+ target="_blank">
Get Started
</a>
{!this.props.currentUser.isLoggedIn &&
const link = 'https://redirect.sonarsource.com/doc/rules.html';
-const owaspTags = 'owasp-a1,owasp-a2,owasp-a3,owasp-a4,owasp-a5,owasp-a6,owasp-a7,owasp-a8,owasp-a9,owasp-a10';
+const owaspTags = 'owasp-a1,owasp-a2,owasp-a3,owasp-a4,owasp-a5,' +
+ 'owasp-a6,owasp-a7,owasp-a8,owasp-a9,owasp-a10';
export default class AboutStandards extends React.Component {
render() {
to={getRulesUrl({
tags: 'sans-top25-porous,sans-top25-risky,sans-top25-insecure'
})}
- className="link-with-icon"
- >
+ className="link-with-icon">
<i className="icon-tags" />
<span className="little-spacer-left">SANS Top 25</span>
</Link>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'BUG' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(bugs, 'SHORT_INT')}
</Link>
</td>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'VULNERABILITY' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(vulnerabilities, 'SHORT_INT')}
</Link>
</td>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'CODE_SMELL' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(codeSmells, 'SHORT_INT')}
</Link>
</td>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'BUG' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(bugs, 'SHORT_INT')}
</Link>
</td>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'VULNERABILITY' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(vulnerabilities, 'SHORT_INT')}
</Link>
</td>
<td className="about-page-issue-type-number">
<Link
to={getIssuesUrl({ resolved: false, types: 'CODE_SMELL' })}
- className="about-page-issue-type-link"
- >
+ className="about-page-issue-type-link">
{formatMeasure(codeSmells, 'SHORT_INT')}
</Link>
</td>
};
componentWillReceiveProps(nextProps: Props) {
- // remove all projects from `this.state.addedProjects` that already exist in `nextProps.projects`
+ // remove all projects from `this.state.addedProjects`
+ // that already exist in `nextProps.projects`
const nextAddedProjects = differenceBy(
this.state.addedProjects,
nextProps.projects,
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate('my_account.create_organization')}</h2>
</header>
return (
<div
className="identity-provider"
- style={{ backgroundColor: identityProvider.backgroundColor }}
- >
+ style={{ backgroundColor: identityProvider.backgroundColor }}>
<img
src={window.baseUrl + identityProvider.iconPath}
width="14"
href={link.href}
title={link.name}
target="_blank"
- rel="nofollow"
- >
+ rel="nofollow">
<i className={`icon-color-link icon-${link.type}`} />
</a>
</li>
role="checkbox"
tabIndex="0"
aria-checked={checked ? 'true' : 'false'}
- onClick={handleLabelClick}
- >
+ onClick={handleLabelClick}>
Yes
</label>
</div>
className="js-failures-count emphasised-measure"
data-toggle="tooltip"
title="Count of projects where processing of most recent analysis report failed"
- href="#"
- >
+ href="#">
{this.props.failingCount}
</a>
<span
className="js-failures-count emphasised-measure"
data-toggle="tooltip"
- title="Count of projects where processing of most recent analysis report failed"
- >
+ title="Count of projects where processing of most recent analysis report failed">
{this.props.failingCount}
</span>
<a
className="js-task-show-scanner-context"
href="#"
- onClick={this.handleShowScannerContextClick.bind(this)}
- >
+ onClick={this.handleShowScannerContextClick.bind(this)}>
<i className="spacer-right icon-list icon-gray" />
{translate('background_tasks.show_scanner_context')}
</a>
<a
className="js-task-show-stacktrace"
href="#"
- onClick={this.handleShowStacktraceClick.bind(this)}
- >
+ onClick={this.handleShowStacktraceClick.bind(this)}>
<i className="spacer-right icon-list icon-red" />
{translate('background_tasks.show_stacktrace')}
</a>
inner = (
<Link
to={{ pathname: '/dashboard', query: { id: component.refKey } }}
- className="link-with-icon"
- >
+ className="link-with-icon">
<QualifierIcon qualifier={component.qualifier} />
{' '}
<span>{name}</span>
className="link-no-underline"
onClick={handleClick}
title={translate('component_viewer.open_in_workspace')}
- href="#"
- >
+ href="#">
<PinIcon />
</a>
);
fillRule="evenodd"
clipRule="evenodd"
strokeLinejoin="round"
- strokeMiterlimit="1.414"
- >
- <path d="M352 256c52.984 0 96 43.016 96 96s-43.016 96-96 96-96-43.016-96-96 43.016-96 96-96zM128 96c70.645 0 128 57.355 128 128 0 70.645-57.355 128-128 128C57.355 352 0 294.645 0 224 0 153.355 57.355 96 128 96zM352 0c52.984 0 96 43.016 96 96s-43.016 96-96 96-96-43.016-96-96 43.016-96 96-96z" />
+ strokeMiterlimit="1.414">
+ <path
+ d="M352 256c52.984 0 96 43.016 96 96s-43.016 96-96 96-96-43.016-96-96 43.016-96 96-96zM128 96c70.645 0 128 57.355 128 128 0 70.645-57.355 128-128 128C57.355 352 0 294.645 0 224 0 153.355 57.355 96 128 96zM352 0c52.984 0 96 43.016 96 96s-43.016 96-96 96-96-43.016-96-96 43.016-96 96-96z"
+ />
</svg>
);
}
fillRule="evenodd"
clipRule="evenodd"
strokeLinejoin="round"
- strokeMiterlimit="1.414"
- >
- <path d="M512 384v32H0V32h32v352h480zM480 72v108.75q0 5.25-4.875 7.375t-8.875-1.875L436 156 277.75 314.25q-2.5 2.5-5.75 2.5t-5.75-2.5L208 256 104 360l-48-48 146.25-146.25q2.5-2.5 5.75-2.5t5.75 2.5L272 224l116-116-30.25-30.25q-4-4-1.875-8.875T363.25 64H472q3.5 0 5.75 2.25T480 72z" />
+ strokeMiterlimit="1.414">
+ <path
+ d="M512 384v32H0V32h32v352h480zM480 72v108.75q0 5.25-4.875 7.375t-8.875-1.875L436 156 277.75 314.25q-2.5 2.5-5.75 2.5t-5.75-2.5L208 256 104 360l-48-48 146.25-146.25q2.5-2.5 5.75-2.5t5.75 2.5L272 224l116-116-30.25-30.25q-4-4-1.875-8.875T363.25 64H472q3.5 0 5.75 2.25T480 72z"
+ />
</svg>
);
}
fillRule="evenodd"
clipRule="evenodd"
strokeLinejoin="round"
- strokeMiterlimit="1.414"
- >
- <path d="M448 48c0-8.83-7.17-16-16-16H16C7.17 32 0 39.17 0 48v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16V48zM448 144c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32zM448 240c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32zM448 336.03c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32z" />
+ strokeMiterlimit="1.414">
+ <path
+ d="M448 48c0-8.83-7.17-16-16-16H16C7.17 32 0 39.17 0 48v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16V48zM448 144c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32zM448 240c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32zM448 336.03c0-8.83-7.17-16-16-16H16c-8.83 0-16 7.17-16 16v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16v-32z"
+ />
</svg>
);
}
fillRule="evenodd"
clipRule="evenodd"
strokeLinejoin="round"
- strokeMiterlimit="1.414"
- >
- <path d="M448 48c0-8.83-7.17-16-16-16H16C7.17 32 0 39.17 0 48v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16V48zM448 144c0-8.83-6.146-16-13.714-16H77.714C70.144 128 64 135.17 64 144v32c0 8.83 6.145 16 13.714 16h356.572c7.568 0 13.714-7.17 13.714-16v-32zM448 240c0-8.83-5.12-16-11.428-16H139.428C133.12 224 128 231.17 128 240v32c0 8.83 5.12 16 11.428 16h297.144c6.307 0 11.428-7.17 11.428-16v-32zM448 336.03c0-8.83-4.097-16-9.142-16H201.143c-5.046 0-9.143 7.17-9.143 16v32c0 8.83 4.097 16 9.143 16h237.715c5.045 0 9.142-7.17 9.142-16v-32z" />
+ strokeMiterlimit="1.414">
+ <path
+ d="M448 48c0-8.83-7.17-16-16-16H16C7.17 32 0 39.17 0 48v32c0 8.83 7.17 16 16 16h416c8.83 0 16-7.17 16-16V48zM448 144c0-8.83-6.146-16-13.714-16H77.714C70.144 128 64 135.17 64 144v32c0 8.83 6.145 16 13.714 16h356.572c7.568 0 13.714-7.17 13.714-16v-32zM448 240c0-8.83-5.12-16-11.428-16H139.428C133.12 224 128 231.17 128 240v32c0 8.83 5.12 16 11.428 16h297.144c6.307 0 11.428-7.17 11.428-16v-32zM448 336.03c0-8.83-4.097-16-9.142-16H201.143c-5.046 0-9.143 7.17-9.143 16v32c0 8.83 4.097 16 9.143 16h237.715c5.045 0 9.142-7.17 9.142-16v-32z"
+ />
</svg>
);
}
fillRule="evenodd"
clipRule="evenodd"
strokeLinejoin="round"
- strokeMiterlimit="1.414"
- >
+ strokeMiterlimit="1.414">
<path d="M0 0h224v448H0zM256 0h192v256H256zM256 288h192v160H256z" />
</svg>
);
}
getTooltip(component) {
+ const x = formatMeasure(getMeasure(component, this.xMetric.key), this.xMetric.type);
+ const y = formatMeasure(getMeasure(component, this.yMetric.key), this.yMetric.type);
+ const size = formatMeasure(getMeasure(component, this.sizeMetric.key), this.sizeMetric.type);
const inner = [
component.name,
- `${this.xMetric.name}: ${formatMeasure(getMeasure(component, this.xMetric.key), this.xMetric.type)}`,
- `${this.yMetric.name}: ${formatMeasure(getMeasure(component, this.yMetric.key), this.yMetric.type)}`,
- `${this.sizeMetric.name}: ${formatMeasure(getMeasure(component, this.sizeMetric.key), this.sizeMetric.type)}`
+ `${this.xMetric.name}: ${x}`,
+ `${this.yMetric.name}: ${y}`,
+ `${this.sizeMetric.name}: ${size}`
].join('<br>');
return `<div class="text-left">${inner}</div>`;
<IndexLink
to={{ pathname: '/component_measures', query: { id: component.key } }}
id="component-measures-back-to-all-measures"
- className="text-muted"
- >
+ className="text-muted">
{translate('component_measures.all_measures')}
</IndexLink>
{!!metric.domain &&
pathname: `/component_measures/domain/${metric.domain}`,
query: { id: component.key }
}}
- className="text-muted"
- >
+ className="text-muted">
{translateWithParameters('component_measures.domain_measures', metric.domain)}
</Link>
</span>}
metric={metric}
tab={tab}
leakPeriod={period}
- leakPeriodDate={periodDate}
- >
+ leakPeriodDate={periodDate}>
{children}
</MeasureDrilldown>}
</section>
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis'
- }}
- >
+ }}>
{component.refId == null || component.qualifier === 'DEV_PRJ'
? <a
id={'component-measures-component-link-' + component.key}
className={linkClassName}
href={getComponentUrl(component.key)}
- onClick={handleClick}
- >
+ onClick={handleClick}>
{inner}
</a>
: <a
id={'component-measures-component-link-' + component.key}
className={linkClassName}
- href={getComponentUrl(component.refKey || component.key)}
- >
+ href={getComponentUrl(component.refKey || component.key)}>
<span className="big-spacer-right">
<i className="icon-detach" />
</span>
to={{
pathname: `/component_measures/metric/${metric.key}/list`,
query: { id: component.key }
- }}
- >
+ }}>
<IconList />
{translate('component_measures.tab.list')}
</Link>
to={{
pathname: `/component_measures/metric/${metric.key}/tree`,
query: { id: component.key }
- }}
- >
+ }}>
<IconTree />
{translate('component_measures.tab.tree')}
</Link>
to={{
pathname: `/component_measures/metric/${metric.key}/bubbles`,
query: { id: component.key }
- }}
- >
+ }}>
<IconBubbles />
{translate('component_measures.tab.bubbles')}
</Link>
to={{
pathname: `/component_measures/metric/${metric.key}/treemap`,
query: { id: component.key }
- }}
- >
+ }}>
<IconTreemap />
{translate('component_measures.tab.treemap')}
</Link>
to={{
pathname: `/component_measures/metric/${metric.key}/history`,
query: { id: component.key }
- }}
- >
+ }}>
<IconHistory />
{translate('component_measures.tab.history')}
</Link>
<li>
<IndexLink
to={{ pathname: '/component_measures', query: { id: component.key } }}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('all')}
</IndexLink>
</li>
pathname: `/component_measures/domain/${domain.name}`,
query: { id: component.key }
}}
- activeClassName="active"
- >
+ activeClassName="active">
{getLocalizedMetricDomain(domain.name)}
</Link>
</li>
return (
<div
id={`measure-${measure.metric.key}-leak`}
- className="domain-measures-value domain-measures-leak"
- >
+ className="domain-measures-value domain-measures-leak">
<Measure measure={measure} />
</div>
);
to={{
pathname: `/component_measures/metric/${measure.metric.key}`,
query: { id: component.key }
- }}
- >
+ }}>
<div className="domain-measures-name">
<IssueTypeIcon query={measure.metric.key} className="little-spacer-right" />
<span id={`measure-${measure.metric.key}-name`}>
...add.map(id => addUserToGroup(id, member.login)),
...remove.map(id => removeUserFromGroup(id, member.login))
];
- return Promise.all(promises).then(() => {
- dispatch(receiveUser({ ...member, groupCount: member.groupCount + add.length - remove.length }));
- }, onFail(dispatch));
+ return Promise.all(promises).then(
+ () => {
+ dispatch(
+ receiveUser({ ...member, groupCount: member.groupCount + add.length - remove.length })
+ );
+ },
+ onFail(dispatch)
+ );
};
</td>
{organization.canAdmin &&
<td className="text-right text-middle">
- {translateWithParameters('organization.members.x_groups', formatMeasure(member.groupCount || 0, 'INT'))}
+ {translateWithParameters(
+ 'organization.members.x_groups',
+ formatMeasure(member.groupCount || 0, 'INT')
+ )}
</td>}
{organization.canAdmin &&
<td className="nowrap text-middle text-right">
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.handleCloseModal}
- >
+ onRequestClose={this.handleCloseModal}>
<header className="modal-head">
<h2>{translate('organization.delete')}</h2>
<button
className="button-red"
disabled={this.state.loading || this.state.deleting}
- onClick={this.handleOpenModal}
- >
+ onClick={this.handleOpenModal}>
{translate('delete')}
</button>
{this.state.deleting && this.renderModal()}
className="capitalize list-item-checkable-link"
onClick={this.toggleCheck}
tabIndex={0}
- role="listitem"
- >
+ role="listitem">
<Checkbox checked={this.props.checked} onCheck={this.onCheck} />
{' '}{this.props.group.name}
</li>
];
it('should render a list of members of an organization', () => {
- const wrapper = shallow(
- <MembersList
- organization={organization}
- members={members}
- />
- );
+ const wrapper = shallow(<MembersList organization={organization} members={members} />);
expect(wrapper).toMatchSnapshot();
});
import MembersListHeader from '../MembersListHeader';
it('should render without the total', () => {
- const wrapper = shallow(
- <MembersListHeader handleSearch={jest.fn()} />
- );
+ const wrapper = shallow(<MembersListHeader handleSearch={jest.fn()} />);
expect(wrapper).toMatchSnapshot();
});
it('should render with the total', () => {
- const wrapper = shallow(
- <MembersListHeader handleSearch={jest.fn()} total={8} />
- );
+ const wrapper = shallow(<MembersListHeader handleSearch={jest.fn()} total={8} />);
expect(wrapper).toMatchSnapshot();
});
const john = { login: 'john', name: 'John Doe', avatar: '7daf6c79d4802916d83f6266e24850af' };
it('should not render actions and groups for non admin', () => {
- const wrapper = shallow(
- <MembersListItem
- organization={organization}
- member={admin}
- />
- );
+ const wrapper = shallow(<MembersListItem organization={organization} member={admin} />);
expect(wrapper).toMatchSnapshot();
});
it('should render actions and groups for admin', () => {
const wrapper = shallow(
- <MembersListItem
- organization={{ ...organization, canAdmin: true }}
- member={admin}
- />
+ <MembersListItem organization={{ ...organization, canAdmin: true }} member={admin} />
);
expect(wrapper).toMatchSnapshot();
});
it('should groups at 0 if the groupCount field is not defined (just added user)', () => {
const wrapper = shallow(
- <MembersListItem
- organization={{ ...organization, canAdmin: true }}
- member={john}
- />
+ <MembersListItem organization={{ ...organization, canAdmin: true }} member={john} />
);
expect(wrapper).toMatchSnapshot();
});
import MembersPageHeader from '../MembersPageHeader';
it('should render the members page header', () => {
- const wrapper = shallow(
- <MembersPageHeader />
- );
+ const wrapper = shallow(<MembersPageHeader />);
expect(wrapper).toMatchSnapshot();
wrapper.setProps({ loading: true });
expect(wrapper.find('.spinner')).toMatchSnapshot();
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate('users.add')}</h2>
</header>
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate('organization.members.manage_groups')}</h2>
</header>
<form onSubmit={this.handleSubmit}>
<div className="modal-body">
<strong>
- {translateWithParameters('organization.members.members_groups', this.props.member.name)}
+ {translateWithParameters(
+ 'organization.members.members_groups',
+ this.props.member.name
+ )}
</strong>{' '}{this.state.loading && <i className="spinner" />}
{!this.state.loading &&
<ul className="list-spaced">
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate('users.remove')}</h2>
</header>
<li>
<Link
to={`/organizations/${organization.key}/permission_templates`}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('permission_templates')}
</Link>
</li>
<li>
<Link
to={`/organizations/${organization.key}/projects_management`}
- activeClassName="active"
- >
+ activeClassName="active">
{translate('projects_management')}
</Link>
</li>
className="link-underline"
href={organization.url}
title={organization.url}
- rel="nofollow"
- >
+ rel="nofollow">
{organization.url}
</a>
</p>
<li>
<Link
to={`/organizations/${organization.key}/projects`}
- className={isHomeActive ? 'active' : ''}
- >
+ className={isHomeActive ? 'active' : ''}>
{translate('projects.page')}
</Link>
</li>
componentDidUpdate(prevProps) {
if (this.props.component.key !== prevProps.component.key) {
- this.loadMeasures(this.props.component.key).then(() => this.loadHistory(this.props.component));
+ this.loadMeasures(this.props.component.key).then(() =>
+ this.loadHistory(this.props.component));
}
}
<DrilldownLink
component={component.key}
metric={newCoverageMeasure.metric.key}
- period={leakPeriod.index}
- >
+ period={leakPeriod.index}>
<span className="js-overview-main-new-coverage">
{formatMeasure(newCoverageValue, 'PERCENT')}
</span>
className="spacer-right overview-domain-secondary-measure-value"
component={component.key}
metric={newLinesToCover.metric.key}
- period={leakPeriod.index}
- >
+ period={leakPeriod.index}>
<span className="js-overview-main-new-coverage">
{formatMeasure(newLinesToCoverValue, 'SHORT_INT')}
</span>
<DrilldownLink
component={component.key}
metric={newDuplicationsMeasure.metric.key}
- period={leakPeriod.index}
- >
+ period={leakPeriod.index}>
<span className="js-overview-main-new-duplications">
{formatMeasure(newDuplicationsValue, 'PERCENT')}
</span>
className="spacer-right overview-domain-secondary-measure-value"
component={component.key}
metric={newLinesMeasure.metric.key}
- period={leakPeriod.index}
- >
+ period={leakPeriod.index}>
<span className="js-overview-main-new-lines">
{formatMeasure(newLinesValue, 'SHORT_INT')}
</span>
className="link-with-icon"
href={link.url}
target="_blank"
- onClick={!isClickable(link) && this.handleClick}
- >
+ onClick={!isClickable(link) && this.handleClick}>
{this.renderLinkIcon(link)}
{link.name}
key={profile.key}
className="overview-deprecated-rules"
title={tooltip}
- data-toggle="tooltip"
- >
+ data-toggle="tooltip">
{inner}
</li>
);
<button
className="button-link"
onClick={this.handleClick}
- ref={tagsList => this.tagsList = tagsList}
- >
- <TagsList
- tags={tags.length ? tags : [translate('no_tags')]}
- allowUpdate={true}
- />
+ ref={tagsList => this.tagsList = tagsList}>
+ <TagsList tags={tags.length ? tags : [translate('no_tags')]} allowUpdate={true} />
</button>
{popupOpen &&
<div ref={tagsSelector => this.tagsSelector = tagsSelector}>
component={component.key}
metric={condition.measure.metric.key}
period={condition.period}
- periodDate={periodDate}
- >
+ periodDate={periodDate}>
{children}
</DrilldownLink>;
}
return (
<div
id="overview-quality-gate-conditions-list"
- className="overview-quality-gate-conditions-list clearfix"
- >
+ className="overview-quality-gate-conditions-list clearfix">
{sortedConditions.map(condition => (
<QualityGateCondition
key={condition.measure.metric.key}
href="#"
className="js-set-default"
data-qualifier={qualifier}
- onClick={this.setDefault.bind(this, qualifier)}
- >
+ onClick={this.setDefault.bind(this, qualifier)}>
{this.renderDropdownIcon(<i className="icon-check" />)}
{child}
</a>
groups={store.groups}
onSelectPermission={this.handleSelectPermission}
onToggleUser={this.handleToggleUser}
- onToggleGroup={this.handleToggleGroup}
- >
+ onToggleGroup={this.handleToggleGroup}>
<SearchForm
query={store.query}
import '../../../components/SelectList';
function getSearchUrl(permission, permissionTemplate) {
- return window.baseUrl +
- `/api/permissions/template_groups?ps=100&permission=${permission.key}&templateId=${permissionTemplate.id}`;
+ return `${window.baseUrl}/api/permissions/template_groups?` +
+ `ps=100&permission=${permission.key}&templateId=${permissionTemplate.id}`;
}
export default Modal.extend({
groups={this.props.groups}
onSelectPermission={this.props.onSelectPermission}
onToggleUser={this.handleToggleUser.bind(this)}
- onToggleGroup={this.handleToggleGroup.bind(this)}
- >
+ onToggleGroup={this.handleToggleGroup.bind(this)}>
<SearchForm
query={this.props.query}
groups={this.props.groups}
onSelectPermission={this.handleSelectPermission.bind(this)}
onToggleUser={this.handleToggleUser.bind(this)}
- onToggleGroup={this.handleToggleGroup.bind(this)}
- >
+ onToggleGroup={this.handleToggleGroup.bind(this)}>
<SearchForm
query={this.props.query}
<td
key={p.key}
className="text-center text-middle"
- style={{ backgroundColor: p.key === selectedPermission ? '#d9edf7' : 'transparent' }}
- >
+ style={{ backgroundColor: p.key === selectedPermission ? '#d9edf7' : 'transparent' }}>
<button className="button-clean" onClick={this.handleClick.bind(this, p.key)}>
{this.props.permissions.includes(p.key)
? <i className="icon-checkbox icon-checkbox-checked" />
className="permission-column text-center"
style={{
backgroundColor: p.key === selectedPermission ? '#d9edf7' : 'transparent'
- }}
- >
+ }}>
<div className="permission-column-inner">
<a
href="#"
title={`Filter by "${p.name}" permission`}
data-toggle="tooltip"
- onClick={this.handlePermissionClick.bind(this, p.key)}
- >
+ onClick={this.handlePermissionClick.bind(this, p.key)}>
{p.name}
</a>
<i className="icon-help little-spacer-left" title={p.description} data-toggle="tooltip" />
<form
className="search-box display-inline-block text-middle big-spacer-left"
- onSubmit={this.handleSubmit}
- >
+ onSubmit={this.handleSubmit}>
<button className="search-box-submit button-clean">
<i className="icon-search" />
</button>
<td
key={p.key}
className="text-center text-middle"
- style={{ backgroundColor: p.key === selectedPermission ? '#d9edf7' : 'transparent' }}
- >
+ style={{ backgroundColor: p.key === selectedPermission ? '#d9edf7' : 'transparent' }}>
<button className="button-clean" onClick={this.handleClick.bind(this, p.key)}>
{this.props.permissions.includes(p.key)
? <i className="icon-checkbox icon-checkbox-checked" />
id="update-key-tab-bulk"
className={tab === 'bulk' ? 'selected' : ''}
href="#"
- onClick={this.handleChangeTab.bind(this, 'bulk')}
- >
+ onClick={this.handleChangeTab.bind(this, 'bulk')}>
{translate('update_key.bulk_update')}
</a>
</li>
id="update-key-tab-fine"
className={tab === 'fine' ? 'selected' : ''}
href="#"
- onClick={this.handleChangeTab.bind(this, 'fine')}
- >
+ onClick={this.handleChangeTab.bind(this, 'fine')}>
{translate('update_key.fine_grained_key_update')}
</a>
</li>
<button
id="update-key-reset"
disabled={!hasChanged}
- onClick={this.handleReset.bind(this)}
- >
+ onClick={this.handleReset.bind(this)}>
{translate('reset_verb')}
</button>
</div>
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate(this.props.addEventButtonText)}</h2>
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate(this.props.changeEventButtonText)}</h2>
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate('project_activity.delete_analysis')}</h2>
contentLabel="modal form"
className="modal"
overlayClassName="modal-overlay"
- onRequestClose={this.closeForm}
- >
+ onRequestClose={this.closeForm}>
<header className="modal-head">
<h2>{translate(this.props.removeEventButtonText)}</h2>
</div>
<p className="page-description">
Use this page to delete multiple projects at once, or to provision projects
- if you would like to configure them before the first analysis. Note that once a project is provisioned, you
- have access to perform all project configurations on it.
+ {' '}
+ if you would like to configure them before the first analysis. Note that once
+ {' '}
+ a project is provisioned, you have access to perform all project configurations on it.
</p>
</header>
);
<td className="nowrap">
<Link
to={{ pathname: '/dashboard', query: { id: project.key } }}
- className="link-with-icon"
- >
+ className="link-with-icon">
<QualifierIcon qualifier={project.qualifier} />
{' '}
<span>{project.name}</span>
<button
onClick={this.deleteProjects}
className="button-red"
- disabled={!isSomethingSelected}
- >
+ disabled={!isSomethingSelected}>
Delete
</button>
</td>
to={pathnameForFavorite}
className="button"
activeClassName="button-active"
- onClick={this.handleSaveFavorite}
- >
+ onClick={this.handleSaveFavorite}>
{translate('my_favorites')}
</Link>
<IndexLink
to={pathnameForAll}
className="button"
activeClassName="button-active"
- onClick={this.handleSaveAll}
- >
+ onClick={this.handleSaveAll}>
{translate('all')}
</IndexLink>
</div>
property = 'languages';
renderOption = (option: string) => (
- <SearchableFilterOption optionKey={option} option={getLanguageByKey(this.props.languages, option)} />
+ <SearchableFilterOption
+ optionKey={option}
+ option={getLanguageByKey(this.props.languages, option)}
+ />
);
getSearchOptions(facet: {}, languages: {}) {
if (facet) {
languageKeys = difference(languageKeys, Object.keys(facet));
}
- return languageKeys.slice(0, LIST_SIZE).map(key => ({ label: languages[key].name, value: key }));
+ return languageKeys
+ .slice(0, LIST_SIZE)
+ .map(key => ({ label: languages[key].name, value: key }));
}
getSortedOptions(facet: {} = {}) {
<Link
onClick={this.blurLink}
className={this.getLinkClass('left')}
- to={this.getLinkPath('left')}
- >
+ to={this.getLinkPath('left')}>
{leftText}
</Link>
<Link
onClick={this.blurLink}
className={this.getLinkClass('right')}
- to={this.getLinkPath('right')}
- >
+ to={this.getLinkPath('right')}>
{rightText}
</Link>
</div>
if (search !== this.state.search) {
search = search || '';
this.setState({ search, isLoading: true });
- searchProjectTags({ q: search, ps: size(this.props.facet || {}) + LIST_SIZE }).then(result => {
+ searchProjectTags({
+ q: search,
+ ps: size(this.props.facet || {}) + LIST_SIZE
+ }).then(result => {
this.setState({ isLoading: false, tags: result.tags });
});
}
it('should render the languages without the ones in the facet', () => {
const wrapper = shallow(
- <LanguagesFilter query={{ languages: null }} languages={languages} router={fakeRouter} facet={languagesFacet} />
+ <LanguagesFilter
+ query={{ languages: null }}
+ languages={languages}
+ router={fakeRouter}
+ facet={languagesFacet}
+ />
);
expect(wrapper).toMatchSnapshot();
});
const fakeRouter = { push: () => {} };
it('should render the tags without the ones in the facet', () => {
- const wrapper = shallow(<TagsFilter query={{ tags: null }} router={fakeRouter} facet={tagsFacet} />);
+ const wrapper = shallow(
+ <TagsFilter query={{ tags: null }} router={fakeRouter} facet={tagsFacet} />
+ );
expect(wrapper).toMatchSnapshot();
wrapper.setState({ tags });
expect(wrapper).toMatchSnapshot();
color2: number
) {
const fullProjectName = this.props.displayOrganizations && project.organization
- ? `<div class="little-spacer-bottom">${project.organization.name} / <strong>${project.name}</strong></div>`
- : `<div class="little-spacer-bottom"><strong>${project.name}</strong></div>`;
+ ? `${project.organization.name} / <strong>${project.name}</strong>`
+ : `<strong>${project.name}</strong>`;
const inner = [
- fullProjectName,
+ `<div class="little-spacer-bottom">${fullProjectName}</div>`,
this.getMetricTooltip({ key: COLOR_METRIC_1, type: COLOR_METRIC_TYPE }, color1),
this.getMetricTooltip({ key: COLOR_METRIC_2, type: COLOR_METRIC_TYPE }, color2),
this.getMetricTooltip({ key: Y_METRIC, type: Y_METRIC_TYPE }, y),
getTooltip(project: Project, x: ?number, y: ?number, size: ?number, color?: number) {
const fullProjectName = this.props.displayOrganizations && project.organization
- ? `<div class="little-spacer-bottom">${project.organization.name} / <strong>${project.name}</strong></div>`
- : `<div class="little-spacer-bottom"><strong>${project.name}</strong></div>`;
+ ? `${project.organization.name} / <strong>${project.name}</strong>`
+ : `<strong>${project.name}</strong>`;
const inner = [
- fullProjectName,
+ `<div class="little-spacer-bottom">${fullProjectName}</div>`,
this.getMetricTooltip(this.props.xMetric, x),
this.getMetricTooltip(this.props.yMetric, y),
this.getMetricTooltip(this.props.sizeMetric, size)
{translate('metric', yMetric.key, 'name')}
</div>
<div className="measure-details-bubble-chart-axis size">
- {colorMetric != null && <span className="spacer-right">
- {translateWithParameters(
- 'component_measures.legend.color_x',
- translate('metric', colorMetric, 'name')
- )}
- </span>}
+ {colorMetric != null &&
+ <span className="spacer-right">
+ {translateWithParameters(
+ 'component_measures.legend.color_x',
+ translate('metric', colorMetric, 'name')
+ )}
+ </span>}
{translateWithParameters(
'component_measures.legend.size_x',
translate('metric', sizeMetric.key, 'name')
<button
className="update-condition"
disabled={!this.state.changed}
- onClick={this.handleUpdateClick.bind(this)}
- >
+ onClick={this.handleUpdateClick.bind(this)}>
{translate('update_verb')}
</button>
<button
className="button-red delete-condition"
- onClick={this.handleDeleteClick.bind(this)}
- >
+ onClick={this.handleDeleteClick.bind(this)}>
{translate('delete')}
</button>
</div>
<a
className="action cancel-add-condition"
href="#"
- onClick={this.handleCancelClick.bind(this)}
- >
+ onClick={this.handleCancelClick.bind(this)}>
{translate('cancel')}
</a>
</div>}
to={`/quality_gates/show/${qualityGate.id}`}
activeClassName="active"
className="list-group-item"
- data-id={qualityGate.id}
- >
+ data-id={qualityGate.id}>
<table>
<tbody>
<tr>
<li>
<Link
to={{ pathname: '/profiles/compare', query: { key: profile.key } }}
- id="quality-profile-compare"
- >
+ id="quality-profile-compare">
{translate('compare')}
</Link>
</li>
<a
id="quality-profile-set-as-default"
href="#"
- onClick={this.handleSetDefaultClick.bind(this)}
- >
+ onClick={this.handleSetDefaultClick.bind(this)}>
{translate('set_as_default')}
</a>
</li>}
<Link
to={{ pathname: '/profiles/show', query }}
activeClassName="link-no-underline"
- {...other}
- >
+ {...other}>
{children}
</Link>
);
location={{ query: { key: 'profile1' } }}
profiles={profiles}
canAdmin={false}
- updateProfiles={updateProfiles}
- >
+ updateProfiles={updateProfiles}>
<div />
</ProfileContainer>
);
location={{ query: { key: 'random' } }}
profiles={profiles}
canAdmin={false}
- updateProfiles={() => true}
- >
+ updateProfiles={() => true}>
<div />
</ProfileContainer>
);
location={{ query: { key: 'profile1' } }}
profiles={profiles}
canAdmin={false}
- updateProfiles={updateProfiles}
- >
+ updateProfiles={updateProfiles}>
<div />
</ProfileContainer>
);
{' / '}
<Link
to={{ pathname: '/profiles/', query: { language: profile.language } }}
- className="text-muted"
- >
+ className="text-muted">
{profile.languageName}
</Link>
</div>
<li>
<Link
to={{ pathname: '/profiles/changelog', query: { key: profile.key } }}
- className="button"
- >
+ className="button">
{translate('changelog')}
</Link>
</li>
<li key={project.uuid} className="spacer-top js-profile-project" data-key={project.key}>
<Link
to={{ pathname: '/dashboard', query: { id: project.key } }}
- className="link-with-icon"
- >
+ className="link-with-icon">
<QualifierIcon qualifier="TRK" />
{' '}
<span>{project.name}</span>
{', '}
<Link
to={getDeprecatedActiveRulesUrl({ qprofile: profile.key })}
- className="text-muted"
- >
+ className="text-muted">
{translateWithParameters(
'quality_profile.x_rules',
profile.activeDeprecatedRuleCount
<a
href="#"
id="quality-profiles-restore"
- onClick={this.handleRestoreClick.bind(this)}
- >
+ onClick={this.handleRestoreClick.bind(this)}>
{translate('quality_profiles.restore_profile')}
</a>
</li>
<a
href="#"
id="quality-profiles-restore-built-in"
- onClick={this.handleRestoreBuiltIn.bind(this)}
- >
+ onClick={this.handleRestoreBuiltIn.bind(this)}>
{translate('quality_profiles.restore_built_in_profiles')}
</a>
</li>
<a
className="dropdown-toggle link-no-underline js-language-filter"
href="#"
- data-toggle="dropdown"
- >
+ data-toggle="dropdown">
{label} <i className="icon-dropdown" />
</a>
);
<IndexLink
to={{ pathname: '/profiles/', query: { language: language.key } }}
className="js-language-filter-option"
- data-language={language.key}
- >
+ data-language={language.key}>
{language.name}
</IndexLink>
</li>
to={deprecatedRulesUrl}
className="badge badge-normal-size badge-danger-light"
title={translate('quality_profiles.deprecated_rules')}
- data-toggle="tooltip"
- >
+ data-toggle="tooltip">
{profile.activeDeprecatedRuleCount}
</Link>
</span>}
<tr
className="quality-profiles-table-row"
data-key={this.props.profile.key}
- data-name={this.props.profile.name}
- >
+ data-name={this.props.profile.name}>
<td className="quality-profiles-table-name">
{this.renderName()}
</td>
<a
href={`${window.baseUrl}/sessions/init/${identityProvider.key}`}
style={{ backgroundColor: identityProvider.backgroundColor }}
- title={`Log in with ${identityProvider.name}`}
- >
+ title={`Log in with ${identityProvider.name}`}>
<img
alt={identityProvider.name}
width="20"
return (
<div className="text-center">
<p id="unauthorized">
- You're not authorized to access this page. Please contact the administrator.
+ {'You\'re not authorized to access this page. Please contact the administrator.'}
</p>
{!!message &&
<button
className="js-cancel-changes big-spacer-left button-link"
- onClick={e => this.handleCancelChange(e)}
- >
+ onClick={e => this.handleCancelChange(e)}>
{translate('cancel')}
</button>
</div>
<div className="display-inline-block spacer-left">
<button
className="js-remove-value button-clean"
- onClick={e => this.handleDeleteValue(e, index)}
- >
+ onClick={e => this.handleDeleteValue(e, index)}>
<i className="icon-delete" />
</button>
</div>}
{!isLast &&
<button
className="js-remove-value button-link"
- onClick={e => this.handleDeleteValue(e, index)}
- >
+ onClick={e => this.handleDeleteValue(e, index)}>
<i className="icon-delete" />
</button>}
</td>
<div>
<table
className="data zebra-hover no-outer-padding"
- style={{ width: 'auto', minWidth: 480, marginTop: -12 }}
- >
+ style={{ width: 'auto', minWidth: 480, marginTop: -12 }}>
<thead>
<tr>
{setting.definition.fields.map(field => (
<form
id="encryption-form"
className="big-spacer-bottom"
- onSubmit={e => this.handleEncrypt(e)}
- >
+ onSubmit={e => this.handleEncrypt(e)}>
<input
id="encryption-form-value"
className="input-large"
<div className="huge-spacer-top bordered-top">
<div className="big-spacer-top spacer-bottom">
- Note that the secret key can be changed, but all the encrypted properties will have to be updated.
+ Note that the secret key can be changed, but all the encrypted properties
+ {' '}
+ will have to be updated.
{' '}
<a href="https://redirect.sonarsource.com/doc/settings-encryption.html">
More information
has been set or changed.
</li>
<li className="spacer-bottom">
- Copy this file on all the machines that execute code inspection. Define the property
- {' '}<code>sonar.secretKeyPath</code> on those machines if the path is not
- {' '}<code>~/.sonar/sonar-secret.txt</code>.
+ Copy this file on all the machines that execute code inspection. Define the
+ {' '}
+ property <code>sonar.secretKeyPath</code> on those machines if the path is not
+ {' '}
+ <code>~/.sonar/sonar-secret.txt</code>.
</li>
<li>
- For each property that you want to encrypt, generate the encrypted value and replace the original
- value wherever it is stored (configuration files, command lines).
+ For each property that you want to encrypt, generate the encrypted value and
+ {' '}
+ replace the original value wherever it is stored
+ {' '}
+ (configuration files, command lines).
</li>
</ul>
</div>
<button
id="restart-server-button"
className="big-spacer-left"
- onClick={this.handleServerRestart}
- >
+ onClick={this.handleServerRestart}>
Restart Server
</button>
</div>
props: Props;
state: State = {
query: ''
- }
+ };
constructor(props: Props) {
super(props);
handleSearch = (query: string) => {
this.props.onSearch(query);
- }
+ };
handleInputChange = ({ target }: { target: HTMLInputElement }) => {
this.setState({ query: target.value });
touched: query != null && query.length === 1
});
return (
- <div className={searchBoxClass}>
- <button className="search-box-submit button-clean">
- <i className="icon-search" />
- </button>
- <input
- type="search"
- value={query}
- className={inputClassName}
- placeholder={translate('search_verb')}
- onChange={this.handleInputChange}
- autoComplete="off"
- />
- <span className="note spacer-left text-middle">
- {translateWithParameters('select2.tooShort', 2)}
- </span>
- </div>
+ <div className={searchBoxClass}>
+ <button className="search-box-submit button-clean">
+ <i className="icon-search" />
+ </button>
+ <input
+ type="search"
+ value={query}
+ className={inputClassName}
+ placeholder={translate('search_verb')}
+ onChange={this.handleInputChange}
+ autoComplete="off"
+ />
+ <span className="note spacer-left text-middle">
+ {translateWithParameters('select2.tooShort', 2)}
+ </span>
+ </div>
);
}
}
onMouseDown={this.handleMouseDown}
onMouseEnter={this.handleMouseEnter}
onMouseMove={this.handleMouseMove}
- title={user.name}
- >
+ title={user.name}>
<div className="little-spacer-bottom little-spacer-top">
<Avatar hash={user.avatar} email={user.email} size={AVATAR_SIZE} />
<strong className="spacer-left">{user.login}</strong>
const user = this.props.value;
return (
<div className="Select-value" title={user ? user.name : ''}>
- {user && user.login &&
+ {user &&
+ user.login &&
<div className="Select-value-label">
<Avatar hash={user.avatar} email={user.email} size={AVATAR_SIZE} />
<strong className="spacer-left">{user.login}</strong>
<a
className={classNames({ selected: showParams })}
href="#"
- onClick={this.handleShowParamsClick}
- >
+ onClick={this.handleShowParamsClick}>
Parameters
</a>
</li>}
<a
className={classNames({ selected: showResponse })}
href="#"
- onClick={this.handleShowResponseClick}
- >
+ onClick={this.handleShowResponseClick}>
Response Example
</a>
</li>}
<a
className={classNames({ selected: showChangelog })}
href="#"
- onClick={this.handleChangelogClick}
- >
+ onClick={this.handleChangelogClick}>
Changelog
</a>
</li>}
<span
className="badge badge-warning"
title={translate('api_documentation.deprecation_tooltip')}
- data-toggle="tooltip"
- >
+ data-toggle="tooltip">
{label}
</span>
);
<span
className="badge badge-danger"
title={translate('api_documentation.internal_tooltip')}
- data-toggle="tooltip"
- >
+ data-toggle="tooltip">
internal
</span>
);
className={classNames('list-group-item', {
active: isDomainPathActive(domain.path, splat)
})}
- to={'/web_api/' + domain.path}
- >
+ to={'/web_api/' + domain.path}>
<h3 className="list-group-item-heading">
{domain.path}
{domain.deprecated && <DeprecatedBadge />}
tabIndex="0"
role="checkbox"
aria-checked={showInternal ? 'true' : 'false'}
- onClick={onToggleInternal}
- >
+ onClick={onToggleInternal}>
Show Internal API
</span>
<i
tabIndex="0"
role="checkbox"
aria-checked={showDeprecated ? 'true' : 'false'}
- onClick={onToggleDeprecated}
- >
+ onClick={onToggleDeprecated}>
Show Deprecated API
</span>
<i
</div>
: <button
className="js-component-viewer-source-before"
- onClick={this.props.loadSourcesBefore}
- >
+ onClick={this.props.loadSourcesBefore}>
{translate('source_viewer.load_more_code')}
</button>}
</div>}
</div>
: <button
className="js-component-viewer-source-after"
- onClick={this.props.loadSourcesAfter}
- >
+ onClick={this.props.loadSourcesAfter}>
{translate('source_viewer.load_more_code')}
</button>}
</div>}
const isUnitTest = q === 'UTS';
// TODO check if source viewer is displayed inside workspace
const workspace = false;
- const rawSourcesLink = `${window.baseUrl}/api/sources/raw?key=${encodeURIComponent(this.props.component.key)}`;
+ const rawSourcesLink = window.baseUrl +
+ `/api/sources/raw?key=${encodeURIComponent(this.props.component.key)}`;
// TODO favorite
return (
<Link
to={getIssuesUrl({ resolved: 'false', componentKeys: key })}
className="source-viewer-header-external-link"
- target="_blank"
- >
+ target="_blank">
{measures.issues != null ? formatMeasure(measures.issues, 'SHORT_INT') : 0}
{' '}
<i className="icon-detach" />
this,
flowIndex,
locations.length - locationIndex - 1
- )}
- >
+ )}>
{displayIndex && <strong>{locationIndex + 1}: </strong>}
{location.msg}
</a>
<div
ref={node => this.rootNode = node}
className="source-issue-locations"
- style={{ width, height }}
- >
+ style={{ width, height }}>
<div
ref={node => this.fixedNode = node}
className={className}
- style={{ width, height }}
- >
+ style={{ width, height }}>
<header className="source-issue-locations-header" />
<div className="source-issue-locations-shortcuts">
<span className="shortcut-button">Alt</span>
{' + '}
- <span className="shortcut-button">↑</span>
+ <span className="shortcut-button">↑</span>
{' '}
- <span className="shortcut-button">↓</span>
+ <span className="shortcut-button">↓</span>
{' '}
{translate('source_viewer.to_navigate_issue_locations')}
</div>
<ul
ref={node => this.node = node}
className="source-issue-locations-list"
- style={{ height: height - 15 }}
- >
+ style={{ height: height - 15 }}>
{flows.map(
(flow, flowIndex) =>
flow.locations != null &&
className={className}
title={location.msg}
onClick={e =>
- this.handleLocationMessageClick(e, location.flowIndex, location.locationIndex)}
- >
+ this.handleLocationMessageClick(e, location.flowIndex, location.locationIndex)}>
{location.index && <strong>{location.index}: </strong>}
{location.msg ? limitString(location.msg) : ''}
</a>
data-toggle={line.coverageStatus != null ? 'tooltip' : undefined}
role={line.coverageStatus != null ? 'button' : undefined}
tabIndex={line.coverageStatus != null ? 0 : undefined}
- onClick={line.coverageStatus != null ? this.handleClick : undefined}
- >
+ onClick={line.coverageStatus != null ? this.handleClick : undefined}>
<div className="source-line-bar" />
</td>
);
data-toggle={duplicated ? 'tooltip' : undefined}
role={duplicated ? 'button' : undefined}
tabIndex={duplicated ? '0' : undefined}
- onClick={duplicated ? this.handleClick : undefined}
- >
+ onClick={duplicated ? this.handleClick : undefined}>
<div className="source-line-bar" />
</td>
);
data-toggle={line.duplicated ? 'tooltip' : undefined}
role={line.duplicated ? 'button' : undefined}
tabIndex={line.duplicated ? 0 : undefined}
- onClick={line.duplicated ? this.handleClick : undefined}
- >
+ onClick={line.duplicated ? this.handleClick : undefined}>
<div className="source-line-bar" />
</td>
);
data-line-number={line.line}
role={hasIssues ? 'button' : undefined}
tabIndex={hasIssues ? '0' : undefined}
- onClick={hasIssues ? this.handleClick : undefined}
- >
+ onClick={hasIssues ? this.handleClick : undefined}>
{mostImportantIssue != null && <SeverityIcon severity={mostImportantIssue.severity} />}
{issues.length > 1 && <span className="source-line-issues-counter">{issues.length}</span>}
</td>
data-line-number={line.line}
role={clickable ? 'button' : undefined}
tabIndex={clickable ? 0 : undefined}
- onClick={clickable ? this.handleClick : undefined}
- >
+ onClick={clickable ? this.handleClick : undefined}>
{this.isSCMChanged(line, previousLine) &&
<div className="source-line-scm-inner" data-author={line.scmAuthor} />}
</td>
getPermalink(e) {
e.preventDefault();
const { component, line } = this.options;
- const url = `${window.baseUrl}/component/index?id=${encodeURIComponent(component.key)}&line=${line}`;
+ const url = window.baseUrl +
+ `/component/index?id=${encodeURIComponent(component.key)}&line=${line}`;
const windowParams = 'resizable=1,scrollbars=1,status=1';
window.open(url, component.name, windowParams);
}
.map(event => {
const key = `${event.date.getTime()}-${event.snapshot.y}`;
const className = `line-chart-point js-event-circle-${event.date.getTime()}`;
+ const value = event.snapshot.y ? this.props.formatValue(event.snapshot.y) : '—';
const tooltip = [
`<span class="nowrap">${event.version}</span>`,
`<span class="nowrap">${moment(event.date).format('LL')}</span>`,
- `<span class="nowrap">${event.snapshot.y ? this.props.formatValue(event.snapshot.y) : '—'}</span>`
+ `<span class="nowrap">${value}</span>`
].join('<br>');
return (
<circle
className={activeClass}
onClick={this.handleSelect}
onMouseOver={this.handleHover}
- onFocus={this.handleHover}
- >
+ onFocus={this.handleHover}>
<i className={className} />{' '}{this.props.custom && '+ '}{this.props.element}
</a>
</li>
/>
<span className="date-input-control-icon">
<svg width="14" height="14" viewBox="0 0 16 16">
- <path d="M5.5 6h2v2h-2V6zm3 0h2v2h-2V6zm3 0h2v2h-2V6zm-9 6h2v2h-2v-2zm3 0h2v2h-2v-2zm3 0h2v2h-2v-2zm-3-3h2v2h-2V9zm3 0h2v2h-2V9zm3 0h2v2h-2V9zm-9 0h2v2h-2V9zm11-9v1h-2V0h-7v1h-2V0h-2v16h15V0h-2zm1 15h-13V4h13v11z" />
+ <path
+ d="M5.5 6h2v2h-2V6zm3 0h2v2h-2V6zm3 0h2v2h-2V6zm-9 6h2v2h-2v-2zm3 0h2v2h-2v-2zm3 0h2v2h-2v-2zm-3-3h2v2h-2V9zm3 0h2v2h-2V9zm3 0h2v2h-2V9zm-9 0h2v2h-2V9zm11-9v1h-2V0h-7v1h-2V0h-2v16h15V0h-2zm1 15h-13V4h13v11z"
+ />
</svg>
</span>
</span>
/* eslint max-len: 0 */
return (
<svg width="16" height="16">
- <path d="M15.4275,5.77678C15.4275,5.90773 15.3501,6.05059 15.1953,6.20536L11.9542,9.36608L12.7221,13.8304C12.728,13.872 12.731,13.9316 12.731,14.0089C12.731,14.1339 12.6998,14.2396 12.6373,14.3259C12.5748,14.4122 12.484,14.4554 12.3649,14.4554C12.2518,14.4554 12.1328,14.4197 12.0078,14.3482L7.99888,12.2411L3.98995,14.3482C3.85901,14.4197 3.73996,14.4554 3.63281,14.4554C3.50781,14.4554 3.41406,14.4122 3.35156,14.3259C3.28906,14.2396 3.25781,14.1339 3.25781,14.0089C3.25781,13.9732 3.26377,13.9137 3.27567,13.8304L4.04353,9.36608L0.793531,6.20536C0.644719,6.04464 0.570313,5.90178 0.570313,5.77678C0.570313,5.55654 0.736979,5.41964 1.07031,5.36606L5.55245,4.71428L7.56138,0.651781C7.67447,0.407729 7.8203,0.285703 7.99888,0.285703C8.17745,0.285703 8.32328,0.407729 8.43638,0.651781L10.4453,4.71428L14.9274,5.36606C15.2608,5.41964 15.4274,5.55654 15.4274,5.77678L15.4275,5.77678Z" />
+ <path
+ d="M15.4275,5.77678C15.4275,5.90773 15.3501,6.05059 15.1953,6.20536L11.9542,9.36608L12.7221,13.8304C12.728,13.872 12.731,13.9316 12.731,14.0089C12.731,14.1339 12.6998,14.2396 12.6373,14.3259C12.5748,14.4122 12.484,14.4554 12.3649,14.4554C12.2518,14.4554 12.1328,14.4197 12.0078,14.3482L7.99888,12.2411L3.98995,14.3482C3.85901,14.4197 3.73996,14.4554 3.63281,14.4554C3.50781,14.4554 3.41406,14.4122 3.35156,14.3259C3.28906,14.2396 3.25781,14.1339 3.25781,14.0089C3.25781,13.9732 3.26377,13.9137 3.27567,13.8304L4.04353,9.36608L0.793531,6.20536C0.644719,6.04464 0.570313,5.90178 0.570313,5.77678C0.570313,5.55654 0.736979,5.41964 1.07031,5.36606L5.55245,4.71428L7.56138,0.651781C7.67447,0.407729 7.8203,0.285703 7.99888,0.285703C8.17745,0.285703 8.32328,0.407729 8.43638,0.651781L10.4453,4.71428L14.9274,5.36606C15.2608,5.41964 15.4274,5.55654 15.4274,5.77678L15.4275,5.77678Z"
+ />
</svg>
);
}
/* eslint max-len: 0 */
return (
<svg width="16" height="16">
- <path d="M15.4275,5.77678C15.4275,5.90773 15.3501,6.05059 15.1953,6.20536L11.9542,9.36608L12.7221,13.8304C12.728,13.872 12.731,13.9316 12.731,14.0089C12.731,14.1339 12.6998,14.2396 12.6373,14.3259C12.5748,14.4122 12.484,14.4554 12.3649,14.4554C12.2518,14.4554 12.1328,14.4197 12.0078,14.3482L7.99888,12.2411L3.98995,14.3482C3.85901,14.4197 3.73996,14.4554 3.63281,14.4554C3.50781,14.4554 3.41406,14.4122 3.35156,14.3259C3.28906,14.2396 3.25781,14.1339 3.25781,14.0089C3.25781,13.9732 3.26377,13.9137 3.27567,13.8304L4.04353,9.36608L0.793531,6.20536C0.644719,6.04464 0.570313,5.90178 0.570313,5.77678C0.570313,5.55654 0.736979,5.41964 1.07031,5.36606L5.55245,4.71428L7.56138,0.651781C7.67447,0.407729 7.8203,0.285703 7.99888,0.285703C8.17745,0.285703 8.32328,0.407729 8.43638,0.651781L10.4453,4.71428L14.9274,5.36606C15.2608,5.41964 15.4274,5.55654 15.4274,5.77678L15.4275,5.77678Z" />
+ <path
+ d="M15.4275,5.77678C15.4275,5.90773 15.3501,6.05059 15.1953,6.20536L11.9542,9.36608L12.7221,13.8304C12.728,13.872 12.731,13.9316 12.731,14.0089C12.731,14.1339 12.6998,14.2396 12.6373,14.3259C12.5748,14.4122 12.484,14.4554 12.3649,14.4554C12.2518,14.4554 12.1328,14.4197 12.0078,14.3482L7.99888,12.2411L3.98995,14.3482C3.85901,14.4197 3.73996,14.4554 3.63281,14.4554C3.50781,14.4554 3.41406,14.4122 3.35156,14.3259C3.28906,14.2396 3.25781,14.1339 3.25781,14.0089C3.25781,13.9732 3.26377,13.9137 3.27567,13.8304L4.04353,9.36608L0.793531,6.20536C0.644719,6.04464 0.570313,5.90178 0.570313,5.77678C0.570313,5.55654 0.736979,5.41964 1.07031,5.36606L5.55245,4.71428L7.56138,0.651781C7.67447,0.407729 7.8203,0.285703 7.99888,0.285703C8.17745,0.285703 8.32328,0.407729 8.43638,0.651781L10.4453,4.71428L14.9274,5.36606C15.2608,5.41964 15.4274,5.55654 15.4274,5.77678L15.4275,5.77678Z"
+ />
</svg>
);
}
{message.message}
<button
className="process-spinner-close"
- onClick={() => this.props.closeGlobalMessage(message.id)}
- >
+ onClick={() => this.props.closeGlobalMessage(message.id)}>
<i className="icon-close" />
</button>
</div>
<button
className={className}
name={this.props.name}
- onClick={e => this.handleClick(e, booleanValue)}
- >
+ onClick={e => this.handleClick(e, booleanValue)}>
<div className="boolean-toggle-handle" />
</button>
);
return (
<div
className="overview-bar-chart"
- style={{ height: HEIGHT, paddingTop: 10, paddingBottom: 15 }}
- >
+ style={{ height: HEIGHT, paddingTop: 10, paddingBottom: 15 }}>
{this.renderBarChart()}
</div>
);
return (
<svg width="16" height="16" className="icon-pending">
<g transform="matrix(0.0364583,0,0,0.0364583,1,-0.166667)">
- <path d="M224,136L224,248C224,250.333 223.25,252.25 221.75,253.75C220.25,255.25 218.333,256 216,256L136,256C133.667,256 131.75,255.25 130.25,253.75C128.75,252.25 128,250.333 128,248L128,232C128,229.667 128.75,227.75 130.25,226.25C131.75,224.75 133.667,224 136,224L192,224L192,136C192,133.667 192.75,131.75 194.25,130.25C195.75,128.75 197.667,128 200,128L216,128C218.333,128 220.25,128.75 221.75,130.25C223.25,131.75 224,133.667 224,136ZM328,224C328,199.333 321.917,176.583 309.75,155.75C297.583,134.917 281.083,118.417 260.25,106.25C239.417,94.083 216.667,88 192,88C167.333,88 144.583,94.083 123.75,106.25C102.917,118.417 86.417,134.917 74.25,155.75C62.083,176.583 56,199.333 56,224C56,248.667 62.083,271.417 74.25,292.25C86.417,313.083 102.917,329.583 123.75,341.75C144.583,353.917 167.333,360 192,360C216.667,360 239.417,353.917 260.25,341.75C281.083,329.583 297.583,313.083 309.75,292.25C321.917,271.417 328,248.667 328,224ZM384,224C384,258.833 375.417,290.958 358.25,320.375C341.083,349.792 317.792,373.083 288.375,390.25C258.958,407.417 226.833,416 192,416C157.167,416 125.042,407.417 95.625,390.25C66.208,373.083 42.917,349.792 25.75,320.375C8.583,290.958 0,258.833 0,224C0,189.167 8.583,157.042 25.75,127.625C42.917,98.208 66.208,74.917 95.625,57.75C125.042,40.583 157.167,32 192,32C226.833,32 258.958,40.583 288.375,57.75C317.792,74.917 341.083,98.208 358.25,127.625C375.417,157.042 384,189.167 384,224Z" />
+ <path
+ d="M224,136L224,248C224,250.333 223.25,252.25 221.75,253.75C220.25,255.25 218.333,256 216,256L136,256C133.667,256 131.75,255.25 130.25,253.75C128.75,252.25 128,250.333 128,248L128,232C128,229.667 128.75,227.75 130.25,226.25C131.75,224.75 133.667,224 136,224L192,224L192,136C192,133.667 192.75,131.75 194.25,130.25C195.75,128.75 197.667,128 200,128L216,128C218.333,128 220.25,128.75 221.75,130.25C223.25,131.75 224,133.667 224,136ZM328,224C328,199.333 321.917,176.583 309.75,155.75C297.583,134.917 281.083,118.417 260.25,106.25C239.417,94.083 216.667,88 192,88C167.333,88 144.583,94.083 123.75,106.25C102.917,118.417 86.417,134.917 74.25,155.75C62.083,176.583 56,199.333 56,224C56,248.667 62.083,271.417 74.25,292.25C86.417,313.083 102.917,329.583 123.75,341.75C144.583,353.917 167.333,360 192,360C216.667,360 239.417,353.917 260.25,341.75C281.083,329.583 297.583,313.083 309.75,292.25C321.917,271.417 328,248.667 328,224ZM384,224C384,258.833 375.417,290.958 358.25,320.375C341.083,349.792 317.792,373.083 288.375,390.25C258.958,407.417 226.833,416 192,416C157.167,416 125.042,407.417 95.625,390.25C66.208,373.083 42.917,349.792 25.75,320.375C8.583,290.958 0,258.833 0,224C0,189.167 8.583,157.042 25.75,127.625C42.917,98.208 66.208,74.917 95.625,57.75C125.042,40.583 157.167,32 192,32C226.833,32 258.958,40.583 288.375,57.75C317.792,74.917 341.083,98.208 358.25,127.625C375.417,157.042 384,189.167 384,224Z"
+ />
</g>
</svg>
);
return (
<BubblePopup
position={this.props.position}
- customClass="bubble-popup-bottom-right bubble-popup-menu abs-width-300"
- >
+ customClass="bubble-popup-bottom-right bubble-popup-menu abs-width-300">
<MultiSelect
elements={this.props.tags}
selectedElements={this.props.selectedTags}
import { translate, translateWithParameters } from '../../helpers/l10n';
module.exports = function(severity) {
- const label = `<i class="icon-severity-${severity.toLowerCase()}"></i> ${translate('severity', severity)}`;
+ const label = `<i class="icon-severity-${severity.toLowerCase()}"></i>` +
+ ` ${translate('severity', severity)}`;
const message = translateWithParameters('quality_profiles.severity_set_to_x', label);
return new Handlebars.default.SafeString(message);
};
module.exports = function(severity) {
return new Handlebars.default.SafeString(
- `<i class="icon-severity-${severity.toLowerCase()}"></i> ${translate('severity', severity)}`
+ `<i class="icon-severity-${severity.toLowerCase()}"></i>` +
+ ` ${translate('severity', severity)}`
);
};
import { translate } from '../../helpers/l10n';
module.exports = function(status, resolution) {
- let s = `<i class="icon-status-${status.toLowerCase()}"></i> ${translate('issue.status', status)}`;
+ let s = `<i class="icon-status-${status.toLowerCase()}"></i>` +
+ ` ${translate('issue.status', status)}`;
if (resolution != null) {
s = s + ' (' + translate('issue.resolution', resolution) + ')';
}
return new Promise((resolve, reject) => {
if (response.status === 401) {
// workaround cyclic dependencies
- const handleRequiredAuthentication = require('../app/utils/handleRequiredAuthentication').default;
- handleRequiredAuthentication();
+ const requireAuthentication = require('../app/utils/handleRequiredAuthentication').default;
+ requireAuthentication();
reject();
} else if (response.status >= 200 && response.status < 300) {
resolve(response);
return [
{
id: uniqueId('global-message-'),
- message: 'You are not authorized to access this page. Please log in with more privileges and try again.',
+ message: 'You are not authorized to access this page. ' +
+ 'Please log in with more privileges and try again.',
level: ERROR
}
];
organizations
});
-export const receiveOrganizationGroups = (key: string, groups: Array<OrgGroup>): receiveOrganizationGroups => ({
+export const receiveOrganizationGroups = (
+ key: string,
+ groups: Array<OrgGroup>
+): receiveOrganizationGroups => ({
type: 'RECEIVE_ORGANIZATION_GROUPS',
key,
groups
export const getOrganizationByKey = (state: State, key: string): Organization => state.byKey[key];
-export const getOrganizationGroupsByKey = (state: State, key: string): Array<OrgGroup> => state.groups[key] || [];
+export const getOrganizationGroupsByKey = (state: State, key: string): Array<OrgGroup> =>
+ state.groups[key] || [];
export const getMyOrganizations = (state: State): Array<Organization> =>
state.my.map(key => getOrganizationByKey(state, key));
REMOVE_MEMBER: 'organizations/REMOVE_MEMBER'
};
-export const receiveMembers = (organizationKey: string, members: Array<Member>, stateChanges: MembersState) => ({
+export const receiveMembers = (
+ organizationKey: string,
+ members: Array<Member>,
+ stateChanges: MembersState
+) => ({
type: actions.RECEIVE_MEMBERS,
organization: organizationKey,
members,
stateChanges
});
-export const receiveMoreMembers = (organizationKey: string, members: Array<Member>, stateChanges: MembersState) => ({
+export const receiveMoreMembers = (
+ organizationKey: string,
+ members: Array<Member>,
+ stateChanges: MembersState
+) => ({
type: actions.RECEIVE_MORE_MEMBERS,
organization: organizationKey,
members,
member
});
-export const updateState = (
- organizationKey: string,
- stateChanges: MembersState
-) => ({
+export const updateState = (organizationKey: string, stateChanges: MembersState) => ({
type: actions.UPDATE_STATE,
organization: organizationKey,
stateChanges
case actions.UPDATE_STATE:
return { ...state, ...action.stateChanges };
case actions.RECEIVE_MEMBERS:
- return { ...state, ...action.stateChanges, members: action.members.map(member => member.login) };
+ return {
+ ...state,
+ ...action.stateChanges,
+ members: action.members.map(member => member.login)
+ };
case actions.RECEIVE_MORE_MEMBERS:
return {
...state,
import measures, * as fromMeasures from './measures/reducer';
import notifications, * as fromNotifications from './notifications/duck';
import organizations, * as fromOrganizations from './organizations/duck';
-import organizationsMembers, * as fromOrganizationsMembers
- from './organizationsMembers/reducer';
+import organizationsMembers, * as fromOrganizationsMembers from './organizationsMembers/reducer';
import globalMessages, * as fromGlobalMessages from './globalMessages/duck';
import projectActivity from './projectActivity/duck';
import measuresApp, * as fromMeasuresApp from '../apps/component-measures/store/rootReducer';
dependencies:
acorn "^3.0.4"
+acorn@4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
+
acorn@^2.1.0, acorn@^2.4.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
mkdirp "^0.5.1"
source-map-support "^0.4.2"
-babel-runtime@6.x, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.9.0:
+babel-runtime@6.x, babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.23.0, babel-runtime@^6.9.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-runtime@^6.11.6, babel-runtime@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611"
dependencies:
dependencies:
graceful-readlink ">= 1.0.0"
+common-tags@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0"
+ dependencies:
+ babel-runtime "^6.18.0"
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@^1.4.6:
+concat-stream@^1.4.6, concat-stream@^1.5.2:
version "1.6.0"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
dependencies:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+dlv@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7"
+
doctrine@1.5.0, doctrine@^1.2.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
esutils "^2.0.2"
isarray "^1.0.0"
+doctrine@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
dom-align@1.x:
version "1.5.3"
resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.5.3.tgz#b906b616822a5e599f579ec8505e367c51da7588"
text-table "~0.2.0"
user-home "^2.0.0"
+eslint@^3.17.0:
+ version "3.18.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b"
+ dependencies:
+ babel-code-frame "^6.16.0"
+ chalk "^1.1.3"
+ concat-stream "^1.5.2"
+ debug "^2.1.1"
+ doctrine "^2.0.0"
+ escope "^3.6.0"
+ espree "^3.4.0"
+ esquery "^1.0.0"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ glob "^7.0.3"
+ globals "^9.14.0"
+ ignore "^3.2.0"
+ imurmurhash "^0.1.4"
+ inquirer "^0.12.0"
+ is-my-json-valid "^2.10.0"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.5.1"
+ json-stable-stringify "^1.0.0"
+ levn "^0.3.0"
+ lodash "^4.0.0"
+ mkdirp "^0.5.0"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.1"
+ pluralize "^1.2.1"
+ progress "^1.1.8"
+ require-uncached "^1.0.2"
+ shelljs "^0.7.5"
+ strip-bom "^3.0.0"
+ strip-json-comments "~2.0.1"
+ table "^3.7.8"
+ text-table "~0.2.0"
+ user-home "^2.0.0"
+
espree@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.3.2.tgz#dbf3fadeb4ecb4d4778303e50103b3d36c88b89c"
acorn "^4.0.1"
acorn-jsx "^3.0.0"
+espree@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d"
+ dependencies:
+ acorn "4.0.4"
+ acorn-jsx "^3.0.0"
+
esprima@^2.6.0, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
version "3.0.0"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9"
+esquery@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+ dependencies:
+ estraverse "^4.0.0"
+
esrecurse@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
version "1.9.3"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
path-exists "^2.0.0"
pinkie-promise "^2.0.0"
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ dependencies:
+ locate-path "^2.0.0"
+
flat-cache@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
-get-stdin@5.0.1:
+get-stdin@5.0.1, get-stdin@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
dependencies:
is-glob "^2.0.0"
-glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
+glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@~7.0.6:
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
global@^4.3.0:
version "4.3.1"
resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df"
version "3.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435"
+ignore@^3.2.4:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
+
image-size@~0.5.0:
version "0.5.1"
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f"
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+indent-string@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d"
+
indexes-of@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
json5 "^0.5.0"
object-assign "^4.0.1"
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
lodash-es@^4.2.1:
version "4.17.3"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.3.tgz#567a08d2f0c91d92b31ce35c5565e1f337fb81db"
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
-lodash.merge@^4.4.0:
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+
+lodash.merge@^4.4.0, lodash.merge@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+loglevel-colored-level-prefix@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e"
+ dependencies:
+ chalk "^1.1.3"
+ loglevel "^1.4.1"
+
+loglevel@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd"
+
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
version "0.2.8"
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+make-plural@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-3.0.6.tgz#2033a03bac290b8f3bb91258f65b9df7e8b01ca7"
+ optionalDependencies:
+ minimist "^1.2.0"
+
makeerror@1.0.x:
version "1.0.11"
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
version "1.2.0"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+messageformat-parser@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.0.0.tgz#3dea21419f141c50026a29d4b2239203ad613d3f"
+
+messageformat@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.0.2.tgz#908f4691f29ff28dae35c45436a24cff93402388"
+ dependencies:
+ glob "~7.0.6"
+ make-plural "~3.0.6"
+ messageformat-parser "^1.0.0"
+ nopt "~3.0.6"
+ reserved-words "^0.1.1"
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+p-limit@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ dependencies:
+ p-limit "^1.1.0"
+
pako@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
dependencies:
pinkie-promise "^2.0.0"
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+prettier-eslint-cli@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-3.1.3.tgz#7651bfabffd1392643c2deb3db9e185914387102"
+ dependencies:
+ arrify "^1.0.1"
+ babel-runtime "^6.23.0"
+ chalk "^1.1.3"
+ common-tags "^1.4.0"
+ find-up "^2.1.0"
+ get-stdin "^5.0.1"
+ glob "^7.1.1"
+ ignore "^3.2.4"
+ indent-string "^3.1.0"
+ lodash.memoize "^4.1.2"
+ loglevel-colored-level-prefix "^1.0.0"
+ messageformat "^1.0.2"
+ prettier-eslint "^4.1.3"
+ rxjs "^5.2.0"
+ yargs "^6.6.0"
+
+prettier-eslint@^4.1.3:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-4.4.0.tgz#ded965da6a4d32bef72bfff992afbee0c0cf0443"
+ dependencies:
+ common-tags "^1.4.0"
+ dlv "^1.1.0"
+ eslint "^3.17.0"
+ indent-string "^3.1.0"
+ lodash.merge "^4.6.0"
+ loglevel-colored-level-prefix "^1.0.0"
+ prettier "^0.22.0"
+ pretty-format "^19.0.0"
+ require-relative "^0.8.7"
+
prettier@^0.22.0:
version "0.22.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-0.22.0.tgz#7b37c4480d0858180407e5a8e13f0f47da7385d2"
version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+require-relative@^0.8.7:
+ version "0.8.7"
+ resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
+
require-uncached@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+reserved-words@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.1.tgz#6f7c15e5e5614c50da961630da46addc87c0cef2"
+
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
+rxjs@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b"
+ dependencies:
+ symbol-observable "^1.0.1"
+
sane@~1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715"
version "1.0.4"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
style-loader@0.13.0:
version "0.13.0"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.0.tgz#abac11a20450f3ddea222b44c0c6342a8862db47"
sax "~1.2.1"
whet.extend "~0.9.9"
+symbol-observable@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
+
"symbol-tree@>= 3.1.0 < 4.0.0":
version "3.2.1"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb"
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-window-size@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
-
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
dependencies:
camelcase "^3.0.0"
-yargs@^6.3.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.5.0.tgz#a902e23a1f0fe912b2a03f6131b7ed740c9718ff"
+yargs@^6.3.0, yargs@^6.6.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
- window-size "^0.2.0"
y18n "^3.2.1"
yargs-parser "^4.2.0"