mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
|
import React, { useEffect, useState } from 'react';
|
||
|
|
||
|
import { getDataSourceSrv, locationService } from '@grafana/runtime';
|
||
|
import { Page } from 'app/core/components/Page/Page';
|
||
|
import { GrafanaRouteComponentProps } from 'app/core/navigation/types';
|
||
|
|
||
|
import { getNewDashboardModelData, setDashboardToFetchFromLocalStorage } from '../state/initDashboard';
|
||
|
|
||
|
export default function NewDashboardWithDS(props: GrafanaRouteComponentProps<{ datasourceUid: string }>) {
|
||
|
const [error, setError] = useState<string | null>(null);
|
||
|
const { datasourceUid } = props.match.params;
|
||
|
|
||
|
useEffect(() => {
|
||
|
const ds = getDataSourceSrv().getInstanceSettings(datasourceUid);
|
||
|
if (!ds) {
|
||
|
setError('Data source not found');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const newDashboard = getNewDashboardModelData();
|
||
|
const { dashboard } = newDashboard;
|
||
|
dashboard.panels[0] = {
|
||
|
...dashboard.panels[0],
|
||
|
datasource: {
|
||
|
uid: ds.uid,
|
||
|
type: ds.type,
|
||
|
},
|
||
|
};
|
||
|
|
||
|
setDashboardToFetchFromLocalStorage(newDashboard);
|
||
|
locationService.replace('/dashboard/new');
|
||
|
}, [datasourceUid]);
|
||
|
|
||
|
if (error) {
|
||
|
return (
|
||
|
<Page navId="dashboards">
|
||
|
<Page.Contents>
|
||
|
<div>Data source with UID "{datasourceUid}" not found.</div>
|
||
|
</Page.Contents>
|
||
|
</Page>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|