]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9285 More precise page titles
authorPascal Mugnier <pascal.mugnier@sonarsource.com>
Tue, 17 Apr 2018 08:38:37 +0000 (10:38 +0200)
committerSonarTech <sonartech@sonarsource.com>
Wed, 18 Apr 2018 18:20:53 +0000 (20:20 +0200)
server/sonar-web/src/main/js/apps/code/components/App.tsx
server/sonar-web/src/main/js/apps/component-measures/components/App.js
server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverview.js
server/sonar-web/src/main/js/apps/component-measures/components/MeasureOverviewContainer.js
server/sonar-web/src/main/js/apps/component-measures/components/__tests__/__snapshots__/App-test.js.snap
server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChart.js
server/sonar-web/src/main/js/apps/issues/components/App.tsx

index 937a66ee75189c1291eab31382e3c3c9536e755b..3c9ebfc25f40847807488dad2cf7a3ec79821b5a 100644 (file)
@@ -198,7 +198,7 @@ export default class App extends React.PureComponent<Props, State> {
 
     return (
       <div className="page page-limited">
-        <Helmet title={translate('code.page')} />
+        <Helmet title={sourceViewer !== undefined ? sourceViewer.name : translate('code.page')} />
 
         {error && <div className="alert alert-danger">{error}</div>}
 
index b03d79fcaaeaddce9f3a770872e5b5e8d9c928d1..b18f85ca24fedc6f06ed80a8ca1d05d18c0c4a64 100644 (file)
@@ -25,9 +25,13 @@ import MeasureContentContainer from './MeasureContentContainer';
 import MeasureOverviewContainer from './MeasureOverviewContainer';
 import Sidebar from '../sidebar/Sidebar';
 import ScreenPositionHelper from '../../../components/common/ScreenPositionHelper';
-import { hasBubbleChart, parseQuery, serializeQuery } from '../utils';
+import { isProjectOverview, hasBubbleChart, parseQuery, serializeQuery } from '../utils';
 import { isSameBranchLike, getBranchLikeQuery } from '../../../helpers/branches';
-import { translate } from '../../../helpers/l10n';
+import {
+  getLocalizedMetricDomain,
+  translateWithParameters,
+  translate
+} from '../../../helpers/l10n';
 import { getDisplayMetrics } from '../../../helpers/measures';
 /*:: import type { Component, Query, Period } from '../types'; */
 /*:: import type { RawQuery } from '../../../helpers/query'; */
@@ -147,6 +151,21 @@ export default class App extends React.PureComponent {
     });
   };
 
+  getHelmetTitle = (
+    metric /*: Metric */,
+    query /*: {metric: string, selected: string, view: string }*/
+  ) => {
+    if (metric == null && hasBubbleChart(query.metric)) {
+      return isProjectOverview(query.metric)
+        ? translate('component_measures.overview.project_overview.facet')
+        : translateWithParameters(
+            'component_measures.domain_x_overview',
+            getLocalizedMetricDomain(query.metric)
+          );
+    }
+    return metric != null ? metric.name : translate('layout.measures');
+  };
+
   render() {
     const isLoading = this.state.loading || this.props.metricsKey.length <= 0;
     if (isLoading) {
@@ -158,7 +177,7 @@ export default class App extends React.PureComponent {
     const metric = metrics[query.metric];
     return (
       <div className="layout-page" id="component-measures">
-        <Helmet title={translate('layout.measures')} />
+        <Helmet title={this.getHelmetTitle(metric, query)} />
 
         <ScreenPositionHelper className="layout-page-side-outer">
           {({ top }) => (
@@ -181,11 +200,11 @@ export default class App extends React.PureComponent {
             branchLike={branchLike}
             className="layout-page-main"
             currentUser={this.props.currentUser}
-            rootComponent={component}
             fetchMeasures={fetchMeasures}
             leakPeriod={leakPeriod}
             metric={metric}
             metrics={metrics}
+            rootComponent={component}
             router={this.props.router}
             selected={query.selected}
             updateQuery={this.updateQuery}
@@ -197,11 +216,11 @@ export default class App extends React.PureComponent {
             <MeasureOverviewContainer
               branchLike={branchLike}
               className="layout-page-main"
-              rootComponent={component}
               currentUser={this.props.currentUser}
               domain={query.metric}
               leakPeriod={leakPeriod}
               metrics={metrics}
+              rootComponent={component}
               router={this.props.router}
               selected={query.selected}
               updateQuery={this.updateQuery}
index 0128f7b8b1f0ea3c5ec95786a4403a3923a4f062..77cb425f7a92d416b991d0dbb8b9cd8a6d44bca1 100644 (file)
@@ -156,14 +156,14 @@ export default class MeasureOverview extends React.PureComponent {
               {component.key !== rootComponent.key &&
                 isLoggedIn && (
                   <MeasureFavoriteContainer
-                    component={component.key}
                     className="measure-favorite spacer-right"
+                    component={component.key}
                   />
                 )}
               <PageActions
                 current={this.state.components.length}
-                loading={this.props.loading}
                 isFile={isFile}
+                loading={this.props.loading}
                 paging={this.state.paging}
               />
             </div>
index b69a9a8378fb070dc531b71f417bff6fd3fbc278..141cb9839db6580959896c8d70d85fe91855fe92 100644 (file)
@@ -128,8 +128,8 @@ export default class MeasureOverviewContainer extends React.PureComponent {
         component={this.state.component}
         currentUser={this.props.currentUser}
         domain={this.props.domain}
-        loading={this.state.loading.component || this.state.loading.bubbles}
         leakPeriod={this.props.leakPeriod}
+        loading={this.state.loading.component || this.state.loading.bubbles}
         metrics={this.props.metrics}
         rootComponent={this.props.rootComponent}
         updateLoading={this.updateLoading}
index 0477a1498770467f2bb00eaac226a9e624127419..a5a8537c675db951f8ed5130810f1e28fe442259 100644 (file)
@@ -8,7 +8,7 @@ exports[`should render correctly 1`] = `
   <HelmetWrapper
     defer={true}
     encodeSpecialCharacters={true}
-    title="layout.measures"
+    title="Coverage"
   />
   <ScreenPositionHelper
     className="layout-page-side-outer"
index 082dad7f72d3ba2a8c877b6154a9427b83b60d11..dad5a4ec0e23df9e3fb922216a63603b4075af4f 100644 (file)
@@ -145,12 +145,12 @@ export default class BubbleChart extends React.PureComponent {
 
     return (
       <OriginalBubbleChart
-        items={items}
-        height={HEIGHT}
-        padding={[25, 60, 50, 60]}
         formatXTick={formatXTick}
         formatYTick={formatYTick}
+        height={HEIGHT}
+        items={items}
         onBubbleClick={this.handleBubbleClick}
+        padding={[25, 60, 50, 60]}
         yDomain={getBubbleYDomain(this.props.domain)}
       />
     );
index a433057b301b8401fbe458f4eefb3662c3aa79d5..28a60d965e3f9657c80099c4904f8cfba31f2fab 100644 (file)
@@ -995,7 +995,7 @@ export default class App extends React.PureComponent<Props, State> {
     const selectedIndex = this.getSelectedIndex();
     return (
       <div className="layout-page issues" id="issues-page">
-        <Helmet title={translate('issues.page')} />
+        <Helmet title={openIssue ? openIssue.message : translate('issues.page')} />
 
         {this.renderSide(openIssue)}