Skip to content

Commit

Permalink
refactor: 💡 remove PlaceContext from DrilldownDefinition
Browse files Browse the repository at this point in the history
  • Loading branch information
streamich committed May 4, 2020
1 parent 7221466 commit 2dacae3
Show file tree
Hide file tree
Showing 15 changed files with 24 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { EuiFormRow, EuiFieldText } from '@elastic/eui';
import { reactToUiComponent } from '../../../../../src/plugins/kibana_react/public';
import { UiActionsEnhancedDrilldownDefinition as Drilldown } from '../../../../plugins/advanced_ui_actions/public';
import {
EmbeddableContext,
RangeSelectTriggerContext,
ValueClickTriggerContext,
} from '../../../../../src/plugins/embeddable/public';
Expand All @@ -23,8 +22,7 @@ export interface Config {

const SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN = 'SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN';

export class DashboardHelloWorldDrilldown
implements Drilldown<Config, EmbeddableContext, ActionContext> {
export class DashboardHelloWorldDrilldown implements Drilldown<Config, ActionContext> {
public readonly id = SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN;

public readonly order = 6;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import React from 'react';
import { StartDependencies as Start } from '../plugin';
import { reactToUiComponent } from '../../../../../src/plugins/kibana_react/public';
import { StartServicesGetter } from '../../../../../src/plugins/kibana_utils/public';
import { PlaceContext, ActionContext, Config, CollectConfigProps } from './types';
import { ActionContext, Config, CollectConfigProps } from './types';
import { CollectConfigContainer } from './collect_config_container';
import { SAMPLE_DASHBOARD_TO_DISCOVER_DRILLDOWN } from './constants';
import { UiActionsEnhancedDrilldownDefinition as Drilldown } from '../../../../plugins/advanced_ui_actions/public';
Expand All @@ -25,8 +25,7 @@ export interface Params {
start: StartServicesGetter<Pick<Start, 'data'>>;
}

export class DashboardToDiscoverDrilldown
implements Drilldown<Config, PlaceContext, ActionContext> {
export class DashboardToDiscoverDrilldown implements Drilldown<Config, ActionContext> {
constructor(protected readonly params: Params) {}

public readonly id = SAMPLE_DASHBOARD_TO_DISCOVER_DRILLDOWN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ export {
Params as DashboardToDiscoverDrilldownParams,
} from './drilldown';
export {
PlaceContext as DashboardToDiscoverPlaceContext,
ActionContext as DashboardToDiscoverActionContext,
Config as DashboardToDiscoverConfig,
} from './types';
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
import {
RangeSelectTriggerContext,
ValueClickTriggerContext,
EmbeddableContext,
} from '../../../../../src/plugins/embeddable/public';
import { CollectConfigProps as CollectConfigPropsBase } from '../../../../../src/plugins/kibana_utils/public';

export type PlaceContext = EmbeddableContext;
export type ActionContext = RangeSelectTriggerContext | ValueClickTriggerContext;

export interface Config {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { EuiFormRow, EuiSwitch, EuiFieldText, EuiCallOut, EuiSpacer } from '@ela
import { reactToUiComponent } from '../../../../../src/plugins/kibana_react/public';
import { UiActionsEnhancedDrilldownDefinition as Drilldown } from '../../../../plugins/advanced_ui_actions/public';
import {
EmbeddableContext,
RangeSelectTriggerContext,
ValueClickTriggerContext,
} from '../../../../../src/plugins/embeddable/public';
Expand All @@ -24,7 +23,6 @@ function isValidUrl(url: string) {
}
}

export type PlaceContext = EmbeddableContext;
export type ActionContext = RangeSelectTriggerContext | ValueClickTriggerContext;

export interface Config {
Expand All @@ -36,7 +34,7 @@ export type CollectConfigProps = CollectConfigPropsBase<Config>;

const SAMPLE_DASHBOARD_TO_URL_DRILLDOWN = 'SAMPLE_DASHBOARD_TO_URL_DRILLDOWN';

export class DashboardToUrlDrilldown implements Drilldown<Config, PlaceContext, ActionContext> {
export class DashboardToUrlDrilldown implements Drilldown<Config, ActionContext> {
public readonly id = SAMPLE_DASHBOARD_TO_URL_DRILLDOWN;

public readonly order = 8;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
*/

import { ActionFactoryDefinition } from '../dynamic_actions';
import { DrilldownActionFactoryContext } from './drilldown_action_factory_context';

/**
* This is a convenience interface to register a drilldown. Drilldown has
Expand All @@ -27,7 +26,6 @@ import { DrilldownActionFactoryContext } from './drilldown_action_factory_contex
*/
export interface DrilldownDefinition<
Config extends object = object,
PlaceContext extends object = object,
ExecutionContext extends object = object
> {
/**
Expand All @@ -44,11 +42,7 @@ export interface DrilldownDefinition<
/**
* Function that returns default config for this drilldown.
*/
createConfig: ActionFactoryDefinition<
Config,
DrilldownActionFactoryContext<PlaceContext>,
ExecutionContext
>['createConfig'];
createConfig: ActionFactoryDefinition<Config, object, ExecutionContext>['createConfig'];

/**
* `UiComponent` that collections config for this drilldown. You can create
Expand All @@ -69,21 +63,13 @@ export interface DrilldownDefinition<
* export const CollectConfig = uiToReactComponent(ReactCollectConfig);
* ```
*/
CollectConfig: ActionFactoryDefinition<
Config,
DrilldownActionFactoryContext<PlaceContext>,
ExecutionContext
>['CollectConfig'];
CollectConfig: ActionFactoryDefinition<Config, object, ExecutionContext>['CollectConfig'];

/**
* A validator function for the config object. Should always return a boolean
* given any input.
*/
isConfigValid: ActionFactoryDefinition<
Config,
DrilldownActionFactoryContext<PlaceContext>,
ExecutionContext
>['isConfigValid'];
isConfigValid: ActionFactoryDefinition<Config, object, ExecutionContext>['isConfigValid'];

/**
* Name of EUI icon to display when showing this drilldown to user.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/

export * from './drilldown_action_factory_context';
export * from './drilldown_definition';
5 changes: 1 addition & 4 deletions x-pack/plugins/advanced_ui_actions/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,4 @@ export {
MemoryActionStorage as UiActionsEnhancedMemoryActionStorage,
} from './dynamic_actions';

export {
DrilldownDefinition as UiActionsEnhancedDrilldownDefinition,
DrilldownActionFactoryContext as UiActionsEnhancedDrilldownActionFactoryContext,
} from './drilldowns';
export { DrilldownDefinition as UiActionsEnhancedDrilldownDefinition } from './drilldowns';
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import { ActionFactoryRegistry } from '../types';
import { ActionFactory, ActionFactoryDefinition } from '../dynamic_actions';
import { DrilldownDefinition, DrilldownActionFactoryContext } from '../drilldowns';
import { DrilldownDefinition } from '../drilldowns';

export interface UiActionsServiceEnhancementsParams {
readonly actionFactories?: ActionFactoryRegistry;
Expand Down Expand Up @@ -61,7 +61,6 @@ export class UiActionsServiceEnhancements {
*/
public readonly registerDrilldown = <
Config extends object = object,
PlaceContext extends object = object,
ExecutionContext extends object = object
>({
id: factoryId,
Expand All @@ -73,12 +72,8 @@ export class UiActionsServiceEnhancements {
euiIcon,
execute,
getHref,
}: DrilldownDefinition<Config, PlaceContext, ExecutionContext>): void => {
const actionFactory: ActionFactoryDefinition<
Config,
DrilldownActionFactoryContext<PlaceContext>,
ExecutionContext
> = {
}: DrilldownDefinition<Config, ExecutionContext>): void => {
const actionFactory: ActionFactoryDefinition<Config, object, ExecutionContext> = {
id: factoryId,
order,
CollectConfig,
Expand All @@ -95,11 +90,7 @@ export class UiActionsServiceEnhancements {
execute: async context => await execute(serializedAction.config, context),
getHref: getHref ? async context => getHref(serializedAction.config, context) : undefined,
}),
} as ActionFactoryDefinition<
Config,
DrilldownActionFactoryContext<PlaceContext>,
ExecutionContext
>;
} as ActionFactoryDefinition<Config, object, ExecutionContext>;

this.registerActionFactory(actionFactory);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ import { SimpleSavedObject } from '../../../../../../../../src/core/public';
import { DashboardDrilldownConfig } from './dashboard_drilldown_config';
import { txtDestinationDashboardNotFound } from './i18n';
import { CollectConfigProps } from '../../../../../../../../src/plugins/kibana_utils/public';
import { UiActionsEnhancedDrilldownActionFactoryContext as DrilldownFactoryContext } from '../../../../../../advanced_ui_actions/public';
import { Config } from '../types';
import { EmbeddableContext } from '../../../../../../../../src/plugins/embeddable/public';
import { Params } from '../drilldown';

const mergeDashboards = (
Expand All @@ -36,8 +34,7 @@ const dashboardSavedObjectToMenuItem = (
label: savedObject.attributes.title,
});

interface DashboardDrilldownCollectConfigProps
extends CollectConfigProps<Config, DrilldownFactoryContext<EmbeddableContext>> {
interface DashboardDrilldownCollectConfigProps extends CollectConfigProps<Config> {
params: Params;
}

Expand Down Expand Up @@ -146,7 +143,6 @@ export class CollectConfigContainer extends React.Component<

private readonly debouncedLoadDashboards: (searchString?: string) => void;
private async loadDashboards(searchString?: string) {
const currentDashboardId = this.props.context.placeContext.embeddable?.parent?.id;
this.setState({ searchString, isLoading: true });
const savedObjectsClient = this.props.params.start().core.savedObjects.client;
const { savedObjects } = await savedObjectsClient.find<{ title: string }>({
Expand All @@ -161,9 +157,7 @@ export class CollectConfigContainer extends React.Component<
if (!this.isMounted) return;
if (searchString !== this.state.searchString) return;

const dashboardList = savedObjects
.map(dashboardSavedObjectToMenuItem)
.filter(({ value }) => !currentDashboardId || value !== currentDashboardId);
const dashboardList = savedObjects.map(dashboardSavedObjectToMenuItem);

this.setState({ dashboards: dashboardList, isLoading: false });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import React from 'react';
import { reactToUiComponent } from '../../../../../../../src/plugins/kibana_react/public';
import { DASHBOARD_APP_URL_GENERATOR } from '../../../../../../../src/plugins/dashboard/public';
import { PlaceContext, ActionContext, Config } from './types';
import { ActionContext, Config } from './types';
import { CollectConfigContainer } from './components';
import { DASHBOARD_TO_DASHBOARD_DRILLDOWN } from './constants';
import { UiActionsEnhancedDrilldownDefinition as Drilldown } from '../../../../../advanced_ui_actions/public';
Expand All @@ -26,7 +26,7 @@ export interface Params {
}

export class DashboardToDashboardDrilldown
implements Drilldown<Config, PlaceContext, ActionContext<VisualizeEmbeddableContract>> {
implements Drilldown<Config, ActionContext<VisualizeEmbeddableContract>> {
constructor(protected readonly params: Params) {}

public readonly id = DASHBOARD_TO_DASHBOARD_DRILLDOWN;
Expand Down Expand Up @@ -142,14 +142,13 @@ export class DashboardToDashboardDrilldown
}
}

return this.params
.start()
.plugins.share.urlGenerators.getUrlGenerator(DASHBOARD_APP_URL_GENERATOR)
.createUrl({
dashboardId: config.dashboardId,
query: config.useCurrentFilters ? query : undefined,
timeRange,
filters: [...existingFilters, ...filtersFromEvent],
});
const { plugins } = this.params.start();

return plugins.share.urlGenerators.getUrlGenerator(DASHBOARD_APP_URL_GENERATOR).createUrl({
dashboardId: config.dashboardId,
query: config.useCurrentFilters ? query : undefined,
timeRange,
filters: [...existingFilters, ...filtersFromEvent],
});
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ export {
Params as DashboardToDashboardDrilldownParams,
} from './drilldown';
export {
PlaceContext as DashboardToDashboardPlaceContext,
ActionContext as DashboardToDashboardActionContext,
Config as DashboardToDashboardConfig,
} from './types';
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
*/

import {
EmbeddableContext,
ValueClickTriggerContext,
RangeSelectTriggerContext,
IEmbeddable,
} from '../../../../../../../src/plugins/embeddable/public';

export type PlaceContext = EmbeddableContext;
export type ActionContext<T extends IEmbeddable = IEmbeddable> =
| ValueClickTriggerContext<T>
| RangeSelectTriggerContext<T>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
UiActionsEnhancedDynamicActionManager as DynamicActionManager,
UiActionsEnhancedSerializedAction,
UiActionsEnhancedSerializedEvent,
UiActionsEnhancedDrilldownActionFactoryContext as DrilldownFactoryContext,
} from '../../../../advanced_ui_actions/public';
import { NotificationsStart } from '../../../../../../src/core/public';
import { DrilldownWizardConfig, FlyoutDrilldownWizard } from '../flyout_drilldown_wizard';
Expand Down

0 comments on commit 2dacae3

Please sign in to comment.