Skip to content

Commit 81e6bcb

Browse files
authored
Dashboard x pack (#59653)
* feat: ๐ŸŽธ add dashboard_enhanced plugin to x-pack * feat: ๐ŸŽธ improve context menu separator * feat: ๐ŸŽธ move drilldown flyout actions to dashboard_enhanced * fix: ๐Ÿ› fix exports from ui_actions plugin
1 parent e145241 commit 81e6bcb

File tree

17 files changed

+179
-80
lines changed

17 files changed

+179
-80
lines changed

โ€Ž.github/CODEOWNERSโ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# For more info, see https://help.github.com/articles/about-codeowners/
44

55
# App
6+
/x-pack/legacy/plugins/dashboard_enhanced/ @elastic/kibana-app
67
/x-pack/legacy/plugins/lens/ @elastic/kibana-app
78
/x-pack/legacy/plugins/graph/ @elastic/kibana-app
89
/src/legacy/server/url_shortening/ @elastic/kibana-app

โ€Žsrc/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsxโ€Ž

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818
*/
1919

2020
import * as React from 'react';
21-
import { EuiContextMenuPanelDescriptor, EuiContextMenuPanelItemDescriptor } from '@elastic/eui';
21+
import {
22+
EuiContextMenuPanelDescriptor,
23+
EuiContextMenuPanelItemDescriptor,
24+
EuiHorizontalRule,
25+
} from '@elastic/eui';
2226
import _ from 'lodash';
2327
import { i18n } from '@kbn/i18n';
2428
import { uiToReactComponent, reactToUiComponent } from '../../../kibana_react/public';
@@ -27,15 +31,7 @@ import { Action, ActionInternal } from '../actions';
2731
export const contextMenuSeparatorAction = new ActionInternal({
2832
id: 'CONTEXT_MENU_SEPARATOR',
2933
getDisplayName: () => 'separator',
30-
MenuItem: reactToUiComponent(() => (
31-
<div
32-
style={{
33-
width: '100%',
34-
height: '1px',
35-
background: 'red',
36-
}}
37-
/>
38-
)),
34+
MenuItem: reactToUiComponent(() => <EuiHorizontalRule margin={'none'} />),
3935
execute: () => Promise.resolve(),
4036
});
4137

@@ -117,10 +113,12 @@ function convertPanelActionToContextMenuItem<Context extends object>({
117113
'data-test-subj': `embeddablePanelAction-${action.id}`,
118114
};
119115

120-
menuPanelItem.onClick = () => {
121-
action.execute(actionContext);
122-
closeMenu();
123-
};
116+
if (action.id !== 'CONTEXT_MENU_SEPARATOR') {
117+
menuPanelItem.onClick = () => {
118+
action.execute(actionContext);
119+
closeMenu();
120+
};
121+
}
124122

125123
if (action.getHref) {
126124
const href = action.getHref(actionContext);

โ€Žsrc/plugins/ui_actions/public/index.tsโ€Ž

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ export {
3535
ActionContract as UiActionsActionContract,
3636
} from './actions';
3737
export { buildContextMenuForActions, contextMenuSeparatorAction } from './context_menu';
38-
export { CollectConfigProps, Presentable, Configurable, ConfigurableBaseConfig } from './util';
39-
export { buildContextMenuForActions } from './context_menu';
38+
export { CollectConfigProps, Presentable, Configurable } from './util';
4039
export { Trigger, TriggerContext } from './triggers';
4140
export { TriggerContextMapping, TriggerId, ActionContextMapping, ActionType } from './types';
4241
export { ActionByType } from './actions';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# X-Pack part of Dashboard app
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"id": "dashboardEnhanced",
3+
"version": "kibana",
4+
"server": false,
5+
"ui": true,
6+
"requiredPlugins": ["uiActions", "embeddable", "advancedUiActions", "drilldowns"]
7+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { DashboardEnhancedPlugin } from './plugin';
8+
9+
export {
10+
SetupContract as DashboardEnhancedSetupContract,
11+
SetupDependencies as DashboardEnhancedSetupDependencies,
12+
StartContract as DashboardEnhancedStartContract,
13+
StartDependencies as DashboardEnhancedStartDependencies,
14+
} from './plugin';
15+
16+
export function plugin() {
17+
return new DashboardEnhancedPlugin();
18+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { DashboardEnhancedSetupContract, DashboardEnhancedStartContract } from '.';
8+
9+
export type Setup = jest.Mocked<DashboardEnhancedSetupContract>;
10+
export type Start = jest.Mocked<DashboardEnhancedStartContract>;
11+
12+
const createSetupContract = (): Setup => {
13+
const setupContract: Setup = {};
14+
15+
return setupContract;
16+
};
17+
18+
const createStartContract = (): Start => {
19+
const startContract: Start = {};
20+
21+
return startContract;
22+
};
23+
24+
export const dashboardEnhancedPluginMock = {
25+
createSetupContract,
26+
createStartContract,
27+
};
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { CoreStart, CoreSetup, Plugin } from 'src/core/public';
8+
import { UiActionsSetup, UiActionsStart } from '../../../../src/plugins/ui_actions/public';
9+
import { DashboardDrilldownsService } from './services';
10+
11+
export interface SetupDependencies {
12+
uiActions: UiActionsSetup;
13+
}
14+
15+
export interface StartDependencies {
16+
uiActions: UiActionsStart;
17+
}
18+
19+
// eslint-disable-next-line
20+
export interface SetupContract {}
21+
22+
// eslint-disable-next-line
23+
export interface StartContract {}
24+
25+
export class DashboardEnhancedPlugin
26+
implements Plugin<SetupContract, StartContract, SetupDependencies, StartDependencies> {
27+
public readonly drilldowns = new DashboardDrilldownsService();
28+
29+
public setup(core: CoreSetup, plugins: SetupDependencies): SetupContract {
30+
this.drilldowns.bootstrap(core, plugins);
31+
32+
return {};
33+
}
34+
35+
public start(core: CoreStart, plugins: StartDependencies): StartContract {
36+
return {};
37+
}
38+
39+
public stop() {}
40+
}

โ€Žx-pack/plugins/drilldowns/public/actions/flyout_create_drilldown/index.tsxโ€Ž renamed to โ€Žx-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/index.tsxโ€Ž

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
import React from 'react';
88
import { i18n } from '@kbn/i18n';
99
import { CoreStart } from 'src/core/public';
10-
import { ActionByType } from '../../../../../../src/plugins/ui_actions/public';
11-
import { toMountPoint } from '../../../../../../src/plugins/kibana_react/public';
12-
import { IEmbeddable } from '../../../../../../src/plugins/embeddable/public';
13-
import { FlyoutDrilldownWizard } from '../../components/flyout_drilldown_wizard';
14-
import { ActionFactory } from '../../../../advanced_ui_actions/public';
10+
import { ActionByType } from '../../../../../../../../src/plugins/ui_actions/public';
11+
import { toMountPoint } from '../../../../../../../../src/plugins/kibana_react/public';
12+
import { IEmbeddable } from '../../../../../../../../src/plugins/embeddable/public';
13+
14+
const FlyoutDrilldownWizard: React.FC<{ onClose: any }> = () => <div>FormDrilldownWizard</div>;
1515

1616
export const OPEN_FLYOUT_ADD_DRILLDOWN = 'OPEN_FLYOUT_ADD_DRILLDOWN';
1717

@@ -21,7 +21,6 @@ export interface FlyoutCreateDrilldownActionContext {
2121

2222
export interface OpenFlyoutAddDrilldownParams {
2323
overlays: () => Promise<CoreStart['overlays']>;
24-
getDrilldownActionFactories: () => Array<ActionFactory<any>>;
2524
}
2625

2726
export class FlyoutCreateDrilldownAction implements ActionByType<typeof OPEN_FLYOUT_ADD_DRILLDOWN> {
@@ -48,18 +47,20 @@ export class FlyoutCreateDrilldownAction implements ActionByType<typeof OPEN_FLY
4847
public async execute(context: FlyoutCreateDrilldownActionContext) {
4948
const overlays = await this.params.overlays();
5049

50+
/*
5151
const drilldownActionFactories = this.params.getDrilldownActionFactories();
5252
const compatibleDrilldownActionFactories = await Promise.all(
5353
drilldownActionFactories.map(factory => factory.isCompatible(context))
5454
).then(compatibilityList =>
5555
drilldownActionFactories.filter((factory, index) => compatibilityList[index])
5656
);
57+
*/
5758

5859
const handle = overlays.openFlyout(
5960
toMountPoint(
6061
<FlyoutDrilldownWizard
6162
onClose={() => handle.close()}
62-
drilldownActionFactories={compatibleDrilldownActionFactories}
63+
// drilldownActionFactories={compatibleDrilldownActionFactories}
6364
/>
6465
)
6566
);

โ€Žx-pack/plugins/drilldowns/public/actions/flyout_edit_drilldown/index.tsxโ€Ž renamed to โ€Žx-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/index.tsxโ€Ž

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@ import React from 'react';
88
import { i18n } from '@kbn/i18n';
99
import { CoreStart } from 'src/core/public';
1010
import { EuiNotificationBadge } from '@elastic/eui';
11-
import { ActionByType } from '../../../../../../src/plugins/ui_actions/public';
11+
import { ActionByType } from '../../../../../../../../src/plugins/ui_actions/public';
1212
import {
1313
reactToUiComponent,
1414
toMountPoint,
15-
} from '../../../../../../src/plugins/kibana_react/public';
16-
import { IEmbeddable } from '../../../../../../src/plugins/embeddable/public';
17-
import { FlyoutManageDrilldowns } from '../../components/flyout_manage_drilldowns';
18-
// TODO: MOCK DATA
19-
import { drilldowns } from '../../components/list_manage_drilldowns/test_data';
20-
import { ActionFactory } from '../../../../advanced_ui_actions/public';
15+
} from '../../../../../../../../src/plugins/kibana_react/public';
16+
import { IEmbeddable } from '../../../../../../../../src/plugins/embeddable/public';
17+
18+
const FlyoutManageDrilldowns: React.FC<{ onClose: () => {} }> = () => (
19+
<div>FormDrilldownWizard</div>
20+
);
21+
22+
// Mock data
23+
const drilldowns: any = [];
2124

2225
export const OPEN_FLYOUT_EDIT_DRILLDOWN = 'OPEN_FLYOUT_EDIT_DRILLDOWN';
2326

@@ -27,7 +30,6 @@ export interface FlyoutEditDrilldownActionContext {
2730

2831
export interface FlyoutEditDrilldownParams {
2932
overlays: () => Promise<CoreStart['overlays']>;
30-
getDrilldownActionFactories: () => Array<ActionFactory<any>>;
3133
}
3234

3335
const displayName = i18n.translate('xpack.drilldowns.panel.openFlyoutEditDrilldown.displayName', {
@@ -69,21 +71,8 @@ export class FlyoutEditDrilldownAction implements ActionByType<typeof OPEN_FLYOU
6971
public async execute(context: FlyoutEditDrilldownActionContext) {
7072
const overlays = await this.params.overlays();
7173

72-
const drilldownActionFactories = this.params.getDrilldownActionFactories();
73-
const compatibleDrilldownActionFactories = await Promise.all(
74-
drilldownActionFactories.map(factory => factory.isCompatible(context))
75-
).then(compatibilityList =>
76-
drilldownActionFactories.filter((factory, index) => compatibilityList[index])
77-
);
78-
7974
const handle = overlays.openFlyout(
80-
toMountPoint(
81-
<FlyoutManageDrilldowns
82-
onClose={() => handle.close()}
83-
drilldowns={drilldowns}
84-
drilldownActionFactories={compatibleDrilldownActionFactories}
85-
/>
86-
)
75+
toMountPoint(<FlyoutManageDrilldowns onClose={() => handle.close()} />)
8776
);
8877
}
8978
}

0 commit comments

Comments
ย (0)