diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index 567a0b1d8c6d9..2e746e4ecec93 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -83,6 +83,7 @@ export type { GetFieldsOptions, AggregationRestrictions, IndexPatternListItem, + DataViewListItem, } from '../common'; export { ES_FIELD_TYPES, diff --git a/src/plugins/data_view_management/kibana.json b/src/plugins/data_view_management/kibana.json index 707f68d0eb8da..29f305d0ad17a 100644 --- a/src/plugins/data_view_management/kibana.json +++ b/src/plugins/data_view_management/kibana.json @@ -3,7 +3,7 @@ "version": "kibana", "server": true, "ui": true, - "requiredPlugins": ["management", "data", "urlForwarding", "dataViewFieldEditor", "dataViewEditor"], + "requiredPlugins": ["management", "data", "urlForwarding", "dataViewFieldEditor", "dataViewEditor", "dataViews", "fieldFormats"], "requiredBundles": ["kibanaReact", "kibanaUtils"], "owner": { "name": "App Services", diff --git a/src/plugins/data_view_management/public/components/breadcrumbs.ts b/src/plugins/data_view_management/public/components/breadcrumbs.ts index 43f9ca4374658..244bce41f8fd4 100644 --- a/src/plugins/data_view_management/public/components/breadcrumbs.ts +++ b/src/plugins/data_view_management/public/components/breadcrumbs.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { IndexPattern } from '../../../data/public'; +import { DataView } from '../../../data_views/public'; export function getListBreadcrumbs() { return [ @@ -32,7 +32,7 @@ export function getCreateBreadcrumbs() { ]; } -export function getEditBreadcrumbs(indexPattern: IndexPattern) { +export function getEditBreadcrumbs(indexPattern: DataView) { return [ ...getListBreadcrumbs(), { @@ -42,7 +42,7 @@ export function getEditBreadcrumbs(indexPattern: IndexPattern) { ]; } -export function getEditFieldBreadcrumbs(indexPattern: IndexPattern, fieldName: string) { +export function getEditFieldBreadcrumbs(indexPattern: DataView, fieldName: string) { return [ ...getEditBreadcrumbs(indexPattern), { @@ -51,7 +51,7 @@ export function getEditFieldBreadcrumbs(indexPattern: IndexPattern, fieldName: s ]; } -export function getCreateFieldBreadcrumbs(indexPattern: IndexPattern) { +export function getCreateFieldBreadcrumbs(indexPattern: DataView) { return [ ...getEditBreadcrumbs(indexPattern), { diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx index 843838d9e0fbc..0f41c08fbc6fe 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx @@ -11,7 +11,7 @@ import { RouteComponentProps, withRouter } from 'react-router-dom'; import { EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { IndexPattern, IndexPatternField } from '../../../../../../plugins/data/public'; +import { DataView, DataViewField } from '../../../../../../plugins/data_views/public'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../../types'; import { IndexHeader } from '../index_header'; @@ -20,7 +20,7 @@ import { TAB_INDEXED_FIELDS, TAB_SCRIPTED_FIELDS } from '../constants'; import { FieldEditor } from '../../field_editor'; interface CreateEditFieldProps extends RouteComponentProps { - indexPattern: IndexPattern; + indexPattern: DataView; mode?: string; fieldName?: string; } @@ -34,7 +34,7 @@ const newFieldPlaceholder = i18n.translate( export const CreateEditField = withRouter( ({ indexPattern, mode, fieldName, history }: CreateEditFieldProps) => { - const { uiSettings, chrome, notifications, data } = + const { uiSettings, chrome, notifications, dataViews } = useKibana().services; const spec = mode === 'edit' && fieldName @@ -43,7 +43,7 @@ export const CreateEditField = withRouter( scripted: true, type: 'number', name: undefined, - } as unknown as IndexPatternField); + } as unknown as DataViewField); const url = `/dataView/${indexPattern.id}`; @@ -76,7 +76,7 @@ export const CreateEditField = withRouter( indexPattern={indexPattern} spec={spec} services={{ - indexPatternService: data.indexPatterns, + indexPatternService: dataViews, redirectAway, }} /> diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field_container.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field_container.tsx index c35ddb556e18a..f9cb95f67eabc 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field_container.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/create_edit_field/create_edit_field_container.tsx @@ -9,7 +9,7 @@ import React, { useEffect, useState } from 'react'; import { withRouter, RouteComponentProps } from 'react-router-dom'; -import { IndexPattern } from '../../../../../../plugins/data/public'; +import type { DataView } from '../../../../../../plugins/data_views/public'; import { getEditFieldBreadcrumbs, getCreateFieldBreadcrumbs } from '../../breadcrumbs'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../../types'; @@ -18,13 +18,13 @@ import { CreateEditField } from './create_edit_field'; export type CreateEditFieldContainerProps = RouteComponentProps<{ id: string; fieldName?: string }>; const CreateEditFieldCont: React.FC = ({ ...props }) => { - const { setBreadcrumbs, data } = useKibana().services; - const [indexPattern, setIndexPattern] = useState(); + const { setBreadcrumbs, dataViews } = useKibana().services; + const [indexPattern, setIndexPattern] = useState(); const fieldName = props.match.params.fieldName && decodeURIComponent(props.match.params.fieldName); useEffect(() => { - data.indexPatterns.get(props.match.params.id).then((ip: IndexPattern) => { + dataViews.get(props.match.params.id).then((ip: DataView) => { setIndexPattern(ip); if (ip) { setBreadcrumbs( @@ -32,7 +32,7 @@ const CreateEditFieldCont: React.FC = ({ ...props ); } }); - }, [props.match.params.id, fieldName, setBreadcrumbs, data.indexPatterns]); + }, [props.match.params.id, fieldName, setBreadcrumbs, dataViews]); if (indexPattern) { return ( diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx index 2255b4ff2eb47..6b0d7912ce598 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx @@ -20,7 +20,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { IndexPattern, IndexPatternField } from '../../../../../plugins/data/public'; +import { DataView, DataViewField } from '../../../../../plugins/data_views/public'; import { useKibana } from '../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../types'; import { Tabs } from './tabs'; @@ -28,7 +28,7 @@ import { IndexHeader } from './index_header'; import { getTags } from '../utils'; export interface EditIndexPatternProps extends RouteComponentProps { - indexPattern: IndexPattern; + indexPattern: DataView; } const mappingAPILink = i18n.translate( @@ -65,10 +65,10 @@ const securitySolution = 'security-solution'; export const EditIndexPattern = withRouter( ({ indexPattern, history, location }: EditIndexPatternProps) => { - const { application, uiSettings, overlays, chrome, data } = + const { application, uiSettings, overlays, chrome, dataViews } = useKibana().services; - const [fields, setFields] = useState(indexPattern.getNonScriptedFields()); - const [conflictedFields, setConflictedFields] = useState( + const [fields, setFields] = useState(indexPattern.getNonScriptedFields()); + const [conflictedFields, setConflictedFields] = useState( indexPattern.fields.getAll().filter((field) => field.type === 'conflict') ); const [defaultIndex, setDefaultIndex] = useState(uiSettings.get('defaultIndex')); @@ -93,7 +93,7 @@ export const EditIndexPattern = withRouter( const removePattern = () => { async function doRemove() { if (indexPattern.id === defaultIndex) { - const indexPatterns = await data.dataViews.getIdsWithTitle(); + const indexPatterns = await dataViews.getIdsWithTitle(); uiSettings.remove('defaultIndex'); const otherPatterns = filter(indexPatterns, (pattern) => { return pattern.id !== indexPattern.id; @@ -104,7 +104,7 @@ export const EditIndexPattern = withRouter( } } if (indexPattern.id) { - Promise.resolve(data.dataViews.delete(indexPattern.id)).then(function () { + Promise.resolve(dataViews.delete(indexPattern.id)).then(function () { history.push(''); }); } @@ -201,7 +201,7 @@ export const EditIndexPattern = withRouter( > = ({ ...props }) => { - const { data, setBreadcrumbs } = useKibana().services; - const [indexPattern, setIndexPattern] = useState(); + const { dataViews, setBreadcrumbs } = useKibana().services; + const [indexPattern, setIndexPattern] = useState(); useEffect(() => { - data.indexPatterns.get(props.match.params.id).then((ip: IndexPattern) => { + dataViews.get(props.match.params.id).then((ip: DataView) => { setIndexPattern(ip); setBreadcrumbs(getEditBreadcrumbs(ip)); }); - }, [data.indexPatterns, props.match.params.id, setBreadcrumbs]); + }, [dataViews, props.match.params.id, setBreadcrumbs]); if (indexPattern) { return ; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/index_header/index_header.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/index_header/index_header.tsx index 3352fa194759f..b64aed5c0811c 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/index_header/index_header.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/index_header/index_header.tsx @@ -9,10 +9,10 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButtonIcon, EuiPageHeader, EuiToolTip } from '@elastic/eui'; -import { IIndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; interface IndexHeaderProps { - indexPattern: IIndexPattern; + indexPattern: DataView; defaultIndex?: string; setDefault?: () => void; deleteIndexPatternClick?: () => void; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx index f85f7bb254826..b2197a6dcb203 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { IndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; import { IndexedFieldItem } from '../../types'; import { Table, renderFieldName, getConflictModalContent } from './table'; import { overlayServiceMock, themeServiceMock } from 'src/core/public/mocks'; @@ -17,7 +17,7 @@ const theme = themeServiceMock.createStartContract(); const indexPattern = { timeFieldName: 'timestamp', -} as IndexPattern; +} as DataView; const items: IndexedFieldItem[] = [ { diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx index 7e915e3c930a5..f860d9fafb1c0 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx @@ -30,7 +30,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { toMountPoint } from '../../../../../../../kibana_react/public'; -import { IIndexPattern } from '../../../../../../../data/public'; +import { DataView } from '../../../../../../../data_views/public'; import { IndexedFieldItem } from '../../types'; // localized labels @@ -174,7 +174,7 @@ const conflictType = i18n.translate( ); interface IndexedFieldProps { - indexPattern: IIndexPattern; + indexPattern: DataView; items: IndexedFieldItem[]; editField: (field: IndexedFieldItem) => void; deleteField: (fieldName: string) => void; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.test.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.test.tsx index 0427bfba7105d..4773dbff38a28 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.test.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { shallow, ShallowWrapper } from 'enzyme'; -import { IndexPatternField, IndexPattern, IndexPatternType } from 'src/plugins/data/public'; +import { DataViewField, DataView, DataViewType } from 'src/plugins/data_views/public'; import { IndexedFieldsTable } from './indexed_fields_table'; import { getFieldInfo } from '../../utils'; @@ -36,10 +36,10 @@ const helpers = { const indexPattern = { getNonScriptedFields: () => fields, getFormatterForFieldNoDefault: () => ({ params: () => ({}) }), -} as unknown as IndexPattern; +} as unknown as DataView; const rollupIndexPattern = { - type: IndexPatternType.ROLLUP, + type: DataViewType.ROLLUP, typeMeta: { params: { 'rollup-index': 'rollup', @@ -64,12 +64,12 @@ const rollupIndexPattern = { }, getNonScriptedFields: () => fields, getFormatterForFieldNoDefault: () => ({ params: () => ({}) }), -} as unknown as IndexPattern; +} as unknown as DataView; const mockFieldToIndexPatternField = ( spec: Record ) => { - return new IndexPatternField(spec as unknown as IndexPatternField['spec']); + return new DataViewField(spec as unknown as DataViewField['spec']); }; const fields = [ diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx index 29b8d82a99704..667a4e029e02b 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx @@ -9,21 +9,21 @@ import React, { Component } from 'react'; import { createSelector } from 'reselect'; import { OverlayStart, ThemeServiceStart } from 'src/core/public'; -import { IndexPatternField, IndexPattern } from '../../../../../../plugins/data/public'; +import { DataViewField, DataView } from '../../../../../../plugins/data_views/public'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; import { Table } from './components/table'; import { IndexedFieldItem } from './types'; import { IndexPatternManagmentContext } from '../../../types'; interface IndexedFieldsTableProps { - fields: IndexPatternField[]; - indexPattern: IndexPattern; + fields: DataViewField[]; + indexPattern: DataView; fieldFilter?: string; indexedFieldTypeFilter?: string; helpers: { editField: (fieldName: string) => void; deleteField: (fieldName: string) => void; - getFieldInfo: (indexPattern: IndexPattern, field: IndexPatternField) => string[]; + getFieldInfo: (indexPattern: DataView, field: DataViewField) => string[]; }; fieldWildcardMatcher: (filters: any[]) => (val: any) => boolean; userEditPermission: boolean; @@ -61,7 +61,7 @@ class IndexedFields extends Component & DataViewFieldBase; +type IndexedFieldItemBase = Partial & DataViewFieldBase; export interface IndexedFieldItem extends IndexedFieldItemBase { info: string[]; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx index 7b53b9a6c20c5..c37399e1d02a9 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx @@ -11,9 +11,9 @@ import { shallow } from 'enzyme'; import { Table } from '../table'; import { ScriptedFieldItem } from '../../types'; -import { IIndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; -const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as IIndexPattern); +const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as DataView); const items: ScriptedFieldItem[] = [ { name: '1', lang: 'painless', script: '', isUserEditable: true }, @@ -21,7 +21,7 @@ const items: ScriptedFieldItem[] = [ ]; describe('Table', () => { - let indexPattern: IIndexPattern; + let indexPattern: DataView; beforeEach(() => { indexPattern = getIndexPatternMock({ diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx index 5064f40f43297..1e2226ac4ab38 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx @@ -12,10 +12,10 @@ import { i18n } from '@kbn/i18n'; import { EuiInMemoryTable, EuiBasicTableColumn } from '@elastic/eui'; import { ScriptedFieldItem } from '../../types'; -import { IIndexPattern } from '../../../../../../../data/public'; +import { DataView } from '../../../../../../../data_views/public'; interface TableProps { - indexPattern: IIndexPattern; + indexPattern: DataView; items: ScriptedFieldItem[]; editField: (field: ScriptedFieldItem) => void; deleteField: (field: ScriptedFieldItem) => void; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx index 76433a7b49e27..2e3657b23c331 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx @@ -17,11 +17,11 @@ import { Table, Header, CallOuts, DeleteScritpedFieldConfirmationModal } from '. import { ScriptedFieldItem } from './types'; import { IndexPatternManagmentContext } from '../../../types'; -import { IndexPattern, DataPublicPluginStart } from '../../../../../../plugins/data/public'; +import { DataView, DataViewsPublicPluginStart } from '../../../../../../plugins/data_views/public'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; interface ScriptedFieldsTableProps { - indexPattern: IndexPattern; + indexPattern: DataView; fieldFilter?: string; scriptedFieldLanguageFilter?: string; helpers: { @@ -30,7 +30,7 @@ interface ScriptedFieldsTableProps { }; onRemoveField?: () => void; painlessDocLink: string; - saveIndexPattern: DataPublicPluginStart['indexPatterns']['updateSavedObject']; + saveIndexPattern: DataViewsPublicPluginStart['updateSavedObject']; userEditPermission: boolean; } diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.test.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.test.tsx index 23255086559b4..f9c7f41030837 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.test.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.test.tsx @@ -11,13 +11,13 @@ import { shallow, ShallowWrapper } from 'enzyme'; import { Table, TableProps, TableState } from './table'; import { EuiTableFieldDataColumnType, keys } from '@elastic/eui'; -import { IndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; import { SourceFiltersTableFilter } from '../../types'; -const indexPattern = {} as IndexPattern; +const indexPattern = {} as DataView; const items: SourceFiltersTableFilter[] = [{ value: 'tim*', clientId: '' }]; -const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as IndexPattern); +const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as DataView); const getTableColumnRender = ( component: ShallowWrapper, diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx index 237a876688c5d..144f6d19599bd 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx @@ -19,7 +19,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { IndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; import { SourceFiltersTableFilter } from '../../types'; const filterHeader = i18n.translate( @@ -69,7 +69,7 @@ const cancelAria = i18n.translate( ); export interface TableProps { - indexPattern: IndexPattern; + indexPattern: DataView; items: SourceFiltersTableFilter[]; deleteFilter: Function; fieldWildcardMatcher: Function; diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.test.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.test.tsx index 5b332473e41a8..13d1bd72c96ef 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.test.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.test.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SourceFiltersTable } from './source_filters_table'; -import { IndexPattern } from 'src/plugins/data/public'; +import { DataView } from 'src/plugins/data_views/public'; jest.mock('@elastic/eui', () => ({ EuiButton: 'eui-button', @@ -41,7 +41,7 @@ const getIndexPatternMock = (mockedFields: any = {}) => ({ sourceFilters: [{ value: 'time*' }, { value: 'nam*' }, { value: 'age*' }], ...mockedFields, - } as IndexPattern); + } as DataView); describe('SourceFiltersTable', () => { test('should render normally', () => { @@ -93,7 +93,7 @@ describe('SourceFiltersTable', () => { indexPattern={ getIndexPatternMock({ sourceFilters: [{ value: 'tim*' }], - }) as IndexPattern + }) as DataView } filterFilter={''} fieldWildcardMatcher={() => {}} @@ -113,7 +113,7 @@ describe('SourceFiltersTable', () => { indexPattern={ getIndexPatternMock({ sourceFilters: [{ value: 'tim*' }, { value: 'na*' }], - }) as IndexPattern + }) as DataView } filterFilter={''} fieldWildcardMatcher={() => {}} @@ -157,7 +157,7 @@ describe('SourceFiltersTable', () => { indexPattern={ getIndexPatternMock({ sourceFilters: [{ value: 'tim*' }], - }) as IndexPattern + }) as DataView } filterFilter={''} fieldWildcardMatcher={() => {}} diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.tsx index 9a0c7390d2c4d..80451e95fb5ed 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/source_filters_table.tsx @@ -11,15 +11,15 @@ import { createSelector } from 'reselect'; import { EuiSpacer } from '@elastic/eui'; import { AddFilter, Table, Header, DeleteFilterConfirmationModal } from './components'; -import { IndexPattern, DataPublicPluginStart } from '../../../../../../plugins/data/public'; +import { DataView, DataViewsPublicPluginStart } from '../../../../../../plugins/data_views/public'; import { SourceFiltersTableFilter } from './types'; export interface SourceFiltersTableProps { - indexPattern: IndexPattern; + indexPattern: DataView; filterFilter: string; fieldWildcardMatcher: Function; onAddOrRemoveFilter?: Function; - saveIndexPattern: DataPublicPluginStart['indexPatterns']['updateSavedObject']; + saveIndexPattern: DataViewsPublicPluginStart['updateSavedObject']; } export interface SourceFiltersTableState { diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/tabs.tsx b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/tabs.tsx index 58b064fa79893..f24374a85a9ae 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/tabs.tsx +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/tabs.tsx @@ -22,11 +22,11 @@ import { import { i18n } from '@kbn/i18n'; import { fieldWildcardMatcher } from '../../../../../kibana_utils/public'; import { - IndexPattern, - IndexPatternField, - UI_SETTINGS, - DataPublicPluginStart, -} from '../../../../../../plugins/data/public'; + DataView, + DataViewField, + DataViewsPublicPluginStart, + META_FIELDS, +} from '../../../../../../plugins/data_views/public'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../../types'; import { createEditIndexPatternPageStateContainer } from '../edit_index_pattern_state_container'; @@ -38,9 +38,9 @@ import { getTabs, getPath, convertToEuiSelectOption } from './utils'; import { getFieldInfo } from '../../utils'; interface TabsProps extends Pick { - indexPattern: IndexPattern; - fields: IndexPatternField[]; - saveIndexPattern: DataPublicPluginStart['indexPatterns']['updateSavedObject']; + indexPattern: DataView; + fields: DataViewField[]; + saveIndexPattern: DataViewsPublicPluginStart['updateSavedObject']; refreshFields: () => void; } @@ -150,7 +150,7 @@ export function Tabs({ }, [closeFieldEditor]); const fieldWildcardMatcherDecorated = useCallback( - (filters: string[]) => fieldWildcardMatcher(filters, uiSettings.get(UI_SETTINGS.META_FIELDS)), + (filters: string[]) => fieldWildcardMatcher(filters, uiSettings.get(META_FIELDS)), [uiSettings] ); @@ -254,7 +254,7 @@ export function Tabs({ fieldFilter={fieldFilter} scriptedFieldLanguageFilter={scriptedFieldLanguageFilter} helpers={{ - redirectToRoute: (field: IndexPatternField) => { + redirectToRoute: (field: DataViewField) => { history.push(getPath(field, indexPattern)); }, }} diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.test.ts b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.test.ts index 98502776616ae..738f62f647ac2 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.test.ts +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.test.ts @@ -7,13 +7,13 @@ */ import { getPath } from './utils'; -import { IndexPatternField, IndexPattern } from '../../../../../data/public'; +import { DataViewField, DataView } from '../../../../../data_views/public'; test('getPath() should encode "fieldName"', () => { expect( getPath( - { name: 'Memory: Allocated Bytes/sec' } as unknown as IndexPatternField, - { id: 'id' } as unknown as IndexPattern + { name: 'Memory: Allocated Bytes/sec' } as unknown as DataViewField, + { id: 'id' } as unknown as DataView ) ).toMatchInlineSnapshot(`"/dataView/id/field/Memory%3A%20Allocated%20Bytes%2Fsec"`); }); diff --git a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.ts b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.ts index 5f7e989cc5753..0ea8d9d9e28f3 100644 --- a/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.ts +++ b/src/plugins/data_view_management/public/components/edit_index_pattern/tabs/utils.ts @@ -8,17 +8,17 @@ import { Dictionary, countBy, defaults, uniq } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { IndexPattern, IndexPatternField } from '../../../../../../plugins/data/public'; +import { DataView, DataViewField } from '../../../../../../plugins/data_views/public'; import { TAB_INDEXED_FIELDS, TAB_SCRIPTED_FIELDS, TAB_SOURCE_FILTERS } from '../constants'; import { areScriptedFieldsEnabled } from '../../utils'; -function filterByName(items: IndexPatternField[], filter: string) { +function filterByName(items: DataViewField[], filter: string) { const lowercaseFilter = (filter || '').toLowerCase(); return items.filter((item) => item.name.toLowerCase().includes(lowercaseFilter)); } function getCounts( - fields: IndexPatternField[], + fields: DataViewField[], sourceFilters: { excludes: string[]; }, @@ -68,7 +68,7 @@ function getTitle(type: string, filteredCount: Dictionary, totalCount: D return title + count; } -export function getTabs(indexPattern: IndexPattern, fieldFilter: string) { +export function getTabs(indexPattern: DataView, fieldFilter: string) { const totalCount = getCounts(indexPattern.fields.getAll(), indexPattern.getSourceFiltering()); const filteredCount = getCounts( indexPattern.fields.getAll(), @@ -101,7 +101,7 @@ export function getTabs(indexPattern: IndexPattern, fieldFilter: string) { return tabs; } -export function getPath(field: IndexPatternField, indexPattern: IndexPattern) { +export function getPath(field: DataViewField, indexPattern: DataView) { return `/dataView/${indexPattern?.id}/field/${encodeURIComponent(field.name)}`; } diff --git a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.test.tsx b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.test.tsx index 3eeb97351eb39..949032e57b71a 100644 --- a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.test.tsx +++ b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.test.tsx @@ -11,7 +11,7 @@ import { shallow } from 'enzyme'; import { ScriptingHelpFlyout } from './help_flyout'; -import { IndexPattern } from '../../../../../../data/public'; +import { DataView } from '../../../../../../data_views/public'; import { ExecuteScript } from '../../types'; @@ -21,7 +21,7 @@ jest.mock('./test_script', () => ({ }, })); -const indexPatternMock = {} as IndexPattern; +const indexPatternMock = {} as DataView; describe('ScriptingHelpFlyout', () => { it('should render normally', async () => { diff --git a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.tsx b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.tsx index a65f51a2b5d54..74bbb90a3d898 100644 --- a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.tsx +++ b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/help_flyout.tsx @@ -13,10 +13,10 @@ import { ScriptingSyntax } from './scripting_syntax'; import { TestScript } from './test_script'; import { ExecuteScript } from '../../types'; -import { IndexPattern } from '../../../../../../data/public'; +import { DataView } from '../../../../../../data_views/public'; interface ScriptingHelpFlyoutProps { - indexPattern: IndexPattern; + indexPattern: DataView; lang: string; name?: string; script?: string; diff --git a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/test_script.tsx b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/test_script.tsx index 36e61af6cea33..89f80f8a87e38 100644 --- a/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/test_script.tsx +++ b/src/plugins/data_view_management/public/components/field_editor/components/scripting_help/test_script.tsx @@ -24,13 +24,15 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import { esQuery, IndexPattern, Query } from '../../../../../../../plugins/data/public'; +import { Query, buildEsQuery } from '@kbn/es-query'; +import { getEsQueryConfig } from '../../../../../../../plugins/data/public'; +import { DataView } from '../../../../../../../plugins/data_views/public'; import { context as contextType } from '../../../../../../kibana_react/public'; import { IndexPatternManagmentContextValue } from '../../../../types'; import { ExecuteScript } from '../../types'; interface TestScriptProps { - indexPattern: IndexPattern; + indexPattern: DataView; lang: string; name?: string; script?: string; @@ -82,13 +84,8 @@ export class TestScript extends Component { let query; if (searchContext) { - const esQueryConfigs = esQuery.getEsQueryConfig(this.context.services.uiSettings); - query = esQuery.buildEsQuery( - this.props.indexPattern, - searchContext.query || [], - [], - esQueryConfigs - ); + const esQueryConfigs = getEsQueryConfig(this.context.services.uiSettings); + query = buildEsQuery(this.props.indexPattern, searchContext.query || [], [], esQueryConfigs); } const scriptResponse = await executeScript({ diff --git a/src/plugins/data_view_management/public/components/field_editor/constants/index.ts b/src/plugins/data_view_management/public/components/field_editor/constants/index.ts index b4fb4481a5b95..a41b1e235fafc 100644 --- a/src/plugins/data_view_management/public/components/field_editor/constants/index.ts +++ b/src/plugins/data_view_management/public/components/field_editor/constants/index.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { getKbnTypeNames } from '../../../../../data/public'; +import { getKbnTypeNames } from '@kbn/field-types'; export const FIELD_TYPES_BY_LANG = { painless: ['number', 'string', 'date', 'boolean'], diff --git a/src/plugins/data_view_management/public/components/field_editor/field_editor.test.tsx b/src/plugins/data_view_management/public/components/field_editor/field_editor.test.tsx index 34a54acb82e86..39f8469dc0989 100644 --- a/src/plugins/data_view_management/public/components/field_editor/field_editor.test.tsx +++ b/src/plugins/data_view_management/public/components/field_editor/field_editor.test.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { IndexPattern, IndexPatternField, IndexPatternsService } from 'src/plugins/data/public'; +import { DataView, DataViewField, DataViewsService } from 'src/plugins/data_views/public'; import { FieldFormatInstanceType } from 'src/plugins/field_formats/common'; import { findTestSubject } from '@elastic/eui/lib/test'; @@ -67,7 +67,7 @@ jest.mock('./components/field_format_editor', () => ({ const fieldList = [ { name: 'foobar', - } as IndexPatternField, + } as DataViewField, ]; const fields = { @@ -95,17 +95,17 @@ const field = { const services = { redirectAway: () => {}, saveIndexPattern: async () => {}, - indexPatternService: {} as IndexPatternsService, + indexPatternService: {} as DataViewsService, }; describe('FieldEditor', () => { - let indexPattern: IndexPattern; + let indexPattern: DataView; const mockContext = mockManagementPlugin.createIndexPatternManagmentContext(); - mockContext.data.fieldFormats.getDefaultType = jest.fn( + mockContext.fieldFormats.getDefaultType = jest.fn( () => ({} as unknown as FieldFormatInstanceType) ); - mockContext.data.fieldFormats.getByFieldType = jest.fn((fieldType) => { + mockContext.fieldFormats.getByFieldType = jest.fn((fieldType) => { if (fieldType === 'number') { return [{} as unknown as FieldFormatInstanceType]; } else { @@ -118,7 +118,7 @@ describe('FieldEditor', () => { fields, getFormatterForField: () => ({ params: () => ({}) }), getFormatterForFieldNoDefault: () => ({ params: () => ({}) }), - } as unknown as IndexPattern; + } as unknown as DataView; }); it('should render create new scripted field correctly', async () => { @@ -126,7 +126,7 @@ describe('FieldEditor', () => { FieldEditor, { indexPattern, - spec: field as unknown as IndexPatternField, + spec: field as unknown as DataViewField, services, }, mockContext @@ -143,19 +143,19 @@ describe('FieldEditor', () => { name: 'test', script: 'doc.test.value', }; - fieldList.push(testField as unknown as IndexPatternField); + fieldList.push(testField as unknown as DataViewField); indexPattern.fields.getByName = (name) => { const flds = { [testField.name]: testField, }; - return flds[name] as unknown as IndexPatternField; + return flds[name] as unknown as DataViewField; }; const component = createComponentWithContext( FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services, }, mockContext @@ -173,7 +173,7 @@ describe('FieldEditor', () => { lang: undefined, type: 'string', customLabel: 'Test', - } as unknown as IndexPatternField; + } as unknown as DataViewField; fieldList.push(testField); indexPattern.fields.getByName = (name) => { const flds = { @@ -185,7 +185,7 @@ describe('FieldEditor', () => { ...indexPattern.fields, ...{ update: (fld) => { - testField = fld as unknown as IndexPatternField; + testField = fld as unknown as DataViewField; }, add: jest.fn(), }, @@ -197,12 +197,12 @@ describe('FieldEditor', () => { FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services: { redirectAway: () => {}, indexPatternService: { updateSavedObject: jest.fn(() => Promise.resolve()), - } as unknown as IndexPatternsService, + } as unknown as DataViewsService, }, }, mockContext @@ -227,19 +227,19 @@ describe('FieldEditor', () => { script: 'doc.test.value', lang: 'testlang', }; - fieldList.push(testField as unknown as IndexPatternField); + fieldList.push(testField as unknown as DataViewField); indexPattern.fields.getByName = (name) => { const flds = { [testField.name]: testField, }; - return flds[name] as unknown as IndexPatternField; + return flds[name] as unknown as DataViewField; }; const component = createComponentWithContext( FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services, }, mockContext @@ -256,7 +256,7 @@ describe('FieldEditor', () => { FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services, }, mockContext @@ -281,7 +281,7 @@ describe('FieldEditor', () => { FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services, }, mockContext @@ -302,7 +302,7 @@ describe('FieldEditor', () => { FieldEditor, { indexPattern, - spec: testField as unknown as IndexPatternField, + spec: testField as unknown as DataViewField, services, }, mockContext diff --git a/src/plugins/data_view_management/public/components/field_editor/field_editor.tsx b/src/plugins/data_view_management/public/components/field_editor/field_editor.tsx index ce680e197073c..4455b554eb053 100644 --- a/src/plugins/data_view_management/public/components/field_editor/field_editor.tsx +++ b/src/plugins/data_view_management/public/components/field_editor/field_editor.tsx @@ -34,18 +34,18 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { PainlessLang } from '@kbn/monaco'; import type { FieldFormatInstanceType } from 'src/plugins/field_formats/common'; +import type { FieldFormatsStart } from 'src/plugins/field_formats/public'; +import { KBN_FIELD_TYPES, ES_FIELD_TYPES } from '@kbn/field-types'; import { getEnabledScriptingLanguages, getDeprecatedScriptingLanguages, getSupportedScriptingLanguages, } from '../../scripting_languages'; import { - IndexPattern, - IndexPatternField, - KBN_FIELD_TYPES, - ES_FIELD_TYPES, - DataPublicPluginStart, -} from '../../../../../plugins/data/public'; + DataView, + DataViewField, + DataViewsPublicPluginStart, +} from '../../../../../plugins/data_views/public'; import { context as contextType, CodeEditor } from '../../../../kibana_react/public'; import { ScriptingDisabledCallOut, @@ -60,9 +60,9 @@ import { FIELD_TYPES_BY_LANG, DEFAULT_FIELD_TYPES } from './constants'; import { executeScript, isScriptValid } from './lib'; const getFieldTypeFormatsList = ( - field: IndexPatternField['spec'], + field: DataViewField['spec'], defaultFieldFormat: FieldFormatInstanceType, - fieldFormats: DataPublicPluginStart['fieldFormats'] + fieldFormats: FieldFormatsStart ) => { const formatsByType = fieldFormats .getByFieldType(field.type as KBN_FIELD_TYPES) @@ -109,16 +109,16 @@ export interface FieldEditorState { isSaving: boolean; errors?: string[]; format: any; - spec: IndexPatternField['spec']; + spec: DataViewField['spec']; customLabel: string; } export interface FieldEdiorProps { - indexPattern: IndexPattern; - spec: IndexPatternField['spec']; + indexPattern: DataView; + spec: DataViewField['spec']; services: { redirectAway: () => void; - indexPatternService: DataPublicPluginStart['indexPatterns']; + indexPatternService: DataViewsPublicPluginStart; }; } @@ -141,7 +141,7 @@ export class FieldEditor extends PureComponent f.name), + existingFieldNames: indexPattern.fields.getAll().map((f: DataViewField) => f.name), fieldFormatId: undefined, fieldFormatParams: {}, showScriptingHelp: false, @@ -159,7 +159,7 @@ export class FieldEditor extends PureComponent { - const { data } = this.context.services; + const { fieldFormats } = this.context.services; const { spec, format } = this.state; - const DefaultFieldFormat = data.fieldFormats.getDefaultType(type) as FieldFormatInstanceType; + const DefaultFieldFormat = fieldFormats.getDefaultType(type) as FieldFormatInstanceType; spec.type = type; this.setState({ - fieldTypeFormats: getFieldTypeFormatsList(spec, DefaultFieldFormat, data.fieldFormats), + fieldTypeFormats: getFieldTypeFormatsList(spec, DefaultFieldFormat, fieldFormats), fieldFormatId: DefaultFieldFormat.id, fieldFormatParams: format.params(), }); @@ -233,9 +233,9 @@ export class FieldEditor extends PureComponent { const { fieldTypeFormats } = this.state; - const { uiSettings, data } = this.context.services; + const { uiSettings, fieldFormats } = this.context.services; - const FieldFormat = data.fieldFormats.getType( + const FieldFormat = fieldFormats.getType( formatId || (fieldTypeFormats[0] as InitialFieldTypeFormat).defaultFieldFormat.id ) as FieldFormatInstanceType; @@ -819,7 +819,7 @@ export class FieldEditor extends PureComponent; diff --git a/src/plugins/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx b/src/plugins/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx index fdbd6543b08ba..965fcdb6d8818 100644 --- a/src/plugins/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx +++ b/src/plugins/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx @@ -79,7 +79,7 @@ export const IndexPatternTable = ({ uiSettings, indexPatternManagementStart, chrome, - data, + dataViews, IndexPatternEditor, } = useKibana().services; const [indexPatterns, setIndexPatterns] = useState([]); @@ -91,18 +91,18 @@ export const IndexPatternTable = ({ (async function () { const gettedIndexPatterns: IndexPatternTableItem[] = await getIndexPatterns( uiSettings.get('defaultIndex'), - data.dataViews + dataViews ); setIndexPatterns(gettedIndexPatterns); setIsLoadingIndexPatterns(false); if ( gettedIndexPatterns.length === 0 || - !(await data.dataViews.hasUserDataView().catch(() => false)) + !(await dataViews.hasUserDataView().catch(() => false)) ) { setShowCreateDialog(true); } })(); - }, [indexPatternManagementStart, uiSettings, data]); + }, [indexPatternManagementStart, uiSettings, dataViews]); chrome.docTitle.change(title); diff --git a/src/plugins/data_view_management/public/components/utils.test.ts b/src/plugins/data_view_management/public/components/utils.test.ts index 5e36d1bbc907f..cb318b79e223d 100644 --- a/src/plugins/data_view_management/public/components/utils.test.ts +++ b/src/plugins/data_view_management/public/components/utils.test.ts @@ -5,7 +5,8 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { IndexPatternsContract } from 'src/plugins/data/public'; + +import type { DataViewsContract } from 'src/plugins/data_views/public'; import { getIndexPatterns } from './utils'; const indexPatternContractMock = { @@ -22,7 +23,7 @@ const indexPatternContractMock = { ]) ), get: jest.fn().mockReturnValue(Promise.resolve({})), -} as unknown as jest.Mocked; +} as unknown as jest.Mocked; test('getting index patterns', async () => { const indexPatterns = await getIndexPatterns('test', indexPatternContractMock); diff --git a/src/plugins/data_view_management/public/components/utils.ts b/src/plugins/data_view_management/public/components/utils.ts index 1273a1073fbbf..3024c172ac441 100644 --- a/src/plugins/data_view_management/public/components/utils.ts +++ b/src/plugins/data_view_management/public/components/utils.ts @@ -6,8 +6,12 @@ * Side Public License, v 1. */ -import { IndexPatternsContract } from 'src/plugins/data/public'; -import { IFieldType, IndexPattern, IndexPatternListItem } from 'src/plugins/data/public'; +import { + DataViewsContract, + DataView, + DataViewField, + DataViewListItem, +} from 'src/plugins/data_views/public'; import { i18n } from '@kbn/i18n'; const defaultIndexPatternListName = i18n.translate( @@ -30,7 +34,7 @@ const isRollup = (indexPatternType: string = '') => { export async function getIndexPatterns( defaultIndex: string, - indexPatternsService: IndexPatternsContract + indexPatternsService: DataViewsContract ) { const existingIndexPatterns = await indexPatternsService.getIdsWithTitle(true); const indexPatternsListItems = existingIndexPatterns.map((idxPattern) => { @@ -63,7 +67,7 @@ export async function getIndexPatterns( ); } -export const getTags = (indexPattern: IndexPatternListItem | IndexPattern, isDefault: boolean) => { +export const getTags = (indexPattern: DataViewListItem | DataView, isDefault: boolean) => { const tags = []; if (isDefault) { tags.push({ @@ -80,14 +84,11 @@ export const getTags = (indexPattern: IndexPatternListItem | IndexPattern, isDef return tags; }; -export const areScriptedFieldsEnabled = (indexPattern: IndexPatternListItem | IndexPattern) => { +export const areScriptedFieldsEnabled = (indexPattern: DataViewListItem | DataView) => { return !isRollup(indexPattern.type); }; -export const getFieldInfo = ( - indexPattern: IndexPatternListItem | IndexPattern, - field: IFieldType -) => { +export const getFieldInfo = (indexPattern: DataViewListItem | DataView, field: DataViewField) => { if (!isRollup(indexPattern.type)) { return []; } diff --git a/src/plugins/data_view_management/public/management_app/mount_management_section.tsx b/src/plugins/data_view_management/public/management_app/mount_management_section.tsx index 4bc0a204f68a1..4f8e98d382d37 100644 --- a/src/plugins/data_view_management/public/management_app/mount_management_section.tsx +++ b/src/plugins/data_view_management/public/management_app/mount_management_section.tsx @@ -40,7 +40,7 @@ export async function mountManagementSection( ) { const [ { chrome, application, uiSettings, notifications, overlays, http, docLinks, theme }, - { data, dataViewFieldEditor, dataViewEditor }, + { data, dataViewFieldEditor, dataViewEditor, dataViews, fieldFormats }, indexPatternManagementStart, ] = await getStartServices(); const canSave = Boolean(application.capabilities.indexPatterns.save); @@ -59,10 +59,12 @@ export async function mountManagementSection( docLinks, data, dataViewFieldEditor, + dataViews, indexPatternManagementStart: indexPatternManagementStart as IndexPatternManagementStart, setBreadcrumbs: params.setBreadcrumbs, fieldFormatEditors: dataViewFieldEditor.fieldFormatEditors, IndexPatternEditor: dataViewEditor.IndexPatternEditorComponent, + fieldFormats, }; ReactDOM.render( diff --git a/src/plugins/data_view_management/public/mocks.ts b/src/plugins/data_view_management/public/mocks.ts index 513de8d7f4404..3404ca4912c88 100644 --- a/src/plugins/data_view_management/public/mocks.ts +++ b/src/plugins/data_view_management/public/mocks.ts @@ -19,6 +19,7 @@ import { IndexPatternManagementPlugin, } from './plugin'; import { IndexPatternManagmentContext } from './types'; +import { fieldFormatsServiceMock } from '../../field_formats/public/mocks'; const createSetupContract = (): IndexPatternManagementSetup => ({}); @@ -57,6 +58,7 @@ const createIndexPatternManagmentContext = (): { const { http } = coreMock.createSetup(); const data = dataPluginMock.createStartContract(); const dataViewFieldEditor = indexPatternFieldEditorPluginMock.createStartContract(); + const dataViews = data.indexPatterns; return { chrome, @@ -67,12 +69,14 @@ const createIndexPatternManagmentContext = (): { http, docLinks, data, + dataViews, dataViewFieldEditor, indexPatternManagementStart: createStartContract(), setBreadcrumbs: () => {}, fieldFormatEditors: dataViewFieldEditor.fieldFormatEditors, IndexPatternEditor: indexPatternEditorPluginMock.createStartContract().IndexPatternEditorComponent, + fieldFormats: fieldFormatsServiceMock.createStartContract(), }; }; diff --git a/src/plugins/data_view_management/public/plugin.ts b/src/plugins/data_view_management/public/plugin.ts index 742a623dcb084..a0c25479ce3e2 100644 --- a/src/plugins/data_view_management/public/plugin.ts +++ b/src/plugins/data_view_management/public/plugin.ts @@ -9,11 +9,13 @@ import { i18n } from '@kbn/i18n'; import { PluginInitializerContext, CoreSetup, Plugin } from 'src/core/public'; import { DataPublicPluginStart } from 'src/plugins/data/public'; +import { FieldFormatsStart } from 'src/plugins/field_formats/public'; import { UrlForwardingSetup } from '../../url_forwarding/public'; import { ManagementSetup } from '../../management/public'; import { IndexPatternFieldEditorStart } from '../../data_view_field_editor/public'; import { DataViewEditorStart } from '../../data_view_editor/public'; +import { DataViewsPublicPluginStart } from '../../data_views/public'; export interface IndexPatternManagementSetupDependencies { management: ManagementSetup; @@ -24,6 +26,8 @@ export interface IndexPatternManagementStartDependencies { data: DataPublicPluginStart; dataViewFieldEditor: IndexPatternFieldEditorStart; dataViewEditor: DataViewEditorStart; + dataViews: DataViewsPublicPluginStart; + fieldFormats: FieldFormatsStart; } // eslint-disable-next-line @typescript-eslint/no-empty-interface diff --git a/src/plugins/data_view_management/public/types.ts b/src/plugins/data_view_management/public/types.ts index 9cf1976937ac3..dc5e0198a64f1 100644 --- a/src/plugins/data_view_management/public/types.ts +++ b/src/plugins/data_view_management/public/types.ts @@ -21,6 +21,8 @@ import { IndexPatternManagementStart } from './index'; import { KibanaReactContextValue } from '../../kibana_react/public'; import { IndexPatternFieldEditorStart } from '../../data_view_field_editor/public'; import { DataViewEditorStart } from '../../data_view_editor/public'; +import { DataViewsPublicPluginStart } from '../../data_views/public'; +import { FieldFormatsStart } from '../../field_formats/public'; export interface IndexPatternManagmentContext { chrome: ChromeStart; @@ -31,11 +33,13 @@ export interface IndexPatternManagmentContext { http: HttpSetup; docLinks: DocLinksStart; data: DataPublicPluginStart; + dataViews: DataViewsPublicPluginStart; dataViewFieldEditor: IndexPatternFieldEditorStart; indexPatternManagementStart: IndexPatternManagementStart; setBreadcrumbs: ManagementAppMountParams['setBreadcrumbs']; fieldFormatEditors: IndexPatternFieldEditorStart['fieldFormatEditors']; IndexPatternEditor: DataViewEditorStart['IndexPatternEditorComponent']; + fieldFormats: FieldFormatsStart; } export type IndexPatternManagmentContextValue = diff --git a/src/plugins/data_views/public/index.ts b/src/plugins/data_views/public/index.ts index 8e42e4c8b6b0f..b15e6da7d940b 100644 --- a/src/plugins/data_views/public/index.ts +++ b/src/plugins/data_views/public/index.ts @@ -16,9 +16,10 @@ export { export { onRedirectNoIndexPattern } from './data_views'; export type { IIndexPatternFieldList, TypeMeta } from '../common'; -export { IndexPatternField, DataViewField } from '../common'; +export { IndexPatternField, DataViewField, DataViewType, META_FIELDS } from '../common'; export type { IndexPatternsContract, DataViewsContract } from './data_views'; +export type { DataViewListItem } from './data_views'; export { IndexPatternsService, IndexPattern, @@ -42,4 +43,4 @@ export function plugin() { export type { DataViewsPublicPluginSetup, DataViewsPublicPluginStart } from './types'; // Export plugin after all other imports -export type { DataViewsPublicPlugin as DataPlugin }; +export type { DataViewsPublicPlugin as DataViewsPlugin }; diff --git a/src/plugins/data_views/public/mocks.ts b/src/plugins/data_views/public/mocks.ts new file mode 100644 index 0000000000000..c9aece61c4e02 --- /dev/null +++ b/src/plugins/data_views/public/mocks.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { DataViewsPlugin, DataViewsContract } from '.'; + +export type Setup = jest.Mocked>; +export type Start = jest.Mocked>; + +const createSetupContract = (): Setup => ({}); + +const createStartContract = (): Start => { + return { + find: jest.fn((search) => [{ id: search, title: search }]), + createField: jest.fn(() => {}), + createFieldList: jest.fn(() => []), + ensureDefaultIndexPattern: jest.fn(), + ensureDefaultDataView: jest.fn().mockReturnValue(Promise.resolve({})), + make: () => ({ + fieldsFetcher: { + fetchForWildcard: jest.fn(), + }, + }), + get: jest.fn().mockReturnValue(Promise.resolve({})), + clearCache: jest.fn(), + } as unknown as jest.Mocked; +}; + +export const dataViewPluginMocks = { + createSetupContract, + createStartContract, +};