Skip to content

Commit

Permalink
Merge branch 'master' into 52843
Browse files Browse the repository at this point in the history
  • Loading branch information
elasticmachine authored Jan 17, 2020
2 parents 5bc1213 + 9c2d778 commit 2024209
Show file tree
Hide file tree
Showing 114 changed files with 1,480 additions and 501 deletions.
2 changes: 1 addition & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ src/legacy/core_plugins/vis_type_vislib/public/vislib/__tests__/lib/fixtures/moc
/src/legacy/core_plugins/console/public/webpackShims
/src/legacy/core_plugins/console/public/tests/webpackShims
/src/legacy/ui/public/utils/decode_geo_hash.js
/src/legacy/core_plugins/timelion/public/webpackShims/jquery.flot.*
/src/legacy/core_plugins/vis_type_timelion/public/webpackShims/jquery.flot.*
/src/core/lib/kbn_internal_native_observable
/packages/*/target
/packages/eslint-config-kibana
Expand Down
2 changes: 1 addition & 1 deletion .i18nrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"statusPage": "src/legacy/core_plugins/status_page",
"telemetry": "src/legacy/core_plugins/telemetry",
"tileMap": "src/legacy/core_plugins/tile_map",
"timelion": "src/legacy/core_plugins/timelion",
"timelion": ["src/legacy/core_plugins/timelion", "src/legacy/core_plugins/vis_type_timelion"],
"uiActions": "src/plugins/ui_actions",
"visTypeMarkdown": "src/legacy/core_plugins/vis_type_markdown",
"visTypeMetric": "src/legacy/core_plugins/vis_type_metric",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) &gt; [update](./kibana-plugin-public.chromenavlinks.update.md)

## ChromeNavLinks.update() method

Update the navlink for the given id with the updated attributes. Returns the updated navlink or `undefined` if it does not exist.

<b>Signature:</b>

```typescript
update(id: string, values: ChromeNavLinkUpdateableFields): ChromeNavLink | undefined;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| id | <code>string</code> | |
| values | <code>ChromeNavLinkUpdateableFields</code> | |

<b>Returns:</b>

`ChromeNavLink | undefined`

<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-public](./kibana-plugin-public.md) &gt; [ChromeNavLinks](./kibana-plugin-public.chromenavlinks.md) &gt; [update](./kibana-plugin-public.chromenavlinks.update.md)

## ChromeNavLinks.update() method

> Warning: This API is now obsolete.
>
> Uses the [AppBase.updater$](./kibana-plugin-public.appbase.updater_.md) property when registering your application with [ApplicationSetup.register()](./kibana-plugin-public.applicationsetup.register.md) instead.
>
Update the navlink for the given id with the updated attributes. Returns the updated navlink or `undefined` if it does not exist.

<b>Signature:</b>

```typescript
update(id: string, values: ChromeNavLinkUpdateableFields): ChromeNavLink | undefined;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| id | <code>string</code> | |
| values | <code>ChromeNavLinkUpdateableFields</code> | |

<b>Returns:</b>

`ChromeNavLink | undefined`

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
"@kbn/test-subj-selector": "0.2.1",
"@kbn/ui-framework": "1.0.0",
"@kbn/ui-shared-deps": "1.0.0",
"@types/flot": "^0.0.31",
"@types/json-stable-stringify": "^1.0.32",
"@types/lodash.clonedeep": "^4.5.4",
"@types/node-forge": "^0.9.0",
Expand Down
8 changes: 8 additions & 0 deletions renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,14 @@
'@types/file-saver',
],
},
{
groupSlug: 'flot',
groupName: 'flot related packages',
packageNames: [
'flot',
'@types/flot',
],
},
{
groupSlug: 'getopts',
groupName: 'getopts related packages',
Expand Down
1 change: 1 addition & 0 deletions src/core/MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,7 @@ import { npStart: { core } } from 'ui/new_platform';
| Legacy Platform | New Platform | Notes |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `chrome.addBasePath` | [`core.http.basePath.prepend`](/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md) | |
| `chrome.navLinks.update` | [`core.appbase.updater`](/docs/development/core/public/kibana-plugin-public.appbase.updater_.md) | Use the `updater$` property when registering your application via `core.application.register` |
| `chrome.breadcrumbs.set` | [`core.chrome.setBreadcrumbs`](/docs/development/core/public/kibana-plugin-public.chromestart.setbreadcrumbs.md) | |
| `chrome.getUiSettingsClient` | [`core.uiSettings`](/docs/development/core/public/kibana-plugin-public.uisettingsclient.md) | |
| `chrome.helpExtension.set` | [`core.chrome.setHelpExtension`](/docs/development/core/public/kibana-plugin-public.chromestart.sethelpextension.md) | |
Expand Down
53 changes: 53 additions & 0 deletions src/core/MIGRATION_EXAMPLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ APIs to their New Platform equivalents.
- [4. New Platform plugin](#4-new-platform-plugin)
- [Accessing Services](#accessing-services)
- [Chrome](#chrome)
- [Updating an application navlink](#updating-application-navlink)

## Configuration

Expand Down Expand Up @@ -462,7 +463,59 @@ elsewhere.
| `chrome.setVisible` | [`core.chrome.setIsVisible`](/docs/development/core/public/kibana-plugin-public.chromestart.setisvisible.md) | |
| `chrome.getInjected` | [`core.injectedMetadata.getInjected`](/docs/development/core/public/kibana-plugin-public.coresetup.injectedmetadata.md) (temporary) | A temporary API is available to read injected vars provided by legacy plugins. This will be removed after [#41990](https://github.com/elastic/kibana/issues/41990) is completed. |
| `chrome.setRootTemplate` / `chrome.setRootController` | -- | Use application mounting via `core.application.register` (not currently avaiable to legacy plugins). |
| `chrome.navLinks.update` | [`core.appbase.updater`](/docs/development/core/public/kibana-plugin-public.appbase.updater_.md) | Use the `updater$` property when registering your application via `core.application.register` |
In most cases, the most convenient way to access these APIs will be via the
[AppMountContext](/docs/development/core/public/kibana-plugin-public.appmountcontext.md)
object passed to your application when your app is mounted on the page.
### Updating an application navlink
In the legacy platform, the navlink could be updated using `chrome.navLinks.update`
```ts
uiModules.get('xpack/ml').run(() => {
const showAppLink = xpackInfo.get('features.ml.showLinks', false);
const isAvailable = xpackInfo.get('features.ml.isAvailable', false);

const navLinkUpdates = {
// hide by default, only show once the xpackInfo is initialized
hidden: !showAppLink,
disabled: !showAppLink || (showAppLink && !isAvailable),
};

npStart.core.chrome.navLinks.update('ml', navLinkUpdates);
});
```
In the new platform, navlinks should not be updated directly. Instead, it is now possible to add an `updater` when
registering an application to change the application or the navlink state at runtime.
```ts
// my_plugin has a required dependencie to the `licensing` plugin
interface MyPluginSetupDeps {
licensing: LicensingPluginSetup;
}

export class MyPlugin implements Plugin {
setup({ application }, { licensing }: MyPluginSetupDeps) {
const updater$ = licensing.license$.pipe(
map(license => {
const { hidden, disabled } = calcStatusFor(license);
if (hidden) return { navLinkStatus: AppNavLinkStatus.hidden };
if (disabled) return { navLinkStatus: AppNavLinkStatus.disabled };
return { navLinkStatus: AppNavLinkStatus.default };
})
);

application.register({
id: 'my-app',
title: 'My App',
updater$,
async mount(params) {
const { renderApp } = await import('./application');
return renderApp(params);
},
});
}
```
4 changes: 4 additions & 0 deletions src/core/public/chrome/nav_links/nav_links_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ export interface ChromeNavLinks {
/**
* Update the navlink for the given id with the updated attributes.
* Returns the updated navlink or `undefined` if it does not exist.
*
* @deprecated Uses the {@link AppBase.updater$} property when registering
* your application with {@link ApplicationSetup.register} instead.
*
* @param id
* @param values
*/
Expand Down
1 change: 1 addition & 0 deletions src/core/public/public.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ export interface ChromeNavLinks {
getNavLinks$(): Observable<Array<Readonly<ChromeNavLink>>>;
has(id: string): boolean;
showOnly(id: string): void;
// @deprecated
update(id: string, values: ChromeNavLinkUpdateableFields): ChromeNavLink | undefined;
}

Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ document.title = 'Timelion - Kibana';

