]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11329 update rendeing of project breadcrumbs
authorStas Vilchik <stas.vilchik@sonarsource.com>
Mon, 17 Dec 2018 15:41:29 +0000 (16:41 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 20 Dec 2018 10:41:51 +0000 (11:41 +0100)
server/sonar-web/src/main/js/app/components/nav/component/ComponentNavHeader.tsx
server/sonar-web/src/main/js/app/components/nav/component/__tests__/__snapshots__/ComponentNavHeader-test.tsx.snap

index ac4bc1690c64a5b27615be7a7843123d2202a4e8..e634f80cfefa2db570281e03c82197e1be94a6e3 100644 (file)
@@ -30,6 +30,7 @@ import { sanitizeAlmId } from '../../../../helpers/almIntegrations';
 import { collapsePath } from '../../../../helpers/path';
 import { getProjectUrl, getBaseUrl } from '../../../../helpers/urls';
 import { isSonarCloud } from '../../../../helpers/system';
+import { isMainBranch } from '../../../../helpers/branches';
 
 interface StateProps {
   organization?: T.Organization;
@@ -42,7 +43,7 @@ interface OwnProps {
   location?: any;
 }
 
-interface Props extends StateProps, OwnProps {}
+type Props = StateProps & OwnProps;
 
 export function ComponentNavHeader(props: Props) {
   const { component, organization } = props;
@@ -65,7 +66,10 @@ export function ComponentNavHeader(props: Props) {
             <span className="slash-separator" />
           </>
         )}
-      {renderBreadcrumbs(component.breadcrumbs)}
+      {renderBreadcrumbs(
+        component.breadcrumbs,
+        props.currentBranchLike !== undefined && !isMainBranch(props.currentBranchLike)
+      )}
       {isSonarCloud() &&
         component.alm && (
           <a
@@ -95,7 +99,7 @@ export function ComponentNavHeader(props: Props) {
   );
 }
 
-function renderBreadcrumbs(breadcrumbs: T.Breadcrumb[]) {
+function renderBreadcrumbs(breadcrumbs: T.Breadcrumb[], shouldLinkLast: boolean) {
   const lastItem = breadcrumbs[breadcrumbs.length - 1];
   return breadcrumbs.map((item, index) => {
     const isPath = item.qualifier === 'DIR';
@@ -104,12 +108,18 @@ function renderBreadcrumbs(breadcrumbs: T.Breadcrumb[]) {
     return (
       <React.Fragment key={item.key}>
         {index === 0 && <QualifierIcon className="spacer-right" qualifier={lastItem.qualifier} />}
-        <Link
-          className="navbar-context-header-breadcrumb-link link-base-color link-no-underline"
-          title={item.name}
-          to={getProjectUrl(item.key)}>
-          {itemName}
-        </Link>
+        {shouldLinkLast || index < breadcrumbs.length - 1 ? (
+          <Link
+            className="navbar-context-header-breadcrumb-link link-base-color link-no-underline"
+            title={item.name}
+            to={getProjectUrl(item.key)}>
+            {itemName}
+          </Link>
+        ) : (
+          <span className="navbar-context-header-breadcrumb-link" title={item.name}>
+            {itemName}
+          </span>
+        )}
         {index < breadcrumbs.length - 1 && <span className="slash-separator" />}
       </React.Fragment>
     );
index d45945ae01eadec2e4ccf0935f98e8eff6a23324..eea61301c22d6138a5815547a74d3461e0824a72 100644 (file)
@@ -11,23 +11,12 @@ exports[`should not render breadcrumbs with one element 1`] = `
     className="spacer-right"
     qualifier="TRK"
   />
-  <Link
-    className="navbar-context-header-breadcrumb-link link-base-color link-no-underline"
-    onlyActiveOnIndex={false}
-    style={Object {}}
+  <span
+    className="navbar-context-header-breadcrumb-link"
     title="My Project"
-    to={
-      Object {
-        "pathname": "/dashboard",
-        "query": Object {
-          "branch": undefined,
-          "id": "my-project",
-        },
-      }
-    }
   >
     My Project
-  </Link>
+  </span>
 </header>
 `;
 
@@ -73,23 +62,12 @@ exports[`should render alm links 1`] = `
     className="spacer-right"
     qualifier="TRK"
   />
-  <Link
-    className="navbar-context-header-breadcrumb-link link-base-color link-no-underline"
-    onlyActiveOnIndex={false}
-    style={Object {}}
+  <span
+    className="navbar-context-header-breadcrumb-link"
     title="My Project"
-    to={
-      Object {
-        "pathname": "/dashboard",
-        "query": Object {
-          "branch": undefined,
-          "id": "my-project",
-        },
-      }
-    }
   >
     My Project
-  </Link>
+  </span>
   <a
     className="link-no-underline"
     href="https://bitbucket.org/foo"
@@ -149,22 +127,11 @@ exports[`should render organization 1`] = `
     className="spacer-right"
     qualifier="TRK"
   />
-  <Link
-    className="navbar-context-header-breadcrumb-link link-base-color link-no-underline"
-    onlyActiveOnIndex={false}
-    style={Object {}}
+  <span
+    className="navbar-context-header-breadcrumb-link"
     title="My Project"
-    to={
-      Object {
-        "pathname": "/dashboard",
-        "query": Object {
-          "branch": undefined,
-          "id": "my-project",
-        },
-      }
-    }
   >
     My Project
-  </Link>
+  </span>
 </header>
 `;