]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10983 Drop the "Effort" display mode on the Issues page (#487)
authorStas Vilchik <stas.vilchik@sonarsource.com>
Thu, 5 Jul 2018 16:49:13 +0000 (18:49 +0200)
committerSonarTech <sonartech@sonarsource.com>
Tue, 17 Jul 2018 18:21:24 +0000 (20:21 +0200)
24 files changed:
server/sonar-web/src/main/js/api/issues.ts
server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/AuthorFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/DirectoryFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/FacetMode.tsx [deleted file]
server/sonar-web/src/main/js/apps/issues/sidebar/FileFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/ModuleFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/ResolutionFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/RuleFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/SeverityFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/StatusFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/TypeFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/AssigneeFacet-test.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/__tests__/__snapshots__/Sidebar-test.tsx.snap
server/sonar-web/src/main/js/apps/issues/utils.ts
server/sonar-web/src/main/js/apps/overview/main/CodeSmells.tsx
server/sonar-web/src/main/js/helpers/__tests__/query-test.ts
server/sonar-web/src/main/js/helpers/query.ts

index 80a02c70f05e47ad0e7f5a22f422ff07ca0b4d52..3fe3a9bb3ca6e7de81af0fb9a07bd8a66358963c 100644 (file)
@@ -108,13 +108,6 @@ export function getProjects(query: RequestData) {
   return getFacet(query, 'projectUuids').then(r => extractProjects(r.facet, r.response));
 }
 
-export function getIssuesCount(query: RequestData): Promise<any> {
-  const data = { ...query, ps: 1, facetMode: 'effort' };
-  return searchIssues(data).then(r => {
-    return { issues: r.paging.total, debt: r.debtTotal };
-  });
-}
-
 export function searchIssueTags(
   data: { organization?: string; ps?: number; q?: string } = { ps: 100 }
 ): Promise<string[]> {
index 26d0204509e3bb73b35fe59b3a3eb3b3c28d4669..7e671e03616042f97cbb3626bef6643788485038 100644 (file)
@@ -33,7 +33,6 @@ export interface Props {
   assigned: boolean;
   assignees: string[];
   component: Component | undefined;
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -168,7 +167,7 @@ export default class AssigneeFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.getAssigneeName(assignee)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(assignee), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(assignee))}
             tooltip={this.props.assignees.length === 1 && !this.isAssigneeActive(assignee)}
             value={assignee}
           />
index 01e9bc56a9ef5d78cdfda935618d249bb16005d9..9ea5200d8d580be594e95452b3fa1472dd187b17 100644 (file)
@@ -27,7 +27,6 @@ import FacetItemsList from '../../../components/facet/FacetItemsList';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -88,7 +87,7 @@ export default class AuthorFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={author}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(author), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(author))}
             tooltip={this.props.authors.length === 1 && !this.props.authors.includes(author)}
             value={author}
           />
