Commit 596a8340 by Peter Holmberg

fixed routes and page

parent 8c742a95
import React, { createRef, PureComponent } from 'react'; import React, { createRef, PureComponent } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { DataSource, Plugin } from 'app/types'; import { DataSource, NavModel, Plugin } from 'app/types';
import PageHeader from '../../core/components/PageHeader/PageHeader';
import { importPluginModule } from '../plugins/plugin_loader';
import { loadDataSource } from './state/actions';
import { getNavModel } from '../../core/selectors/navModel';
import { getRouteParamsId } from '../../core/selectors/location';
export interface Props { export interface Props {
navModel: NavModel;
dataSource: DataSource; dataSource: DataSource;
dataSourceMeta: Plugin; dataSourceMeta: Plugin;
pageId: number;
loadDataSource: typeof loadDataSource;
} }
interface State { interface State {
name: string; name: string;
...@@ -24,10 +32,13 @@ export class DataSourceSettings extends PureComponent<Props, State> { ...@@ -24,10 +32,13 @@ export class DataSourceSettings extends PureComponent<Props, State> {
showNamePopover: false, showNamePopover: false,
}; };
componentDidMount() { async componentDidMount() {
// importPluginModule(this.props.dataSourceMeta.module).then(pluginExports => { const { loadDataSource, pageId } = this.props;
// console.log(pluginExports);
// }); await loadDataSource(pageId);
importPluginModule(this.props.dataSourceMeta.module).then(pluginExports => {
console.log(pluginExports);
});
} }
onNameChange = event => { onNameChange = event => {
...@@ -84,8 +95,13 @@ export class DataSourceSettings extends PureComponent<Props, State> { ...@@ -84,8 +95,13 @@ export class DataSourceSettings extends PureComponent<Props, State> {
render() { render() {
const { name, showNamePopover } = this.state; const { name, showNamePopover } = this.state;
console.log(this.props);
return ( return (
<div> <div>
<PageHeader model={this.props.navModel} />
<div className="page-container page-body">
<div>
<form onSubmit={this.onSubmit}> <form onSubmit={this.onSubmit}>
<div className="gf-form-group"> <div className="gf-form-group">
<div className="gf-form-inline"> <div className="gf-form-inline">
...@@ -126,8 +142,8 @@ export class DataSourceSettings extends PureComponent<Props, State> { ...@@ -126,8 +142,8 @@ export class DataSourceSettings extends PureComponent<Props, State> {
{this.shouldRenderInfoBox() && <div className="grafana-info-box">{this.getInfoText()}</div>} {this.shouldRenderInfoBox() && <div className="grafana-info-box">{this.getInfoText()}</div>}
{this.isReadyOnly() && ( {this.isReadyOnly() && (
<div className="grafana-info-box span8"> <div className="grafana-info-box span8">
This datasource was added by config and cannot be modified using the UI. Please contact your server admin This datasource was added by config and cannot be modified using the UI. Please contact your server
to update this datasource. admin to update this datasource.
</div> </div>
)} )}
<div ref={this.settingsElement} /> <div ref={this.settingsElement} />
...@@ -144,15 +160,25 @@ export class DataSourceSettings extends PureComponent<Props, State> { ...@@ -144,15 +160,25 @@ export class DataSourceSettings extends PureComponent<Props, State> {
</div> </div>
</form> </form>
</div> </div>
</div>
</div>
); );
} }
} }
function mapStateToProps(state) { function mapStateToProps(state) {
const pageId = getRouteParamsId(state.location);
return { return {
navModel: getNavModel(state.navIndex, `datasource-settings-${pageId}`),
dataSource: state.dataSources.dataSource, dataSource: state.dataSources.dataSource,
dataSourceMeta: state.dataSources.dataSourceMeta, dataSourceMeta: state.dataSources.dataSourceMeta,
pageId: pageId,
}; };
} }
export default connect(mapStateToProps)(DataSourceSettings); const mapDispatchToProps = {
loadDataSource,
};
export default connect(mapStateToProps, mapDispatchToProps)(DataSourceSettings);
...@@ -26,6 +26,7 @@ export const getMockPlugins = (amount: number): Plugin[] => { ...@@ -26,6 +26,7 @@ export const getMockPlugins = (amount: number): Plugin[] => {
pinned: false, pinned: false,
state: '', state: '',
type: '', type: '',
module: {},
}); });
} }
...@@ -55,5 +56,6 @@ export const getMockPlugin = () => { ...@@ -55,5 +56,6 @@ export const getMockPlugin = () => {
pinned: false, pinned: false,
state: '', state: '',
type: '', type: '',
module: {},
}; };
}; };
...@@ -14,6 +14,7 @@ import DataSourcesListPage from 'app/features/datasources/DataSourcesListPage'; ...@@ -14,6 +14,7 @@ import DataSourcesListPage from 'app/features/datasources/DataSourcesListPage';
import NewDataSourcePage from '../features/datasources/NewDataSourcePage'; import NewDataSourcePage from '../features/datasources/NewDataSourcePage';
import UsersListPage from 'app/features/users/UsersListPage'; import UsersListPage from 'app/features/users/UsersListPage';
import DataSourceDashboards from 'app/features/datasources/DataSourceDashboards'; import DataSourceDashboards from 'app/features/datasources/DataSourceDashboards';
import DataSourceSettings from '../features/datasources/DataSourceSettings';
/** @ngInject */ /** @ngInject */
export function setupAngularRoutes($routeProvider, $locationProvider) { export function setupAngularRoutes($routeProvider, $locationProvider) {
...@@ -73,6 +74,12 @@ export function setupAngularRoutes($routeProvider, $locationProvider) { ...@@ -73,6 +74,12 @@ export function setupAngularRoutes($routeProvider, $locationProvider) {
component: () => DataSourcesListPage, component: () => DataSourcesListPage,
}, },
}) })
.when('/datasources/edit/:id/', {
template: '<react-container />',
resolve: {
component: () => DataSourceSettings,
},
})
.when('/datasources/edit/:id/dashboards', { .when('/datasources/edit/:id/dashboards', {
template: '<react-container />', template: '<react-container />',
resolve: { resolve: {
......
...@@ -60,6 +60,7 @@ export interface Plugin { ...@@ -60,6 +60,7 @@ export interface Plugin {
pinned: boolean; pinned: boolean;
state: string; state: string;
type: string; type: string;
module: any;
} }
export interface PluginDashboard { export interface PluginDashboard {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment