diff options
author | ssjenka <ssjenka@ops-slave-fedora25-1.internal.sonarsource.com> | 2017-05-24 16:23:39 +0200 |
---|---|---|
committer | ssjenka <ssjenka@ops-slave-fedora25-1.internal.sonarsource.com> | 2017-05-24 16:23:39 +0200 |
commit | 5f0f66db0222e3db9ce720bfbaa04155a71c15d9 (patch) | |
tree | 71304dee345d8383c90553d1048d93e37010607a | |
parent | 3e6eefb171d2b06c7f1e5efc8d8d559195df974e (diff) | |
parent | c110e6ee38343b43fd43d6dba0ef92dee61cf7ea (diff) | |
download | sonarqube-5f0f66db0222e3db9ce720bfbaa04155a71c15d9.tar.gz sonarqube-5f0f66db0222e3db9ce720bfbaa04155a71c15d9.zip |
Automatic merge from branch-6.4
* origin/branch-6.4:
SONAR-8913 Use "analysisDate" instead of "snapshotDate" in component overview
SONAR-8913 Replace "snapshotDate" by "analysisDate" in api/navigation/component
Fix JDK link download in travis build
SONAR-9301 Support HTTP redirect on scanner side
Fix localization in projects page facets
22 files changed, 52 insertions, 41 deletions
diff --git a/it/it-tests/src/test/java/util/ItUtils.java b/it/it-tests/src/test/java/util/ItUtils.java index 5601563bdfd..367e3a724c8 100644 --- a/it/it-tests/src/test/java/util/ItUtils.java +++ b/it/it-tests/src/test/java/util/ItUtils.java @@ -380,14 +380,14 @@ public class ItUtils { public static class ComponentNavigation { private String version; - private String snapshotDate; + private String analysisDate; public String getVersion() { return version; } public Date getDate() { - return toDatetime(snapshotDate); + return toDatetime(analysisDate); } public static ComponentNavigation parse(String json) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentAction.java index c761ba3a480..2f216ef4e4b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/ComponentAction.java @@ -38,7 +38,6 @@ import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService.NewAction; import org.sonar.api.server.ws.WebService.NewController; -import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.text.JsonWriter; import org.sonar.api.web.UserRole; import org.sonar.api.web.page.Page; @@ -64,6 +63,7 @@ import org.sonar.server.ui.PageRepository; import org.sonar.server.user.UserSession; import static org.sonar.api.measures.CoreMetrics.QUALITY_PROFILES_KEY; +import static org.sonar.api.utils.DateUtils.formatDateTime; import static org.sonar.api.web.UserRole.ADMIN; import static org.sonar.api.web.UserRole.USER; import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES; @@ -181,7 +181,8 @@ public class ComponentAction implements NavigationWsAction { List<Page> pages = pageRepository.getComponentPages(false, component.qualifier()); writeExtensions(json, component, pages); if (analysis != null) { - json.prop("version", analysis.getVersion()).prop("snapshotDate", DateUtils.formatDateTime(new Date(analysis.getCreatedAt()))); + json.prop("version", analysis.getVersion()) + .prop("analysisDate", formatDateTime(new Date(analysis.getCreatedAt()))); } } diff --git a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/component-example.json b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/component-example.json index b9275d0bd22..b6968301a3c 100644 --- a/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/component-example.json +++ b/server/sonar-server/src/main/resources/org/sonar/server/ui/ws/component-example.json @@ -6,7 +6,7 @@ "description": "Open source platform for continuous inspection of code quality", "isFavorite": true, "version": "6.3", - "snapshotDate": "2016-12-06T11:44:00+0200", + "analysisDate": "2016-12-06T11:44:00+0200", "extensions": [ { "key": "my_plugin/first_page", diff --git a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_snapshot.json b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_snapshot.json index 1303f9901d9..ffc0a989a93 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_snapshot.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/ui/ws/ComponentActionTest/return_component_info_when_snapshot.json @@ -5,7 +5,7 @@ "name": "Polop", "description": "test project", "isFavorite": false, - "snapshotDate": "2015-04-22T11:44:00+0200", + "analysisDate": "2015-04-22T11:44:00+0200", "version": "3.14", "breadcrumbs": [ { diff --git a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.js b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.js index 3ee81111367..4893ce58f0e 100644 --- a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.js +++ b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNav.js @@ -84,7 +84,7 @@ export default class ComponentNav extends React.PureComponent { {...this.props} {...this.state} version={this.props.component.version} - snapshotDate={this.props.component.snapshotDate} + analysisDate={this.props.component.analysisDate} /> </TooltipsContainer> diff --git a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMeta.js b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMeta.js index 6fe26c1cbb4..78d72cb3943 100644 --- a/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMeta.js +++ b/server/sonar-web/src/main/js/app/components/nav/component/ComponentNavMeta.js @@ -64,8 +64,8 @@ export default class ComponentNavMeta extends React.PureComponent { ); } - if (this.props.snapshotDate) { - metaList.push(<li key="snapshotDate">{moment(this.props.snapshotDate).format('LLL')}</li>); + if (this.props.analysisDate) { + metaList.push(<li key="analysisDate">{moment(this.props.analysisDate).format('LLL')}</li>); } if (this.props.version) { diff --git a/server/sonar-web/src/main/js/apps/overview/components/App.js b/server/sonar-web/src/main/js/apps/overview/components/App.js index d1c73df1555..8a4adde9571 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/App.js +++ b/server/sonar-web/src/main/js/apps/overview/components/App.js @@ -26,6 +26,7 @@ import SourceViewer from '../../../components/SourceViewer/SourceViewer'; type Props = { component: { + analysisDate?: string, id: string, key: string, qualifier: string, @@ -58,7 +59,7 @@ class App extends React.PureComponent { ); } - if (!component.snapshotDate) { + if (!component.analysisDate) { return <EmptyOverview {...this.props} />; } diff --git a/server/sonar-web/src/main/js/apps/overview/components/__tests__/App-test.js b/server/sonar-web/src/main/js/apps/overview/components/__tests__/App-test.js index 01d73ea8c74..70dd35ee95d 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/__tests__/App-test.js +++ b/server/sonar-web/src/main/js/apps/overview/components/__tests__/App-test.js @@ -24,7 +24,7 @@ import OverviewApp from '../OverviewApp'; import EmptyOverview from '../EmptyOverview'; it('should render OverviewApp', () => { - const component = { id: 'id', snapshotDate: '2016-01-01' }; + const component = { id: 'id', analysisDate: '2016-01-01' }; const output = shallow(<UnconnectedApp component={component} />); expect(output.type()).toBe(OverviewApp); }); @@ -36,7 +36,7 @@ it('should render EmptyOverview', () => { }); it('should pass leakPeriodIndex', () => { - const component = { id: 'id', snapshotDate: '2016-01-01' }; + const component = { id: 'id', analysisDate: '2016-01-01' }; const output = shallow(<UnconnectedApp component={component} />); expect(output.prop('leakPeriodIndex')).toBe('1'); }); diff --git a/server/sonar-web/src/main/js/apps/overview/components/__tests__/EmptyOverview-test.js b/server/sonar-web/src/main/js/apps/overview/components/__tests__/EmptyOverview-test.js index 7c9c06b16a5..f163dc8a969 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/__tests__/EmptyOverview-test.js +++ b/server/sonar-web/src/main/js/apps/overview/components/__tests__/EmptyOverview-test.js @@ -25,7 +25,7 @@ it('should render component key', () => { const component = { id: 'id', key: 'abcd', - snapshotDate: '2016-01-01' + analysisDate: '2016-01-01' }; const output = shallow(<EmptyOverview component={component} />); expect(output.find('code').text()).toBe('abcd'); diff --git a/server/sonar-web/src/main/js/apps/overview/main/CodeSmells.js b/server/sonar-web/src/main/js/apps/overview/main/CodeSmells.js index 1b7f13b95e7..ee496595efd 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/CodeSmells.js +++ b/server/sonar-web/src/main/js/apps/overview/main/CodeSmells.js @@ -42,8 +42,8 @@ class CodeSmells extends React.PureComponent { Object.assign(params, { sinceLeakPeriod: 'true' }); } - const formattedSnapshotDate = moment(component.snapshotDate).format('LLL'); - const tooltip = translateWithParameters('widget.as_calculated_on_x', formattedSnapshotDate); + const formattedAnalysisDate = moment(component.analysisDate).format('LLL'); + const tooltip = translateWithParameters('widget.as_calculated_on_x', formattedAnalysisDate); return ( <Link to={getComponentIssuesUrl(component.key, params)}> diff --git a/server/sonar-web/src/main/js/apps/overview/main/enhance.js b/server/sonar-web/src/main/js/apps/overview/main/enhance.js index 1b21260cfeb..f6d450c661a 100644 --- a/server/sonar-web/src/main/js/apps/overview/main/enhance.js +++ b/server/sonar-web/src/main/js/apps/overview/main/enhance.js @@ -139,8 +139,8 @@ export default function enhance(ComposedComponent) { if (isDiffMetric(metric)) { Object.assign(params, { sinceLeakPeriod: 'true' }); } - const formattedSnapshotDate = moment(component.snapshotDate).format('LLL'); - const tooltip = translateWithParameters('widget.as_calculated_on_x', formattedSnapshotDate); + const formattedAnalysisDate = moment(component.analysisDate).format('LLL'); + const tooltip = translateWithParameters('widget.as_calculated_on_x', formattedAnalysisDate); return ( <Link to={getComponentIssuesUrl(component.key, params)}> <span title={tooltip} data-toggle="tooltip"> diff --git a/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.js index e914a5180cd..c29c7f26ec6 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/CoverageFilter.js @@ -23,6 +23,7 @@ import FilterHeader from './FilterHeader'; import SortingFilter from './SortingFilter'; import CoverageRating from '../../../components/ui/CoverageRating'; import { getCoverageRatingLabel, getCoverageRatingAverageValue } from '../../../helpers/ratings'; +import { translate } from '../../../helpers/l10n'; export default class CoverageFilter extends React.PureComponent { static propTypes = { @@ -65,7 +66,7 @@ export default class CoverageFilter extends React.PureComponent { getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} header={ - <FilterHeader name="Coverage"> + <FilterHeader name={translate('metric_domain.Coverage')}> <SortingFilter property={this.property} query={this.props.query} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.js index c1fed7f0723..e6f2304bc2f 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/DuplicationsFilter.js @@ -26,6 +26,7 @@ import { getDuplicationsRatingLabel, getDuplicationsRatingAverageValue } from '../../../helpers/ratings'; +import { translate } from '../../../helpers/l10n'; export default class DuplicationsFilter extends React.PureComponent { static propTypes = { @@ -68,7 +69,7 @@ export default class DuplicationsFilter extends React.PureComponent { getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} header={ - <FilterHeader name="Duplications"> + <FilterHeader name={translate('metric_domain.Duplications')}> <SortingFilter property={this.property} query={this.props.query} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.js index 96e1a2669e2..a287639d59c 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.js @@ -22,6 +22,7 @@ import FilterContainer from './FilterContainer'; import FilterHeader from './FilterHeader'; import SortingFilter from './SortingFilter'; import Rating from '../../../components/ui/Rating'; +import { translate } from '../../../helpers/l10n'; export default class IssuesFilter extends React.PureComponent { static propTypes = { @@ -40,7 +41,9 @@ export default class IssuesFilter extends React.PureComponent { return ( <span> <Rating value={option} small={true} muted={!selected} /> - {option > 1 && option < 5 && <span className="note spacer-left">and worse</span>} + {option > 1 && + option < 5 && + <span className="note spacer-left">{translate('and_worse')}</span>} </span> ); } @@ -57,7 +60,7 @@ export default class IssuesFilter extends React.PureComponent { getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} header={ - <FilterHeader name={this.props.name}> + <FilterHeader name={translate('metric_domain', this.props.name)}> <SortingFilter property={this.props.property} query={this.props.query} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.js index 47de2131a8f..4218dbc3f26 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/LanguagesFilter.js @@ -25,6 +25,7 @@ import FilterHeader from './FilterHeader'; import SearchableFilterFooter from './SearchableFilterFooter'; import SearchableFilterOption from './SearchableFilterOption'; import { getLanguageByKey } from '../../../store/languages/reducer'; +import { translate } from '../../../helpers/l10n'; type Props = { query: {}, @@ -81,7 +82,7 @@ export default class LanguagesFilter extends React.PureComponent { organization={this.props.organization} getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} - header={<FilterHeader name="Languages" />} + header={<FilterHeader name={translate('projects.facets.languages')} />} footer={ <SearchableFilterFooter property={this.property} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.js index d40bd4edf2f..0df57464933 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/QualityGateFilter.js @@ -21,6 +21,7 @@ import React from 'react'; import FilterContainer from './FilterContainer'; import FilterHeader from './FilterHeader'; import Level from '../../../components/ui/Level'; +import { translate } from '../../../helpers/l10n'; export default class QualityGateFilter extends React.PureComponent { static propTypes = { @@ -48,7 +49,7 @@ export default class QualityGateFilter extends React.PureComponent { organization={this.props.organization} getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} - header={<FilterHeader name="Quality Gate" />} + header={<FilterHeader name={translate('projects.facets.quality_gate')} />} /> ); } diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.js index d97524f2546..c9cb96b15bc 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/SizeFilter.js @@ -81,7 +81,7 @@ export default class SizeFilter extends React.PureComponent { getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} header={ - <FilterHeader name="Size"> + <FilterHeader name={translate('metric_domain.Size')}> <SortingFilter property={this.property} query={this.props.query} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/SortingFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/SortingFilter.js index ae97c28785e..61f7dfa1262 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/SortingFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/SortingFilter.js @@ -33,10 +33,9 @@ export default class SortingFilter extends React.PureComponent { leftText: React.PropTypes.string, rightText: React.PropTypes.string }; + static defaultProps = { - sortDesc: 'left', - leftText: translate('worst'), - rightText: translate('best') + sortDesc: 'left' }; isSortActive(side) { @@ -78,13 +77,13 @@ export default class SortingFilter extends React.PureComponent { onClick={this.blurLink} className={this.getLinkClass('left')} to={this.getLinkPath('left')}> - {leftText} + {leftText || translate('worst')} </Link> <Link onClick={this.blurLink} className={this.getLinkClass('right')} to={this.getLinkPath('right')}> - {rightText} + {rightText || translate('best')} </Link> </div> </div> diff --git a/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.js b/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.js index c79b7bf2fb8..05f795cbd50 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.js +++ b/server/sonar-web/src/main/js/apps/projects/filters/TagsFilter.js @@ -25,6 +25,7 @@ import FilterHeader from './FilterHeader'; import SearchableFilterFooter from './SearchableFilterFooter'; import SearchableFilterOption from './SearchableFilterOption'; import { searchProjectTags } from '../../../api/components'; +import { translate } from '../../../helpers/l10n'; type Props = { query: {}, @@ -104,7 +105,7 @@ export default class TagsFilter extends React.PureComponent { organization={this.props.organization} getFacetValueForOption={this.getFacetValueForOption} highlightUnder={1} - header={<FilterHeader name="Tags" />} + header={<FilterHeader name={translate('projects.facets.tags')} />} footer={ <SearchableFilterFooter property={this.property} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/LanguagesFilter-test.js.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/LanguagesFilter-test.js.snap index ce37370ca0f..1605a2de810 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/LanguagesFilter-test.js.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/LanguagesFilter-test.js.snap @@ -77,7 +77,7 @@ exports[`should render maximum 10 languages in the searchbox results 1`] = ` halfWidth={false} header={ <FilterHeader - name="Languages" + name="projects.facets.languages" /> } highlightUnder={1} @@ -157,7 +157,7 @@ exports[`should render the languages facet with the selected languages 1`] = ` halfWidth={false} header={ <FilterHeader - name="Languages" + name="projects.facets.languages" /> } highlightUnder={1} @@ -194,7 +194,7 @@ exports[`should render the languages facet with the selected languages 2`] = ` data-key="languages" > <FilterHeader - name="Languages" + name="projects.facets.languages" /> <div className="search-navigator-facet-list" @@ -379,7 +379,7 @@ exports[`should render the languages without the ones in the facet 1`] = ` halfWidth={false} header={ <FilterHeader - name="Languages" + name="projects.facets.languages" /> } highlightUnder={1} diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/TagsFilter-test.js.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/TagsFilter-test.js.snap index aeaa01f2554..1cadc1ba2e8 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/TagsFilter-test.js.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/TagsFilter-test.js.snap @@ -80,7 +80,7 @@ exports[`should render maximum 10 tags in the searchbox results 1`] = ` halfWidth={false} header={ <FilterHeader - name="Tags" + name="projects.facets.tags" /> } highlightUnder={1} @@ -148,7 +148,7 @@ exports[`should render the tags facet with the selected tags 1`] = ` halfWidth={false} header={ <FilterHeader - name="Tags" + name="projects.facets.tags" /> } highlightUnder={1} @@ -185,7 +185,7 @@ exports[`should render the tags facet with the selected tags 2`] = ` data-key="tags" > <FilterHeader - name="Tags" + name="projects.facets.tags" /> <div className="search-navigator-facet-list" @@ -328,7 +328,7 @@ exports[`should render the tags without the ones in the facet 1`] = ` halfWidth={false} header={ <FilterHeader - name="Tags" + name="projects.facets.tags" /> } highlightUnder={1} @@ -396,7 +396,7 @@ exports[`should render the tags without the ones in the facet 2`] = ` halfWidth={false} header={ <FilterHeader - name="Tags" + name="projects.facets.tags" /> } highlightUnder={1} diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index 1ed38b49f5f..aba765f0df2 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -221,7 +221,7 @@ added_since_previous_version_detailed=Added since previous version ({0}) added_since_version=Added since version {0} all_violations=All violations all_issues=All issues -apply_template +and_worse=and worse are_you_sure=Are you sure? assigned_to=Assigned to bulk_change=Bulk Change @@ -878,6 +878,9 @@ projects.visualization.coverage.description=See missing test coverage's long-ter projects.visualization.duplications=Duplications projects.visualization.duplications.description=See duplications' long-term risks to your projects. Bubble size indicates the volume of duplicated blocks in the project, and each bubble's vertical position reflects the volume of lines in those blocks. Small bubbles on the bottom edge are best. projects.limited_set_of_projects=Displayed project set limited to the top {0} projects based on current sort: {1}. +projects.facets.quality_gate=Quality Gate +projects.facets.languages=Languages +projects.facets.tags=Tags projects.sort.name=by name projects.sort.reliability=by reliability (best first) projects.sort.-reliability=by reliability (worst first) @@ -2803,7 +2806,6 @@ component_measures.not_found=The requested measure was not found. # ABOUT PAGE # #------------------------------------------------------------------------------ -about_page.read_documentation. about_page.projects_analyzed=Projects Analyzed about_page.issues_found=Issues Found about_page.read_more=Read More |