Sfoglia il codice sorgente

SONAR-10209 handle deleted Quality Profile on project page

tags/7.5
Pascal Mugnier 5 anni fa
parent
commit
6eac2ab817

+ 8
- 1
server/sonar-web/src/main/js/app/types.ts Vedi File

@@ -72,7 +72,7 @@ export interface Component extends LightComponent {
name: string;
path?: string;
refKey?: string;
qualityProfiles?: { key: string; language: string; name: string }[];
qualityProfiles?: ComponentQualityProfile[];
qualityGate?: { isDefault?: boolean; key: string; name: string };
tags?: string[];
version?: string;
@@ -92,6 +92,13 @@ interface ComponentConfiguration {
showUpdateKey?: boolean;
}

export interface ComponentQualityProfile {
deleted?: boolean;
key: string;
language: string;
name: string;
}

export interface Condition {
error: string;
id: number;

+ 22
- 8
server/sonar-web/src/main/js/apps/overview/meta/MetaQualityProfiles.tsx Vedi File

@@ -26,6 +26,7 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
import { getQualityProfileUrl } from '../../../helpers/urls';
import { searchRules } from '../../../api/rules';
import { getLanguages } from '../../../store/rootReducer';
import { ComponentQualityProfile } from '../../../app/types';

interface StateProps {
languages: { [key: string]: { name: string } };
@@ -34,7 +35,7 @@ interface StateProps {
interface OwnProps {
headerClassName?: string;
organization?: string;
profiles: { key: string; language: string; name: string }[];
profiles: ComponentQualityProfile[];
}

interface State {
@@ -55,9 +56,9 @@ class MetaQualityProfiles extends React.PureComponent<StateProps & OwnProps, Sta
}

loadDeprecatedRules() {
const requests = this.props.profiles.map(profile =>
this.loadDeprecatedRulesForProfile(profile.key)
);
const requests = this.props.profiles
.filter(p => !p.deleted)
.map(profile => this.loadDeprecatedRulesForProfile(profile.key));
Promise.all(requests).then(
responses => {
if (this.mounted) {
@@ -89,19 +90,32 @@ class MetaQualityProfiles extends React.PureComponent<StateProps & OwnProps, Sta
return count || 0;
}

renderProfile(profile: { key: string; language: string; name: string }) {
renderProfile(profile: ComponentQualityProfile) {
const languageFromStore = this.props.languages[profile.language];
const languageName = languageFromStore ? languageFromStore.name : profile.language;

const path = getQualityProfileUrl(profile.name, profile.language, this.props.organization);

const inner = (
<div className="text-ellipsis">
<span className="note spacer-right">{'(' + languageName + ')'}</span>
<Link to={path}>{profile.name}</Link>
{profile.deleted ? (
profile.name
) : (
<Link to={getQualityProfileUrl(profile.name, profile.language, this.props.organization)}>
{profile.name}
</Link>
)}
</div>
);

if (profile.deleted) {
const tooltip = translateWithParameters('overview.deleted_profile', profile.name);
return (
<Tooltip key={profile.key} overlay={tooltip}>
<li className="overview-deleted-profile">{inner}</li>
</Tooltip>
);
}

const count = this.getDeprecatedRulesCount(profile);

if (count > 0) {

+ 1
- 0
server/sonar-web/src/main/js/apps/overview/styles.css Vedi File

@@ -470,6 +470,7 @@
background-color: transparent !important;
}

.overview-deleted-profile,
.overview-deprecated-rules {
margin: 4px -6px 4px;
padding: 3px 6px !important;

+ 1
- 0
sonar-core/src/main/resources/org/sonar/l10n/core.properties Vedi File

@@ -2423,6 +2423,7 @@ overview.complexity_tooltip.function={0} functions have complexity around {1}
overview.complexity_tooltip.file={0} files have complexity around {1}

overview.deprecated_profile=This quality profile uses {0} deprecated rules and should be updated.
overview.deleted_profile={0} has been deleted since the last analysis.


overview.badges.get_badge.TRK=Get project badges

Loading…
Annulla
Salva