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 0ebcb09b03.
pull/72346/head
mikkancso 2 years ago committed by GitHub
parent 4990f36d8b
commit 7a97bf7f15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      pkg/services/navtree/navtreeimpl/admin.go
  2. 9
      public/app/features/connections/pages/DataSourceDashboardsPage.tsx
  3. 22
      public/app/routes/routes.tsx

@ -4,7 +4,6 @@ import (
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
"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/navtree"
"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)
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
if pluginaccesscontrol.ReqCanAdminPlugins(s.cfg)(c) || hasAccess(pluginaccesscontrol.AdminAccessEvaluator) {
configNodes = append(configNodes, &navtree.NavLink{

@ -3,16 +3,15 @@ import { useParams } from 'react-router-dom';
import { Page } from 'app/core/components/Page/Page';
import { DataSourceDashboards } from 'app/features/datasources/components/DataSourceDashboards';
import { useDataSourceSettingsNav } from 'app/features/datasources/state';
import { useDataSourceSettingsNav } from '../hooks/useDataSourceSettingsNav';
export function DataSourceDashboardsPage() {
const { uid } = useParams<{ uid: string }>();
const params = new URLSearchParams(location.search);
const pageId = params.get('page');
const nav = useDataSourceSettingsNav(uid, pageId);
const { navId, pageNav } = useDataSourceSettingsNav();
return (
<Page navId="connections-your-connections-datasources" pageNav={nav.main}>
<Page navId={navId} pageNav={pageNav}>
<Page.Contents>
<DataSourceDashboards uid={uid} />
</Page.Contents>

@ -1,5 +1,5 @@
import React from 'react';
import { Redirect } from 'react-router-dom';
import { Redirect, RouteComponentProps } from 'react-router-dom';
import { isTruthy } from '@grafana/data';
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 LdapPage from 'app/features/admin/ldap/LdapPage';
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 { DATASOURCES_ROUTES } from 'app/features/datasources/constants';
import { getRoutes as getPluginCatalogRoutes } from 'app/features/plugins/admin/routes';
@ -105,30 +106,23 @@ export function getAppRoutes(): RouteDescriptor[] {
},
{
path: DATASOURCES_ROUTES.List,
component: SafeDynamicImport(
() => import(/* webpackChunkName: "DataSourcesListPage"*/ 'app/features/datasources/pages/DataSourcesListPage')
),
component: () => <Redirect to={CONNECTIONS_ROUTES.DataSources} />,
},
{
path: DATASOURCES_ROUTES.Edit,
component: SafeDynamicImport(
() => import(/* webpackChunkName: "EditDataSourcePage"*/ '../features/datasources/pages/EditDataSourcePage')
component: (props: RouteComponentProps<{ uid: string }>) => (
<Redirect to={CONNECTIONS_ROUTES.DataSourcesEdit.replace(':uid', props.match.params.uid)} />
),
},
{
path: DATASOURCES_ROUTES.Dashboards,
component: SafeDynamicImport(
() =>
import(
/* webpackChunkName: "DataSourceDashboards"*/ 'app/features/datasources/pages/DataSourceDashboardsPage'
)
component: (props: RouteComponentProps<{ uid: string }>) => (
<Redirect to={CONNECTIONS_ROUTES.DataSourcesDashboards.replace(':uid', props.match.params.uid)} />
),
},
{
path: DATASOURCES_ROUTES.New,
component: SafeDynamicImport(
() => import(/* webpackChunkName: "NewDataSourcePage"*/ '../features/datasources/pages/NewDataSourcePage')
),
component: () => <Redirect to={CONNECTIONS_ROUTES.DataSourcesNew} />,
},
{
path: '/datasources/correlations',

Loading…
Cancel
Save