Skip to content

Commit

Permalink
Fix new circular deps issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
lukeelmers committed Dec 18, 2020
1 parent da443f1 commit 9b4bf16
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 32 deletions.
1 change: 0 additions & 1 deletion src/dev/run_find_plugins_with_circular_deps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ type CircularDepList = Set<string>;

const allowedList: CircularDepList = new Set([
'src/plugins/charts -> src/plugins/discover',
'src/plugins/charts -> src/plugins/expressions',
'src/plugins/charts -> src/plugins/vis_default_editor',
'src/plugins/vis_default_editor -> src/plugins/visualizations',
'src/plugins/vis_default_editor -> src/plugins/visualize',
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/data/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import { SavedObjectsClientPublicToCommon } from './index_patterns';
import { getIndexPatternLoad } from './index_patterns/expressions';
import { UsageCollectionSetup } from '../../usage_collection/public';
import { getTableViewDescription } from './utils/table_inspector_view';
import { TriggerId } from '../../ui_actions/public';

declare module '../../ui_actions/public' {
export interface TriggerContextMapping {
Expand Down Expand Up @@ -124,14 +125,14 @@ export class DataPublicPlugin
);

uiActions.addTriggerAction(
'SELECT_RANGE_TRIGGER',
'SELECT_RANGE_TRIGGER' as TriggerId,
createSelectRangeAction(() => ({
uiActions: startServices().plugins.uiActions,
}))
);

uiActions.addTriggerAction(
'VALUE_CLICK_TRIGGER',
'VALUE_CLICK_TRIGGER' as TriggerId,
createValueClickAction(() => ({
uiActions: startServices().plugins.uiActions,
}))
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/ui_actions/public/triggers/row_click_trigger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
*/

import { i18n } from '@kbn/i18n';
import { IEmbeddable } from '../../../embeddable/public';
import { Trigger } from '.';
import { Datatable } from '../../../expressions';

Expand All @@ -35,7 +34,9 @@ export const rowClickTrigger: Trigger<'ROW_CLICK_TRIGGER'> = {
};

export interface RowClickContext {
embeddable?: IEmbeddable;
// Need to make this unknown to prevent circular dependencies.
// Apps using this property will need to cast to `IEmbeddable`.
embeddable?: unknown;
data: {
/**
* Row index, starting from 0, where user clicked.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import classNames from 'classnames';

import { CoreStart } from 'kibana/public';
import { IInterpreterRenderHandlers } from 'src/plugins/expressions';
import type { PersistedState } from 'src/plugins/visualizations/public';
import { KibanaContextProvider } from '../../../kibana_react/public';
import { TableVisConfig } from '../types';
import { TableContext } from '../table_vis_response_handler';
Expand All @@ -47,7 +48,7 @@ const TableVisualizationComponent = ({
handlers.done();
}, [handlers]);

const uiStateProps = useUiState(handlers.uiState);
const uiStateProps = useUiState(handlers.uiState as PersistedState);

const className = classNames('tbvChart', {
// eslint-disable-next-line @typescript-eslint/naming-convention
Expand Down
6 changes: 2 additions & 4 deletions src/plugins/vis_type_table/public/utils/use/use_ui_state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import { debounce, isEqual } from 'lodash';
import { useCallback, useEffect, useRef, useState } from 'react';
import { IInterpreterRenderHandlers } from 'src/plugins/expressions';
import type { PersistedState } from 'src/plugins/visualizations/public';

import { ColumnWidthData, TableVisUiState, TableVisUseUiStateProps } from '../../types';

Expand All @@ -28,9 +28,7 @@ const defaultSort = {
direction: null,
};

export const useUiState = (
uiState: IInterpreterRenderHandlers['uiState']
): TableVisUseUiStateProps => {
export const useUiState = (uiState: PersistedState): TableVisUseUiStateProps => {
const [sort, setSortState] = useState<TableVisUiState['sort']>(
uiState?.get('vis.params.sort') || defaultSort
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ import {
EuiFlexGroup,
} from '@elastic/eui';
import { SampleMlJob, SampleApp1ClickContext } from '../../triggers';
import { EmbeddableRoot } from '../../../../../../src/plugins/embeddable/public';
import {
EmbeddableRoot,
VALUE_CLICK_TRIGGER,
} from '../../../../../../src/plugins/embeddable/public';
import { ButtonEmbeddable } from '../../embeddables/button_embeddable';
import { useUiActions } from '../../context';
import { VALUE_CLICK_TRIGGER } from '../../../../../../src/plugins/ui_actions/public';

export const job: SampleMlJob = {
job_id: '123',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@

import { CollectConfigProps as CollectConfigPropsBase } from '../../../../../../src/plugins/kibana_utils/public';
import { ApplyGlobalFilterActionContext } from '../../../../../../src/plugins/data/public';
import { IEmbeddable } from '../../../../../../src/plugins/embeddable/public';

export type ActionContext = ApplyGlobalFilterActionContext;
export type ActionContext = ApplyGlobalFilterActionContext & { embeddable: IEmbeddable };

export type Config = {
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/

import { DatatableColumnType } from '../../../../../../../src/plugins/expressions/common';
import { Query, Filter, TimeRange } from '../../../../../../../src/plugins/data/public';
import {
Embeddable,
EmbeddableInput,
Expand Down Expand Up @@ -159,6 +160,9 @@ export const rowClickData = {

interface TestInput extends EmbeddableInput {
savedObjectId?: string;
query?: Query;
filters?: Filter[];
timeRange?: TimeRange;
}

interface TestOutput extends EmbeddableOutput {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@

import { IExternalUrl } from 'src/core/public';
import { UrlDrilldown, ActionContext, Config } from './url_drilldown';
import { IEmbeddable } from '../../../../../../src/plugins/embeddable/public/lib/embeddables';
import { IEmbeddable, VALUE_CLICK_TRIGGER } from '../../../../../../src/plugins/embeddable/public';
import { DatatableColumnType } from '../../../../../../src/plugins/expressions/common';
import { of } from '../../../../../../src/plugins/kibana_utils';
import { createPoint, rowClickData, TestEmbeddable } from './test/data';
import {
VALUE_CLICK_TRIGGER,
ROW_CLICK_TRIGGER,
} from '../../../../../../src/plugins/ui_actions/public';
import { ROW_CLICK_TRIGGER } from '../../../../../../src/plugins/ui_actions/public';

const mockDataPoints = [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ interface EmbeddableQueryInput extends EmbeddableInput {
timeRange?: TimeRange;
}

/** @internal */
export type EmbeddableWithQueryInput = IEmbeddable<EmbeddableQueryInput>;

interface UrlDrilldownDeps {
externalUrl: IExternalUrl;
getGlobalScope: () => UrlDrilldownGlobalScope;
Expand All @@ -45,7 +48,7 @@ interface UrlDrilldownDeps {
getVariablesHelpDocsLink: () => string;
}

export type ActionContext = ChartActionContext<IEmbeddable<EmbeddableQueryInput>>;
export type ActionContext = ChartActionContext<EmbeddableWithQueryInput>;
export type Config = UrlDrilldownConfig;
export type UrlTrigger =
| typeof VALUE_CLICK_TRIGGER
Expand All @@ -54,7 +57,7 @@ export type UrlTrigger =
| typeof CONTEXT_MENU_TRIGGER;

export interface ActionFactoryContext extends BaseActionFactoryContext<UrlTrigger> {
embeddable?: IEmbeddable<EmbeddableQueryInput>;
embeddable?: EmbeddableWithQueryInput;
}
export type CollectConfigProps = CollectConfigPropsBase<Config, ActionFactoryContext>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

import type { Filter, Query, TimeRange } from '../../../../../../src/plugins/data/public';
import {
IEmbeddable,
isRangeSelectTriggerContext,
isValueClickTriggerContext,
isRowClickTriggerContext,
Expand All @@ -20,9 +19,14 @@ import {
SELECT_RANGE_TRIGGER,
ValueClickContext,
VALUE_CLICK_TRIGGER,
EmbeddableInput,
EmbeddableOutput,
} from '../../../../../../src/plugins/embeddable/public';
import type { ActionContext, ActionFactoryContext } from './url_drilldown';
import type {
ActionContext,
ActionFactoryContext,
EmbeddableWithQueryInput,
} from './url_drilldown';
import {
RowClickContext,
ROW_CLICK_TRIGGER,
Expand All @@ -32,7 +36,7 @@ import {
* Part of context scope extracted from an embeddable
* Expose on the scope as: `{{context.panel.id}}`, `{{context.panel.filters.[0]}}`
*/
interface EmbeddableUrlDrilldownContextScope {
interface EmbeddableUrlDrilldownContextScope extends EmbeddableInput {
/**
* ID of the embeddable panel.
*/
Expand All @@ -59,10 +63,8 @@ interface EmbeddableUrlDrilldownContextScope {
savedObjectId?: string;
}

export function getPanelVariables(contextScopeInput: {
embeddable?: IEmbeddable;
}): EmbeddableUrlDrilldownContextScope {
function hasEmbeddable(val: unknown): val is { embeddable: IEmbeddable } {
export function getPanelVariables(contextScopeInput: unknown): EmbeddableUrlDrilldownContextScope {
function hasEmbeddable(val: unknown): val is { embeddable: EmbeddableWithQueryInput } {
if (val && typeof val === 'object' && 'embeddable' in val) return true;
return false;
}
Expand Down Expand Up @@ -99,7 +101,7 @@ function getIndexPatternIds(output: EmbeddableOutput): string[] {
}

export function getEmbeddableVariables(
embeddable: IEmbeddable
embeddable: EmbeddableWithQueryInput
): EmbeddableUrlDrilldownContextScope {
const input = embeddable.getInput();
const output = embeddable.getOutput();
Expand Down Expand Up @@ -195,10 +197,10 @@ function getEventScopeFromValueClickTriggerContext(
});
}

function getEventScopeFromRowClickTriggerContext({
embeddable,
data,
}: RowClickContext): RowClickTriggerEventScope {
function getEventScopeFromRowClickTriggerContext(ctx: RowClickContext): RowClickTriggerEventScope {
const { data } = ctx;
const embeddable = ctx.embeddable as EmbeddableWithQueryInput;

const { rowIndex } = data;
const columns = data.columns || data.table.columns.map(({ id }) => id);
const values: Primitive[] = [];
Expand Down

0 comments on commit 9b4bf16

Please sign in to comment.