diff --git a/src/plugins/data/common/query/index.ts b/src/plugins/data/common/query/index.ts index 35b1617dfa7d6..95f69a14b1f56 100644 --- a/src/plugins/data/common/query/index.ts +++ b/src/plugins/data/common/query/index.ts @@ -9,3 +9,4 @@ export * from './timefilter'; export * from './types'; export * from './is_query'; +export * from './persistable_state'; diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx index 3fac2c58abac6..2f81f3b5c1d7f 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.tsx @@ -96,7 +96,6 @@ export function App({ selectSavedObjectFormat(state, { datasourceMap, visualizationMap, - extractFilterReferences: data.query.filterManager.extract, }) ); @@ -155,10 +154,7 @@ export function App({ if ( application.capabilities.visualize.save && - !isEqual( - persistedDoc?.state, - getLastKnownDocWithoutPinnedFilters(data.query.filterManager.inject, lastKnownDoc)?.state - ) && + !isEqual(persistedDoc?.state, getLastKnownDocWithoutPinnedFilters(lastKnownDoc)?.state) && (isSaveable || persistedDoc) ) { return actions.confirm( diff --git a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx index 6a34ca331534e..07f9b6fba8c79 100644 --- a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx +++ b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx @@ -11,12 +11,13 @@ import { METRIC_TYPE } from '@kbn/analytics'; import { partition } from 'lodash'; import type { SavedObjectReference } from 'kibana/public'; +import { inject as injectFilterReferences } from '../../../../../src/plugins/data/common'; import { SaveModal } from './save_modal'; import type { LensAppProps, LensAppServices } from './types'; import type { SaveProps } from './app'; import { Document } from '../persistence'; import type { LensByReferenceInput, LensEmbeddableInput } from '../embeddable'; -import { esFilters, FilterManager } from '../../../../../src/plugins/data/public'; +import { esFilters } from '../../../../../src/plugins/data/public'; import { APP_ID, getFullPath, LENS_EMBEDDABLE_TYPE } from '../../common'; import { trackUiEvent } from '../lens_ui_telemetry'; import { checkForDuplicateTitle } from '../../../../../src/plugins/saved_objects/public'; @@ -170,11 +171,10 @@ const redirectToDashboard = ({ const getDocToSave = ( lastKnownDoc: Document, saveProps: SaveProps, - references: SavedObjectReference[], - injectFilterReferences: FilterManager['inject'] + references: SavedObjectReference[] ) => { const docToSave = { - ...getLastKnownDocWithoutPinnedFilters(injectFilterReferences, lastKnownDoc)!, + ...getLastKnownDocWithoutPinnedFilters(lastKnownDoc)!, references, }; @@ -243,12 +243,7 @@ export const runSaveLensVisualization = async ( ); } - const docToSave = getDocToSave( - lastKnownDoc, - saveProps, - references, - data.query.filterManager.inject - ); + const docToSave = getDocToSave(lastKnownDoc, saveProps, references); // Required to serialize filters in by value mode until // https://github.com/elastic/kibana/issues/77588 is fixed @@ -359,10 +354,7 @@ export const runSaveLensVisualization = async ( } }; -export function getLastKnownDocWithoutPinnedFilters( - injectFilterReferences: FilterManager['inject'], - doc?: Document -) { +export function getLastKnownDocWithoutPinnedFilters(doc?: Document) { if (!doc) return undefined; const [pinnedFilters, appFilters] = partition( injectFilterReferences(doc.state?.filters || [], doc.references), diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.test.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.test.tsx index b0029aff69cfe..b07962c6e66a0 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.test.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.test.tsx @@ -129,7 +129,6 @@ describe('embeddable', () => { getTrigger, theme: themeServiceMock.createStartContract(), visualizationMap: {}, - injectFilterReferences: jest.fn(), documentToExpression: () => Promise.resolve({ ast: { @@ -171,7 +170,6 @@ describe('embeddable', () => { capabilities: { canSaveDashboards: true, canSaveVisualizations: true }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -218,7 +216,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -267,7 +264,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -312,7 +308,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -354,7 +349,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -399,7 +393,6 @@ describe('embeddable', () => { capabilities: { canSaveDashboards: true, canSaveVisualizations: true }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -451,7 +444,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -501,7 +493,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -558,7 +549,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -616,7 +606,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -677,7 +666,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -722,7 +710,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -767,7 +754,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -812,7 +798,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -872,7 +857,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -948,7 +932,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -999,7 +982,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -1050,7 +1032,6 @@ describe('embeddable', () => { }, getTrigger, visualizationMap: {}, - injectFilterReferences: jest.fn(), theme: themeServiceMock.createStartContract(), documentToExpression: () => Promise.resolve({ @@ -1127,7 +1108,6 @@ describe('embeddable', () => { onEditAction: onEditActionMock, } as unknown as Visualization, }, - injectFilterReferences: jest.fn(), documentToExpression: documentToExpressionMock, }, { id: '123' } as unknown as LensEmbeddableInput diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index 92c7f213d2157..7fd69ccfe3b3f 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -16,7 +16,6 @@ import type { TimefilterContract, TimeRange, IndexPattern, - FilterManager, } from 'src/plugins/data/public'; import type { PaletteOutput } from 'src/plugins/charts/public'; import type { Start as InspectorStart } from 'src/plugins/inspector/public'; @@ -28,6 +27,7 @@ import { map, distinctUntilChanged, skip } from 'rxjs/operators'; import fastIsEqual from 'fast-deep-equal'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import { METRIC_TYPE } from '@kbn/analytics'; +import { inject as injectFilterReferences } from '../../../../../src/plugins/data/common'; import { KibanaThemeProvider } from '../../../../../src/plugins/kibana_react/public'; import { ExpressionRendererEvent, @@ -106,7 +106,6 @@ export interface LensEmbeddableDeps { indexPatternService: IndexPatternsContract; expressionRenderer: ReactExpressionRendererType; timefilter: TimefilterContract; - injectFilterReferences: FilterManager['inject']; basePath: IBasePath; inspector: InspectorStart; getTrigger?: UiActionsStart['getTrigger'] | undefined; @@ -473,7 +472,7 @@ export class Embeddable output.filters = [...this.savedVis.state.filters]; } - output.filters = this.deps.injectFilterReferences(output.filters, this.savedVis.references); + output.filters = injectFilterReferences(output.filters, this.savedVis.references); return output; } diff --git a/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts b/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts index 92b650478e372..63b07affcb9ed 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts +++ b/x-pack/plugins/lens/public/embeddable/embeddable_factory.ts @@ -10,11 +10,7 @@ import { i18n } from '@kbn/i18n'; import { RecursiveReadonly } from '@kbn/utility-types'; import { Ast } from '@kbn/interpreter/common'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; -import { - FilterManager, - IndexPatternsContract, - TimefilterContract, -} from '../../../../../src/plugins/data/public'; +import { IndexPatternsContract, TimefilterContract } from '../../../../../src/plugins/data/public'; import { ReactExpressionRendererType } from '../../../../../src/plugins/expressions/public'; import { EmbeddableFactoryDefinition, @@ -33,7 +29,6 @@ import { VisualizationMap } from '../types'; export interface LensEmbeddableStartServices { timefilter: TimefilterContract; - injectFilterReferences: FilterManager['inject']; coreHttp: HttpSetup; inspector: InspectorStart; attributeService: LensAttributeService; @@ -91,7 +86,6 @@ export class EmbeddableFactory implements EmbeddableFactoryDefinition { async create(input: LensEmbeddableInput, parent?: IContainer) { const { timefilter, - injectFilterReferences, expressionRenderer, documentToExpression, visualizationMap, @@ -113,7 +107,6 @@ export class EmbeddableFactory implements EmbeddableFactoryDefinition { attributeService, indexPatternService, timefilter, - injectFilterReferences, inspector, expressionRenderer, basePath: coreHttp.basePath, diff --git a/x-pack/plugins/lens/public/plugin.ts b/x-pack/plugins/lens/public/plugin.ts index 15ed6a9fa0b42..b89492d7e7588 100644 --- a/x-pack/plugins/lens/public/plugin.ts +++ b/x-pack/plugins/lens/public/plugin.ts @@ -208,7 +208,6 @@ export class LensPlugin { capabilities: coreStart.application.capabilities, coreHttp: coreStart.http, timefilter: plugins.data.query.timefilter.timefilter, - injectFilterReferences: plugins.data.query.filterManager.inject, expressionRenderer: plugins.expressions.ReactExpressionRenderer, documentToExpression: this.editorFrameService!.documentToExpression, visualizationMap, diff --git a/x-pack/plugins/lens/public/state_management/selectors.ts b/x-pack/plugins/lens/public/state_management/selectors.ts index 250e9dde31373..d75f84c077d5f 100644 --- a/x-pack/plugins/lens/public/state_management/selectors.ts +++ b/x-pack/plugins/lens/public/state_management/selectors.ts @@ -7,7 +7,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { SavedObjectReference } from 'kibana/server'; -import { FilterManager } from 'src/plugins/data/public'; +import { extract as extractFilterReferences } from '../../../../../src/plugins/data/common'; import { LensState } from './types'; import { Datasource, DatasourceMap, VisualizationMap } from '../types'; import { getDatasourceLayers } from '../editor_frame_service/editor_frame'; @@ -59,7 +59,6 @@ export const selectSavedObjectFormat = createSelector( selectInjectedDependencies as SelectInjectedDependenciesFunction<{ datasourceMap: DatasourceMap; visualizationMap: VisualizationMap; - extractFilterReferences: FilterManager['extract']; }>, ], ( @@ -69,7 +68,7 @@ export const selectSavedObjectFormat = createSelector( query, filters, activeDatasourceId, - { datasourceMap, visualizationMap, extractFilterReferences } + { datasourceMap, visualizationMap } ) => { const activeVisualization = visualization.state && visualization.activeId && visualizationMap[visualization.activeId];