mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 17:52:20 +08:00
Data Sources: Remove Admin/Data sources page in favour of Connections/Data sources (#72102)
* don't show Admin/Data sources page in navtree * redirect from admin/datasources to connections/datasources * update link of DS plugins to connections/datasources * redirect edit page from datasources to connections * redirect to new datasource page under connections * redirect to datasouce dashboard page under connections * fix navId on datasource dashboards page * fix datasource dashboard page's nav * Revert "update link of DS plugins to connections/datasources" This reverts commit 0ebcb09b038b9db14f16bd0066c26869e57ff253.
This commit is contained in:
@ -4,7 +4,6 @@ import (
|
|||||||
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||||
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
|
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
|
||||||
"github.com/grafana/grafana/pkg/services/correlations"
|
"github.com/grafana/grafana/pkg/services/correlations"
|
||||||
"github.com/grafana/grafana/pkg/services/datasources"
|
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
"github.com/grafana/grafana/pkg/services/navtree"
|
"github.com/grafana/grafana/pkg/services/navtree"
|
||||||
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginaccesscontrol"
|
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginaccesscontrol"
|
||||||
@ -18,16 +17,6 @@ func (s *ServiceImpl) getAdminNode(c *contextmodel.ReqContext) (*navtree.NavLink
|
|||||||
orgsAccessEvaluator := ac.EvalPermission(ac.ActionOrgsRead)
|
orgsAccessEvaluator := ac.EvalPermission(ac.ActionOrgsRead)
|
||||||
authConfigUIAvailable := s.license.FeatureEnabled("saml")
|
authConfigUIAvailable := s.license.FeatureEnabled("saml")
|
||||||
|
|
||||||
if hasAccess(datasources.ConfigurationPageAccess) {
|
|
||||||
configNodes = append(configNodes, &navtree.NavLink{
|
|
||||||
Text: "Data sources",
|
|
||||||
Icon: "database",
|
|
||||||
SubTitle: "Add and configure data sources",
|
|
||||||
Id: "datasources",
|
|
||||||
Url: s.cfg.AppSubURL + "/datasources",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: while we don't have a permissions for listing plugins the legacy check has to stay as a default
|
// FIXME: while we don't have a permissions for listing plugins the legacy check has to stay as a default
|
||||||
if pluginaccesscontrol.ReqCanAdminPlugins(s.cfg)(c) || hasAccess(pluginaccesscontrol.AdminAccessEvaluator) {
|
if pluginaccesscontrol.ReqCanAdminPlugins(s.cfg)(c) || hasAccess(pluginaccesscontrol.AdminAccessEvaluator) {
|
||||||
configNodes = append(configNodes, &navtree.NavLink{
|
configNodes = append(configNodes, &navtree.NavLink{
|
||||||
|
@ -3,16 +3,15 @@ import { useParams } from 'react-router-dom';
|
|||||||
|
|
||||||
import { Page } from 'app/core/components/Page/Page';
|
import { Page } from 'app/core/components/Page/Page';
|
||||||
import { DataSourceDashboards } from 'app/features/datasources/components/DataSourceDashboards';
|
import { DataSourceDashboards } from 'app/features/datasources/components/DataSourceDashboards';
|
||||||
import { useDataSourceSettingsNav } from 'app/features/datasources/state';
|
|
||||||
|
import { useDataSourceSettingsNav } from '../hooks/useDataSourceSettingsNav';
|
||||||
|
|
||||||
export function DataSourceDashboardsPage() {
|
export function DataSourceDashboardsPage() {
|
||||||
const { uid } = useParams<{ uid: string }>();
|
const { uid } = useParams<{ uid: string }>();
|
||||||
const params = new URLSearchParams(location.search);
|
const { navId, pageNav } = useDataSourceSettingsNav();
|
||||||
const pageId = params.get('page');
|
|
||||||
const nav = useDataSourceSettingsNav(uid, pageId);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page navId="connections-your-connections-datasources" pageNav={nav.main}>
|
<Page navId={navId} pageNav={pageNav}>
|
||||||
<Page.Contents>
|
<Page.Contents>
|
||||||
<DataSourceDashboards uid={uid} />
|
<DataSourceDashboards uid={uid} />
|
||||||
</Page.Contents>
|
</Page.Contents>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Redirect } from 'react-router-dom';
|
import { Redirect, RouteComponentProps } from 'react-router-dom';
|
||||||
|
|
||||||
import { isTruthy } from '@grafana/data';
|
import { isTruthy } from '@grafana/data';
|
||||||
import { LoginPage } from 'app/core/components/Login/LoginPage';
|
import { LoginPage } from 'app/core/components/Login/LoginPage';
|
||||||
@ -10,6 +10,7 @@ import { contextSrv } from 'app/core/services/context_srv';
|
|||||||
import UserAdminPage from 'app/features/admin/UserAdminPage';
|
import UserAdminPage from 'app/features/admin/UserAdminPage';
|
||||||
import LdapPage from 'app/features/admin/ldap/LdapPage';
|
import LdapPage from 'app/features/admin/ldap/LdapPage';
|
||||||
import { getAlertingRoutes } from 'app/features/alerting/routes';
|
import { getAlertingRoutes } from 'app/features/alerting/routes';
|
||||||
|
import { ROUTES as CONNECTIONS_ROUTES } from 'app/features/connections/constants';
|
||||||
import { getRoutes as getDataConnectionsRoutes } from 'app/features/connections/routes';
|
import { getRoutes as getDataConnectionsRoutes } from 'app/features/connections/routes';
|
||||||
import { DATASOURCES_ROUTES } from 'app/features/datasources/constants';
|
import { DATASOURCES_ROUTES } from 'app/features/datasources/constants';
|
||||||
import { getRoutes as getPluginCatalogRoutes } from 'app/features/plugins/admin/routes';
|
import { getRoutes as getPluginCatalogRoutes } from 'app/features/plugins/admin/routes';
|
||||||
@ -105,30 +106,23 @@ export function getAppRoutes(): RouteDescriptor[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: DATASOURCES_ROUTES.List,
|
path: DATASOURCES_ROUTES.List,
|
||||||
component: SafeDynamicImport(
|
component: () => <Redirect to={CONNECTIONS_ROUTES.DataSources} />,
|
||||||
() => import(/* webpackChunkName: "DataSourcesListPage"*/ 'app/features/datasources/pages/DataSourcesListPage')
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: DATASOURCES_ROUTES.Edit,
|
path: DATASOURCES_ROUTES.Edit,
|
||||||
component: SafeDynamicImport(
|
component: (props: RouteComponentProps<{ uid: string }>) => (
|
||||||
() => import(/* webpackChunkName: "EditDataSourcePage"*/ '../features/datasources/pages/EditDataSourcePage')
|
<Redirect to={CONNECTIONS_ROUTES.DataSourcesEdit.replace(':uid', props.match.params.uid)} />
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: DATASOURCES_ROUTES.Dashboards,
|
path: DATASOURCES_ROUTES.Dashboards,
|
||||||
component: SafeDynamicImport(
|
component: (props: RouteComponentProps<{ uid: string }>) => (
|
||||||
() =>
|
<Redirect to={CONNECTIONS_ROUTES.DataSourcesDashboards.replace(':uid', props.match.params.uid)} />
|
||||||
import(
|
|
||||||
/* webpackChunkName: "DataSourceDashboards"*/ 'app/features/datasources/pages/DataSourceDashboardsPage'
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: DATASOURCES_ROUTES.New,
|
path: DATASOURCES_ROUTES.New,
|
||||||
component: SafeDynamicImport(
|
component: () => <Redirect to={CONNECTIONS_ROUTES.DataSourcesNew} />,
|
||||||
() => import(/* webpackChunkName: "NewDataSourcePage"*/ '../features/datasources/pages/NewDataSourcePage')
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/datasources/correlations',
|
path: '/datasources/correlations',
|
||||||
|
Reference in New Issue
Block a user