|
@@ -3,9 +3,10 @@ import { connect } from 'react-redux';
|
|
|
import { hot } from 'react-hot-loader';
|
|
import { hot } from 'react-hot-loader';
|
|
|
import PageHeader from 'app/core/components/PageHeader/PageHeader';
|
|
import PageHeader from 'app/core/components/PageHeader/PageHeader';
|
|
|
import { NavModel, Plugin } from 'app/types';
|
|
import { NavModel, Plugin } from 'app/types';
|
|
|
-import { addDataSource, loadDataSourceTypes } from './state/actions';
|
|
|
|
|
|
|
+import { addDataSource, loadDataSourceTypes, setDataSourceTypeSearchQuery } from './state/actions';
|
|
|
import { updateLocation } from '../../core/actions';
|
|
import { updateLocation } from '../../core/actions';
|
|
|
import { getNavModel } from 'app/core/selectors/navModel';
|
|
import { getNavModel } from 'app/core/selectors/navModel';
|
|
|
|
|
+import { getDataSourceTypes } from './state/selectors';
|
|
|
|
|
|
|
|
export interface Props {
|
|
export interface Props {
|
|
|
navModel: NavModel;
|
|
navModel: NavModel;
|
|
@@ -13,6 +14,8 @@ export interface Props {
|
|
|
addDataSource: typeof addDataSource;
|
|
addDataSource: typeof addDataSource;
|
|
|
loadDataSourceTypes: typeof loadDataSourceTypes;
|
|
loadDataSourceTypes: typeof loadDataSourceTypes;
|
|
|
updateLocation: typeof updateLocation;
|
|
updateLocation: typeof updateLocation;
|
|
|
|
|
+ dataSourceTypeSearchQuery: string;
|
|
|
|
|
+ setDataSourceTypeSearchQuery: typeof setDataSourceTypeSearchQuery;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
class NewDataSourcePage extends PureComponent<Props> {
|
|
class NewDataSourcePage extends PureComponent<Props> {
|
|
@@ -24,14 +27,30 @@ class NewDataSourcePage extends PureComponent<Props> {
|
|
|
this.props.addDataSource(type.name, type.value);
|
|
this.props.addDataSource(type.name, type.value);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ onSearchQueryChange = event => {
|
|
|
|
|
+ this.props.setDataSourceTypeSearchQuery(event.target.value);
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
render() {
|
|
render() {
|
|
|
- const { navModel, dataSourceTypes } = this.props;
|
|
|
|
|
|
|
+ const { navModel, dataSourceTypes, dataSourceTypeSearchQuery } = this.props;
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<div>
|
|
<div>
|
|
|
<PageHeader model={navModel} />
|
|
<PageHeader model={navModel} />
|
|
|
<div className="page-container page-body">
|
|
<div className="page-container page-body">
|
|
|
<h3 className="add-data-source-header">Choose data source type</h3>
|
|
<h3 className="add-data-source-header">Choose data source type</h3>
|
|
|
|
|
+ <div className="add-data-source-search">
|
|
|
|
|
+ <label className="gf-form--has-input-icon">
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ className="gf-form-input width-20"
|
|
|
|
|
+ value={dataSourceTypeSearchQuery}
|
|
|
|
|
+ onChange={this.onSearchQueryChange}
|
|
|
|
|
+ placeholder="Filter by name or type"
|
|
|
|
|
+ />
|
|
|
|
|
+ <i className="gf-form-input-icon fa fa-search" />
|
|
|
|
|
+ </label>
|
|
|
|
|
+ </div>
|
|
|
<div className="add-data-source-grid">
|
|
<div className="add-data-source-grid">
|
|
|
{dataSourceTypes.map((type, index) => {
|
|
{dataSourceTypes.map((type, index) => {
|
|
|
return (
|
|
return (
|
|
@@ -55,7 +74,7 @@ class NewDataSourcePage extends PureComponent<Props> {
|
|
|
function mapStateToProps(state) {
|
|
function mapStateToProps(state) {
|
|
|
return {
|
|
return {
|
|
|
navModel: getNavModel(state.navIndex, 'datasources'),
|
|
navModel: getNavModel(state.navIndex, 'datasources'),
|
|
|
- dataSourceTypes: state.dataSources.dataSourceTypes,
|
|
|
|
|
|
|
+ dataSourceTypes: getDataSourceTypes(state.dataSources),
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -63,6 +82,7 @@ const mapDispatchToProps = {
|
|
|
addDataSource,
|
|
addDataSource,
|
|
|
loadDataSourceTypes,
|
|
loadDataSourceTypes,
|
|
|
updateLocation,
|
|
updateLocation,
|
|
|
|
|
+ setDataSourceTypeSearchQuery,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(NewDataSourcePage));
|
|
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(NewDataSourcePage));
|