Skip to content

Commit

Permalink
Change plugin start
Browse files Browse the repository at this point in the history
  • Loading branch information
sulemanof committed Dec 21, 2019
1 parent 8f2101e commit 2091a0c
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 249 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@
* under the License.
*/

import React, { useEffect, useCallback, useRef } from 'react';
import React, { useEffect, useCallback, useRef, useMemo } from 'react';
import { EuiFormRow } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import * as monacoEditor from 'monaco-editor/esm/vs/editor/editor.api';

import { CodeEditor, useKibana } from '../../../../../plugins/kibana_react/public';
import { suggest, getSuggestion } from './timelion_expression_input_helpers';
import { ITimelionFunction, TimelionFunctionArgs } from '../../common/types';
import { TimelionServices } from '../services/types';
import { getArgValueSuggestions } from '../services/arg_value_suggestions';

const LANGUAGE_ID = 'timelion_expression';
monacoEditor.languages.register({ id: LANGUAGE_ID });
Expand All @@ -37,7 +37,8 @@ interface TimelionExpressionInputProps {

function TimelionExpressionInput({ value, setValue }: TimelionExpressionInputProps) {
const functionList = useRef([]);
const kibana = useKibana<TimelionServices>();
const kibana = useKibana();
const argValueSuggestions = useMemo(getArgValueSuggestions, []);

const provideCompletionItems = useCallback(
async (model: monacoEditor.editor.ITextModel, position: monacoEditor.Position) => {
Expand All @@ -56,7 +57,7 @@ function TimelionExpressionInput({ value, setValue }: TimelionExpressionInputPro
// it's important to offset the cursor position on 1 point left
// because of PEG parser starts the line with 0, but monaco with 1
position.column - 1,
kibana.services.argValueSuggestions
argValueSuggestions
);

return {
Expand All @@ -67,7 +68,7 @@ function TimelionExpressionInput({ value, setValue }: TimelionExpressionInputPro
: [],
};
},
[kibana.services.argValueSuggestions]
[argValueSuggestions]
);

const provideHover = useCallback(
Expand All @@ -78,7 +79,7 @@ function TimelionExpressionInput({ value, setValue }: TimelionExpressionInputPro
// it's important to offset the cursor position on 1 point left
// because of PEG parser starts the line with 0, but monaco with 1
position.column - 1,
kibana.services.argValueSuggestions
argValueSuggestions
);

return {
Expand All @@ -89,7 +90,7 @@ function TimelionExpressionInput({ value, setValue }: TimelionExpressionInputPro
: [],
};
},
[kibana.services.argValueSuggestions]
[argValueSuggestions]
);

useEffect(() => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import expect from '@kbn/expect';
import PEG from 'pegjs';
import grammar from 'raw-loader!../../chain.peg';
import { SUGGESTION_TYPE, suggest } from '../timelion_expression_input_helpers';
import { ArgValueSuggestionsProvider } from '../timelion_expression_suggestions/arg_value_suggestions';
import { getArgValueSuggestions } from '../../services/arg_value_suggestions';

describe('Timelion expression suggestions', () => {
describe('getSuggestions', () => {
Expand All @@ -44,11 +44,7 @@ describe('Timelion expression suggestions', () => {
};
const functionList = [func1, myFunc2];
let Parser;
const privateStub = () => {
return {};
};
const indexPatternsStub = {};
const argValueSuggestions = ArgValueSuggestionsProvider(privateStub, indexPatternsStub); // eslint-disable-line new-cap
const argValueSuggestions = getArgValueSuggestions();
beforeEach(function() {
Parser = PEG.generate(grammar);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ import {
insertAtLocation,
} from './timelion_expression_input_helpers';
import { comboBoxKeyCodes } from '@elastic/eui';
import { ArgValueSuggestionsProvider } from './timelion_expression_suggestions/arg_value_suggestions';
import { getArgValueSuggestions } from '../services/arg_value_suggestions';

const Parser = PEG.generate(grammar);

export function TimelionExpInput($http, $timeout, Private) {
export function TimelionExpInput($http, $timeout) {
return {
restrict: 'E',
scope: {
Expand All @@ -68,7 +68,7 @@ export function TimelionExpInput($http, $timeout, Private) {
replace: true,
template: timelionExpressionInputTemplate,
link: function(scope, elem) {
const argValueSuggestions = Private(ArgValueSuggestionsProvider);
const argValueSuggestions = getArgValueSuggestions();
const expressionInput = elem.find('[data-expression-input]');
const functionReference = {};
let suggestibleFunctionLocation = {};
Expand Down

This file was deleted.

2 changes: 1 addition & 1 deletion src/legacy/core_plugins/timelion/public/legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ const setupPlugins: Readonly<TimelionPluginSetupDependencies> = {
const pluginInstance = plugin({} as PluginInitializerContext);

export const setup = pluginInstance.setup(npSetup.core, setupPlugins);
export const start = pluginInstance.start(npStart.core);
export const start = pluginInstance.start(npStart.core, npStart.plugins);
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,7 @@ import { generateTicksProvider } from './tick_generator';
const DEBOUNCE_DELAY = 50;

export function timechartFn(dependencies: TimelionVisualizationDependencies) {
const {
$rootScope,
$compile,
core: { uiSettings },
} = dependencies;
const { $rootScope, $compile, uiSettings } = dependencies;

return function() {
return {
Expand Down
25 changes: 19 additions & 6 deletions src/legacy/core_plugins/timelion/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'kibana/public';
import {
CoreSetup,
CoreStart,
Plugin,
PluginInitializerContext,
IUiSettingsClient,
HttpSetup,
} from 'kibana/public';
import { Plugin as ExpressionsPlugin } from 'src/plugins/expressions/public';
import { DataPublicPluginSetup, TimefilterContract } from 'src/plugins/data/public';
import { PluginsStart } from 'ui/new_platform/new_platform';
Expand All @@ -26,10 +33,12 @@ import { getTimelionVisualization } from './vis';
import { getTimeChart } from './panels/timechart/timechart';
import { Panel } from './panels/panel';
import { LegacyDependenciesPlugin, LegacyDependenciesPluginSetup } from './shim';
import { setIndexPatterns, setSavedObjectsClient } from './services/plugin_services';

/** @internal */
export interface TimelionVisualizationDependencies extends LegacyDependenciesPluginSetup {
core: CoreSetup<PluginsStart>;
uiSettings: IUiSettingsClient;
http: HttpSetup;
timelionPanels: Map<string, Panel>;
timefilter: TimefilterContract;
}
Expand All @@ -53,13 +62,14 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
}

public async setup(
core: CoreSetup<PluginsStart>,
core: CoreSetup,
{ __LEGACY, expressions, visualizations, data }: TimelionPluginSetupDependencies
) {
const timelionPanels: Map<string, Panel> = new Map();

const dependencies: TimelionVisualizationDependencies = {
core,
uiSettings: core.uiSettings,
http: core.http,
timelionPanels,
timefilter: data.query.timefilter.timefilter,
...(await __LEGACY.setup(core, timelionPanels)),
Expand All @@ -68,7 +78,7 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
this.registerPanels(dependencies);

expressions.registerFunction(() => getTimelionVisualizationConfig(dependencies));
visualizations.types.createBaseVisualization(await getTimelionVisualization(dependencies));
visualizations.types.createBaseVisualization(getTimelionVisualization(dependencies));
}

private registerPanels(dependencies: TimelionVisualizationDependencies) {
Expand All @@ -77,12 +87,15 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
dependencies.timelionPanels.set(timeChartPanel.name, timeChartPanel);
}

public start(core: CoreStart) {
public start(core: CoreStart, plugins: PluginsStart) {
const timelionUiEnabled = core.injectedMetadata.getInjectedVar('timelionUiEnabled');

if (timelionUiEnabled === false) {
core.chrome.navLinks.update('timelion', { hidden: true });
}

setIndexPatterns(plugins.data.indexPatterns);
setSavedObjectsClient(core.savedObjects.client);
}

public stop(): void {}
Expand Down
Loading

0 comments on commit 2091a0c

Please sign in to comment.