diff --git a/public/app/core/components/Page/Page.tsx b/public/app/core/components/Page/Page.tsx index 0197076d150..8c9a5595cb7 100644 --- a/public/app/core/components/Page/Page.tsx +++ b/public/app/core/components/Page/Page.tsx @@ -1,6 +1,8 @@ // Libraries import React, { Component } from 'react'; import config from 'app/core/config'; +import { NavModel } from 'app/types'; +import { getTitleFromNavModel } from 'app/core/selectors/navModel'; // Components import PageHeader from '../PageHeader/PageHeader'; @@ -11,6 +13,7 @@ import { CustomScrollbar } from '@grafana/ui'; interface Props { title?: string; children: JSX.Element[] | JSX.Element; + navModel: NavModel; } class Page extends Component { @@ -35,26 +38,36 @@ class Page extends Component { } updateTitle = () => { - const { title } = this.props; + const title = this.getPageTitle; document.title = title ? title + ' - Grafana' : 'Grafana'; } + get getPageTitle () { + const { navModel } = this.props; + if (navModel) { + return getTitleFromNavModel(navModel) || undefined; + } + return undefined; + } + render() { + const { navModel } = this.props; const { buildInfo } = config; return ( -
- -
- {this.props.children} -
-
-
-
+
+ +
+ + {this.props.children} +
+
+
+
); } } diff --git a/public/app/features/api-keys/ApiKeysPage.tsx b/public/app/features/api-keys/ApiKeysPage.tsx index 4cbd8ce4170..41b9b0c8a55 100644 --- a/public/app/features/api-keys/ApiKeysPage.tsx +++ b/public/app/features/api-keys/ApiKeysPage.tsx @@ -3,7 +3,7 @@ import ReactDOMServer from 'react-dom/server'; import { connect } from 'react-redux'; import { hot } from 'react-hot-loader'; import { NavModel, ApiKey, NewApiKey, OrgRole } from 'app/types'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; import { getApiKeys, getApiKeysCount } from './state/selectors'; import { loadApiKeys, deleteApiKey, setSearchQuery, addApiKey } from './state/actions'; import Page from 'app/core/components/Page/Page'; @@ -239,8 +239,7 @@ export class ApiKeysPage extends PureComponent { const { hasFetched, navModel, apiKeysCount } = this.props; return ( - - + {hasFetched && ( apiKeysCount > 0 ? ( diff --git a/public/app/features/api-keys/__snapshots__/ApiKeysPage.test.tsx.snap b/public/app/features/api-keys/__snapshots__/ApiKeysPage.test.tsx.snap index fd05b79da81..f40894426ae 100644 --- a/public/app/features/api-keys/__snapshots__/ApiKeysPage.test.tsx.snap +++ b/public/app/features/api-keys/__snapshots__/ApiKeysPage.test.tsx.snap @@ -2,20 +2,17 @@ exports[`Render should render API keys table if there are any keys 1`] = ` - + } +> @@ -24,20 +21,17 @@ exports[`Render should render API keys table if there are any keys 1`] = ` exports[`Render should render CTA if there are no API keys 1`] = ` - + } +> diff --git a/public/app/features/datasources/DataSourcesListPage.tsx b/public/app/features/datasources/DataSourcesListPage.tsx index f1c1c45ded8..884df929319 100644 --- a/public/app/features/datasources/DataSourcesListPage.tsx +++ b/public/app/features/datasources/DataSourcesListPage.tsx @@ -8,7 +8,7 @@ import DataSourcesList from './DataSourcesList'; import { DataSource, NavModel, StoreState } from 'app/types'; import { LayoutMode } from 'app/core/components/LayoutSelector/LayoutSelector'; import { loadDataSources, setDataSourcesLayoutMode, setDataSourcesSearchQuery } from './state/actions'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; import { getDataSources, @@ -67,8 +67,7 @@ export class DataSourcesListPage extends PureComponent { }; return ( - - + <> {hasFetched && dataSourcesCount === 0 && } diff --git a/public/app/features/datasources/__snapshots__/DataSourcesListPage.test.tsx.snap b/public/app/features/datasources/__snapshots__/DataSourcesListPage.test.tsx.snap index 8c351d1dc2d..63998d43870 100644 --- a/public/app/features/datasources/__snapshots__/DataSourcesListPage.test.tsx.snap +++ b/public/app/features/datasources/__snapshots__/DataSourcesListPage.test.tsx.snap @@ -2,20 +2,17 @@ exports[`Render should render action bar and datasources 1`] = ` - + } +> @@ -160,20 +157,17 @@ exports[`Render should render action bar and datasources 1`] = ` exports[`Render should render component 1`] = ` - + } +> diff --git a/public/app/features/org/OrgDetailsPage.tsx b/public/app/features/org/OrgDetailsPage.tsx index ce84bdefafd..ee644f0006f 100644 --- a/public/app/features/org/OrgDetailsPage.tsx +++ b/public/app/features/org/OrgDetailsPage.tsx @@ -6,7 +6,7 @@ import OrgProfile from './OrgProfile'; import SharedPreferences from 'app/core/components/SharedPreferences/SharedPreferences'; import { loadOrganization, setOrganizationName, updateOrganization } from './state/actions'; import { NavModel, Organization, StoreState } from 'app/types'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; export interface Props { navModel: NavModel; @@ -34,8 +34,7 @@ export class OrgDetailsPage extends PureComponent { const isLoading = Object.keys(organization).length === 0; return ( - - +
{!isLoading && ( diff --git a/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap b/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap index 84c4f17fba8..9e13a73901e 100644 --- a/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap +++ b/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap @@ -2,20 +2,17 @@ exports[`Render should render component 1`] = ` - + } +> @@ -28,20 +25,17 @@ exports[`Render should render component 1`] = ` exports[`Render should render organization and preferences 1`] = ` - + } +> diff --git a/public/app/features/plugins/PluginListPage.tsx b/public/app/features/plugins/PluginListPage.tsx index 14bd05f0537..3bc0ee545b4 100644 --- a/public/app/features/plugins/PluginListPage.tsx +++ b/public/app/features/plugins/PluginListPage.tsx @@ -6,7 +6,7 @@ import OrgActionBar from 'app/core/components/OrgActionBar/OrgActionBar'; import PluginList from './PluginList'; import { NavModel, Plugin } from 'app/types'; import { loadPlugins, setPluginsLayoutMode, setPluginsSearchQuery } from './state/actions'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; import { getLayoutMode, getPlugins, getPluginsSearchQuery } from './state/selectors'; import { LayoutMode } from 'app/core/components/LayoutSelector/LayoutSelector'; @@ -47,8 +47,7 @@ export class PluginListPage extends PureComponent { }; return ( - - + <> - + } +> @@ -37,20 +34,17 @@ exports[`Render should render component 1`] = ` exports[`Render should render list 1`] = ` - + } +> diff --git a/public/app/features/teams/TeamList.tsx b/public/app/features/teams/TeamList.tsx index 5dd83ca385c..efd279184d4 100644 --- a/public/app/features/teams/TeamList.tsx +++ b/public/app/features/teams/TeamList.tsx @@ -7,7 +7,7 @@ import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA'; import { NavModel, Team } from 'app/types'; import { loadTeams, deleteTeam, setSearchQuery } from './state/actions'; import { getSearchQuery, getTeams, getTeamsCount } from './state/selectors'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; export interface Props { navModel: NavModel; @@ -140,8 +140,7 @@ export class TeamList extends PureComponent { const { hasFetched, navModel } = this.props; return ( - - + {hasFetched && this.renderList()} diff --git a/public/app/features/teams/__snapshots__/TeamList.test.tsx.snap b/public/app/features/teams/__snapshots__/TeamList.test.tsx.snap index cfa9533e1b6..812fe05c424 100644 --- a/public/app/features/teams/__snapshots__/TeamList.test.tsx.snap +++ b/public/app/features/teams/__snapshots__/TeamList.test.tsx.snap @@ -2,20 +2,17 @@ exports[`Render should render component 1`] = ` - + } +> @@ -24,20 +21,17 @@ exports[`Render should render component 1`] = ` exports[`Render should render teams table 1`] = ` - + } +> diff --git a/public/app/features/users/UsersListPage.tsx b/public/app/features/users/UsersListPage.tsx index 43fcc67e470..5396603bbde 100644 --- a/public/app/features/users/UsersListPage.tsx +++ b/public/app/features/users/UsersListPage.tsx @@ -9,7 +9,7 @@ import InviteesTable from './InviteesTable'; import { Invitee, NavModel, OrgUser } from 'app/types'; import appEvents from 'app/core/app_events'; import { loadUsers, loadInvitees, setUsersSearchQuery, updateUser, removeUser } from './state/actions'; -import { getNavModel, getTitleFromNavModel } from 'app/core/selectors/navModel'; +import { getNavModel } from 'app/core/selectors/navModel'; import { getInvitees, getUsers, getUsersSearchQuery } from './state/selectors'; export interface Props { @@ -104,8 +104,7 @@ export class UsersListPage extends PureComponent { const externalUserMngInfoHtml = this.externalUserMngInfoHtml; return ( - - + <> diff --git a/public/app/features/users/__snapshots__/UsersListPage.test.tsx.snap b/public/app/features/users/__snapshots__/UsersListPage.test.tsx.snap index c6c02562115..c8836666c59 100644 --- a/public/app/features/users/__snapshots__/UsersListPage.test.tsx.snap +++ b/public/app/features/users/__snapshots__/UsersListPage.test.tsx.snap @@ -2,20 +2,17 @@ exports[`Render should render List page 1`] = ` - + } +> @@ -34,20 +31,17 @@ exports[`Render should render List page 1`] = ` exports[`Render should render component 1`] = ` - + } +>