index 6096ada13a5b287f1b788f7b666110257d3d14d4..7d242ebf0487e3badbb75fc34a948e6990186b88 100644 (file)
@@ -40,7 +40,6 @@ interface Props {
   createdAt: string;
   createdBefore: Date | undefined;
   createdInLast: string;
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -180,8 +179,7 @@ export default class CreationDateFacet extends React.PureComponent<Props> {
     const width = barsWidth * data.length - 1 + 10;
 
     const maxValue = max(data.map(d => d.y));
-    const format = this.props.facetMode === 'count' ? 'SHORT_INT' : 'SHORT_WORK_DUR';
-    const xValues = data.map(d => (d.y === maxValue ? formatMeasure(maxValue, format) : ''));
+    const xValues = data.map(d => (d.y === maxValue ? formatMeasure(maxValue, 'SHORT_INT') : ''));
 
     return (
       <BarChart
index e26b93431949e0edcdfe3b79054a2c6d8c248749..248418cee1704e03666798a648cea32e29f7e199 100644 (file)
@@ -30,7 +30,6 @@ import { collapsePath } from '../../../helpers/path';
 
 interface Props {
   directories: string[];
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -103,7 +102,7 @@ export default class DirectoryFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.renderName(directory)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(directory), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(directory))}
             tooltip={
               this.props.directories.length === 1 && !this.props.directories.includes(directory)
             }
diff --git a/server/sonar-web/src/main/js/apps/issues/sidebar/FacetMode.tsx b/server/sonar-web/src/main/js/apps/issues/sidebar/FacetMode.tsx
deleted file mode 100644 (file)
index f2adc9a..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2018 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-import * as React from 'react';
-import { Query } from '../utils';
-import FacetBox from '../../../components/facet/FacetBox';
-import FacetHeader from '../../../components/facet/FacetHeader';
-import FacetItem from '../../../components/facet/FacetItem';
-import FacetItemsList from '../../../components/facet/FacetItemsList';
-import { translate } from '../../../helpers/l10n';
-
-interface Props {
-  facetMode: string;
-  onChange: (changes: Partial<Query>) => void;
-}
-
-export default class FacetMode extends React.PureComponent<Props> {
-  property = 'facetMode';
-
-  handleItemClick = (itemValue: string) => {
-    this.props.onChange({ [this.property]: itemValue });
-  };
-
-  render() {
-    const { facetMode } = this.props;
-    const modes = ['count', 'effort'];
-
-    return (
-      <FacetBox property={this.property}>
-        <FacetHeader name={translate('issues.facet.mode')} open={false} />
-
-        <FacetItemsList>
-          {modes.map(mode => (
-            <FacetItem
-              active={facetMode === mode}
-              halfWidth={true}
-              key={mode}
-              name={translate('issues.facet.mode', mode)}
-              onClick={this.handleItemClick}
-              value={mode}
-            />
-          ))}
-        </FacetItemsList>
-      </FacetBox>
-    );
-  }
-}
index a7556e900e32e4a13d23275239042ceba94ea4d6..28a798a24297ff055d14ae763822372313719b2a 100644 (file)
@@ -29,7 +29,6 @@ import { translate } from '../../../helpers/l10n';
 import { collapsePath } from '../../../helpers/path';
 
 interface Props {
-  facetMode: string;
   files: string[];
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
@@ -106,7 +105,7 @@ export default class FileFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.renderName(file)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(file), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(file))}
             tooltip={this.props.files.length === 1 && !this.props.files.includes(file)}
             value={file}
           />
index 0ab488213280b64258950ea72f26428c5c8f5962..2c63c4630447c361c46b0352fba72054e19b45a3 100644 (file)
@@ -28,7 +28,6 @@ import FacetItemsList from '../../../components/facet/FacetItemsList';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   languages: string[];
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
@@ -100,7 +99,7 @@ export default class LanguageFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.getLanguageName(language)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(language), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(language))}
             tooltip={this.props.languages.length === 1 && !this.props.languages.includes(language)}
             value={language}
           />
index 5fccc6f21c5892e40ff1bd72e78383bde0934b0d..faf97f7d5aebf7959a205e691f8d638f1eced535 100644 (file)
@@ -28,7 +28,6 @@ import QualifierIcon from '../../../components/icons-components/QualifierIcon';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   modules: string[];
   onChange: (changes: Partial<Query>) => void;
@@ -104,7 +103,7 @@ export default class ModuleFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.renderName(module)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(module), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(module))}
             tooltip={this.props.modules.length === 1 && !this.props.modules.includes(module)}
             value={module}
           />
index 69d9fa87f6897d5f8d24bc865fd0eb3d73f2b550..c684af5b1cd8a17e0d4c2f505e1bbf1273390a89 100644 (file)
@@ -33,7 +33,6 @@ import { translate } from '../../../helpers/l10n';
 
 interface Props {
   component: Component | undefined;
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -158,7 +157,7 @@ export default class ProjectFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.renderName(project)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(project), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(project))}
             tooltip={this.props.projects.length === 1 && !this.props.projects.includes(project)}
             value={project}
           />