const app = require('ui/modules').get('apps/timelion', []);

require('./vis');

require('ui/routes').enable();

require('ui/routes').when('/:id?', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@

import expect from '@kbn/expect';
import PEG from 'pegjs';
import grammar from 'raw-loader!../../chain.peg';
import grammar from 'raw-loader!../../../../vis_type_timelion/public/chain.peg';
import { SUGGESTION_TYPE, suggest } from '../timelion_expression_input_helpers';
import { getArgValueSuggestions } from '../../services/arg_value_suggestions';
import { setIndexPatterns, setSavedObjectsClient } from '../../services/plugin_services';
import { getArgValueSuggestions } from '../../../../vis_type_timelion/public/helpers/arg_value_suggestions';
import {
setIndexPatterns,
setSavedObjectsClient,
} from '../../../../vis_type_timelion/public/helpers/plugin_services';

describe('Timelion expression suggestions', () => {
setIndexPatterns({});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@import './timelion_expression_input';
@import './cells/index';
@import './chart/index';
@import './timelion_expression_suggestions/index';
@import './timelion_help/index';
@import './timelion_interval/index';

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import _ from 'lodash';
import $ from 'jquery';
import PEG from 'pegjs';
import grammar from 'raw-loader!../chain.peg';
import grammar from 'raw-loader!../../../vis_type_timelion/public/chain.peg';
import timelionExpressionInputTemplate from './timelion_expression_input.html';
import {
SUGGESTION_TYPE,
Expand All @@ -52,7 +52,7 @@ import {
insertAtLocation,
} from './timelion_expression_input_helpers';
import { comboBoxKeyCodes } from '@elastic/eui';
import { getArgValueSuggestions } from '../services/arg_value_suggestions';
import { getArgValueSuggestions } from '../../../vis_type_timelion/public/helpers/arg_value_suggestions';

const Parser = PEG.generate(grammar);

Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,4 @@
// timChart__legend-isLoading

@import './app';
@import './components/index';
@import './directives/index';
@import './vis/index';
7 changes: 1 addition & 6 deletions src/legacy/core_plugins/timelion/public/legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,10 @@
import { PluginInitializerContext } from 'kibana/public';
import { npSetup, npStart } from 'ui/new_platform';
import { plugin } from '.';
import { setup as visualizations } from '../../visualizations/public/np_ready/public/legacy';
import { TimelionPluginSetupDependencies } from './plugin';
import { LegacyDependenciesPlugin } from './shim';

const setupPlugins: Readonly<TimelionPluginSetupDependencies> = {
visualizations,
data: npSetup.plugins.data,
expressions: npSetup.plugins.expressions,

// Temporary solution
// It will be removed when all dependent services are migrated to the new platform.
__LEGACY: new LegacyDependenciesPlugin(),
Expand All @@ -37,4 +32,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, npStart.plugins);
export const start = pluginInstance.start(npStart.core);
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,18 @@
* under the License.
*/

import './flot';
import '../../../../vis_type_timelion/public/flot';
import _ from 'lodash';
import $ from 'jquery';
import moment from 'moment-timezone';
import { timefilter } from 'ui/timefilter';
// @ts-ignore
import observeResize from '../../lib/observe_resize';
// @ts-ignore
import { calculateInterval, DEFAULT_TIME_FORMAT } from '../../../common/lib';
import { calculateInterval, DEFAULT_TIME_FORMAT } from '../../../../vis_type_timelion/common/lib';
import { tickFormatters } from '../../../../vis_type_timelion/public/helpers/tick_formatters';
import { TimelionVisualizationDependencies } from '../../plugin';
import { tickFormatters } from '../../services/tick_formatters';
import { xaxisFormatterProvider } from './xaxis_formatter';
import { generateTicksProvider } from './tick_generator';
import { xaxisFormatterProvider } from '../../../../vis_type_timelion/public/helpers/xaxis_formatter';
import { generateTicksProvider } from '../../../../vis_type_timelion/public/helpers/tick_generator';

const DEBOUNCE_DELAY = 50;

Expand Down
29 changes: 2 additions & 27 deletions src/legacy/core_plugins/timelion/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,19 @@ import {
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';
import { VisualizationsSetup } from '../../visualizations/public/np_ready/public';
import { getTimelionVisualizationConfig } from './timelion_vis_fn';
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 {
uiSettings: IUiSettingsClient;
http: HttpSetup;
timelionPanels: Map<string, Panel>;
timefilter: TimefilterContract;
}

/** @internal */
export interface TimelionPluginSetupDependencies {
expressions: ReturnType<ExpressionsPlugin['setup']>;
visualizations: VisualizationsSetup;
data: DataPublicPluginSetup;

// Temporary solution
__LEGACY: LegacyDependenciesPlugin;
}
Expand All @@ -61,24 +47,16 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
this.initializerContext = initializerContext;
}

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

const dependencies: TimelionVisualizationDependencies = {
uiSettings: core.uiSettings,
http: core.http,
timelionPanels,
timefilter: data.query.timefilter.timefilter,
...(await __LEGACY.setup(core, timelionPanels)),
};

this.registerPanels(dependencies);

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

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

public start(core: CoreStart, plugins: PluginsStart) {
public start(core: CoreStart) {
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
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/vis/_index.scss

This file was deleted.

3 changes: 0 additions & 3 deletions src/legacy/core_plugins/timelion/public/vis/timelion_vis.html

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import parseSheet from './lib/parse_sheet.js';
import repositionArguments from './lib/reposition_arguments.js';
import indexArguments from './lib/index_arguments.js';
import validateTime from './lib/validate_time.js';
import { calculateInterval } from '../../common/lib';
import { calculateInterval } from '../../../vis_type_timelion/common/lib';

export default function chainRunner(tlConfig) {
const preprocessChain = require('./lib/preprocess_chain')(tlConfig);
Expand Down
Loading

0 comments on commit 2024209

Please sign in to comment.