Set datasource in deep links to Explore

pull/12596/head
David Kaltschmidt 7 years ago
parent d06b26de26
commit 390090da05
  1. 15
      public/app/containers/Explore/Explore.tsx
  2. 1
      public/app/plugins/datasource/prometheus/datasource.ts
  3. 2
      public/sass/pages/_explore.scss

@ -35,6 +35,7 @@ function parseInitialState(initial) {
try {
const parsed = JSON.parse(decodePathComponent(initial));
return {
datasource: parsed.datasource,
queries: parsed.queries.map(q => q.query),
range: parsed.range,
};
@ -50,6 +51,7 @@ interface IExploreState {
datasourceLoading: boolean | null;
datasourceMissing: boolean;
graphResult: any;
initialDatasource?: string;
latency: number;
loading: any;
queries: any;
@ -65,13 +67,14 @@ interface IExploreState {
export class Explore extends React.Component<any, IExploreState> {
constructor(props) {
super(props);
const { range, queries } = parseInitialState(props.routeParams.initial);
const { datasource, queries, range } = parseInitialState(props.routeParams.initial);
this.state = {
datasource: null,
datasourceError: null,
datasourceLoading: null,
datasourceMissing: false,
graphResult: null,
initialDatasource: datasource,
latency: 0,
loading: false,
queries: ensureQueries(queries),
@ -87,14 +90,20 @@ export class Explore extends React.Component<any, IExploreState> {
async componentDidMount() {
const { datasourceSrv } = this.props;
const { initialDatasource } = this.state;
if (!datasourceSrv) {
throw new Error('No datasource service passed as props.');
}
const datasources = datasourceSrv.getExploreSources();
if (datasources.length > 0) {
this.setState({ datasourceLoading: true });
// Try default datasource, otherwise get first
let datasource = await datasourceSrv.get();
// Priority: datasource in url, default datasource, first explore datasource
let datasource;
if (initialDatasource) {
datasource = await datasourceSrv.get(initialDatasource);
} else {
datasource = await datasourceSrv.get();
}
if (!datasource.meta.explore) {
datasource = await datasourceSrv.get(datasources[0].name);
}

@ -357,6 +357,7 @@ export class PrometheusDatasource {
state = {
...state,
queries,
datasource: this.name,
};
}
return state;

@ -61,7 +61,7 @@
}
.datasource-picker {
min-width: 6rem;
min-width: 10rem;
}
.timepicker {

Loading…
Cancel
Save