[unified search] Query string input uses data views plugin directly instead of via deprecated data plugin reference (#143611)

* use data views plugin

* remove unneeded dependency

* use data views plugin

* fix type

* type fix

* supply dataViews as depedency

* supply dataViews as depeden
This commit is contained in:
Matthew Kime 2022-10-20 09:15:33 -05:00 committed by GitHub
parent b1a88f5c61
commit 631c24abf4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 105 additions and 18 deletions

View file

@ -188,6 +188,7 @@ export const QueryBarTopRow = React.memo(
notifications,
docLinks,
http,
dataViews,
} = kibana.services;
const isQueryLangSelected = props.query && !isOfQueryType(props.query);
@ -550,6 +551,7 @@ export const QueryBarTopRow = React.memo(
docLinks,
http,
uiSettings,
dataViews,
}}
/>
</EuiFlexItem>

View file

@ -31,7 +31,11 @@ import { compact, debounce, isEmpty, isEqual, isFunction, partition } from 'loda
import { CoreStart, DocLinksStart, Toast } from '@kbn/core/public';
import type { Query } from '@kbn/es-query';
import { DataPublicPluginStart, getQueryLog } from '@kbn/data-plugin/public';
import { type DataView, DataView as KibanaDataView } from '@kbn/data-views-plugin/public';
import {
type DataView,
DataView as KibanaDataView,
DataViewsPublicPluginStart,
} from '@kbn/data-views-plugin/public';
import type { PersistedLog } from '@kbn/data-plugin/public';
import { getFieldSubtypeNested, KIBANA_USER_QUERY_LANGUAGE_KEY } from '@kbn/data-plugin/common';
import { toMountPoint } from '@kbn/kibana-react-plugin/public';
@ -61,6 +65,7 @@ export interface QueryStringInputDependencies {
http: CoreStart['http'];
docLinks: DocLinksStart;
uiSettings: CoreStart['uiSettings'];
dataViews: DataViewsPublicPluginStart;
}
export interface QueryStringInputProps {
@ -196,7 +201,7 @@ export default class QueryStringInputUI extends PureComponent<QueryStringInputPr
const currentAbortController = this.fetchIndexPatternsAbortController;
const objectPatternsFromStrings = await fetchIndexPatterns(
this.props.deps.data.indexPatterns,
this.props.deps.data.dataViews,
idOrTitlePatterns
);

View file

@ -2,6 +2,7 @@
"id": "visDefaultEditor",
"version": "kibana",
"ui": true,
"requiredPlugins": ["dataViews"],
"optionalPlugins": ["visualizations"],
"requiredBundles": [
"unifiedSearch",

View file

@ -45,6 +45,7 @@ function FilterRow({
const { services } = useKibana<VisDefaultEditorKibanaServices>();
const {
data,
dataViews,
unifiedSearch,
usageCollection,
storage,
@ -118,6 +119,7 @@ function FilterRow({
size="s"
deps={{
data,
dataViews,
unifiedSearch,
usageCollection,
storage,

View file

@ -11,9 +11,11 @@ import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { IStorageWrapper } from '@kbn/kibana-utils-plugin/public';
import type { AutocompleteStart } from '@kbn/unified-search-plugin/public';
import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public';
import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
export interface VisDefaultEditorKibanaServices {
data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart;
appName: string;
unifiedSearch: {
autocomplete: AutocompleteStart;

View file

@ -83,6 +83,7 @@ export function QueryBarWrapper({
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}

View file

@ -58,7 +58,7 @@ export function TraceSearchBox({
error,
loading,
}: Props) {
const { unifiedSearch, core, data } = useApmPluginContext();
const { unifiedSearch, core, data, dataViews } = useApmPluginContext();
const { notifications, http, docLinks, uiSettings } = core;
const {
services: { storage },
@ -153,6 +153,7 @@ export function TraceSearchBox({
docLinks,
uiSettings,
data,
dataViews,
storage,
}}
/>

View file

@ -11,6 +11,7 @@ type Stubs =
| 'licensing'
| 'storage'
| 'data'
| 'dataViews'
| 'unifiedSearch'
| 'deprecations'
| 'fatalErrors'
@ -24,6 +25,7 @@ export const stubbedStartServices: StubbedStartServices = {
licensing: {} as FleetStartServices['licensing'],
storage: {} as FleetStartServices['storage'],
data: {} as FleetStartServices['data'],
dataViews: {} as FleetStartServices['dataViews'],
unifiedSearch: {} as FleetStartServices['unifiedSearch'],
deprecations: {} as FleetStartServices['deprecations'],
fatalErrors: {} as FleetStartServices['fatalErrors'],

View file

@ -45,6 +45,7 @@ export const SearchBar: React.FunctionComponent<Props> = ({
}) => {
const {
data,
dataViews,
unifiedSearch,
storage,
notifications,
@ -131,6 +132,7 @@ export const SearchBar: React.FunctionComponent<Props> = ({
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}

View file

@ -28,7 +28,7 @@ export const LogQueryBar: React.FunctionComponent<{
isQueryValid: boolean;
onUpdateQuery: (query: string, runQuery?: boolean) => void;
}> = memo(({ query, isQueryValid, onUpdateQuery }) => {
const { data, notifications, http, docLinks, uiSettings, unifiedSearch, storage } =
const { data, notifications, http, docLinks, uiSettings, unifiedSearch, storage, dataViews } =
useStartServices();
const [indexPatternFields, setIndexPatternFields] = useState<FieldSpec[]>();
@ -81,7 +81,7 @@ export const LogQueryBar: React.FunctionComponent<{
onUpdateQuery(newQuery.query as string, true);
}}
appName={i18n.translate('xpack.fleet.appTitle', { defaultMessage: 'Fleet' })}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage }}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, dataViews, storage }}
/>
);
});

View file

@ -7,6 +7,7 @@
import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks';
import { dataPluginMock } from '@kbn/data-plugin/public/mocks';
import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks';
import { licensingMock } from '@kbn/licensing-plugin/public/mocks';
import { cloudMock } from '@kbn/cloud-plugin/public/mocks';
import { homePluginMock } from '@kbn/home-plugin/public/mocks';
@ -28,6 +29,7 @@ export const createStartDepsMock = () => {
return {
licensing: licensingMock.createStart(),
data: dataPluginMock.createStartContract(),
dataViews: dataViewPluginMocks.createStartContract(),
unifiedSearch: unifiedSearchPluginMock.createStartContract(),
navigation: navigationPluginMock.createStartContract(),
customIntegrations: customIntegrationsMock.createStart(),

View file

@ -37,6 +37,7 @@ import type {
import { DEFAULT_APP_CATEGORIES, AppNavLinkStatus } from '@kbn/core/public';
import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import type { HomePublicPluginSetup } from '@kbn/home-plugin/public';
import { Storage } from '@kbn/kibana-utils-plugin/public';
import type { LicensingPluginStart } from '@kbn/licensing-plugin/public';
@ -96,6 +97,7 @@ export interface FleetSetupDeps {
export interface FleetStartDeps {
licensing: LicensingPluginStart;
data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart;
unifiedSearch: UnifiedSearchPublicPluginStart;
navigation: NavigationPublicPluginStart;
customIntegrations: CustomIntegrationsStart;

View file

@ -103,6 +103,7 @@ export function SearchBarComponent(props: SearchBarStateProps & SearchBarProps)
appName,
unifiedSearch,
data,
dataViews,
storage,
notifications,
http,
@ -176,6 +177,7 @@ export function SearchBarComponent(props: SearchBarStateProps & SearchBarProps)
deps={{
unifiedSearch,
data,
dataViews,
storage,
notifications,
http,

View file

@ -32,7 +32,7 @@ export const LogsToolbar = () => {
const { filterQueryDraft, isFilterQueryDraftValid, applyLogFilterQuery, setLogFilterQueryDraft } =
useLogFilterStateContext();
const { setSurroundingLogsId } = useLogEntryFlyoutContext();
const { http, notifications, docLinks, uiSettings, data, storage, unifiedSearch } =
const { http, notifications, docLinks, uiSettings, data, dataViews, storage, unifiedSearch } =
useKibanaContextForPlugin().services;
const {
@ -77,7 +77,16 @@ export const LogsToolbar = () => {
appName={i18n.translate('xpack.infra.appName', {
defaultMessage: 'Infra logs',
})}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage }}
deps={{
unifiedSearch,
notifications,
http,
docLinks,
uiSettings,
data,
dataViews,
storage,
}}
/>
</QueryBarFlexItem>
<EuiFlexItem grow={false}>

View file

@ -36,7 +36,7 @@ export const QueryInput = ({
const { inputValue, handleInputChange } = useDebouncedValue({ value, onChange });
const lensAppServices = useKibana<LensAppServices>().services;
const { data, uiSettings, http, notifications, docLinks, storage, unifiedSearch } =
const { data, uiSettings, http, notifications, docLinks, storage, unifiedSearch, dataViews } =
lensAppServices;
return (
@ -74,7 +74,7 @@ export const QueryInput = ({
appName={i18n.translate('xpack.lens.queryInput.appName', {
defaultMessage: 'Lens',
})}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage }}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage, dataViews }}
/>
);
};

View file

@ -6,6 +6,7 @@
*/
import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import type { CoreStart } from '@kbn/core/public';
import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
import { useKibana, KibanaReactContextValue } from '@kbn/kibana-react-plugin/public';
@ -27,6 +28,7 @@ import type { MlServicesContext } from '../../app';
interface StartPlugins {
data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart;
security?: SecurityPluginSetup;
licenseManagement?: LicenseManagementUIPluginSetup;
share: SharePluginStart;

View file

@ -58,8 +58,17 @@ export const ExplorationQueryBar: FC<ExplorationQueryBarProps> = ({
const [errorMessage, setErrorMessage] = useState<ErrorMessage | undefined>(undefined);
const { services } = useMlKibana();
const { unifiedSearch, data, storage, appName, notifications, http, docLinks, uiSettings } =
services;
const {
unifiedSearch,
data,
storage,
appName,
notifications,
http,
docLinks,
uiSettings,
dataViews,
} = services;
const searchChangeHandler = (q: Query) => setSearchInput(q);
@ -203,7 +212,16 @@ export const ExplorationQueryBar: FC<ExplorationQueryBarProps> = ({
dataTestSubj="mlDFAnalyticsQueryInput"
languageSwitcherPopoverAnchorPosition="rightDown"
appName={appName}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage }}
deps={{
unifiedSearch,
notifications,
http,
docLinks,
uiSettings,
data,
storage,
dataViews,
}}
/>
</EuiFlexItem>
{filters && filters.options && (

View file

@ -113,8 +113,17 @@ export const ExplorerQueryBar: FC<ExplorerQueryBarProps> = ({
}) => {
const { anomalyExplorerCommonStateService } = useAnomalyExplorerContext();
const { services } = useMlKibana();
const { unifiedSearch, data, storage, appName, notifications, http, docLinks, uiSettings } =
services;
const {
unifiedSearch,
data,
storage,
appName,
notifications,
http,
docLinks,
uiSettings,
dataViews,
} = services;
// The internal state of the input query bar updated on every key stroke.
const [searchInput, setSearchInput] = useState<Query>(
@ -171,7 +180,16 @@ export const ExplorerQueryBar: FC<ExplorerQueryBarProps> = ({
dataTestSubj="explorerQueryInput"
languageSwitcherPopoverAnchorPosition="rightDown"
appName={appName}
deps={{ unifiedSearch, notifications, http, docLinks, uiSettings, data, storage }}
deps={{
unifiedSearch,
notifications,
http,
docLinks,
uiSettings,
data,
storage,
dataViews,
}}
/>
}
isOpen={errorMessage?.query === searchInput.query && errorMessage?.message !== ''}

View file

@ -15,6 +15,7 @@
"kibanaReact",
"savedObjects",
"data",
"dataViews",
"kibanaUtils"
],
"configPath": ["xpack", "stack_alerts"],

View file

@ -11,7 +11,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { i18n } from '@kbn/i18n';
import { fromKueryExpression, luceneStringToDsl } from '@kbn/es-query';
import type { RuleTypeParamsExpressionProps } from '@kbn/triggers-actions-ui-plugin/public';
import type { DataView } from '@kbn/data-plugin/common';
import type { DataView, DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import type { Query } from '@kbn/es-query';
import { QueryStringInput } from '@kbn/unified-search-plugin/public';
import { useKibana } from '@kbn/kibana-react-plugin/public';
@ -45,6 +45,7 @@ const DEFAULT_VALUES = {
interface KibanaDeps {
http: HttpSetup;
docLinks: DocLinksStart;
dataViews: DataViewsPublicPluginStart;
uiSettings: IUiSettingsClient;
notifications: CoreStart['notifications'];
storage: IStorageWrapper;
@ -79,7 +80,7 @@ export const GeoContainmentAlertTypeExpression: React.FunctionComponent<
boundaryNameField,
} = ruleParams;
const { http, docLinks, uiSettings, notifications, storage, usageCollection } =
const { http, docLinks, uiSettings, notifications, storage, usageCollection, dataViews } =
useKibana<KibanaDeps>().services;
const [indexPattern, _setIndexPattern] = useState<DataView>({
@ -226,6 +227,7 @@ export const GeoContainmentAlertTypeExpression: React.FunctionComponent<
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}
@ -281,6 +283,7 @@ export const GeoContainmentAlertTypeExpression: React.FunctionComponent<
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}

View file

@ -31,6 +31,7 @@ export const AlertQueryBar = ({ query = '', onChange }: Props) => {
docLinks,
uiSettings,
data,
dataViews,
unifiedSearch,
storage,
usageCollection,
@ -72,6 +73,7 @@ export const AlertQueryBar = ({ query = '', onChange }: Props) => {
deps={{
unifiedSearch,
data,
dataViews,
storage,
notifications,
http,

View file

@ -43,6 +43,7 @@ export const QueryBar = () => {
docLinks,
uiSettings,
data,
dataViews,
unifiedSearch,
storage,
usageCollection,
@ -100,6 +101,7 @@ export const QueryBar = () => {
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}

View file

@ -11,6 +11,7 @@ import type { ScopedHistory } from '@kbn/core/public';
import { coreMock, themeServiceMock } from '@kbn/core/public/mocks';
import { dataPluginMock } from '@kbn/data-plugin/public/mocks';
import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks';
import { savedObjectsPluginMock } from '@kbn/saved-objects-plugin/public/mocks';
import { SharePluginStart } from '@kbn/share-plugin/public';
@ -25,6 +26,7 @@ import type { GetMlSharedImportsReturnType } from '../../shared_imports';
const coreSetup = coreMock.createSetup();
const coreStart = coreMock.createStart();
const dataStart = dataPluginMock.createStartContract();
const dataViewsStart = dataViewPluginMocks.createStartContract();
// Replace mock to support syntax using `.then()` as used in transform code.
coreStart.savedObjects.client.find = jest.fn().mockResolvedValue({ savedObjects: [] });
@ -33,6 +35,7 @@ const appDependencies: AppDependencies = {
application: coreStart.application,
chrome: coreStart.chrome,
data: dataStart,
dataViews: dataViewsStart,
docLinks: coreStart.docLinks,
i18n: coreStart.i18n,
notifications: coreSetup.notifications,

View file

@ -19,6 +19,7 @@ import type {
} from '@kbn/core/public';
import type { SavedObjectsStart as SavedObjectsPluginStart } from '@kbn/saved-objects-plugin/public';
import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import type { ScopedHistory } from '@kbn/core/public';
import type { SharePluginStart } from '@kbn/share-plugin/public';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/public';
@ -35,6 +36,7 @@ export interface AppDependencies {
application: ApplicationStart;
chrome: ChromeStart;
data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart;
docLinks: DocLinksStart;
http: HttpSetup;
i18n: I18nStart;

View file

@ -29,7 +29,7 @@ export async function mountManagementSection(
const startServices = await getStartServices();
const [core, plugins] = startServices;
const { application, chrome, docLinks, i18n, overlays, theme, savedObjects, uiSettings } = core;
const { data, share, spaces, triggersActionsUi, unifiedSearch } = plugins;
const { data, dataViews, share, spaces, triggersActionsUi, unifiedSearch } = plugins;
const { docTitle } = chrome;
// Initialize services
@ -42,6 +42,7 @@ export async function mountManagementSection(
application,
chrome,
data,
dataViews,
docLinks,
http,
i18n,

View file

@ -35,6 +35,7 @@ export const SourceSearchBar: FC<SourceSearchBarProps> = ({ dataView, searchBar
http,
docLinks,
data,
dataViews,
storage,
unifiedSearch,
usageCollection,
@ -73,6 +74,7 @@ export const SourceSearchBar: FC<SourceSearchBarProps> = ({ dataView, searchBar
docLinks,
uiSettings,
data,
dataViews,
storage,
usageCollection,
}}