From: Pascal Mugnier Date: Fri, 16 Mar 2018 08:46:59 +0000 (+0100) Subject: SONAR-10439 Use ranges in facets instead of cumulative numbers (#3141) X-Git-Tag: 7.5~1524 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8deda8acb06865cd41f383d4e9d9dc27b937fa71;p=sonarqube.git SONAR-10439 Use ranges in facets instead of cumulative numbers (#3141) --- diff --git a/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts b/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts index 7fadde28510..7f2a5acc5e8 100644 --- a/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts +++ b/server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts @@ -38,58 +38,3 @@ describe('parseSorting', () => { expect(utils.parseSorting('-size')).toEqual({ sortDesc: true, sortValue: 'size' }); }); }); - -describe('cumulativeMapFacetValues', () => { - it('should correctly cumulate facets', () => { - expect( - utils.cumulativeMapFacetValues([ - { val: '1', count: 50 }, - { val: '2', count: 1 }, - { val: '3', count: 6 }, - { val: '4', count: 2 }, - { val: '5', count: 0 } - ]) - // eslint-disable-next-line - ).toEqual({ '1': 50, '2': 9, '3': 8, '4': 2, '5': 0 }); - }); - it('should correctly cumulate facets with NO_DATA items', () => { - const expectedResult = { - '80.0-*': 59, - '70.0-80.0': 26, - '50.0-70.0': 15, - '30.0-50.0': 11, - '*-30.0': 7, - NO_DATA: 5 - }; - expect( - utils.cumulativeMapFacetValues([ - { val: '80.0-*', count: 59 }, - { val: '70.0-80.0', count: 11 }, - { val: '50.0-70.0', count: 4 }, - { val: '30.0-50.0', count: 4 }, - { val: '*-30.0', count: 7 }, - { val: 'NO_DATA', count: 5 } - ]) - ).toEqual(expectedResult); - expect( - utils.cumulativeMapFacetValues([ - { val: 'NO_DATA', count: 5 }, - { val: '80.0-*', count: 59 }, - { val: '70.0-80.0', count: 11 }, - { val: '50.0-70.0', count: 4 }, - { val: '30.0-50.0', count: 4 }, - { val: '*-30.0', count: 7 } - ]) - ).toEqual(expectedResult); - expect( - utils.cumulativeMapFacetValues([ - { val: '80.0-*', count: 59 }, - { val: '70.0-80.0', count: 11 }, - { val: '50.0-70.0', count: 4 }, - { val: 'NO_DATA', count: 5 }, - { val: '30.0-50.0', count: 4 }, - { val: '*-30.0', count: 7 } - ]) - ).toEqual(expectedResult); - }); -}); diff --git a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx index 3eb8afb926c..06be03f8cc6 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx +++ b/server/sonar-web/src/main/js/apps/projects/filters/IssuesFilter.tsx @@ -70,8 +70,6 @@ function renderOption(option: number, selected: boolean) { return ( - {option > 1 && - option < 5 && {translate('and_worse')}} ); } diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/CoverageFilter-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/CoverageFilter-test.tsx.snap index 1c61cac529c..9ce9bc4f614 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/CoverageFilter-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/CoverageFilter-test.tsx.snap @@ -37,7 +37,7 @@ exports[`renders 2`] = ` - < 80% + 70% - 80% `; diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/DuplicationsFilter-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/DuplicationsFilter-test.tsx.snap index 255bd60899e..2c3c409178a 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/DuplicationsFilter-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/DuplicationsFilter-test.tsx.snap @@ -37,7 +37,7 @@ exports[`renders 2`] = ` - ≥ 3% + 3% - 5% `; diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/IssuesFilter-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/IssuesFilter-test.tsx.snap index f9794832bdd..515a3abecfb 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/IssuesFilter-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/IssuesFilter-test.tsx.snap @@ -32,10 +32,5 @@ exports[`renders 2`] = ` small={true} value={2} /> - - and_worse - `; diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/NewLinesFilter-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/NewLinesFilter-test.tsx.snap index bb776a87a60..1f04f9c5073 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/NewLinesFilter-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/NewLinesFilter-test.tsx.snap @@ -28,6 +28,6 @@ exports[`renders 1`] = ` exports[`renders 2`] = ` - ≥ 1k + 1k - 10k `; diff --git a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/SizeFilter-test.tsx.snap b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/SizeFilter-test.tsx.snap index 135024ac542..f956104ccb9 100644 --- a/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/SizeFilter-test.tsx.snap +++ b/server/sonar-web/src/main/js/apps/projects/filters/__tests__/__snapshots__/SizeFilter-test.tsx.snap @@ -35,7 +35,7 @@ exports[`renders 2`] = ` - ≥ 1k + 1k - 10k `; diff --git a/server/sonar-web/src/main/js/apps/projects/utils.ts b/server/sonar-web/src/main/js/apps/projects/utils.ts index 5aa2bd86909..b59516613d6 100644 --- a/server/sonar-web/src/main/js/apps/projects/utils.ts +++ b/server/sonar-web/src/main/js/apps/projects/utils.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { sumBy, uniq } from 'lodash'; +import { uniq } from 'lodash'; import { Query, convertToFilter } from './query'; import { translate } from '../../helpers/l10n'; import { RequestData } from '../../helpers/request'; @@ -145,21 +145,6 @@ const LEAK_FACETS = [ 'tags' ]; -const CUMULATIVE_FACETS = [ - 'reliability', - 'new_reliability', - 'security', - 'new_security', - 'maintainability', - 'new_maintainability', - 'coverage', - 'new_coverage', - 'duplications', - 'new_duplications', - 'size', - 'new_lines' -]; - const REVERSED_FACETS = ['coverage', 'new_coverage']; export function localizeSorting(sort?: string): string { @@ -281,23 +266,6 @@ function mapFacetValues(values: Array<{ val: string; count: number }>) { return map; } -export function cumulativeMapFacetValues(values: Array<{ val: string; count: number }>) { - const noDataVal = values.find(value => value.val === 'NO_DATA'); - const filteredValues = noDataVal ? values.filter(value => value.val !== 'NO_DATA') : values; - - let sum = sumBy(filteredValues, value => value.count); - const map: { [value: string]: number } = {}; - filteredValues.forEach((value, index) => { - map[value.val] = index > 0 && index < values.length - 1 ? sum : value.count; - sum -= value.count; - }); - - if (noDataVal) { - map[noDataVal.val] = noDataVal.count; - } - return map; -} - function getFacetsMap(facets: Facet[]) { const map: { [property: string]: { [value: string]: number } } = {}; facets.forEach(facet => { @@ -306,9 +274,7 @@ function getFacetsMap(facets: Facet[]) { if (REVERSED_FACETS.includes(property)) { values.reverse(); } - map[property] = CUMULATIVE_FACETS.includes(property) - ? cumulativeMapFacetValues(values) - : mapFacetValues(values); + map[property] = mapFacetValues(values); }); return map; } diff --git a/server/sonar-web/src/main/js/helpers/ratings.ts b/server/sonar-web/src/main/js/helpers/ratings.ts index 3fa98ebd432..3c60bc5b358 100644 --- a/server/sonar-web/src/main/js/helpers/ratings.ts +++ b/server/sonar-web/src/main/js/helpers/ratings.ts @@ -25,7 +25,7 @@ function checkNumberRating(coverageRating: number): void { export function getCoverageRatingLabel(rating: number): string { checkNumberRating(rating); - const mapping = ['≥ 80%', '< 80%', '< 70%', '< 50%', '< 30%']; + const mapping = ['≥ 80%', '70% - 80%', '50% - 70%', '30% - 50%', '< 30%']; return mapping[rating - 1]; } @@ -37,7 +37,7 @@ export function getCoverageRatingAverageValue(rating: number): number { export function getDuplicationsRatingLabel(rating: number): string { checkNumberRating(rating); - const mapping = ['< 3%', '≥ 3%', '> 5%', '> 10%', '> 20%']; + const mapping = ['< 3%', '3% - 5%', '5% - 10%', '10% - 20%', '> 20%']; return mapping[rating - 1]; } @@ -49,7 +49,7 @@ export function getDuplicationsRatingAverageValue(rating: number): number { export function getSizeRatingLabel(rating: number): string { checkNumberRating(rating); - const mapping = ['< 1k', '≥ 1k', '> 10k', '> 100k', '> 500k']; + const mapping = ['< 1k', '1k - 10k', '10k - 100k', '100k - 500k', '> 500k']; return mapping[rating - 1]; } diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java index 3e37f312661..d0a97b761a5 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java @@ -81,9 +81,9 @@ public class ProjectsPageTest { ProjectsPage page = tester.openBrowser().openProjects(); page.getFacetByProperty("duplications") .shouldHaveValue("1", "1") - .shouldHaveValue("2", "1") - .shouldHaveValue("3", "1") - .shouldHaveValue("4", "1") + .shouldHaveValue("2", "0") + .shouldHaveValue("3", "0") + .shouldHaveValue("4", "0") .shouldHaveValue("5", "1") .shouldHaveValue("6", "0"); }