index 5533b3734c059ec5a96499e05baed712c12e7acd..e909d06372c1a01bfdfc832cbe874faeb4d676af 100644 (file)
@@ -27,7 +27,6 @@ import FacetItemsList from '../../../components/facet/FacetItemsList';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -99,7 +98,7 @@ export default class ResolutionFacet extends React.PureComponent<Props> {
         loading={this.props.loading}
         name={this.getFacetItemName(resolution)}
         onClick={this.handleItemClick}
-        stat={formatFacetStat(stat, this.props.facetMode)}
+        stat={formatFacetStat(stat)}
         tooltip={
           this.props.resolutions.length === 1 &&
           resolution !== '' &&
index f1d8b43fbe1e2c362556f8a235158cbb63925348..e2db449dc3ccc030f61aedbd8a01831d39677faa 100644 (file)
@@ -29,7 +29,6 @@ import FacetFooter from '../../../components/facet/FacetFooter';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   languages: string[];
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
@@ -116,7 +115,7 @@ export default class RuleFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.getRuleName(rule)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(rule), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(rule))}
             tooltip={this.props.rules.length === 1 && !this.props.rules.includes(rule)}
             value={rule}
           />
index e68f6d8bc910ffb718cf110521fff57daf69fc6e..5d2e61b5e58f1454e47b01f3e0a49a9703b61afe 100644 (file)
@@ -28,7 +28,6 @@ import SeverityHelper from '../../../components/shared/SeverityHelper';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -84,7 +83,7 @@ export default class SeverityFacet extends React.PureComponent<Props> {
         loading={this.props.loading}
         name={<SeverityHelper severity={severity} />}
         onClick={this.handleItemClick}
-        stat={formatFacetStat(stat, this.props.facetMode)}
+        stat={formatFacetStat(stat)}
         tooltip={this.props.severities.length === 1 && !this.props.severities.includes(severity)}
         value={severity}
       />
index 6301c6a3c4b5dfc35fb2321d6f62cf3c13246ad2..906e924584261cee3691dfc0b5a4625b9db582e5 100644 (file)
@@ -22,7 +22,6 @@ import AssigneeFacet from './AssigneeFacet';
 import AuthorFacet from './AuthorFacet';
 import CreationDateFacet from './CreationDateFacet';
 import DirectoryFacet from './DirectoryFacet';
-import FacetMode from './FacetMode';
 import FileFacet from './FileFacet';
 import LanguageFacet from './LanguageFacet';
 import ModuleFacet from './ModuleFacet';
@@ -77,9 +76,7 @@ export default class Sidebar extends React.PureComponent<Props> {
 
     return (
       <div className="search-navigator-facets-list">
-        <FacetMode facetMode={query.facetMode} onChange={this.props.onFilterChange} />
         <TypeFacet
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -88,7 +85,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           types={query.types}
         />
         <SeverityFacet
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -97,7 +93,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           stats={facets.severities}
         />
         <ResolutionFacet
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -107,7 +102,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           stats={facets.resolutions}
         />
         <StatusFacet
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -121,7 +115,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           createdAt={query.createdAt}
           createdBefore={query.createdBefore}
           createdInLast={query.createdInLast}
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -130,7 +123,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           stats={facets.createdAt}
         />
         <LanguageFacet
-          facetMode={query.facetMode}
           languages={query.languages}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
@@ -140,7 +132,6 @@ export default class Sidebar extends React.PureComponent<Props> {
           stats={facets.languages}
         />
         <RuleFacet
-          facetMode={query.facetMode}
           languages={query.languages}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
@@ -168,7 +159,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         />
         <TagFacet
           component={component}
-          facetMode={query.facetMode}
           loading={this.props.loading}
           onChange={this.props.onFilterChange}
           onToggle={this.props.onFacetToggle}
@@ -180,7 +170,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         {displayProjectsFacet && (
           <ProjectFacet
             component={component}
-            facetMode={query.facetMode}
             loading={this.props.loading}
             onChange={this.props.onFilterChange}
             onToggle={this.props.onFacetToggle}
@@ -193,7 +182,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         )}
         {displayModulesFacet && (
           <ModuleFacet
-            facetMode={query.facetMode}
             loading={this.props.loading}
             modules={query.modules}
             onChange={this.props.onFilterChange}
@@ -206,7 +194,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         {displayDirectoriesFacet && (
           <DirectoryFacet
             directories={query.directories}
-            facetMode={query.facetMode}
             loading={this.props.loading}
             onChange={this.props.onFilterChange}
             onToggle={this.props.onFacetToggle}
@@ -217,7 +204,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         )}
         {displayFilesFacet && (
           <FileFacet
-            facetMode={query.facetMode}
             files={query.files}
             loading={this.props.loading}
             onChange={this.props.onFilterChange}
@@ -232,7 +218,6 @@ export default class Sidebar extends React.PureComponent<Props> {
             assigned={query.assigned}
             assignees={query.assignees}
             component={component}
-            facetMode={query.facetMode}
             loading={this.props.loading}
             onChange={this.props.onFilterChange}
             onToggle={this.props.onFacetToggle}
@@ -245,7 +230,6 @@ export default class Sidebar extends React.PureComponent<Props> {
         {displayAuthorFacet && (
           <AuthorFacet
             authors={query.authors}
-            facetMode={query.facetMode}
             loading={this.props.loading}
             onChange={this.props.onFilterChange}
             onToggle={this.props.onFacetToggle}
index 37e380654ad5886f4ac4ca145ceeebac21ec875a..21cf417c20e16bba5b89d606be13dac75d971a36 100644 (file)
@@ -204,7 +204,7 @@ export default class StandardFacet extends React.PureComponent<Props, State> {
             loading={this.props.loading}
             name={renderName(category)}
             onClick={onClick}
-            stat={formatFacetStat(getStat(category), '')}
+            stat={formatFacetStat(getStat(category))}
             tooltip={values.length === 1 && !values.includes(category)}
             value={category}
           />
index f34c2695d084431b39f7c3fa594a65b46a015727..dea89105567ded02eb496532e1309b3bee283b98 100644 (file)
@@ -28,7 +28,6 @@ import StatusHelper from '../../../components/shared/StatusHelper';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -84,7 +83,7 @@ export default class StatusFacet extends React.PureComponent<Props> {
         loading={this.props.loading}
         name={<StatusHelper resolution={undefined} status={status} />}
         onClick={this.handleItemClick}
-        stat={formatFacetStat(stat, this.props.facetMode)}
+        stat={formatFacetStat(stat)}
         tooltip={this.props.statuses.length === 1 && !this.props.statuses.includes(status)}
         value={status}
       />
index 91e30bf9de57f668b5ce0e9c0524521c984a83d8..2db0f5c91187e5b8b1a15e471c5a8eefe9152e78 100644 (file)
@@ -33,7 +33,6 @@ import { translate } from '../../../helpers/l10n';
 
 interface Props {
   component: Component | undefined;
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -116,7 +115,7 @@ export default class TagFacet extends React.PureComponent<Props> {
             loading={this.props.loading}
             name={this.renderTag(tag)}
             onClick={this.handleItemClick}
-            stat={formatFacetStat(this.getStat(tag), this.props.facetMode)}
+            stat={formatFacetStat(this.getStat(tag))}
             tooltip={this.props.tags.length === 1 && !this.props.tags.includes(tag)}
             value={tag}
           />
index a6a189b7ddb2349b0877a21afcd5ecdbc5b2987f..0cb0497549d566b57cec04dbb945a8596bde5f6e 100644 (file)
@@ -28,7 +28,6 @@ import IssueTypeIcon from '../../../components/ui/IssueTypeIcon';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  facetMode: string;
   loading?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
@@ -87,7 +86,7 @@ export default class TypeFacet extends React.PureComponent<Props> {
           </span>
         }
         onClick={this.handleItemClick}
-        stat={formatFacetStat(stat, this.props.facetMode)}
+        stat={formatFacetStat(stat)}
         tooltip={this.props.types.length === 1 && !this.props.types.includes(type)}
         value={type}
       />
index 7378d918cc1047463c4ca37a922571311dee8cce..efed16ca848b38428bf3b93d432ce2269f1d5572 100644 (file)
@@ -29,7 +29,6 @@ const renderAssigneeFacet = (props?: Partial<Props>) =>
       assigned={true}
       assignees={[]}
       component={undefined}
-      facetMode="count"
       onChange={jest.fn()}
       onToggle={jest.fn()}
       open={true}
index 21ba65b2fcb950d4814284b3b058de6602f2bfd7..db112435946044123e278e07f2858c0854e4270a 100644 (file)
@@ -2,7 +2,6 @@
 
 exports[`should render facets for developer 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
@@ -22,7 +21,6 @@ Array [
 
 exports[`should render facets for directory 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
@@ -40,7 +38,6 @@ Array [
 
 exports[`should render facets for global page 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
@@ -58,7 +55,6 @@ Array [
 
 exports[`should render facets for module 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
@@ -78,7 +74,6 @@ Array [
 
 exports[`should render facets for project 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
@@ -98,7 +93,6 @@ Array [
 
 exports[`should render facets when my issues are selected 1`] = `
 Array [
-  "FacetMode",
   "TypeFacet",
   "SeverityFacet",
   "ResolutionFacet",
index 2cfa7db377dfbd53657bc1864616e7804a8fe57c..b9d98b78d9a2ff00afd37015b5168c9a1f8854a0 100644 (file)
@@ -26,7 +26,6 @@ import {
   queriesEqual,
   cleanQuery,
   parseAsBoolean,
-  parseAsFacetMode,
   parseAsArray,
   parseAsString,
   serializeString,
@@ -46,7 +45,6 @@ export interface Query {
   createdInLast: string;
   cwe: string[];
   directories: string[];
-  facetMode: string;
   files: string[];
   issues: string[];
   languages: string[];
@@ -82,7 +80,6 @@ export function parseQuery(query: RawQuery): Query {
     createdInLast: parseAsString(query.createdInLast),
     cwe: parseAsArray(query.cwe, parseAsString),
     directories: parseAsArray(query.directories, parseAsString),
-    facetMode: parseAsFacetMode(query.facetMode),
     files: parseAsArray(query.fileUuids, parseAsString),
     issues: parseAsArray(query.issues, parseAsString),
     languages: parseAsArray(query.languages, parseAsString),
@@ -119,7 +116,6 @@ export function serializeQuery(query: Query): RawQuery {
     createdInLast: serializeString(query.createdInLast),
     cwe: serializeStringArray(query.cwe),
     directories: serializeStringArray(query.directories),
-    facetMode: query.facetMode === 'effort' ? serializeString(query.facetMode) : undefined,
     fileUuids: serializeStringArray(query.files),
     issues: serializeStringArray(query.issues),
     languages: serializeStringArray(query.languages),
@@ -181,8 +177,8 @@ export function parseFacets(facets: RawFacet[]) {
   return result;
 }
 
-export function formatFacetStat(stat: number | undefined, mode: string) {
-  return stat && formatMeasure(stat, mode === 'effort' ? 'SHORT_WORK_DUR' : 'SHORT_INT');
+export function formatFacetStat(stat: number | undefined) {
+  return stat && formatMeasure(stat, 'SHORT_INT');
 }
 
 export interface ReferencedComponent {
index bc632fae96a16f6d592d5f90cfb395bd8caff34e..f180e484cd29af926e3931ec5b36f4235528cb2d 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 import * as React from 'react';
-import { Link } from 'react-router';
 import enhance, { ComposedProps } from './enhance';
 import DateFromNow from '../../../components/intl/DateFromNow';
 import { getMetricName } from '../helpers/metrics';
 import { translate, translateWithParameters } from '../../../helpers/l10n';
-import { formatMeasure, isDiffMetric } from '../../../helpers/measures';
-import { getComponentIssuesUrl } from '../../../helpers/urls';
+import { formatMeasure } from '../../../helpers/measures';
 import CodeSmellIcon from '../../../components/icons-components/CodeSmellIcon';
-import { getBranchLikeQuery } from '../../../helpers/branches';
+import DrilldownLink from '../../../components/shared/DrilldownLink';
 
 export class CodeSmells extends React.PureComponent<ComposedProps> {
   renderHeader() {
     return this.props.renderHeader('Maintainability', translate('metric.code_smells.name'));
   }
 
-  renderDebt(metric: string, type: string) {
+  renderDebt(metric: string) {
     const { branchLike, measures, component } = this.props;
     const measure = measures.find(measure => measure.metric.key === metric);
     const value = measure ? this.props.getValue(measure) : undefined;
-    const params = {
-      ...getBranchLikeQuery(branchLike),
-      resolved: 'false',
-      facetMode: 'effort',
-      types: type
-    };
-
-    if (isDiffMetric(metric)) {
-      Object.assign(params, { sinceLeakPeriod: 'true' });
-    }
 
     return (
-      <Link to={getComponentIssuesUrl(component.key, params)}>
+      <DrilldownLink branchLike={branchLike} component={component.key} metric={metric}>
         {formatMeasure(value, 'SHORT_WORK_DUR')}
-      </Link>
+      </DrilldownLink>
     );
   }
 
@@ -89,9 +77,7 @@ export class CodeSmells extends React.PureComponent<ComposedProps> {
         <div className="overview-domain-measures">
           <div className="overview-domain-measure">
             <div className="overview-domain-measure-value">
-              <span style={{ marginLeft: 30 }}>
-                {this.renderDebt('new_technical_debt', 'CODE_SMELL')}
-              </span>
+              <span style={{ marginLeft: 30 }}>{this.renderDebt('new_technical_debt')}</span>
               {this.props.renderRating('new_maintainability_rating')}
             </div>
             <div className="overview-domain-measure-label">{getMetricName('new_effort')}</div>
@@ -118,7 +104,7 @@ export class CodeSmells extends React.PureComponent<ComposedProps> {
         <div className="overview-domain-measures">
           <div className="overview-domain-measure">
             <div className="overview-domain-measure-value">
-              {this.renderDebt('sqale_index', 'CODE_SMELL')}
+              {this.renderDebt('sqale_index')}
               {this.props.renderRating('sqale_rating')}
             </div>
             <div className="overview-domain-measure-label">
index 9081e9ba1e4f14bac74c6c845c29fa692b8d5760..b04a662320e881e4234245f22c35d68ccde22375 100644 (file)
@@ -47,15 +47,6 @@ describe('parseAsBoolean', () => {
   });
 });
 
-describe('parseAsFacetMode', () => {
-  it('should facets modes correctly', () => {
-    expect(query.parseAsFacetMode('debt')).toBe('effort');
-    expect(query.parseAsFacetMode('effort')).toBe('effort');
-    expect(query.parseAsFacetMode('count')).toBe('count');
-    expect(query.parseAsFacetMode('random')).toBe('count');
-  });
-});
-
 describe('parseAsString', () => {
   it('should parse strings correctly', () => {
     expect(query.parseAsString('random')).toBe('random');
index 5da77512078802badd45f0ba85dbcdb674fe72f8..248c2baa5037001ed61e84df9955023da946b21f 100644 (file)
@@ -63,10 +63,6 @@ export function parseAsDate(value?: string): Date | undefined {
   return undefined;
 }
 
-export function parseAsFacetMode(facetMode: string): string {
-  return facetMode === 'debt' || facetMode === 'effort' ? 'effort' : 'count';
-}
-
 export function parseAsString(value: string | undefined): string {
   return value || '';
 }