|
|
|
@ -1,6 +1,5 @@ |
|
|
|
|
import React from 'react'; |
|
|
|
|
import { hot } from 'react-hot-loader'; |
|
|
|
|
import Select from 'react-select'; |
|
|
|
|
import _ from 'lodash'; |
|
|
|
|
|
|
|
|
|
import { DataSource } from 'app/types/datasources'; |
|
|
|
@ -25,10 +24,7 @@ import { |
|
|
|
|
makeTimeSeriesList, |
|
|
|
|
updateHistory, |
|
|
|
|
} from 'app/core/utils/explore'; |
|
|
|
|
import ResetStyles from 'app/core/components/Select/ResetStyles'; |
|
|
|
|
import PickerOption from 'app/core/components/Select/PickerOption'; |
|
|
|
|
import IndicatorsContainer from 'app/core/components/Select/IndicatorsContainer'; |
|
|
|
|
import NoOptionsMessage from 'app/core/components/Select/NoOptionsMessage'; |
|
|
|
|
import { DataSourcePicker } from 'app/core/components/Select/DataSourcePicker'; |
|
|
|
|
import TableModel from 'app/core/table_model'; |
|
|
|
|
import { DatasourceSrv } from 'app/features/plugins/datasource_srv'; |
|
|
|
|
import { Emitter } from 'app/core/utils/emitter'; |
|
|
|
@ -158,10 +154,12 @@ export class Explore extends React.PureComponent<ExploreProps, ExploreState> { |
|
|
|
|
if (!datasourceSrv) { |
|
|
|
|
throw new Error('No datasource service passed as props.'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const datasources = datasourceSrv.getExternal(); |
|
|
|
|
const exploreDatasources = datasources.map(ds => ({ |
|
|
|
|
value: ds.name, |
|
|
|
|
label: ds.name, |
|
|
|
|
name: ds.name, |
|
|
|
|
meta: ds.meta, |
|
|
|
|
})); |
|
|
|
|
|
|
|
|
|
if (datasources.length > 0) { |
|
|
|
@ -885,7 +883,7 @@ export class Explore extends React.PureComponent<ExploreProps, ExploreState> { |
|
|
|
|
} = this.state; |
|
|
|
|
const graphHeight = showingGraph && showingTable ? '200px' : '400px'; |
|
|
|
|
const exploreClass = split ? 'explore explore-split' : 'explore'; |
|
|
|
|
const selectedDatasource = datasource ? exploreDatasources.find(d => d.label === datasource.name) : undefined; |
|
|
|
|
const selectedDatasource = datasource ? exploreDatasources.find(d => d.name === datasource.name) : undefined; |
|
|
|
|
const graphLoading = queryTransactions.some(qt => qt.resultType === 'Graph' && !qt.done); |
|
|
|
|
const tableLoading = queryTransactions.some(qt => qt.resultType === 'Table' && !qt.done); |
|
|
|
|
const logsLoading = queryTransactions.some(qt => qt.resultType === 'Logs' && !qt.done); |
|
|
|
@ -910,26 +908,10 @@ export class Explore extends React.PureComponent<ExploreProps, ExploreState> { |
|
|
|
|
)} |
|
|
|
|
{!datasourceMissing ? ( |
|
|
|
|
<div className="navbar-buttons"> |
|
|
|
|
<Select |
|
|
|
|
classNamePrefix={`gf-form-select-box`} |
|
|
|
|
isMulti={false} |
|
|
|
|
menuShouldScrollIntoView={false} |
|
|
|
|
isLoading={datasourceLoading} |
|
|
|
|
isClearable={false} |
|
|
|
|
className="gf-form-input gf-form-input--form-dropdown datasource-picker" |
|
|
|
|
<DataSourcePicker |
|
|
|
|
onChange={this.onChangeDatasource} |
|
|
|
|
options={exploreDatasources} |
|
|
|
|
styles={ResetStyles} |
|
|
|
|
maxMenuHeight={500} |
|
|
|
|
placeholder="Select datasource" |
|
|
|
|
loadingMessage={() => 'Loading datasources...'} |
|
|
|
|
noOptionsMessage={() => 'No datasources found'} |
|
|
|
|
value={selectedDatasource} |
|
|
|
|
components={{ |
|
|
|
|
Option: PickerOption, |
|
|
|
|
IndicatorsContainer, |
|
|
|
|
NoOptionsMessage, |
|
|
|
|
}} |
|
|
|
|
datasources={exploreDatasources} |
|
|
|
|
current={selectedDatasource} |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
) : null} |
|
|
|
|