adding yml switch for using interpreter in expressions (#33832)

This commit is contained in:
Peter Pisljar 2019-04-01 15:35:12 +02:00 committed by GitHub
parent e934a48266
commit 61e5300391
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 39 additions and 12 deletions

View file

@ -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

View file

@ -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,
};

View file

@ -83,6 +83,9 @@ new CoreSystem({
enabled: true,
enableExternalUrls: true
},
interpreterConfig: {
enableInVisualize: true
}
},
},
rootDomElement,

View file

@ -29,4 +29,5 @@ export interface PluginSpecOptions {
publicDir: string;
uiExports?: UiExports;
init: InitPluginFunction;
config: any;
}

View file

@ -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, {

View file

@ -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 {

View file

@ -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);
}
/**