mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
This commit is contained in:
parent
0dd4fc5a7e
commit
cc171423ec
7 changed files with 39 additions and 12 deletions
|
@ -118,6 +118,9 @@ password that the Kibana server uses to perform maintenance on the Kibana index
|
|||
at startup. Your Kibana users still need to authenticate with Elasticsearch,
|
||||
which is proxied through the Kibana server.
|
||||
|
||||
`interpreter.enableInVisualize`:: *Default: true* Enables use of interpreter in
|
||||
Visualize.
|
||||
|
||||
`kibana.defaultAppId:`:: *Default: "discover"* The default application to load.
|
||||
|
||||
`kibana.index:`:: *Default: ".kibana"* Kibana uses an index in Elasticsearch to
|
||||
|
|
|
@ -28,7 +28,16 @@ export default function InterpreterPlugin(kibana: any) {
|
|||
require: ['kibana', 'elasticsearch'],
|
||||
publicDir: resolve(__dirname, 'public'),
|
||||
uiExports: {
|
||||
injectDefaultVars: server => ({ serverBasePath: server.config().get('server.basePath') }),
|
||||
injectDefaultVars: server => ({
|
||||
serverBasePath: server.config().get('server.basePath'),
|
||||
interpreterConfig: server.config().get('interpreter'),
|
||||
}),
|
||||
},
|
||||
config: (Joi: any) => {
|
||||
return Joi.object({
|
||||
enabled: Joi.boolean().default(true),
|
||||
enableInVisualize: Joi.boolean().default(true),
|
||||
}).default();
|
||||
},
|
||||
init,
|
||||
};
|
||||
|
|
|
@ -83,6 +83,9 @@ new CoreSystem({
|
|||
enabled: true,
|
||||
enableExternalUrls: true
|
||||
},
|
||||
interpreterConfig: {
|
||||
enableInVisualize: true
|
||||
}
|
||||
},
|
||||
},
|
||||
rootDomElement,
|
||||
|
|
|
@ -29,4 +29,5 @@ export interface PluginSpecOptions {
|
|||
publicDir: string;
|
||||
uiExports?: UiExports;
|
||||
init: InitPluginFunction;
|
||||
config: any;
|
||||
}
|
||||
|
|
|
@ -41,9 +41,7 @@ import { RequestAdapter } from '../../../inspector/adapters/request';
|
|||
|
||||
describe('visualize loader', () => {
|
||||
|
||||
const DataLoader = EmbeddedVisualizeHandler.__ENABLE_PIPELINE_DATA_LOADER__
|
||||
? PipelineDataLoader
|
||||
: VisualizeDataLoader;
|
||||
let DataLoader;
|
||||
let searchSource;
|
||||
let vis;
|
||||
let $rootScope;
|
||||
|
@ -76,12 +74,12 @@ describe('visualize loader', () => {
|
|||
}
|
||||
|
||||
beforeEach(ngMock.module('kibana', 'kibana/directive'));
|
||||
beforeEach(ngMock.inject((_$rootScope_, savedVisualizations, Private) => {
|
||||
beforeEach(ngMock.inject((_$rootScope_, savedVisualizations, interpreterConfig, Private) => {
|
||||
$rootScope = _$rootScope_;
|
||||
searchSource = Private(FixturesStubbedSearchSourceProvider);
|
||||
const indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider);
|
||||
|
||||
|
||||
DataLoader = interpreterConfig.enableInVisualize ? PipelineDataLoader : VisualizeDataLoader;
|
||||
// Create a new Vis object
|
||||
const Vis = Private(VisProvider);
|
||||
vis = new Vis(indexPattern, {
|
||||
|
|
|
@ -53,6 +53,7 @@ interface EmbeddedVisualizeHandlerParams extends VisualizeLoaderParams {
|
|||
Private: IPrivate;
|
||||
queryFilter: any;
|
||||
autoFetch?: boolean;
|
||||
pipelineDataLoader?: boolean;
|
||||
}
|
||||
|
||||
const RENDER_COMPLETE_EVENT = 'render_complete';
|
||||
|
@ -71,13 +72,13 @@ export class EmbeddedVisualizeHandler {
|
|||
* This should not be used by any plugin.
|
||||
* @ignore
|
||||
*/
|
||||
public static readonly __ENABLE_PIPELINE_DATA_LOADER__: boolean = false;
|
||||
public readonly data$: Rx.Observable<any>;
|
||||
public readonly inspectorAdapters: Adapters = {};
|
||||
private vis: Vis;
|
||||
private handlers: any;
|
||||
private loaded: boolean = false;
|
||||
private destroyed: boolean = false;
|
||||
private pipelineDataLoader: boolean = false;
|
||||
|
||||
private listeners = new EventEmitter();
|
||||
private firstRenderComplete: Promise<void>;
|
||||
|
@ -117,6 +118,7 @@ export class EmbeddedVisualizeHandler {
|
|||
filters,
|
||||
query,
|
||||
autoFetch = true,
|
||||
pipelineDataLoader = false,
|
||||
Private,
|
||||
} = params;
|
||||
|
||||
|
@ -131,6 +133,8 @@ export class EmbeddedVisualizeHandler {
|
|||
forceFetch: false,
|
||||
};
|
||||
|
||||
this.pipelineDataLoader = pipelineDataLoader;
|
||||
|
||||
// Listen to the first RENDER_COMPLETE_EVENT to resolve this promise
|
||||
this.firstRenderComplete = new Promise(resolve => {
|
||||
this.listeners.once(RENDER_COMPLETE_EVENT, resolve);
|
||||
|
@ -171,7 +175,7 @@ export class EmbeddedVisualizeHandler {
|
|||
});
|
||||
};
|
||||
|
||||
this.dataLoader = EmbeddedVisualizeHandler.__ENABLE_PIPELINE_DATA_LOADER__
|
||||
this.dataLoader = pipelineDataLoader
|
||||
? new PipelineDataLoader(vis)
|
||||
: new VisualizeDataLoader(vis, Private);
|
||||
this.renderCompleteHelper = new RenderCompleteHelper(element);
|
||||
|
@ -481,7 +485,7 @@ export class EmbeddedVisualizeHandler {
|
|||
let renderer: any = null;
|
||||
let args: any[] = [];
|
||||
|
||||
if (EmbeddedVisualizeHandler.__ENABLE_PIPELINE_DATA_LOADER__) {
|
||||
if (this.pipelineDataLoader) {
|
||||
renderer = registries.renderers.get(get(response || {}, 'as', 'visualization'));
|
||||
args = [this.element, get(response, 'value', { visType: this.vis.type.name }), this.handlers];
|
||||
} else {
|
||||
|
|
|
@ -30,7 +30,11 @@ import { EmbeddedVisualizeHandler } from './embedded_visualize_handler';
|
|||
import { VisSavedObject, VisualizeLoaderParams } from './types';
|
||||
|
||||
export class VisualizeLoader {
|
||||
constructor(private readonly savedVisualizations: any, private readonly Private: IPrivate) {}
|
||||
constructor(
|
||||
private readonly savedVisualizations: any,
|
||||
private readonly pipelineDataLoader: boolean,
|
||||
private readonly Private: IPrivate
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Renders a saved visualization specified by its id into a DOM element.
|
||||
|
@ -135,14 +139,19 @@ export class VisualizeLoader {
|
|||
queryFilter: this.Private(FilterBarQueryFilterProvider),
|
||||
// lets add Private to the params, we'll need to pass it to visualize later
|
||||
Private: this.Private,
|
||||
pipelineDataLoader: this.pipelineDataLoader,
|
||||
};
|
||||
|
||||
return new EmbeddedVisualizeHandler(element, savedObj, handlerParams);
|
||||
}
|
||||
}
|
||||
|
||||
function VisualizeLoaderProvider(savedVisualizations: any, Private: IPrivate) {
|
||||
return new VisualizeLoader(savedVisualizations, Private);
|
||||
function VisualizeLoaderProvider(
|
||||
savedVisualizations: any,
|
||||
interpreterConfig: any,
|
||||
Private: IPrivate
|
||||
) {
|
||||
return new VisualizeLoader(savedVisualizations, interpreterConfig.enableInVisualize, Private);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue