From 358d13919bc597d13e6a98ec97fae2615093027e Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Mon, 13 Apr 2020 13:28:09 +0200 Subject: [PATCH 01/35] Migrate SO management section to NP (#61700) * move libs to new plugin * adapt libs to use NP apis * add required plugins * add get_allowed_types route * move object_view components * add service registry * migrate table header component * migrate table component * migrate saved_objects_table component * remove migrated legacy files * fix re-export from legacy management + section label * migrate services registration * adapt management section mock * fix imports * migrate flyout component * migrate relationships component * migrate saved_objects_table tests * migrate breadcrumb * add redirect if unauthorized check * migrate translations to new savedObjectsManagement prefix * remove obsolete translations * convert action registry to service pattern * wire extra actions * remove importAndExportableTypes from injected vars * handle newIndexPatternUrl * remove duplicate dashboard dependency * remove old TODO * remove old TODO * properly mock lodash in tests * add async management section loading * expose createSavedSearchesLoader from discover plugin contract * address most review comments * fix merge conflicts --- src/core/public/mocks.ts | 6 +- .../server/saved_objects/service/index.ts | 1 - src/core/server/server.api.md | 2 - src/legacy/core_plugins/kibana/inject_vars.js | 3 - .../core_plugins/kibana/public/index.ts | 2 +- .../management/saved_object_registry.ts | 64 +-- .../public/management/sections/index.js | 1 - .../management/sections/objects/_objects.html | 5 - .../management/sections/objects/_objects.js | 104 ----- .../management/sections/objects/_view.html | 5 - .../management/sections/objects/_view.js | 85 ---- .../sections/objects/breadcrumbs.js | 50 --- .../objects/components/objects_table/index.js | 20 - .../saved_objects/saved_objects_mixin.js | 5 - src/plugins/data/public/mocks.ts | 1 + src/plugins/discover/public/mocks.ts | 3 + src/plugins/discover/public/plugin.ts | 12 + src/plugins/management/public/mocks/index.ts | 13 +- .../saved_objects_management/common/index.ts} | 2 +- .../saved_objects_management/common}/types.ts | 30 +- .../saved_objects_management/kibana.json | 3 +- .../saved_objects_management/public/index.ts | 6 +- .../public}/lib/case_conversion.test.ts | 0 .../public}/lib/case_conversion.ts | 0 .../public}/lib/create_field_list.test.ts | 4 +- .../public}/lib/create_field_list.ts | 8 +- .../lib/extract_export_details.test.ts | 0 .../public}/lib/extract_export_details.ts | 0 .../lib/fetch_export_by_type_and_search.ts | 7 +- .../public}/lib/fetch_export_objects.ts | 7 +- .../public}/lib/find_objects.ts | 29 +- .../public/lib/get_allowed_types.ts | 31 ++ .../public}/lib/get_default_title.ts | 0 .../public}/lib/get_relationships.test.ts | 37 +- .../public}/lib/get_relationships.ts | 32 +- .../public}/lib/get_saved_object_counts.ts | 17 +- .../public}/lib/get_saved_object_label.ts | 0 .../public}/lib/import_file.ts | 14 +- .../public}/lib/import_legacy_file.test.ts | 0 .../public}/lib/import_legacy_file.ts | 0 .../public}/lib/in_app_url.test.ts | 2 +- .../public}/lib/in_app_url.ts | 0 .../public}/lib/index.ts | 2 + .../public}/lib/log_legacy_import.ts | 9 +- .../public}/lib/numeric.ts | 0 .../public}/lib/parse_query.test.ts | 2 +- .../public}/lib/parse_query.ts | 15 +- .../lib/process_import_response.test.ts | 0 .../public}/lib/process_import_response.ts | 0 .../public}/lib/resolve_import_errors.test.ts | 35 +- .../public}/lib/resolve_import_errors.ts | 12 +- .../public}/lib/resolve_saved_objects.test.ts | 7 +- .../public}/lib/resolve_saved_objects.ts | 26 +- .../public/management_section/index.ts} | 2 +- .../management_section/mount_section.tsx | 211 +++++++++ .../__snapshots__/header.test.tsx.snap | 6 +- .../__snapshots__/intro.test.tsx.snap | 6 +- .../not_found_errors.test.tsx.snap | 30 +- .../object_view/components}/field.test.tsx | 0 .../object_view/components}/field.tsx | 4 +- .../object_view/components}/form.tsx | 18 +- .../object_view/components}/header.test.tsx | 0 .../object_view/components}/header.tsx | 8 +- .../object_view/components}/index.ts | 0 .../object_view/components}/intro.test.tsx | 0 .../object_view/components}/intro.tsx | 4 +- .../components}/not_found_errors.test.tsx | 0 .../components}/not_found_errors.tsx | 10 +- .../management_section/object_view/index.ts} | 2 +- .../object_view}/saved_object_view.tsx | 18 +- .../saved_objects_table.test.tsx.snap} | 116 ++++- .../__snapshots__/flyout.test.tsx.snap} | 84 ++-- .../__snapshots__/header.test.tsx.snap} | 10 +- .../relationships.test.tsx.snap} | 2 +- .../__snapshots__/table.test.tsx.snap} | 24 +- .../components/flyout.test.mocks.ts | 44 ++ .../objects_table/components/flyout.test.tsx} | 183 ++++---- .../objects_table/components/flyout.tsx} | 260 ++++++----- .../objects_table/components/header.test.tsx} | 3 +- .../objects_table/components/header.tsx} | 31 +- .../objects_table/components/index.ts | 23 + .../components/relationships.test.tsx} | 44 +- .../components/relationships.tsx} | 89 ++-- .../objects_table/components/table.test.tsx} | 31 +- .../objects_table/components/table.tsx} | 154 ++++--- .../objects_table/index.ts} | 2 +- .../saved_objects_table.test.mocks.ts | 67 +++ .../saved_objects_table.test.tsx} | 419 ++++++++---------- .../objects_table/saved_objects_table.tsx} | 260 ++++++----- .../public/management_section/types.ts | 38 ++ .../saved_objects_management/public/mocks.ts | 12 +- .../public/plugin.test.ts | 10 +- .../saved_objects_management/public/plugin.ts | 71 ++- .../public/register_services.ts | 59 +++ .../public/services/action_service.mock.ts | 57 +++ ...egistry.test.ts => action_service.test.ts} | 30 +- .../{action_registry.ts => action_service.ts} | 48 +- .../public/services/index.ts | 14 +- ...istry.mock.ts => service_registry.mock.ts} | 13 +- .../public/services/service_registry.ts | 49 ++ .../services/{action_types.ts => types.ts} | 0 .../saved_objects_management/public/types.ts | 20 + .../server/routes/get_allowed_types.ts} | 34 +- .../server/routes/index.test.ts | 8 +- .../server/routes/index.ts | 2 + .../saved_objects_management/server/types.ts | 30 +- ...opy_saved_objects_to_space_service.test.ts | 4 +- .../copy_saved_objects_to_space_service.ts | 2 +- .../translations/translations/ja-JP.json | 245 +++++----- .../translations/translations/zh-CN.json | 243 +++++----- 110 files changed, 2184 insertions(+), 1689 deletions(-) delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.html delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/_view.html delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/breadcrumbs.js delete mode 100644 src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/index.js rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/index.js => plugins/saved_objects_management/common/index.ts} (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/common}/types.ts (74%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/case_conversion.test.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/case_conversion.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/create_field_list.test.ts (96%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/create_field_list.ts (92%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/extract_export_details.test.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/extract_export_details.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/fetch_export_by_type_and_search.ts (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/fetch_export_objects.ts (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/find_objects.ts (57%) create mode 100644 src/plugins/saved_objects_management/public/lib/get_allowed_types.ts rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/get_default_title.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/get_relationships.test.ts (67%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/get_relationships.ts (67%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/get_saved_object_counts.ts (72%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/get_saved_object_label.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/import_file.ts (75%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/import_legacy_file.test.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/import_legacy_file.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/in_app_url.test.ts (98%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/in_app_url.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/index.ts (94%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/log_legacy_import.ts (81%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/numeric.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/parse_query.test.ts (92%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/parse_query.ts (77%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/process_import_response.test.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/process_import_response.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/resolve_import_errors.test.ts (90%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/resolve_import_errors.ts (95%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/resolve_saved_objects.test.ts (98%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public}/lib/resolve_saved_objects.ts (94%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/index.js => plugins/saved_objects_management/public/management_section/index.ts} (93%) create mode 100644 src/plugins/saved_objects_management/public/management_section/mount_section.tsx rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/__snapshots__/header.test.tsx.snap (96%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/__snapshots__/intro.test.tsx.snap (90%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/__snapshots__/not_found_errors.test.tsx.snap (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/field.test.tsx (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/field.tsx (97%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/form.tsx (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/header.test.tsx (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/header.tsx (92%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/index.ts (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/intro.test.tsx (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/intro.tsx (92%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/not_found_errors.test.tsx (100%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/object_view => plugins/saved_objects_management/public/management_section/object_view/components}/not_found_errors.tsx (87%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/index.js => plugins/saved_objects_management/public/management_section/object_view/index.ts} (93%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects => plugins/saved_objects_management/public/management_section/object_view}/saved_object_view.tsx (89%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/__snapshots__/objects_table.test.js.snap => plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap} (73%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/__jest__/__snapshots__/flyout.test.js.snap => plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/flyout.test.tsx.snap} (85%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/__snapshots__/header.test.js.snap => plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap} (88%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/__snapshots__/relationships.test.js.snap => plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap} (99%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/__snapshots__/table.test.js.snap => plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap} (93%) create mode 100644 src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.mocks.ts rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/__jest__/flyout.test.js => plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.tsx} (75%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/flyout.js => plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx} (77%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/header.test.js => plugins/saved_objects_management/public/management_section/objects_table/components/header.test.tsx} (96%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/header.js => plugins/saved_objects_management/public/management_section/objects_table/components/header.tsx} (83%) create mode 100644 src/plugins/saved_objects_management/public/management_section/objects_table/components/index.ts rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/relationships.test.js => plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx} (88%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/relationships.js => plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx} (75%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/table.test.js => plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx} (87%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/table.js => plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx} (71%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/index.js => plugins/saved_objects_management/public/management_section/objects_table/index.ts} (93%) create mode 100644 src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.mocks.ts rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/objects_table.test.js => plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx} (58%) rename src/{legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/objects_table.js => plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx} (73%) create mode 100644 src/plugins/saved_objects_management/public/management_section/types.ts create mode 100644 src/plugins/saved_objects_management/public/register_services.ts create mode 100644 src/plugins/saved_objects_management/public/services/action_service.mock.ts rename src/plugins/saved_objects_management/public/services/{action_registry.test.ts => action_service.test.ts} (69%) rename src/plugins/saved_objects_management/public/services/{action_registry.ts => action_service.ts} (56%) rename src/plugins/saved_objects_management/public/services/{action_registry.mock.ts => service_registry.mock.ts} (79%) create mode 100644 src/plugins/saved_objects_management/public/services/service_registry.ts rename src/plugins/saved_objects_management/public/services/{action_types.ts => types.ts} (100%) create mode 100644 src/plugins/saved_objects_management/public/types.ts rename src/{legacy/core_plugins/kibana/public/management/sections/objects/index.js => plugins/saved_objects_management/server/routes/get_allowed_types.ts} (61%) diff --git a/src/core/public/mocks.ts b/src/core/public/mocks.ts index 0c4930592b233e..959ffaa7e7e088 100644 --- a/src/core/public/mocks.ts +++ b/src/core/public/mocks.ts @@ -48,6 +48,7 @@ export { overlayServiceMock } from './overlays/overlay_service.mock'; export { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; export { savedObjectsServiceMock } from './saved_objects/saved_objects_service.mock'; export { scopedHistoryMock } from './application/scoped_history.mock'; +export { applicationServiceMock } from './application/application_service.mock'; function createCoreSetupMock({ basePath = '', @@ -62,9 +63,8 @@ function createCoreSetupMock({ application: applicationServiceMock.createSetupContract(), context: contextServiceMock.createSetupContract(), fatalErrors: fatalErrorsServiceMock.createSetupContract(), - getStartServices: jest.fn, object, any]>, []>( - () => - Promise.resolve([createCoreStartMock({ basePath }), pluginStartDeps, pluginStartContract]) + getStartServices: jest.fn, any, any]>, []>(() => + Promise.resolve([createCoreStartMock({ basePath }), pluginStartDeps, pluginStartContract]) ), http: httpServiceMock.createSetupContract({ basePath }), notifications: notificationServiceMock.createSetupContract(), diff --git a/src/core/server/saved_objects/service/index.ts b/src/core/server/saved_objects/service/index.ts index f44824238aa21b..9f625b4732e264 100644 --- a/src/core/server/saved_objects/service/index.ts +++ b/src/core/server/saved_objects/service/index.ts @@ -36,7 +36,6 @@ export interface SavedObjectsLegacyService { getScopedSavedObjectsClient: SavedObjectsClientProvider['getClient']; SavedObjectsClient: typeof SavedObjectsClient; types: string[]; - importAndExportableTypes: string[]; schema: SavedObjectsSchema; getSavedObjectsRepository(...rest: any[]): any; importExport: { diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index a35bca7375286d..37051da4b17da4 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -2084,8 +2084,6 @@ export interface SavedObjectsLegacyService { // (undocumented) getScopedSavedObjectsClient: SavedObjectsClientProvider['getClient']; // (undocumented) - importAndExportableTypes: string[]; - // (undocumented) importExport: { objectLimit: number; importSavedObjects(options: SavedObjectsImportOptions): Promise; diff --git a/src/legacy/core_plugins/kibana/inject_vars.js b/src/legacy/core_plugins/kibana/inject_vars.js index 76d1704907ab5b..c3b906ee842e33 100644 --- a/src/legacy/core_plugins/kibana/inject_vars.js +++ b/src/legacy/core_plugins/kibana/inject_vars.js @@ -20,10 +20,7 @@ export function injectVars(server) { const serverConfig = server.config(); - const { importAndExportableTypes } = server.savedObjects; - return { - importAndExportableTypes, autocompleteTerminateAfter: serverConfig.get('kibana.autocompleteTerminateAfter'), autocompleteTimeout: serverConfig.get('kibana.autocompleteTimeout'), }; diff --git a/src/legacy/core_plugins/kibana/public/index.ts b/src/legacy/core_plugins/kibana/public/index.ts index a4fffc6eec26da..be22652ab2c1c7 100644 --- a/src/legacy/core_plugins/kibana/public/index.ts +++ b/src/legacy/core_plugins/kibana/public/index.ts @@ -20,4 +20,4 @@ export { ProcessedImportResponse, processImportResponse, -} from './management/sections/objects/lib/process_import_response'; +} from '../../../../plugins/saved_objects_management/public/lib'; diff --git a/src/legacy/core_plugins/kibana/public/management/saved_object_registry.ts b/src/legacy/core_plugins/kibana/public/management/saved_object_registry.ts index 705be68a141e70..587a372f915551 100644 --- a/src/legacy/core_plugins/kibana/public/management/saved_object_registry.ts +++ b/src/legacy/core_plugins/kibana/public/management/saved_object_registry.ts @@ -17,66 +17,8 @@ * under the License. */ -import _ from 'lodash'; -import { i18n } from '@kbn/i18n'; -import { npStart } from 'ui/new_platform'; -import { SavedObjectLoader } from '../../../../../plugins/saved_objects/public'; -import { createSavedSearchesLoader } from '../../../../../plugins/discover/public'; +import { npSetup } from 'ui/new_platform'; -/** - * This registry is used for the editing mode of Saved Searches, Visualizations, - * Dashboard and Time Lion saved objects. - */ -interface SavedObjectRegistryEntry { - id: string; - service: SavedObjectLoader; - title: string; -} - -export interface ISavedObjectsManagementRegistry { - register(service: SavedObjectRegistryEntry): void; - all(): SavedObjectRegistryEntry[]; - get(id: string): SavedObjectRegistryEntry | undefined; -} - -const registry: SavedObjectRegistryEntry[] = []; - -export const savedObjectManagementRegistry: ISavedObjectsManagementRegistry = { - register: (service: SavedObjectRegistryEntry) => { - registry.push(service); - }, - all: () => { - return registry; - }, - get: (id: string) => { - return _.find(registry, { id }); - }, -}; - -const services = { - savedObjectsClient: npStart.core.savedObjects.client, - indexPatterns: npStart.plugins.data.indexPatterns, - search: npStart.plugins.data.search, - chrome: npStart.core.chrome, - overlays: npStart.core.overlays, -}; - -savedObjectManagementRegistry.register({ - id: 'savedVisualizations', - service: npStart.plugins.visualizations.savedVisualizationsLoader, - title: 'visualizations', -}); - -savedObjectManagementRegistry.register({ - id: 'savedDashboards', - service: npStart.plugins.dashboard.getSavedDashboardLoader(), - title: i18n.translate('kbn.dashboard.savedDashboardsTitle', { - defaultMessage: 'dashboards', - }), -}); +const registry = npSetup.plugins.savedObjectsManagement?.serviceRegistry; -savedObjectManagementRegistry.register({ - id: 'savedSearches', - service: createSavedSearchesLoader(services), - title: 'searches', -}); +export const savedObjectManagementRegistry = registry!; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index.js index 54717ad003adef..adc1741f57263a 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index.js @@ -17,5 +17,4 @@ * under the License. */ -import './objects'; import './index_patterns'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.html b/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.html deleted file mode 100644 index 090fb7b636685e..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.html +++ /dev/null @@ -1,5 +0,0 @@ - - -
-
-
diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js deleted file mode 100644 index c5901ca6ee6bf4..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_objects.js +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { savedObjectManagementRegistry } from '../../saved_object_registry'; -import objectIndexHTML from './_objects.html'; -import uiRoutes from 'ui/routes'; -import chrome from 'ui/chrome'; -import { uiModules } from 'ui/modules'; -import React from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import { ObjectsTable } from './components/objects_table'; -import { I18nContext } from 'ui/i18n'; -import { get } from 'lodash'; -import { npStart } from 'ui/new_platform'; -import { getIndexBreadcrumbs } from './breadcrumbs'; - -const REACT_OBJECTS_TABLE_DOM_ELEMENT_ID = 'reactSavedObjectsTable'; - -function updateObjectsTable($scope, $injector) { - const indexPatterns = npStart.plugins.data.indexPatterns; - const $http = $injector.get('$http'); - const kbnUrl = $injector.get('kbnUrl'); - const config = $injector.get('config'); - - const savedObjectsClient = npStart.core.savedObjects.client; - const services = savedObjectManagementRegistry.all().map(obj => obj.service); - const uiCapabilites = npStart.core.application.capabilities; - - $scope.$$postDigest(() => { - const node = document.getElementById(REACT_OBJECTS_TABLE_DOM_ELEMENT_ID); - if (!node) { - return; - } - - render( - - { - if (object.meta.editUrl) { - kbnUrl.change(object.meta.editUrl); - $scope.$apply(); - } - }} - canGoInApp={object => { - const { inAppUrl } = object.meta; - return inAppUrl && get(uiCapabilites, inAppUrl.uiCapabilitiesPath); - }} - /> - , - node - ); - }); -} - -function destroyObjectsTable() { - const node = document.getElementById(REACT_OBJECTS_TABLE_DOM_ELEMENT_ID); - node && unmountComponentAtNode(node); -} - -uiRoutes - .when('/management/kibana/objects', { - template: objectIndexHTML, - k7Breadcrumbs: getIndexBreadcrumbs, - requireUICapability: 'management.kibana.objects', - }) - .when('/management/kibana/objects/:service', { - redirectTo: '/management/kibana/objects', - }); - -uiModules.get('apps/management').directive('kbnManagementObjects', function() { - return { - restrict: 'E', - controllerAs: 'managementObjectsController', - controller: function($scope, $injector) { - updateObjectsTable($scope, $injector); - $scope.$on('$destroy', destroyObjectsTable); - }, - }; -}); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.html b/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.html deleted file mode 100644 index 8bce0aabcd64a9..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.html +++ /dev/null @@ -1,5 +0,0 @@ - - -
-
-
diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js deleted file mode 100644 index a847055b40015a..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/_view.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import 'angular'; -import 'angular-elastic/elastic'; -import uiRoutes from 'ui/routes'; -import { uiModules } from 'ui/modules'; -import { I18nContext } from 'ui/i18n'; -import { npStart } from 'ui/new_platform'; -import objectViewHTML from './_view.html'; -import { getViewBreadcrumbs } from './breadcrumbs'; -import { savedObjectManagementRegistry } from '../../saved_object_registry'; -import { SavedObjectEdition } from './saved_object_view'; - -const REACT_OBJECTS_VIEW_DOM_ELEMENT_ID = 'reactSavedObjectsView'; - -uiRoutes.when('/management/kibana/objects/:service/:id', { - template: objectViewHTML, - k7Breadcrumbs: getViewBreadcrumbs, - requireUICapability: 'management.kibana.objects', -}); - -function createReactView($scope, $routeParams) { - const { service: serviceName, id: objectId, notFound } = $routeParams; - - const { savedObjects, overlays, notifications, application } = npStart.core; - - $scope.$$postDigest(() => { - const node = document.getElementById(REACT_OBJECTS_VIEW_DOM_ELEMENT_ID); - if (!node) { - return; - } - - render( - - - , - node - ); - }); -} - -function destroyReactView() { - const node = document.getElementById(REACT_OBJECTS_VIEW_DOM_ELEMENT_ID); - node && unmountComponentAtNode(node); -} - -uiModules - .get('apps/management', ['monospaced.elastic']) - .directive('kbnManagementObjectsView', function() { - return { - restrict: 'E', - controller: function($scope, $routeParams) { - createReactView($scope, $routeParams); - $scope.$on('$destroy', destroyReactView); - }, - }; - }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/breadcrumbs.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/breadcrumbs.js deleted file mode 100644 index e9082bfeb680d0..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/breadcrumbs.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { MANAGEMENT_BREADCRUMB } from 'ui/management'; -import { i18n } from '@kbn/i18n'; - -import { savedObjectManagementRegistry } from '../../saved_object_registry'; - -export function getIndexBreadcrumbs() { - return [ - MANAGEMENT_BREADCRUMB, - { - text: i18n.translate('kbn.management.savedObjects.indexBreadcrumb', { - defaultMessage: 'Saved objects', - }), - href: '#/management/kibana/objects', - }, - ]; -} - -export function getViewBreadcrumbs($routeParams) { - const serviceObj = savedObjectManagementRegistry.get($routeParams.service); - const { service } = serviceObj; - - return [ - ...getIndexBreadcrumbs(), - { - text: i18n.translate('kbn.management.savedObjects.editBreadcrumb', { - defaultMessage: 'Edit {savedObjectType}', - values: { savedObjectType: service.type }, - }), - }, - ]; -} diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/index.js b/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/index.js deleted file mode 100644 index 601dea544361c8..00000000000000 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/index.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { ObjectsTable } from './objects_table'; diff --git a/src/legacy/server/saved_objects/saved_objects_mixin.js b/src/legacy/server/saved_objects/saved_objects_mixin.js index bcf766231dc9c7..3e71e1989ae7a3 100644 --- a/src/legacy/server/saved_objects/saved_objects_mixin.js +++ b/src/legacy/server/saved_objects/saved_objects_mixin.js @@ -78,13 +78,8 @@ export function savedObjectsMixin(kbnServer, server) { const provider = kbnServer.newPlatform.__internals.savedObjectsClientProvider; - const importAndExportableTypes = typeRegistry - .getImportableAndExportableTypes() - .map(type => type.name); - const service = { types: visibleTypes, - importAndExportableTypes, SavedObjectsClient, SavedObjectsRepository, getSavedObjectsRepository: createRepository, diff --git a/src/plugins/data/public/mocks.ts b/src/plugins/data/public/mocks.ts index ea1c27550867ee..2d43cae79ac989 100644 --- a/src/plugins/data/public/mocks.ts +++ b/src/plugins/data/public/mocks.ts @@ -62,6 +62,7 @@ const createStartContract = (): Start => { }, }), get: jest.fn().mockReturnValue(Promise.resolve({})), + clearCache: jest.fn(), } as unknown) as IndexPatternsContract, }; }; diff --git a/src/plugins/discover/public/mocks.ts b/src/plugins/discover/public/mocks.ts index bb05e3d4120013..218c59b5db07b6 100644 --- a/src/plugins/discover/public/mocks.ts +++ b/src/plugins/discover/public/mocks.ts @@ -37,6 +37,9 @@ const createStartContract = (): Start => { docViews: { DocViewer: jest.fn(() => null), }, + savedSearches: { + createLoader: jest.fn(), + }, }; return startContract; }; diff --git a/src/plugins/discover/public/plugin.ts b/src/plugins/discover/public/plugin.ts index d2797586bfdfbd..aa54823e6ec4df 100644 --- a/src/plugins/discover/public/plugin.ts +++ b/src/plugins/discover/public/plugin.ts @@ -21,12 +21,14 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { auto } from 'angular'; import { CoreSetup, Plugin } from 'kibana/public'; +import { SavedObjectLoader, SavedObjectKibanaServices } from '../../saved_objects/public'; import { DocViewInput, DocViewInputFn, DocViewRenderProps } from './doc_views/doc_views_types'; import { DocViewsRegistry } from './doc_views/doc_views_registry'; import { DocViewTable } from './components/table/table'; import { JsonCodeBlock } from './components/json_code_block/json_code_block'; import { DocViewer } from './components/doc_viewer/doc_viewer'; import { setDocViewsRegistry } from './services'; +import { createSavedSearchesLoader } from './saved_searches'; import './index.scss'; @@ -62,6 +64,13 @@ export interface DiscoverStart { */ DocViewer: React.ComponentType; }; + savedSearches: { + /** + * Create a {@link SavedObjectLoader | loader} to handle the saved searches type. + * @param services + */ + createLoader(services: SavedObjectKibanaServices): SavedObjectLoader; + }; } /** @@ -105,6 +114,9 @@ export class DiscoverPlugin implements Plugin { docViews: { DocViewer, }, + savedSearches: { + createLoader: createSavedSearchesLoader, + }, }; } } diff --git a/src/plugins/management/public/mocks/index.ts b/src/plugins/management/public/mocks/index.ts index 6099a2cc32afc1..82789d3c3f55f1 100644 --- a/src/plugins/management/public/mocks/index.ts +++ b/src/plugins/management/public/mocks/index.ts @@ -18,12 +18,21 @@ */ import { ManagementSetup, ManagementStart } from '../types'; +import { ManagementSection } from '../management_section'; + +const createManagementSectionMock = (): jest.Mocked> => { + return { + registerApp: jest.fn(), + getApp: jest.fn(), + getAppsEnabled: jest.fn().mockReturnValue([]), + }; +}; const createSetupContract = (): DeeplyMockedKeys => ({ sections: { register: jest.fn(), - getSection: jest.fn(), - getAllSections: jest.fn(), + getSection: jest.fn().mockReturnValue(createManagementSectionMock()), + getAllSections: jest.fn().mockReturnValue([]), }, }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/index.js b/src/plugins/saved_objects_management/common/index.ts similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/index.js rename to src/plugins/saved_objects_management/common/index.ts index ac1e7bac06c874..67c3ae6d934ab5 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/index.js +++ b/src/plugins/saved_objects_management/common/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { Header } from './header'; +export { SavedObjectRelation, SavedObjectWithMetadata, SavedObjectMetadata } from './types'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/types.ts b/src/plugins/saved_objects_management/common/types.ts similarity index 74% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/types.ts rename to src/plugins/saved_objects_management/common/types.ts index 6a89142bc97983..be52d8e6486e26 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/types.ts +++ b/src/plugins/saved_objects_management/common/types.ts @@ -17,8 +17,12 @@ * under the License. */ -import { SavedObject, SavedObjectReference } from 'src/core/public'; +import { SavedObject } from 'src/core/types'; +/** + * The metadata injected into a {@link SavedObject | saved object} when returning + * {@link SavedObjectWithMetadata | enhanced objects} from the plugin API endpoints. + */ export interface SavedObjectMetadata { icon?: string; title?: string; @@ -26,31 +30,19 @@ export interface SavedObjectMetadata { inAppUrl?: { path: string; uiCapabilitiesPath: string }; } +/** + * A {@link SavedObject | saved object} enhanced with meta properties used by the client-side plugin. + */ export type SavedObjectWithMetadata = SavedObject & { meta: SavedObjectMetadata; }; +/** + * Represents a relation between two {@link SavedObject | saved object} + */ export interface SavedObjectRelation { id: string; type: string; relationship: 'child' | 'parent'; meta: SavedObjectMetadata; } - -export interface ObjectField { - type: FieldType; - name: string; - value: any; -} - -export type FieldType = 'text' | 'number' | 'boolean' | 'array' | 'json'; - -export interface FieldState { - value?: any; - invalid?: boolean; -} - -export interface SubmittedFormData { - attributes: any; - references: SavedObjectReference[]; -} diff --git a/src/plugins/saved_objects_management/kibana.json b/src/plugins/saved_objects_management/kibana.json index e1f14b0e3c59d8..22135ce4558ae4 100644 --- a/src/plugins/saved_objects_management/kibana.json +++ b/src/plugins/saved_objects_management/kibana.json @@ -3,5 +3,6 @@ "version": "kibana", "server": true, "ui": true, - "requiredPlugins": ["home"] + "requiredPlugins": ["home", "management", "data"], + "optionalPlugins": ["dashboard", "visualizations", "discover"] } diff --git a/src/plugins/saved_objects_management/public/index.ts b/src/plugins/saved_objects_management/public/index.ts index 7fb2f137d7d842..b20b320bc6645f 100644 --- a/src/plugins/saved_objects_management/public/index.ts +++ b/src/plugins/saved_objects_management/public/index.ts @@ -22,10 +22,14 @@ import { SavedObjectsManagementPlugin } from './plugin'; export { SavedObjectsManagementPluginSetup, SavedObjectsManagementPluginStart } from './plugin'; export { - ISavedObjectsManagementActionRegistry, + SavedObjectsManagementActionServiceSetup, + SavedObjectsManagementActionServiceStart, SavedObjectsManagementAction, SavedObjectsManagementRecord, + ISavedObjectsManagementServiceRegistry, + SavedObjectsManagementServiceRegistryEntry, } from './services'; +export { SavedObjectRelation, SavedObjectWithMetadata, SavedObjectMetadata } from './types'; export function plugin(initializerContext: PluginInitializerContext) { return new SavedObjectsManagementPlugin(); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/case_conversion.test.ts b/src/plugins/saved_objects_management/public/lib/case_conversion.test.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/case_conversion.test.ts rename to src/plugins/saved_objects_management/public/lib/case_conversion.test.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/case_conversion.ts b/src/plugins/saved_objects_management/public/lib/case_conversion.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/case_conversion.ts rename to src/plugins/saved_objects_management/public/lib/case_conversion.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.test.ts b/src/plugins/saved_objects_management/public/lib/create_field_list.test.ts similarity index 96% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.test.ts rename to src/plugins/saved_objects_management/public/lib/create_field_list.test.ts index 345716f91ea886..e7d6754ac4d05a 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.test.ts +++ b/src/plugins/saved_objects_management/public/lib/create_field_list.test.ts @@ -17,8 +17,8 @@ * under the License. */ -import { SimpleSavedObject, SavedObjectReference } from '../../../../../../../../core/public'; -import { savedObjectsServiceMock } from '../../../../../../../../core/public/mocks'; +import { SimpleSavedObject, SavedObjectReference } from '../../../../core/public'; +import { savedObjectsServiceMock } from '../../../../core/public/mocks'; import { createFieldList } from './create_field_list'; const savedObjectClientMock = savedObjectsServiceMock.createStartContract().client; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.ts b/src/plugins/saved_objects_management/public/lib/create_field_list.ts similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.ts rename to src/plugins/saved_objects_management/public/lib/create_field_list.ts index 88a1184d5d70f9..5d87c11a871982 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/create_field_list.ts +++ b/src/plugins/saved_objects_management/public/lib/create_field_list.ts @@ -18,10 +18,10 @@ */ import { forOwn, indexBy, isNumber, isBoolean, isPlainObject, isString } from 'lodash'; -import { SimpleSavedObject } from '../../../../../../../../core/public'; -import { castEsToKbnFieldTypeName } from '../../../../../../../../plugins/data/public'; -import { ObjectField } from '../types'; -import { SavedObjectLoader } from '../../../../../../../../plugins/saved_objects/public'; +import { SimpleSavedObject } from '../../../../core/public'; +import { castEsToKbnFieldTypeName } from '../../../data/public'; +import { ObjectField } from '../management_section/types'; +import { SavedObjectLoader } from '../../../saved_objects/public'; const maxRecursiveIterations = 20; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/extract_export_details.test.ts b/src/plugins/saved_objects_management/public/lib/extract_export_details.test.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/extract_export_details.test.ts rename to src/plugins/saved_objects_management/public/lib/extract_export_details.test.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/extract_export_details.ts b/src/plugins/saved_objects_management/public/lib/extract_export_details.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/extract_export_details.ts rename to src/plugins/saved_objects_management/public/lib/extract_export_details.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_by_type_and_search.ts b/src/plugins/saved_objects_management/public/lib/fetch_export_by_type_and_search.ts similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_by_type_and_search.ts rename to src/plugins/saved_objects_management/public/lib/fetch_export_by_type_and_search.ts index d3e527b9f96b72..e0f005fab2a3bc 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_by_type_and_search.ts +++ b/src/plugins/saved_objects_management/public/lib/fetch_export_by_type_and_search.ts @@ -17,16 +17,15 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; +import { HttpStart } from 'src/core/public'; export async function fetchExportByTypeAndSearch( + http: HttpStart, types: string[], search: string | undefined, includeReferencesDeep: boolean = false ): Promise { - return await kfetch({ - method: 'POST', - pathname: '/api/saved_objects/_export', + return http.post('/api/saved_objects/_export', { body: JSON.stringify({ type: types, search, diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_objects.ts b/src/plugins/saved_objects_management/public/lib/fetch_export_objects.ts similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_objects.ts rename to src/plugins/saved_objects_management/public/lib/fetch_export_objects.ts index 744f8ef38af47a..745d3758371a3b 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/fetch_export_objects.ts +++ b/src/plugins/saved_objects_management/public/lib/fetch_export_objects.ts @@ -17,15 +17,14 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; +import { HttpStart } from 'src/core/public'; export async function fetchExportObjects( + http: HttpStart, objects: any[], includeReferencesDeep: boolean = false ): Promise { - return await kfetch({ - method: 'POST', - pathname: '/api/saved_objects/_export', + return http.post('/api/saved_objects/_export', { body: JSON.stringify({ objects, includeReferencesDeep, diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/find_objects.ts b/src/plugins/saved_objects_management/public/lib/find_objects.ts similarity index 57% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/find_objects.ts rename to src/plugins/saved_objects_management/public/lib/find_objects.ts index 24e08f0524f629..5a77d3ae2f663b 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/find_objects.ts +++ b/src/plugins/saved_objects_management/public/lib/find_objects.ts @@ -17,16 +17,27 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; -import { SavedObjectsFindOptions } from 'src/core/public'; +import { HttpStart, SavedObjectsFindOptions } from 'src/core/public'; import { keysToCamelCaseShallow } from './case_conversion'; +import { SavedObjectWithMetadata } from '../types'; -export async function findObjects(findOptions: SavedObjectsFindOptions) { - const response = await kfetch({ - method: 'GET', - pathname: '/api/kibana/management/saved_objects/_find', - query: findOptions as Record, - }); +interface SavedObjectsFindResponse { + total: number; + page: number; + perPage: number; + savedObjects: SavedObjectWithMetadata[]; +} + +export async function findObjects( + http: HttpStart, + findOptions: SavedObjectsFindOptions +): Promise { + const response = await http.get>( + '/api/kibana/management/saved_objects/_find', + { + query: findOptions as Record, + } + ); - return keysToCamelCaseShallow(response); + return keysToCamelCaseShallow(response) as SavedObjectsFindResponse; } diff --git a/src/plugins/saved_objects_management/public/lib/get_allowed_types.ts b/src/plugins/saved_objects_management/public/lib/get_allowed_types.ts new file mode 100644 index 00000000000000..7d952ebf2ca141 --- /dev/null +++ b/src/plugins/saved_objects_management/public/lib/get_allowed_types.ts @@ -0,0 +1,31 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { HttpStart } from 'src/core/public'; + +interface GetAllowedTypesResponse { + types: string[]; +} + +export async function getAllowedTypes(http: HttpStart) { + const response = await http.get( + '/api/kibana/management/saved_objects/_allowed_types' + ); + return response.types; +} diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_default_title.ts b/src/plugins/saved_objects_management/public/lib/get_default_title.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_default_title.ts rename to src/plugins/saved_objects_management/public/lib/get_default_title.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.test.ts b/src/plugins/saved_objects_management/public/lib/get_relationships.test.ts similarity index 67% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.test.ts rename to src/plugins/saved_objects_management/public/lib/get_relationships.test.ts index b45b51b4de2937..d79447378dde55 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.test.ts +++ b/src/plugins/saved_objects_management/public/lib/get_relationships.test.ts @@ -17,44 +17,43 @@ * under the License. */ +import { httpServiceMock } from '../../../../core/public/mocks'; import { getRelationships } from './get_relationships'; describe('getRelationships', () => { - it('should make an http request', async () => { - const $http = jest.fn() as any; - const basePath = 'test'; + let httpMock: ReturnType; - await getRelationships('dashboard', '1', ['search', 'index-pattern'], $http, basePath); - expect($http.mock.calls.length).toBe(1); + beforeEach(() => { + httpMock = httpServiceMock.createSetupContract(); + }); + + it('should make an http request', async () => { + await getRelationships(httpMock, 'dashboard', '1', ['search', 'index-pattern']); + expect(httpMock.get).toHaveBeenCalledTimes(1); }); it('should handle successful responses', async () => { - const $http = jest.fn().mockImplementation(() => ({ data: [1, 2] })) as any; - const basePath = 'test'; - - const response = await getRelationships( - 'dashboard', - '1', - ['search', 'index-pattern'], - $http, - basePath - ); + httpMock.get.mockResolvedValue([1, 2]); + + const response = await getRelationships(httpMock, 'dashboard', '1', [ + 'search', + 'index-pattern', + ]); expect(response).toEqual([1, 2]); }); it('should handle errors', async () => { - const $http = jest.fn().mockImplementation(() => { + httpMock.get.mockImplementation(() => { const err = new Error(); (err as any).data = { error: 'Test error', statusCode: 500, }; throw err; - }) as any; - const basePath = 'test'; + }); await expect( - getRelationships('dashboard', '1', ['search', 'index-pattern'], $http, basePath) + getRelationships(httpMock, 'dashboard', '1', ['search', 'index-pattern']) ).rejects.toThrowErrorMatchingInlineSnapshot(`"Test error"`); }); }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.ts b/src/plugins/saved_objects_management/public/lib/get_relationships.ts similarity index 67% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.ts rename to src/plugins/saved_objects_management/public/lib/get_relationships.ts index 07bdf2db68fa2f..bf2e651aa6593c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_relationships.ts +++ b/src/plugins/saved_objects_management/public/lib/get_relationships.ts @@ -17,36 +17,30 @@ * under the License. */ -import { IHttpService } from 'angular'; +import { HttpStart } from 'src/core/public'; import { get } from 'lodash'; import { SavedObjectRelation } from '../types'; export async function getRelationships( + http: HttpStart, type: string, id: string, - savedObjectTypes: string[], - $http: IHttpService, - basePath: string + savedObjectTypes: string[] ): Promise { - const url = `${basePath}/api/kibana/management/saved_objects/relationships/${encodeURIComponent( + const url = `/api/kibana/management/saved_objects/relationships/${encodeURIComponent( type )}/${encodeURIComponent(id)}`; - const options = { - method: 'GET', - url, - params: { - savedObjectTypes, - }, - }; - try { - const response = await $http(options); - return response?.data; - } catch (resp) { - const respBody = get(resp, 'data', {}) as any; - const err = new Error(respBody.message || respBody.error || `${resp.status} Response`); + return await http.get(url, { + query: { + savedObjectTypes, + }, + }); + } catch (respError) { + const respBody = get(respError, 'data', {}) as any; + const err = new Error(respBody.message || respBody.error || `${respError.status} Response`); - (err as any).statusCode = respBody.statusCode || resp.status; + (err as any).statusCode = respBody.statusCode || respError.status; (err as any).body = respBody; throw err; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_saved_object_counts.ts b/src/plugins/saved_objects_management/public/lib/get_saved_object_counts.ts similarity index 72% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_saved_object_counts.ts rename to src/plugins/saved_objects_management/public/lib/get_saved_object_counts.ts index d4dda1190bc437..dcf59142e73e31 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_saved_object_counts.ts +++ b/src/plugins/saved_objects_management/public/lib/get_saved_object_counts.ts @@ -17,18 +17,15 @@ * under the License. */ -import { IHttpService } from 'angular'; -import chrome from 'ui/chrome'; +import { HttpStart } from 'src/core/public'; -const apiBase = chrome.addBasePath('/api/kibana/management/saved_objects/scroll'); export async function getSavedObjectCounts( - $http: IHttpService, + http: HttpStart, typesToInclude: string[], - searchString: string + searchString?: string ): Promise> { - const results = await $http.post>(`${apiBase}/counts`, { - typesToInclude, - searchString, - }); - return results.data; + return await http.post>( + `/api/kibana/management/saved_objects/scroll/counts`, + { body: JSON.stringify({ typesToInclude, searchString }) } + ); } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_saved_object_label.ts b/src/plugins/saved_objects_management/public/lib/get_saved_object_label.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/get_saved_object_label.ts rename to src/plugins/saved_objects_management/public/lib/get_saved_object_label.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_file.ts b/src/plugins/saved_objects_management/public/lib/import_file.ts similarity index 75% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_file.ts rename to src/plugins/saved_objects_management/public/lib/import_file.ts index 9bd5fbeed3a4c8..96263452253ba2 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_file.ts +++ b/src/plugins/saved_objects_management/public/lib/import_file.ts @@ -17,14 +17,18 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; +import { HttpStart, SavedObjectsImportError } from 'src/core/public'; -export async function importFile(file: Blob, overwriteAll: boolean = false) { +interface ImportResponse { + success: boolean; + successCount: number; + errors?: SavedObjectsImportError[]; +} + +export async function importFile(http: HttpStart, file: File, overwriteAll: boolean = false) { const formData = new FormData(); formData.append('file', file); - return await kfetch({ - method: 'POST', - pathname: '/api/saved_objects/_import', + return await http.post('/api/saved_objects/_import', { body: formData, headers: { // Important to be undefined, it forces proper headers to be set for FormData diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_legacy_file.test.ts b/src/plugins/saved_objects_management/public/lib/import_legacy_file.test.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_legacy_file.test.ts rename to src/plugins/saved_objects_management/public/lib/import_legacy_file.test.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_legacy_file.ts b/src/plugins/saved_objects_management/public/lib/import_legacy_file.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/import_legacy_file.ts rename to src/plugins/saved_objects_management/public/lib/import_legacy_file.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/in_app_url.test.ts b/src/plugins/saved_objects_management/public/lib/in_app_url.test.ts similarity index 98% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/in_app_url.test.ts rename to src/plugins/saved_objects_management/public/lib/in_app_url.test.ts index c0d6716391a1f4..09e08e6ec333b0 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/in_app_url.test.ts +++ b/src/plugins/saved_objects_management/public/lib/in_app_url.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { Capabilities } from '../../../../../../../../core/public'; +import { Capabilities } from '../../../../core/public'; import { canViewInApp } from './in_app_url'; const createCapabilities = (sections: Record): Capabilities => { diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/in_app_url.ts b/src/plugins/saved_objects_management/public/lib/in_app_url.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/in_app_url.ts rename to src/plugins/saved_objects_management/public/lib/in_app_url.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/index.ts b/src/plugins/saved_objects_management/public/lib/index.ts similarity index 94% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/index.ts rename to src/plugins/saved_objects_management/public/lib/index.ts index ecdfa6549a54ea..7021744095651b 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/index.ts +++ b/src/plugins/saved_objects_management/public/lib/index.ts @@ -43,3 +43,5 @@ export { export { getDefaultTitle } from './get_default_title'; export { findObjects } from './find_objects'; export { extractExportDetails, SavedObjectsExportResultDetails } from './extract_export_details'; +export { createFieldList } from './create_field_list'; +export { getAllowedTypes } from './get_allowed_types'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/log_legacy_import.ts b/src/plugins/saved_objects_management/public/lib/log_legacy_import.ts similarity index 81% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/log_legacy_import.ts rename to src/plugins/saved_objects_management/public/lib/log_legacy_import.ts index 9bbafe3e69c988..9ec3c85b91c22c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/log_legacy_import.ts +++ b/src/plugins/saved_objects_management/public/lib/log_legacy_import.ts @@ -17,11 +17,8 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; +import { HttpStart } from 'src/core/public'; -export async function logLegacyImport() { - return await kfetch({ - method: 'POST', - pathname: '/api/saved_objects/_log_legacy_import', - }); +export async function logLegacyImport(http: HttpStart) { + return http.post('/api/saved_objects/_log_legacy_import'); } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/numeric.ts b/src/plugins/saved_objects_management/public/lib/numeric.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/numeric.ts rename to src/plugins/saved_objects_management/public/lib/numeric.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.test.ts b/src/plugins/saved_objects_management/public/lib/parse_query.test.ts similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.test.ts rename to src/plugins/saved_objects_management/public/lib/parse_query.test.ts index 77b34eccd9c6ff..f62234eaf4e94c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.test.ts +++ b/src/plugins/saved_objects_management/public/lib/parse_query.test.ts @@ -25,6 +25,6 @@ describe('getQueryText', () => { getTermClauses: () => [{ value: 'foo' }, { value: 'bar' }], getFieldClauses: () => [{ value: 'lala' }, { value: 'lolo' }], }; - expect(parseQuery({ ast })).toEqual({ queryText: 'foo bar', visibleTypes: 'lala' }); + expect(parseQuery({ ast } as any)).toEqual({ queryText: 'foo bar', visibleTypes: 'lala' }); }); }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.ts b/src/plugins/saved_objects_management/public/lib/parse_query.ts similarity index 77% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.ts rename to src/plugins/saved_objects_management/public/lib/parse_query.ts index 9b33deedafd956..f5b7b69ea049cf 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/parse_query.ts +++ b/src/plugins/saved_objects_management/public/lib/parse_query.ts @@ -17,9 +17,16 @@ * under the License. */ -export function parseQuery(query: any) { - let queryText; - let visibleTypes; +import { Query } from '@elastic/eui'; + +interface ParsedQuery { + queryText?: string; + visibleTypes?: string[]; +} + +export function parseQuery(query: Query): ParsedQuery { + let queryText: string | undefined; + let visibleTypes: string[] | undefined; if (query) { if (query.ast.getTermClauses().length) { @@ -29,7 +36,7 @@ export function parseQuery(query: any) { .join(' '); } if (query.ast.getFieldClauses('type')) { - visibleTypes = query.ast.getFieldClauses('type')[0].value; + visibleTypes = query.ast.getFieldClauses('type')[0].value as string[]; } } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/process_import_response.test.ts b/src/plugins/saved_objects_management/public/lib/process_import_response.test.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/process_import_response.test.ts rename to src/plugins/saved_objects_management/public/lib/process_import_response.test.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/process_import_response.ts b/src/plugins/saved_objects_management/public/lib/process_import_response.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/process_import_response.ts rename to src/plugins/saved_objects_management/public/lib/process_import_response.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.test.ts b/src/plugins/saved_objects_management/public/lib/resolve_import_errors.test.ts similarity index 90% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.test.ts rename to src/plugins/saved_objects_management/public/lib/resolve_import_errors.test.ts index b94b0a9d1291f8..86eebad7ae787b 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.test.ts +++ b/src/plugins/saved_objects_management/public/lib/resolve_import_errors.test.ts @@ -17,14 +17,10 @@ * under the License. */ -jest.mock('ui/kfetch', () => ({ kfetch: jest.fn() })); - import { SavedObjectsImportUnknownError } from 'src/core/public'; -import { kfetch } from 'ui/kfetch'; +import { httpServiceMock } from '../../../../core/public/mocks'; import { resolveImportErrors } from './resolve_import_errors'; -const kfetchMock = kfetch as jest.Mock; - function getFormData(form: Map) { const formData: Record = {}; for (const [key, val] of form.entries()) { @@ -39,13 +35,20 @@ function getFormData(form: Map) { describe('resolveImportErrors', () => { const getConflictResolutions = jest.fn(); + let httpMock: ReturnType; beforeEach(() => { + httpMock = httpServiceMock.createSetupContract(); jest.resetAllMocks(); }); + const extractBodyFromCall = (index: number): Map => { + return (httpMock.post.mock.calls[index] as any)[1].body; + }; + test('works with empty import failures', async () => { const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -62,6 +65,7 @@ Object { test(`doesn't retry if only unknown failures are passed in`, async () => { const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -98,7 +102,7 @@ Object { }); test('resolves conflicts', async () => { - kfetchMock.mockResolvedValueOnce({ + httpMock.post.mockResolvedValueOnce({ success: true, successCount: 1, }); @@ -107,6 +111,7 @@ Object { 'a:2': false, }); const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -139,7 +144,8 @@ Object { "status": "success", } `); - const formData = getFormData(kfetchMock.mock.calls[0][0].body); + + const formData = getFormData(extractBodyFromCall(0)); expect(formData).toMatchInlineSnapshot(` Object { "file": "undefined", @@ -156,12 +162,13 @@ Object { }); test('resolves missing references', async () => { - kfetchMock.mockResolvedValueOnce({ + httpMock.post.mockResolvedValueOnce({ success: true, successCount: 2, }); getConflictResolutions.mockResolvedValueOnce({}); const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -203,7 +210,7 @@ Object { "status": "success", } `); - const formData = getFormData(kfetchMock.mock.calls[0][0].body); + const formData = getFormData(extractBodyFromCall(0)); expect(formData).toMatchInlineSnapshot(` Object { "file": "undefined", @@ -232,6 +239,7 @@ Object { test(`doesn't resolve missing references if newIndexPatternId isn't defined`, async () => { getConflictResolutions.mockResolvedValueOnce({}); const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -276,7 +284,7 @@ Object { }); test('handles missing references then conflicts on the same errored objects', async () => { - kfetchMock.mockResolvedValueOnce({ + httpMock.post.mockResolvedValueOnce({ success: false, successCount: 0, errors: [ @@ -289,7 +297,7 @@ Object { }, ], }); - kfetchMock.mockResolvedValueOnce({ + httpMock.post.mockResolvedValueOnce({ success: true, successCount: 1, }); @@ -298,6 +306,7 @@ Object { 'a:1': true, }); const result = await resolveImportErrors({ + http: httpMock, getConflictResolutions, state: { importCount: 0, @@ -334,7 +343,7 @@ Object { "status": "success", } `); - const formData1 = getFormData(kfetchMock.mock.calls[0][0].body); + const formData1 = getFormData(extractBodyFromCall(0)); expect(formData1).toMatchInlineSnapshot(` Object { "file": "undefined", @@ -354,7 +363,7 @@ Object { ], } `); - const formData2 = getFormData(kfetchMock.mock.calls[1][0].body); + const formData2 = getFormData(extractBodyFromCall(1)); expect(formData2).toMatchInlineSnapshot(` Object { "file": "undefined", diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.ts b/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts similarity index 95% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.ts rename to src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts index dcc282402147da..0aea7114bad1c4 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_import_errors.ts +++ b/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts @@ -17,7 +17,7 @@ * under the License. */ -import { kfetch } from 'ui/kfetch'; +import { HttpStart } from 'src/core/public'; import { FailedImport } from './process_import_response'; interface RetryObject { @@ -27,13 +27,11 @@ interface RetryObject { replaceReferences?: any[]; } -async function callResolveImportErrorsApi(file: File, retries: any) { +async function callResolveImportErrorsApi(http: HttpStart, file: File, retries: any) { const formData = new FormData(); formData.append('file', file); formData.append('retries', JSON.stringify(retries)); - return await kfetch({ - method: 'POST', - pathname: '/api/saved_objects/_resolve_import_errors', + return http.post('/api/saved_objects/_resolve_import_errors', { headers: { // Important to be undefined, it forces proper headers to be set for FormData 'Content-Type': undefined, @@ -100,9 +98,11 @@ function mapImportFailureToRetryObject({ } export async function resolveImportErrors({ + http, getConflictResolutions, state, }: { + http: HttpStart; getConflictResolutions: (objects: any[]) => Promise>; state: { importCount: number; failedImports?: FailedImport[] } & Record; }) { @@ -170,7 +170,7 @@ export async function resolveImportErrors({ } // Call API - const response = await callResolveImportErrorsApi(file, retries); + const response = await callResolveImportErrorsApi(http, file, retries); successImportCount += response.successCount; importFailures = []; for (const { error, ...obj } of response.errors || []) { diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.test.ts b/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts similarity index 98% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.test.ts rename to src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts index dc6d2643145ffc..23c2b751695559 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.test.ts +++ b/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.test.ts @@ -23,11 +23,8 @@ import { saveObjects, saveObject, } from './resolve_saved_objects'; -import { - SavedObject, - SavedObjectLoader, -} from '../../../../../../../../plugins/saved_objects/public'; -import { IndexPatternsContract } from '../../../../../../../../plugins/data/public'; +import { SavedObject, SavedObjectLoader } from '../../../saved_objects/public'; +import { IndexPatternsContract } from '../../../data/public'; class SavedObjectNotFound extends Error { constructor(options: Record) { diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.ts b/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts similarity index 94% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.ts rename to src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts index d9473367f7502e..15e03ed39d88c8 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/lib/resolve_saved_objects.ts +++ b/src/plugins/saved_objects_management/public/lib/resolve_saved_objects.ts @@ -20,15 +20,8 @@ import { i18n } from '@kbn/i18n'; import { cloneDeep } from 'lodash'; import { OverlayStart, SavedObjectReference } from 'src/core/public'; -import { - SavedObject, - SavedObjectLoader, -} from '../../../../../../../../plugins/saved_objects/public'; -import { - IndexPatternsContract, - IIndexPattern, - createSearchSource, -} from '../../../../../../../../plugins/data/public'; +import { SavedObject, SavedObjectLoader } from '../../../saved_objects/public'; +import { IndexPatternsContract, IIndexPattern, createSearchSource } from '../../../data/public'; type SavedObjectsRawDoc = Record; @@ -55,7 +48,7 @@ function addJsonFieldToIndexPattern( target[fieldName] = JSON.parse(sourceString); } catch (error) { throw new Error( - i18n.translate('kbn.management.objects.parsingFieldErrorMessage', { + i18n.translate('savedObjectsManagement.parsingFieldErrorMessage', { defaultMessage: 'Error encountered parsing {fieldName} for index pattern {indexName}: {errorMessage}', values: { @@ -103,18 +96,21 @@ async function importIndexPattern( if (!newId) { // We can override and we want to prompt for confirmation const isConfirmed = await openConfirm( - i18n.translate('kbn.management.indexPattern.confirmOverwriteLabel', { + i18n.translate('savedObjectsManagement.indexPattern.confirmOverwriteLabel', { values: { title }, defaultMessage: "Are you sure you want to overwrite '{title}'?", }), { - title: i18n.translate('kbn.management.indexPattern.confirmOverwriteTitle', { + title: i18n.translate('savedObjectsManagement.indexPattern.confirmOverwriteTitle', { defaultMessage: 'Overwrite {type}?', values: { type }, }), - confirmButtonText: i18n.translate('kbn.management.indexPattern.confirmOverwriteButton', { - defaultMessage: 'Overwrite', - }), + confirmButtonText: i18n.translate( + 'savedObjectsManagement.indexPattern.confirmOverwriteButton', + { + defaultMessage: 'Overwrite', + } + ), } ); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/index.js b/src/plugins/saved_objects_management/public/management_section/index.ts similarity index 93% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/index.js rename to src/plugins/saved_objects_management/public/management_section/index.ts index 522b1ce83a6b69..1bccb2102f3b45 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/index.js +++ b/src/plugins/saved_objects_management/public/management_section/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { Relationships } from './relationships'; +export { mountManagementSection } from './mount_section'; diff --git a/src/plugins/saved_objects_management/public/management_section/mount_section.tsx b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx new file mode 100644 index 00000000000000..6f03f97079bb6e --- /dev/null +++ b/src/plugins/saved_objects_management/public/management_section/mount_section.tsx @@ -0,0 +1,211 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useEffect } from 'react'; +import ReactDOM from 'react-dom'; +import { HashRouter, Switch, Route, useParams, useLocation } from 'react-router-dom'; +import { parse } from 'query-string'; +import { get } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { I18nProvider } from '@kbn/i18n/react'; +import { CoreSetup, CoreStart, ChromeBreadcrumb, Capabilities } from 'src/core/public'; +import { ManagementAppMountParams } from '../../../management/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { StartDependencies, SavedObjectsManagementPluginStart } from '../plugin'; +import { + ISavedObjectsManagementServiceRegistry, + SavedObjectsManagementActionServiceStart, +} from '../services'; +import { SavedObjectsTable } from './objects_table'; +import { SavedObjectEdition } from './object_view'; +import { getAllowedTypes } from './../lib'; + +interface MountParams { + core: CoreSetup; + serviceRegistry: ISavedObjectsManagementServiceRegistry; + mountParams: ManagementAppMountParams; +} + +let allowedObjectTypes: string[] | undefined; + +export const mountManagementSection = async ({ + core, + mountParams, + serviceRegistry, +}: MountParams) => { + const [coreStart, { data }, pluginStart] = await core.getStartServices(); + const { element, basePath, setBreadcrumbs } = mountParams; + if (allowedObjectTypes === undefined) { + allowedObjectTypes = await getAllowedTypes(coreStart.http); + } + + const capabilities = coreStart.application.capabilities; + + ReactDOM.render( + + + + + + + + + + + + + + + + , + element + ); + + return () => { + ReactDOM.unmountComponentAtNode(element); + }; +}; + +const RedirectToHomeIfUnauthorized: React.FunctionComponent<{ + capabilities: Capabilities; +}> = ({ children, capabilities }) => { + const allowed = capabilities?.management?.kibana?.objects ?? false; + if (!allowed) { + window.location.hash = '/home'; + return null; + } + return children! as React.ReactElement; +}; + +const SavedObjectsEditionPage = ({ + coreStart, + serviceRegistry, + setBreadcrumbs, +}: { + coreStart: CoreStart; + serviceRegistry: ISavedObjectsManagementServiceRegistry; + setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => void; +}) => { + const { service: serviceName, id } = useParams<{ service: string; id: string }>(); + const capabilities = coreStart.application.capabilities; + + const { search } = useLocation(); + const query = parse(search); + const service = serviceRegistry.get(serviceName); + + useEffect(() => { + setBreadcrumbs([ + { + text: i18n.translate('savedObjectsManagement.breadcrumb.index', { + defaultMessage: 'Saved objects', + }), + href: '#/management/kibana/objects', + }, + { + text: i18n.translate('savedObjectsManagement.breadcrumb.edit', { + defaultMessage: 'Edit {savedObjectType}', + values: { savedObjectType: service?.service.type ?? 'object' }, + }), + }, + ]); + }, [setBreadcrumbs, service]); + + return ( + + ); +}; + +const SavedObjectsTablePage = ({ + coreStart, + dataStart, + allowedTypes, + serviceRegistry, + actionRegistry, + setBreadcrumbs, +}: { + coreStart: CoreStart; + dataStart: DataPublicPluginStart; + allowedTypes: string[]; + serviceRegistry: ISavedObjectsManagementServiceRegistry; + actionRegistry: SavedObjectsManagementActionServiceStart; + setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => void; +}) => { + const capabilities = coreStart.application.capabilities; + const itemsPerPage = coreStart.uiSettings.get('savedObjects:perPage', 50); + + useEffect(() => { + setBreadcrumbs([ + { + text: i18n.translate('savedObjectsManagement.breadcrumb.index', { + defaultMessage: 'Saved objects', + }), + href: '#/management/kibana/objects', + }, + ]); + }, [setBreadcrumbs]); + + return ( + { + const { editUrl } = savedObject.meta; + if (editUrl) { + // previously, kbnUrl.change(object.meta.editUrl); was used. + // using direct access to location.hash seems the only option for now, + // as using react-router-dom will prefix the url with the router's basename + // which should be ignored there. + window.location.hash = editUrl; + } + }} + canGoInApp={savedObject => { + const { inAppUrl } = savedObject.meta; + return inAppUrl ? get(capabilities, inAppUrl.uiCapabilitiesPath) : false; + }} + /> + ); +}; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/header.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/header.test.tsx.snap similarity index 96% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/header.test.tsx.snap rename to src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/header.test.tsx.snap index 7e1f7ea12b0147..d56776c2be9d71 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/header.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/header.test.tsx.snap @@ -23,7 +23,7 @@ exports[`Intro component renders correctly 1`] = ` > } @@ -37,7 +37,7 @@ exports[`Intro component renders correctly 1`] = ` > Proceed with caution! @@ -53,7 +53,7 @@ exports[`Intro component renders correctly 1`] = `
Modifying objects is for advanced users only. Object properties are not validated and invalid objects could cause errors, data loss, or worse. Unless someone with intimate knowledge of the code told you to be in here, you probably shouldn’t be. diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/not_found_errors.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/not_found_errors.test.tsx.snap rename to src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap index ac565a000813e0..d5372fd5b18d96 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/__snapshots__/not_found_errors.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap @@ -10,7 +10,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] = title={ } @@ -39,7 +39,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] = > There is a problem with this saved object @@ -55,7 +55,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] =
The index pattern associated with this object no longer exists. @@ -64,7 +64,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] =
If you know what this error means, go ahead and fix it — otherwise click the delete button above. @@ -87,7 +87,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern-field type title={ } @@ -116,7 +116,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern-field type > There is a problem with this saved object @@ -132,7 +132,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern-field type
A field associated with this object no longer exists in the index pattern. @@ -141,7 +141,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern-field type
If you know what this error means, go ahead and fix it — otherwise click the delete button above. @@ -164,7 +164,7 @@ exports[`NotFoundErrors component renders correctly for search type 1`] = ` title={ } @@ -193,7 +193,7 @@ exports[`NotFoundErrors component renders correctly for search type 1`] = ` > There is a problem with this saved object @@ -209,7 +209,7 @@ exports[`NotFoundErrors component renders correctly for search type 1`] = `
The saved search associated with this object no longer exists. @@ -218,7 +218,7 @@ exports[`NotFoundErrors component renders correctly for search type 1`] = `
If you know what this error means, go ahead and fix it — otherwise click the delete button above. @@ -241,7 +241,7 @@ exports[`NotFoundErrors component renders correctly for unknown type 1`] = ` title={ } @@ -270,7 +270,7 @@ exports[`NotFoundErrors component renders correctly for unknown type 1`] = ` > There is a problem with this saved object @@ -287,7 +287,7 @@ exports[`NotFoundErrors component renders correctly for unknown type 1`] = `
If you know what this error means, go ahead and fix it — otherwise click the delete button above. diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/field.test.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/field.test.tsx similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/field.test.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/field.test.tsx diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/field.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/field.tsx similarity index 97% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/field.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/field.tsx index 1ed0b57e400b87..1b69eb4240d680 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/field.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/field.tsx @@ -104,9 +104,9 @@ export class Field extends PureComponent { id={this.fieldId} label={ !!currentValue ? ( - + ) : ( - + ) } checked={!!currentValue} diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/form.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/form.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx index 7270d41eef5290..04be7ee3ce2070 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/form.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/form.tsx @@ -29,15 +29,11 @@ import { import { cloneDeep, set } from 'lodash'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { - SimpleSavedObject, - SavedObjectsClientContract, -} from '../../../../../../../../../core/public'; - -import { SavedObjectLoader } from '../../../../../../../../../plugins/saved_objects/public'; +import { SimpleSavedObject, SavedObjectsClientContract } from '../../../../../../core/public'; +import { SavedObjectLoader } from '../../../../../saved_objects/public'; import { Field } from './field'; import { ObjectField, FieldState, SubmittedFormData } from '../../types'; -import { createFieldList } from '../../lib/create_field_list'; +import { createFieldList } from '../../../lib'; interface FormProps { object: SimpleSavedObject; @@ -96,7 +92,7 @@ export class Form extends Component { { data-test-subj="savedObjectEditSave" > @@ -117,14 +113,14 @@ export class Form extends Component { diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/header.test.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/header.test.tsx similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/header.test.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/header.test.tsx diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/header.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/header.tsx similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/header.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/header.tsx index 641493e0cbaa80..305d953c4990b8 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/header.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/header.tsx @@ -52,7 +52,7 @@ export const Header = ({ {canEdit ? (

@@ -60,7 +60,7 @@ export const Header = ({ ) : (

@@ -79,7 +79,7 @@ export const Header = ({ data-test-subj="savedObjectEditViewInApp" > @@ -96,7 +96,7 @@ export const Header = ({ data-test-subj="savedObjectEditDelete" > diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/index.ts b/src/plugins/saved_objects_management/public/management_section/object_view/components/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/index.ts rename to src/plugins/saved_objects_management/public/management_section/object_view/components/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/intro.test.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/intro.test.tsx similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/intro.test.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/intro.test.tsx diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/intro.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/intro.tsx similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/intro.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/intro.tsx index 098ad71345d49d..920a5fcbcb02ee 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/intro.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/intro.tsx @@ -26,7 +26,7 @@ export const Intro = () => { } @@ -35,7 +35,7 @@ export const Intro = () => { >
diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/not_found_errors.test.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/not_found_errors.test.tsx similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/not_found_errors.test.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/not_found_errors.test.tsx diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/not_found_errors.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/components/not_found_errors.tsx similarity index 87% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/not_found_errors.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/components/not_found_errors.tsx index c3d18855f6c9a0..1a63f7eaf4819d 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/object_view/not_found_errors.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/not_found_errors.tsx @@ -31,21 +31,21 @@ export const NotFoundErrors = ({ type }: NotFoundErrors) => { case 'search': return ( ); case 'index-pattern': return ( ); case 'index-pattern-field': return ( ); @@ -58,7 +58,7 @@ export const NotFoundErrors = ({ type }: NotFoundErrors) => { } @@ -68,7 +68,7 @@ export const NotFoundErrors = ({ type }: NotFoundErrors) => {
{getMessage()}
diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/index.js b/src/plugins/saved_objects_management/public/management_section/object_view/index.ts similarity index 93% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/index.js rename to src/plugins/saved_objects_management/public/management_section/object_view/index.ts index cdeebdbf7b63ae..a823923536d312 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/index.js +++ b/src/plugins/saved_objects_management/public/management_section/object_view/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { Flyout } from './flyout'; +export { SavedObjectEdition } from './saved_object_view'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/saved_object_view.tsx b/src/plugins/saved_objects_management/public/management_section/object_view/saved_object_view.tsx similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/saved_object_view.tsx rename to src/plugins/saved_objects_management/public/management_section/object_view/saved_object_view.tsx index 4984fe3e6d6b8f..f714970a5cac38 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/saved_object_view.tsx +++ b/src/plugins/saved_objects_management/public/management_section/object_view/saved_object_view.tsx @@ -26,16 +26,16 @@ import { OverlayStart, NotificationsStart, SimpleSavedObject, -} from '../../../../../../../core/public'; -import { ISavedObjectsManagementRegistry } from '../../saved_object_registry'; -import { Header, NotFoundErrors, Intro, Form } from './components/object_view'; -import { canViewInApp } from './lib/in_app_url'; -import { SubmittedFormData } from './types'; +} from '../../../../../core/public'; +import { ISavedObjectsManagementServiceRegistry } from '../../services'; +import { Header, NotFoundErrors, Intro, Form } from './components'; +import { canViewInApp } from '../../lib'; +import { SubmittedFormData } from '../types'; interface SavedObjectEditionProps { id: string; serviceName: string; - serviceRegistry: ISavedObjectsManagementRegistry; + serviceRegistry: ISavedObjectsManagementServiceRegistry; capabilities: Capabilities; overlays: OverlayStart; notifications: NotificationsStart; @@ -135,17 +135,17 @@ export class SavedObjectEdition extends Component< const { type, object } = this.state; const confirmed = await overlays.openConfirm( - i18n.translate('kbn.management.objects.confirmModalOptions.modalDescription', { + i18n.translate('savedObjectsManagement.deleteConfirm.modalDescription', { defaultMessage: 'This action permanently removes the object from Kibana.', }), { confirmButtonText: i18n.translate( - 'kbn.management.objects.confirmModalOptions.deleteButtonLabel', + 'savedObjectsManagement.deleteConfirm.modalDeleteButtonLabel', { defaultMessage: 'Delete', } ), - title: i18n.translate('kbn.management.objects.confirmModalOptions.modalTitle', { + title: i18n.translate('savedObjectsManagement.deleteConfirm.modalTitle', { defaultMessage: `Delete '{title}'?`, values: { title: object?.attributes?.title || 'saved Kibana object', diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/__snapshots__/objects_table.test.js.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap similarity index 73% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/__snapshots__/objects_table.test.js.snap rename to src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap index 2c0a5d8f6b8f19..fe64df6ff51d1c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/__snapshots__/objects_table.test.js.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap @@ -1,19 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ObjectsTable delete should show a confirm modal 1`] = ` +exports[`SavedObjectsTable delete should show a confirm modal 1`] = ` } confirmButtonText={ } @@ -23,7 +23,7 @@ exports[`ObjectsTable delete should show a confirm modal 1`] = ` title={ } @@ -31,7 +31,7 @@ exports[`ObjectsTable delete should show a confirm modal 1`] = `

@@ -58,12 +58,10 @@ exports[`ObjectsTable delete should show a confirm modal 1`] = ` Array [ Object { "id": "1", - "title": "Title 1", "type": "index-pattern", }, Object { "id": "3", - "title": "Title 2", "type": "dashboard", }, ] @@ -76,7 +74,7 @@ exports[`ObjectsTable delete should show a confirm modal 1`] = `
`; -exports[`ObjectsTable export should allow the user to choose when exporting all 1`] = ` +exports[`SavedObjectsTable export should allow the user to choose when exporting all 1`] = ` @@ -84,7 +82,7 @@ exports[`ObjectsTable export should allow the user to choose when exporting all } @@ -149,7 +147,7 @@ exports[`ObjectsTable export should allow the user to choose when exporting all label={ } @@ -173,7 +171,7 @@ exports[`ObjectsTable export should allow the user to choose when exporting all > @@ -187,7 +185,7 @@ exports[`ObjectsTable export should allow the user to choose when exporting all > @@ -199,23 +197,87 @@ exports[`ObjectsTable export should allow the user to choose when exporting all `; -exports[`ObjectsTable import should show the flyout 1`] = ` +exports[`SavedObjectsTable import should show the flyout 1`] = ` `; -exports[`ObjectsTable relationships should show the flyout 1`] = ` +exports[`SavedObjectsTable relationships should show the flyout 1`] = ` `; -exports[`ObjectsTable should render normally 1`] = ` +exports[`SavedObjectsTable should render normally 1`] = ` @@ -251,7 +313,23 @@ exports[`ObjectsTable should render normally 1`] = ` size="xs" /> @@ -36,7 +36,7 @@ exports[`Flyout conflicts should allow conflict resolution 1`] = ` title={ } @@ -44,7 +44,7 @@ exports[`Flyout conflicts should allow conflict resolution 1`] = `

, @@ -131,7 +131,7 @@ exports[`Flyout conflicts should allow conflict resolution 1`] = ` > @@ -148,7 +148,7 @@ exports[`Flyout conflicts should allow conflict resolution 1`] = ` > @@ -164,6 +164,30 @@ exports[`Flyout conflicts should allow conflict resolution 2`] = ` Array [ Object { "getConflictResolutions": [Function], + "http": Object { + "addLoadingCountSource": [MockFunction], + "anonymousPaths": Object { + "isAnonymous": [MockFunction], + "register": [MockFunction], + }, + "basePath": BasePath { + "basePath": "", + "get": [Function], + "prepend": [Function], + "remove": [Function], + "serverBasePath": "", + }, + "delete": [MockFunction], + "fetch": [MockFunction], + "get": [MockFunction], + "getLoadingCount$": [MockFunction], + "head": [MockFunction], + "intercept": [MockFunction], + "options": [MockFunction], + "patch": [MockFunction], + "post": [MockFunction], + "put": [MockFunction], + }, "state": Object { "conflictedIndexPatterns": undefined, "conflictedSavedObjectsLinkedToSavedSearches": undefined, @@ -243,7 +267,7 @@ exports[`Flyout conflicts should handle errors 1`] = ` title={ } @@ -251,7 +275,7 @@ exports[`Flyout conflicts should handle errors 1`] = `

} @@ -280,7 +304,7 @@ exports[`Flyout errors should display unsupported type errors properly 1`] = `

@@ -331,7 +355,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = ` title={ } @@ -339,7 +363,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = `

@@ -356,7 +380,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = ` title={ } @@ -364,7 +388,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = `

, @@ -462,7 +486,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = ` > @@ -479,7 +503,7 @@ exports[`Flyout legacy conflicts should allow conflict resolution 1`] = ` > @@ -498,7 +522,7 @@ Array [ title={ } @@ -506,7 +530,7 @@ Array [

@@ -518,7 +542,7 @@ Array [ title={ } @@ -526,7 +550,7 @@ Array [

, @@ -548,7 +572,7 @@ Array [ title={ } @@ -578,7 +602,7 @@ exports[`Flyout should render import step 1`] = `

@@ -595,7 +619,7 @@ exports[`Flyout should render import step 1`] = ` label={ } @@ -607,7 +631,7 @@ exports[`Flyout should render import step 1`] = ` initialPromptText={ } @@ -628,7 +652,7 @@ exports[`Flyout should render import step 1`] = ` label={ } @@ -651,7 +675,7 @@ exports[`Flyout should render import step 1`] = ` > @@ -668,7 +692,7 @@ exports[`Flyout should render import step 1`] = ` > diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/__snapshots__/header.test.js.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap similarity index 88% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/__snapshots__/header.test.js.snap rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap index 51bd51a5e2e582..642a5030e4ec0c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/__snapshots__/header.test.js.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap @@ -13,7 +13,7 @@ exports[`Header should render normally 1`] = `

@@ -38,7 +38,7 @@ exports[`Header should render normally 1`] = ` > @@ -73,7 +73,7 @@ exports[`Header should render normally 1`] = ` > @@ -93,7 +93,7 @@ exports[`Header should render normally 1`] = ` > diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/__snapshots__/relationships.test.js.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap similarity index 99% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/__snapshots__/relationships.test.js.snap rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap index 728944f3ccbfe3..a8bb691cd54e99 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/__snapshots__/relationships.test.js.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap @@ -202,7 +202,7 @@ exports[`Relationships should render errors 1`] = ` title={ } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/__snapshots__/table.test.js.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap similarity index 93% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/__snapshots__/table.test.js.snap rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap index a4dcfb9c38184c..d09dd6f8b868bb 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/__snapshots__/table.test.js.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap @@ -36,7 +36,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` > , @@ -51,7 +51,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` > @@ -72,7 +72,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` label={ } @@ -83,7 +83,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` label={ } @@ -106,7 +106,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` > @@ -171,6 +171,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` items={ Array [ Object { + "attributes": Object {}, "id": "1", "meta": Object { "editUrl": "#/management/kibana/index_patterns/1", @@ -181,6 +182,7 @@ exports[`Table prevents saved objects from being deleted 1`] = ` }, "title": "MyIndexPattern*", }, + "references": Array [], "type": "index-pattern", }, ] @@ -249,7 +251,7 @@ exports[`Table should render normally 1`] = ` > , @@ -264,7 +266,7 @@ exports[`Table should render normally 1`] = ` > @@ -285,7 +287,7 @@ exports[`Table should render normally 1`] = ` label={ } @@ -296,7 +298,7 @@ exports[`Table should render normally 1`] = ` label={ } @@ -319,7 +321,7 @@ exports[`Table should render normally 1`] = ` > @@ -384,6 +386,7 @@ exports[`Table should render normally 1`] = ` items={ Array [ Object { + "attributes": Object {}, "id": "1", "meta": Object { "editUrl": "#/management/kibana/index_patterns/1", @@ -394,6 +397,7 @@ exports[`Table should render normally 1`] = ` }, "title": "MyIndexPattern*", }, + "references": Array [], "type": "index-pattern", }, ] diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.mocks.ts b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.mocks.ts new file mode 100644 index 00000000000000..b5361d212954f7 --- /dev/null +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.mocks.ts @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const importFileMock = jest.fn(); +jest.doMock('../../../lib/import_file', () => ({ + importFile: importFileMock, +})); + +export const resolveImportErrorsMock = jest.fn(); +jest.doMock('../../../lib/resolve_import_errors', () => ({ + resolveImportErrors: resolveImportErrorsMock, +})); + +export const importLegacyFileMock = jest.fn(); +jest.doMock('../../../lib/import_legacy_file', () => ({ + importLegacyFile: importLegacyFileMock, +})); + +export const resolveSavedObjectsMock = jest.fn(); +export const resolveSavedSearchesMock = jest.fn(); +export const resolveIndexPatternConflictsMock = jest.fn(); +export const saveObjectsMock = jest.fn(); +jest.doMock('../../../lib/resolve_saved_objects', () => ({ + resolveSavedObjects: resolveSavedObjectsMock, + resolveSavedSearches: resolveSavedSearchesMock, + resolveIndexPatternConflicts: resolveIndexPatternConflictsMock, + saveObjects: saveObjectsMock, +})); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/__jest__/flyout.test.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.tsx similarity index 75% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/__jest__/flyout.test.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.tsx index 0d16e0ae35dd66..5d713ff044f243 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/__jest__/flyout.test.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.test.tsx @@ -17,68 +17,62 @@ * under the License. */ +import { + importFileMock, + importLegacyFileMock, + resolveImportErrorsMock, + resolveIndexPatternConflictsMock, + resolveSavedObjectsMock, + resolveSavedSearchesMock, + saveObjectsMock, +} from './flyout.test.mocks'; + import React from 'react'; import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; -import { mockManagementPlugin } from '../../../../../../../../../../../../plugins/index_pattern_management/public/mocks'; -import { Flyout } from '../flyout'; - -jest.mock('ui/kfetch', () => ({ kfetch: jest.fn() })); - -jest.mock('../../../../../lib/import_file', () => ({ - importFile: jest.fn(), -})); - -jest.mock('../../../../../lib/resolve_import_errors', () => ({ - resolveImportErrors: jest.fn(), -})); - -jest.mock('ui/chrome', () => ({ - addBasePath: () => {}, - getInjected: () => ['index-pattern', 'visualization', 'dashboard', 'search'], -})); - -jest.mock('../../../../../lib/import_legacy_file', () => ({ - importLegacyFile: jest.fn(), -})); - -jest.mock('../../../../../lib/resolve_saved_objects', () => ({ - resolveSavedObjects: jest.fn(), - resolveSavedSearches: jest.fn(), - resolveIndexPatternConflicts: jest.fn(), - saveObjects: jest.fn(), -})); - -jest.mock('../../../../../../../../../../../../plugins/index_pattern_management/public', () => ({ - setup: mockManagementPlugin.createSetupContract(), - start: mockManagementPlugin.createStartContract(), -})); - -jest.mock('ui/notify', () => ({})); - -const defaultProps = { - close: jest.fn(), - done: jest.fn(), - services: [], - newIndexPatternUrl: '', - getConflictResolutions: jest.fn(), - confirmModalPromise: jest.fn(), - indexPatterns: { - getFields: jest.fn().mockImplementation(() => [{ id: '1' }, { id: '2' }]), - }, -}; - -const mockFile = { +import { coreMock } from '../../../../../../core/public/mocks'; +import { serviceRegistryMock } from '../../../services/service_registry.mock'; +import { Flyout, FlyoutProps, FlyoutState } from './flyout'; +import { ShallowWrapper } from 'enzyme'; + +const mockFile = ({ name: 'foo.ndjson', path: '/home/foo.ndjson', -}; -const legacyMockFile = { +} as unknown) as File; +const legacyMockFile = ({ name: 'foo.json', path: '/home/foo.json', -}; +} as unknown) as File; describe('Flyout', () => { + let defaultProps: FlyoutProps; + + const shallowRender = (props: FlyoutProps) => { + return (shallowWithI18nProvider() as unknown) as ShallowWrapper< + FlyoutProps, + FlyoutState, + Flyout + >; + }; + + beforeEach(() => { + const { http, overlays } = coreMock.createStart(); + + defaultProps = { + close: jest.fn(), + done: jest.fn(), + newIndexPatternUrl: '', + indexPatterns: { + getFields: jest.fn().mockImplementation(() => [{ id: '1' }, { id: '2' }]), + } as any, + overlays, + http, + allowedTypes: ['search', 'index-pattern', 'visualization'], + serviceRegistry: serviceRegistryMock.create(), + }; + }); + it('should render import step', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -89,7 +83,7 @@ describe('Flyout', () => { }); it('should toggle the overwrite all control', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -102,7 +96,7 @@ describe('Flyout', () => { }); it('should allow picking a file', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -115,7 +109,7 @@ describe('Flyout', () => { }); it('should allow removing a file', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await Promise.resolve(); @@ -130,22 +124,21 @@ describe('Flyout', () => { }); it('should handle invalid files', async () => { - const { importLegacyFile } = require('../../../../../lib/import_legacy_file'); - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); // Ensure the state changes are reflected component.update(); - importLegacyFile.mockImplementation(() => { + importLegacyFileMock.mockImplementation(() => { throw new Error('foobar'); }); await component.instance().legacyImport(); expect(component.state('error')).toBe('The file could not be processed.'); - importLegacyFile.mockImplementation(() => ({ + importLegacyFileMock.mockImplementation(() => ({ invalid: true, })); @@ -156,11 +149,8 @@ describe('Flyout', () => { }); describe('conflicts', () => { - const { importFile } = require('../../../../../lib/import_file'); - const { resolveImportErrors } = require('../../../../../lib/resolve_import_errors'); - beforeEach(() => { - importFile.mockImplementation(() => ({ + importFileMock.mockImplementation(() => ({ success: false, successCount: 0, errors: [ @@ -180,7 +170,7 @@ describe('Flyout', () => { }, ], })); - resolveImportErrors.mockImplementation(() => ({ + resolveImportErrorsMock.mockImplementation(() => ({ status: 'success', importCount: 1, failedImports: [], @@ -188,7 +178,7 @@ describe('Flyout', () => { }); it('should figure out unmatchedReferences', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -198,7 +188,7 @@ describe('Flyout', () => { component.setState({ file: mockFile, isLegacyFile: false }); await component.instance().import(); - expect(importFile).toHaveBeenCalledWith(mockFile, true); + expect(importFileMock).toHaveBeenCalledWith(defaultProps.http, mockFile, true); expect(component.state()).toMatchObject({ conflictedIndexPatterns: undefined, conflictedSavedObjectsLinkedToSavedSearches: undefined, @@ -223,7 +213,7 @@ describe('Flyout', () => { }); it('should allow conflict resolution', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -239,7 +229,7 @@ describe('Flyout', () => { // Ensure we can change the resolution component.instance().onIndexChanged('MyIndexPattern*', { target: { value: '2' } }); - expect(component.state('unmatchedReferences')[0].newIndexPatternId).toBe('2'); + expect(component.state('unmatchedReferences')![0].newIndexPatternId).toBe('2'); // Let's resolve now await component @@ -247,18 +237,18 @@ describe('Flyout', () => { .simulate('click'); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); - expect(resolveImportErrors).toMatchSnapshot(); + expect(resolveImportErrorsMock).toMatchSnapshot(); }); it('should handle errors', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); // Ensure the state changes are reflected component.update(); - resolveImportErrors.mockImplementation(() => ({ + resolveImportErrorsMock.mockImplementation(() => ({ status: 'success', importCount: 0, failedImports: [ @@ -303,18 +293,15 @@ describe('Flyout', () => { }); describe('errors', () => { - const { importFile } = require('../../../../../lib/import_file'); - const { resolveImportErrors } = require('../../../../../lib/resolve_import_errors'); - it('should display unsupported type errors properly', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await Promise.resolve(); // Ensure the state changes are reflected component.update(); - importFile.mockImplementation(() => ({ + importFileMock.mockImplementation(() => ({ success: false, successCount: 0, errors: [ @@ -328,7 +315,7 @@ describe('Flyout', () => { }, ], })); - resolveImportErrors.mockImplementation(() => ({ + resolveImportErrorsMock.mockImplementation(() => ({ status: 'success', importCount: 0, failedImports: [ @@ -372,14 +359,6 @@ describe('Flyout', () => { }); describe('legacy conflicts', () => { - const { importLegacyFile } = require('../../../../../lib/import_legacy_file'); - const { - resolveSavedObjects, - resolveSavedSearches, - resolveIndexPatternConflicts, - saveObjects, - } = require('../../../../../lib/resolve_saved_objects'); - const mockData = [ { _id: '1', @@ -406,7 +385,7 @@ describe('Flyout', () => { }, obj: { searchSource: { - getOwnField: field => { + getOwnField: (field: string) => { if (field === 'index') { return 'MyIndexPattern*'; } @@ -426,8 +405,8 @@ describe('Flyout', () => { const mockConflictedSearchDocs = [3]; beforeEach(() => { - importLegacyFile.mockImplementation(() => mockData); - resolveSavedObjects.mockImplementation(() => ({ + importLegacyFileMock.mockImplementation(() => mockData); + resolveSavedObjectsMock.mockImplementation(() => ({ conflictedIndexPatterns: mockConflictedIndexPatterns, conflictedSavedObjectsLinkedToSavedSearches: mockConflictedSavedObjectsLinkedToSavedSearches, conflictedSearchDocs: mockConflictedSearchDocs, @@ -437,7 +416,7 @@ describe('Flyout', () => { }); it('should figure out unmatchedReferences', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -447,14 +426,14 @@ describe('Flyout', () => { component.setState({ file: legacyMockFile, isLegacyFile: true }); await component.instance().legacyImport(); - expect(importLegacyFile).toHaveBeenCalledWith(legacyMockFile); + expect(importLegacyFileMock).toHaveBeenCalledWith(legacyMockFile); // Remove the last element from data since it should be filtered out - expect(resolveSavedObjects).toHaveBeenCalledWith( + expect(resolveSavedObjectsMock).toHaveBeenCalledWith( mockData.slice(0, 2).map(doc => ({ ...doc, _migrationVersion: {} })), true, - defaultProps.services, + defaultProps.serviceRegistry.all().map(s => s.service), defaultProps.indexPatterns, - defaultProps.confirmModalPromise + defaultProps.overlays.openConfirm ); expect(component.state()).toMatchObject({ @@ -492,7 +471,7 @@ describe('Flyout', () => { }); it('should allow conflict resolution', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -508,7 +487,7 @@ describe('Flyout', () => { // Ensure we can change the resolution component.instance().onIndexChanged('MyIndexPattern*', { target: { value: '2' } }); - expect(component.state('unmatchedReferences')[0].newIndexPatternId).toBe('2'); + expect(component.state('unmatchedReferences')![0].newIndexPatternId).toBe('2'); // Let's resolve now await component @@ -516,33 +495,33 @@ describe('Flyout', () => { .simulate('click'); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); - expect(resolveIndexPatternConflicts).toHaveBeenCalledWith( + expect(resolveIndexPatternConflictsMock).toHaveBeenCalledWith( component.instance().resolutions, mockConflictedIndexPatterns, true, defaultProps.indexPatterns ); - expect(saveObjects).toHaveBeenCalledWith( + expect(saveObjectsMock).toHaveBeenCalledWith( mockConflictedSavedObjectsLinkedToSavedSearches, true ); - expect(resolveSavedSearches).toHaveBeenCalledWith( + expect(resolveSavedSearchesMock).toHaveBeenCalledWith( mockConflictedSearchDocs, - defaultProps.services, + defaultProps.serviceRegistry.all().map(s => s.service), defaultProps.indexPatterns, true ); }); it('should handle errors', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(defaultProps); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); // Ensure the state changes are reflected component.update(); - resolveIndexPatternConflicts.mockImplementation(() => { + resolveIndexPatternConflictsMock.mockImplementation(() => { throw new Error('foobar'); }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/flyout.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx similarity index 77% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/flyout.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx index da2221bb54203d..45788dcb601aeb 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/flyout/flyout.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx @@ -18,7 +18,6 @@ */ import React, { Component, Fragment } from 'react'; -import PropTypes from 'prop-types'; import { take, get as getField } from 'lodash'; import { EuiFlyout, @@ -32,6 +31,7 @@ import { EuiForm, EuiFormRow, EuiSwitch, + // @ts-ignore EuiFilePicker, EuiInMemoryTable, EuiSelect, @@ -47,34 +47,62 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; - +import { OverlayStart, HttpStart } from 'src/core/public'; +import { IndexPatternsContract, IIndexPattern } from '../../../../../data/public'; import { importFile, importLegacyFile, resolveImportErrors, logLegacyImport, getDefaultTitle, -} from '../../../../lib'; -import { processImportResponse } from '../../../../lib/process_import_response'; + processImportResponse, + ProcessedImportResponse, +} from '../../../lib'; import { resolveSavedObjects, resolveSavedSearches, resolveIndexPatternConflicts, saveObjects, -} from '../../../../lib/resolve_saved_objects'; -import { POSSIBLE_TYPES } from '../../objects_table'; - -export class Flyout extends Component { - static propTypes = { - close: PropTypes.func.isRequired, - done: PropTypes.func.isRequired, - services: PropTypes.array.isRequired, - newIndexPatternUrl: PropTypes.string.isRequired, - indexPatterns: PropTypes.object.isRequired, - confirmModalPromise: PropTypes.func.isRequired, - }; +} from '../../../lib/resolve_saved_objects'; +import { ISavedObjectsManagementServiceRegistry } from '../../../services'; + +export interface FlyoutProps { + serviceRegistry: ISavedObjectsManagementServiceRegistry; + allowedTypes: string[]; + close: () => void; + done: () => void; + newIndexPatternUrl: string; + indexPatterns: IndexPatternsContract; + overlays: OverlayStart; + http: HttpStart; +} + +export interface FlyoutState { + conflictedIndexPatterns?: any[]; + conflictedSavedObjectsLinkedToSavedSearches?: any[]; + conflictedSearchDocs?: any[]; + unmatchedReferences?: ProcessedImportResponse['unmatchedReferences']; + failedImports?: ProcessedImportResponse['failedImports']; + conflictingRecord?: ConflictingRecord; + error?: string; + file?: File; + importCount: number; + indexPatterns?: IIndexPattern[]; + isOverwriteAllChecked: boolean; + loadingMessage?: string; + isLegacyFile: boolean; + status: string; +} + +interface ConflictingRecord { + id: string; + type: string; + title: string; + done: (success: boolean) => void; +} - constructor(props) { +export class Flyout extends Component { + constructor(props: FlyoutProps) { super(props); this.state = { @@ -100,7 +128,7 @@ export class Flyout extends Component { fetchIndexPatterns = async () => { const indexPatterns = await this.props.indexPatterns.getFields(['id', 'title']); - this.setState({ indexPatterns }); + this.setState({ indexPatterns } as any); }; changeOverwriteAll = () => { @@ -109,11 +137,12 @@ export class Flyout extends Component { })); }; - setImportFile = ([file]) => { - if (!file) { + setImportFile = (files: FileList | null) => { + if (!files || !files[0]) { this.setState({ file: undefined, isLegacyFile: false }); return; } + const file = files[0]; this.setState({ file, isLegacyFile: /\.json$/i.test(file.name) || file.type === 'application/json', @@ -126,30 +155,29 @@ export class Flyout extends Component { * Does the initial import of a file, resolveImportErrors then handles errors and retries */ import = async () => { + const { http } = this.props; const { file, isOverwriteAllChecked } = this.state; this.setState({ status: 'loading', error: undefined }); // Import the file - let response; try { - response = await importFile(file, isOverwriteAllChecked); + const response = await importFile(http, file!, isOverwriteAllChecked); + this.setState(processImportResponse(response), () => { + // Resolve import errors right away if there's no index patterns to match + // This will ask about overwriting each object, etc + if (this.state.unmatchedReferences?.length === 0) { + this.resolveImportErrors(); + } + }); } catch (e) { this.setState({ status: 'error', - error: i18n.translate('kbn.management.objects.objectsTable.flyout.importFileErrorMessage', { + error: i18n.translate('savedObjectsManagement.objectsTable.flyout.importFileErrorMessage', { defaultMessage: 'The file could not be processed.', }), }); return; } - - this.setState(processImportResponse(response), () => { - // Resolve import errors right away if there's no index patterns to match - // This will ask about overwriting each object, etc - if (this.state.unmatchedReferences.length === 0) { - this.resolveImportErrors(); - } - }); }; /** @@ -160,10 +188,10 @@ export class Flyout extends Component { * @param {array} objects List of objects to request the user if they wish to overwrite it * @return {Promise} An object with the key being "type:id" and value the resolution chosen by the user */ - getConflictResolutions = async objects => { - const resolutions = {}; + getConflictResolutions = async (objects: any[]) => { + const resolutions: Record = {}; for (const { type, id, title } of objects) { - const overwrite = await new Promise(resolve => { + const overwrite = await new Promise(resolve => { this.setState({ conflictingRecord: { id, @@ -193,6 +221,7 @@ export class Flyout extends Component { try { const updatedState = await resolveImportErrors({ + http: this.props.http, state: this.state, getConflictResolutions: this.getConflictResolutions, }); @@ -201,7 +230,7 @@ export class Flyout extends Component { this.setState({ status: 'error', error: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.resolveImportErrorsFileErrorMessage', + 'savedObjectsManagement.objectsTable.flyout.resolveImportErrorsFileErrorMessage', { defaultMessage: 'The file could not be processed.' } ), }); @@ -209,22 +238,22 @@ export class Flyout extends Component { }; legacyImport = async () => { - const { services, indexPatterns, confirmModalPromise } = this.props; + const { serviceRegistry, indexPatterns, overlays, http, allowedTypes } = this.props; const { file, isOverwriteAllChecked } = this.state; this.setState({ status: 'loading', error: undefined }); // Log warning on server, don't wait for response - logLegacyImport(); + logLegacyImport(http); let contents; try { - contents = await importLegacyFile(file); + contents = await importLegacyFile(file!); } catch (e) { this.setState({ status: 'error', error: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.importLegacyFileErrorMessage', + 'savedObjectsManagement.objectsTable.flyout.importLegacyFileErrorMessage', { defaultMessage: 'The file could not be processed.' } ), }); @@ -235,7 +264,7 @@ export class Flyout extends Component { this.setState({ status: 'error', error: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage', + 'savedObjectsManagement.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage', { defaultMessage: 'Saved objects file format is invalid and cannot be imported.' } ), }); @@ -243,7 +272,7 @@ export class Flyout extends Component { } contents = contents - .filter(content => POSSIBLE_TYPES.includes(content._type)) + .filter(content => allowedTypes.includes(content._type)) .map(doc => ({ ...doc, // The server assumes that documents with no migrationVersion are up to date. @@ -263,18 +292,18 @@ export class Flyout extends Component { } = await resolveSavedObjects( contents, isOverwriteAllChecked, - services, + serviceRegistry.all().map(e => e.service), indexPatterns, - confirmModalPromise + overlays.openConfirm ); - const byId = {}; + const byId: Record = {}; conflictedIndexPatterns .map(({ doc, obj }) => { return { doc, obj: obj._serialize() }; }) .forEach(({ doc, obj }) => - obj.references.forEach(ref => { + obj.references.forEach((ref: Record) => { byId[ref.id] = byId[ref.id] != null ? byId[ref.id].concat({ doc, obj }) : [{ doc, obj }]; }) ); @@ -291,7 +320,7 @@ export class Flyout extends Component { }); return accum; }, - [] + [] as any[] ); this.setState({ @@ -305,12 +334,12 @@ export class Flyout extends Component { }); }; - get hasUnmatchedReferences() { + public get hasUnmatchedReferences() { return this.state.unmatchedReferences && this.state.unmatchedReferences.length > 0; } - get resolutions() { - return this.state.unmatchedReferences.reduce( + public get resolutions() { + return this.state.unmatchedReferences!.reduce( (accum, { existingIndexPatternId, newIndexPatternId }) => { if (newIndexPatternId) { accum.push({ @@ -320,7 +349,7 @@ export class Flyout extends Component { } return accum; }, - [] + [] as Array<{ oldId: string; newId: string }> ); } @@ -333,7 +362,7 @@ export class Flyout extends Component { failedImports, } = this.state; - const { services, indexPatterns } = this.props; + const { serviceRegistry, indexPatterns } = this.props; this.setState({ error: undefined, @@ -350,48 +379,48 @@ export class Flyout extends Component { // Do not Promise.all these calls as the order matters this.setState({ loadingMessage: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage', + 'savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage', { defaultMessage: 'Resolving conflicts…' } ), }); if (resolutions.length) { importCount += await resolveIndexPatternConflicts( resolutions, - conflictedIndexPatterns, + conflictedIndexPatterns!, isOverwriteAllChecked, - this.props.indexPatterns + indexPatterns ); } this.setState({ loadingMessage: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage', + 'savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage', { defaultMessage: 'Saving conflicts…' } ), }); importCount += await saveObjects( - conflictedSavedObjectsLinkedToSavedSearches, + conflictedSavedObjectsLinkedToSavedSearches!, isOverwriteAllChecked ); this.setState({ loadingMessage: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage', + 'savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage', { defaultMessage: 'Ensure saved searches are linked properly…' } ), }); importCount += await resolveSavedSearches( - conflictedSearchDocs, - services, + conflictedSearchDocs!, + serviceRegistry.all().map(e => e.service), indexPatterns, isOverwriteAllChecked ); this.setState({ loadingMessage: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage', + 'savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage', { defaultMessage: 'Retrying failed objects…' } ), }); importCount += await saveObjects( - failedImports.map(({ obj }) => obj), + failedImports!.map(({ obj }) => obj) as any[], isOverwriteAllChecked ); } catch (e) { @@ -407,26 +436,26 @@ export class Flyout extends Component { this.setState({ status: 'success', importCount }); }; - onIndexChanged = (id, e) => { + onIndexChanged = (id: string, e: any) => { const value = e.target.value; this.setState(state => { - const conflictIndex = state.unmatchedReferences.findIndex( + const conflictIndex = state.unmatchedReferences?.findIndex( conflict => conflict.existingIndexPatternId === id ); - if (conflictIndex === -1) { + if (conflictIndex === undefined || conflictIndex === -1) { return state; } return { unmatchedReferences: [ - ...state.unmatchedReferences.slice(0, conflictIndex), + ...state.unmatchedReferences!.slice(0, conflictIndex), { - ...state.unmatchedReferences[conflictIndex], + ...state.unmatchedReferences![conflictIndex], newIndexPatternId: value, }, - ...state.unmatchedReferences.slice(conflictIndex + 1), + ...state.unmatchedReferences!.slice(conflictIndex + 1), ], - }; + } as any; }); }; @@ -441,11 +470,11 @@ export class Flyout extends Component { { field: 'existingIndexPatternId', name: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdName', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdName', { defaultMessage: 'ID' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdDescription', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdDescription', { defaultMessage: 'ID of the index pattern' } ), sortable: true, @@ -453,28 +482,28 @@ export class Flyout extends Component { { field: 'list', name: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountName', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountName', { defaultMessage: 'Count' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountDescription', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountDescription', { defaultMessage: 'How many affected objects' } ), - render: list => { + render: (list: any[]) => { return {list.length}; }, }, { field: 'list', name: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName', { defaultMessage: 'Sample of affected objects' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription', { defaultMessage: 'Sample of affected objects' } ), - render: list => { + render: (list: any[]) => { return (
    {take(list, 3).map((obj, key) => ( @@ -487,15 +516,18 @@ export class Flyout extends Component { { field: 'existingIndexPatternId', name: i18n.translate( - 'kbn.management.objects.objectsTable.flyout.renderConflicts.columnNewIndexPatternName', + 'savedObjectsManagement.objectsTable.flyout.renderConflicts.columnNewIndexPatternName', { defaultMessage: 'New index pattern' } ), - render: id => { - const options = this.state.indexPatterns.map(indexPattern => ({ - text: indexPattern.title, - value: indexPattern.id, - ['data-test-subj']: `indexPatternOption-${indexPattern.title}`, - })); + render: (id: string) => { + const options = this.state.indexPatterns!.map( + indexPattern => + ({ + text: indexPattern.title, + value: indexPattern.id, + 'data-test-subj': `indexPatternOption-${indexPattern.title}`, + } as { text: string; value: string; 'data-test-subj'?: string }) + ); options.unshift({ text: '-- Skip Import --', @@ -518,7 +550,11 @@ export class Flyout extends Component { }; return ( - + ); } @@ -534,7 +570,7 @@ export class Flyout extends Component { } @@ -581,7 +617,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsFailedWarning" title={ } @@ -590,7 +626,7 @@ export class Flyout extends Component { >

    { return i18n.translate( - 'kbn.management.objects.objectsTable.flyout.importFailedMissingReference', + 'savedObjectsManagement.objectsTable.flyout.importFailedMissingReference', { defaultMessage: '{type} [id={id}] could not locate {refType} [id={refId}]', values: { @@ -618,7 +654,7 @@ export class Flyout extends Component { }); } else if (error.type === 'unsupported_type') { return i18n.translate( - 'kbn.management.objects.objectsTable.flyout.importFailedUnsupportedType', + 'savedObjectsManagement.objectsTable.flyout.importFailedUnsupportedType', { defaultMessage: '{type} [id={id}] unsupported type', values: { @@ -628,7 +664,7 @@ export class Flyout extends Component { } ); } - return getField(error, 'body.message', error.message || ''); + return getField(error, 'body.message', (error as any).message ?? ''); }) .join(' ')}

    @@ -643,7 +679,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsSuccessNoneImported" title={ } @@ -657,7 +693,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsSuccess" title={ } @@ -666,7 +702,7 @@ export class Flyout extends Component { >

    @@ -684,7 +720,7 @@ export class Flyout extends Component { } @@ -692,7 +728,7 @@ export class Flyout extends Component { } @@ -704,7 +740,7 @@ export class Flyout extends Component { name="overwriteAll" label={ } @@ -727,7 +763,7 @@ export class Flyout extends Component { confirmButton = ( @@ -742,7 +778,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsConfirmBtn" > @@ -757,7 +793,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsImportBtn" > @@ -769,7 +805,7 @@ export class Flyout extends Component { @@ -791,7 +827,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsLegacyWarning" title={ } @@ -800,7 +836,7 @@ export class Flyout extends Component { >

    @@ -815,7 +851,7 @@ export class Flyout extends Component { data-test-subj="importSavedObjectsConflictsWarning" title={ } @@ -824,7 +860,7 @@ export class Flyout extends Component { >

    @@ -867,11 +903,11 @@ export class Flyout extends Component { } overwriteConfirmed() { - this.state.conflictingRecord.done(true); + this.state.conflictingRecord!.done(true); } overwriteSkipped() { - this.state.conflictingRecord.done(false); + this.state.conflictingRecord!.done(false); } render() { @@ -883,18 +919,18 @@ export class Flyout extends Component {

    diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/header.test.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/header.test.tsx similarity index 96% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/header.test.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/header.test.tsx index 1f501b57512249..891190d0bb24bb 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/__jest__/header.test.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/header.test.tsx @@ -19,8 +19,7 @@ import React from 'react'; import { shallow } from 'enzyme'; - -import { Header } from '../header'; +import { Header } from './header'; describe('Header', () => { it('should render normally', () => { diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/header.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/header.tsx similarity index 83% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/header.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/header.tsx index 0bec8a0cf2daf8..7a9584f08d632a 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/header/header.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/header.tsx @@ -18,8 +18,6 @@ */ import React, { Fragment } from 'react'; -import PropTypes from 'prop-types'; - import { EuiSpacer, EuiTitle, @@ -31,14 +29,24 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -export const Header = ({ onExportAll, onImport, onRefresh, filteredCount }) => ( +export const Header = ({ + onExportAll, + onImport, + onRefresh, + filteredCount, +}: { + onExportAll: () => void; + onImport: () => void; + onRefresh: () => void; + filteredCount: number; +}) => (

    @@ -55,7 +63,7 @@ export const Header = ({ onExportAll, onImport, onRefresh, filteredCount }) => ( onClick={onExportAll} > ( onClick={onImport} > @@ -79,7 +87,7 @@ export const Header = ({ onExportAll, onImport, onRefresh, filteredCount }) => ( @@ -92,7 +100,7 @@ export const Header = ({ onExportAll, onImport, onRefresh, filteredCount }) => (

    ); - -Header.propTypes = { - onExportAll: PropTypes.func.isRequired, - onImport: PropTypes.func.isRequired, - onRefresh: PropTypes.func.isRequired, - filteredCount: PropTypes.number.isRequired, -}; diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/index.ts b/src/plugins/saved_objects_management/public/management_section/objects_table/components/index.ts new file mode 100644 index 00000000000000..9c8736a9011eba --- /dev/null +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/index.ts @@ -0,0 +1,23 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { Header } from './header'; +export { Table } from './table'; +export { Flyout } from './flyout'; +export { Relationships } from './relationships'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/relationships.test.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx similarity index 88% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/relationships.test.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx index 479726e8785d80..347f2d977015c7 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/__jest__/relationships.test.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx @@ -19,27 +19,23 @@ import React from 'react'; import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; +import { httpServiceMock } from '../../../../../../core/public/mocks'; +import { Relationships, RelationshipsProps } from './relationships'; -jest.mock('ui/kfetch', () => ({ kfetch: jest.fn() })); - -jest.mock('ui/chrome', () => ({ - addBasePath: () => '', -})); - -jest.mock('../../../../../lib/fetch_export_by_type_and_search', () => ({ +jest.mock('../../../lib/fetch_export_by_type_and_search', () => ({ fetchExportByTypeAndSearch: jest.fn(), })); -jest.mock('../../../../../lib/fetch_export_objects', () => ({ +jest.mock('../../../lib/fetch_export_objects', () => ({ fetchExportObjects: jest.fn(), })); -import { Relationships } from '../relationships'; - describe('Relationships', () => { it('should render index patterns normally', async () => { - const props = { + const props: RelationshipsProps = { goInspectObject: () => {}, + canGoInApp: () => true, + basePath: httpServiceMock.createSetupContract().basePath, getRelationships: jest.fn().mockImplementation(() => [ { type: 'search', @@ -73,6 +69,8 @@ describe('Relationships', () => { savedObject: { id: '1', type: 'index-pattern', + attributes: {}, + references: [], meta: { title: 'MyIndexPattern*', icon: 'indexPatternApp', @@ -101,8 +99,10 @@ describe('Relationships', () => { }); it('should render searches normally', async () => { - const props = { + const props: RelationshipsProps = { goInspectObject: () => {}, + canGoInApp: () => true, + basePath: httpServiceMock.createSetupContract().basePath, getRelationships: jest.fn().mockImplementation(() => [ { type: 'index-pattern', @@ -136,6 +136,8 @@ describe('Relationships', () => { savedObject: { id: '1', type: 'search', + attributes: {}, + references: [], meta: { title: 'MySearch', icon: 'search', @@ -164,8 +166,10 @@ describe('Relationships', () => { }); it('should render visualizations normally', async () => { - const props = { + const props: RelationshipsProps = { goInspectObject: () => {}, + canGoInApp: () => true, + basePath: httpServiceMock.createSetupContract().basePath, getRelationships: jest.fn().mockImplementation(() => [ { type: 'dashboard', @@ -199,6 +203,8 @@ describe('Relationships', () => { savedObject: { id: '1', type: 'visualization', + attributes: {}, + references: [], meta: { title: 'MyViz', icon: 'visualizeApp', @@ -227,8 +233,10 @@ describe('Relationships', () => { }); it('should render dashboards normally', async () => { - const props = { + const props: RelationshipsProps = { goInspectObject: () => {}, + canGoInApp: () => true, + basePath: httpServiceMock.createSetupContract().basePath, getRelationships: jest.fn().mockImplementation(() => [ { type: 'visualization', @@ -262,6 +270,8 @@ describe('Relationships', () => { savedObject: { id: '1', type: 'dashboard', + attributes: {}, + references: [], meta: { title: 'MyDashboard', icon: 'dashboardApp', @@ -290,14 +300,18 @@ describe('Relationships', () => { }); it('should render errors', async () => { - const props = { + const props: RelationshipsProps = { goInspectObject: () => {}, + canGoInApp: () => true, + basePath: httpServiceMock.createSetupContract().basePath, getRelationships: jest.fn().mockImplementation(() => { throw new Error('foo'); }), savedObject: { id: '1', type: 'dashboard', + attributes: {}, + references: [], meta: { title: 'MyDashboard', icon: 'dashboardApp', diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/relationships.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx similarity index 75% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/relationships.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx index ce3415ad2f0e78..ddb262138d5655 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/relationships/relationships.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.tsx @@ -18,8 +18,6 @@ */ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; - import { EuiTitle, EuiFlyout, @@ -34,25 +32,34 @@ import { EuiText, EuiSpacer, } from '@elastic/eui'; -import chrome from 'ui/chrome'; +import { FilterConfig } from '@elastic/eui/src/components/search_bar/filters/filters'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { getDefaultTitle, getSavedObjectLabel } from '../../../../lib'; +import { IBasePath } from 'src/core/public'; +import { getDefaultTitle, getSavedObjectLabel } from '../../../lib'; +import { SavedObjectWithMetadata, SavedObjectRelation } from '../../../types'; + +export interface RelationshipsProps { + basePath: IBasePath; + getRelationships: (type: string, id: string) => Promise; + savedObject: SavedObjectWithMetadata; + close: () => void; + goInspectObject: (obj: SavedObjectWithMetadata) => void; + canGoInApp: (obj: SavedObjectWithMetadata) => boolean; +} -export class Relationships extends Component { - static propTypes = { - getRelationships: PropTypes.func.isRequired, - savedObject: PropTypes.object.isRequired, - close: PropTypes.func.isRequired, - goInspectObject: PropTypes.func.isRequired, - canGoInApp: PropTypes.func.isRequired, - }; +export interface RelationshipsState { + relationships: SavedObjectRelation[]; + isLoading: boolean; + error?: string; +} - constructor(props) { +export class Relationships extends Component { + constructor(props: RelationshipsProps) { super(props); this.state = { - relationships: undefined, + relationships: [], isLoading: false, error: undefined, }; @@ -62,7 +69,7 @@ export class Relationships extends Component { this.getRelationshipData(); } - UNSAFE_componentWillReceiveProps(nextProps) { + UNSAFE_componentWillReceiveProps(nextProps: RelationshipsProps) { if (nextProps.savedObject.id !== this.props.savedObject.id) { this.getRelationshipData(); } @@ -92,7 +99,7 @@ export class Relationships extends Component { } @@ -104,7 +111,7 @@ export class Relationships extends Component { } renderRelationships() { - const { goInspectObject, savedObject } = this.props; + const { goInspectObject, savedObject, basePath } = this.props; const { relationships, isLoading, error } = this.state; if (error) { @@ -118,17 +125,17 @@ export class Relationships extends Component { const columns = [ { field: 'type', - name: i18n.translate('kbn.management.objects.objectsTable.relationships.columnTypeName', { + name: i18n.translate('savedObjectsManagement.objectsTable.relationships.columnTypeName', { defaultMessage: 'Type', }), width: '50px', align: 'center', description: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.columnTypeDescription', + 'savedObjectsManagement.objectsTable.relationships.columnTypeDescription', { defaultMessage: 'Type of the saved object' } ), sortable: false, - render: (type, object) => { + render: (type: string, object: SavedObjectWithMetadata) => { return ( { + render: (relationship: string) => { if (relationship === 'parent') { return ( @@ -166,7 +173,7 @@ export class Relationships extends Component { return ( @@ -176,17 +183,17 @@ export class Relationships extends Component { }, { field: 'meta.title', - name: i18n.translate('kbn.management.objects.objectsTable.relationships.columnTitleName', { + name: i18n.translate('savedObjectsManagement.objectsTable.relationships.columnTitleName', { defaultMessage: 'Title', }), description: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.columnTitleDescription', + 'savedObjectsManagement.objectsTable.relationships.columnTitleDescription', { defaultMessage: 'Title of the saved object' } ), dataType: 'string', sortable: false, - render: (title, object) => { - const { path } = object.meta.inAppUrl || {}; + render: (title: string, object: SavedObjectWithMetadata) => { + const { path = '' } = object.meta.inAppUrl || {}; const canGoInApp = this.props.canGoInApp(object); if (!canGoInApp) { return ( @@ -196,7 +203,7 @@ export class Relationships extends Component { ); } return ( - + {title || getDefaultTitle(object)} ); @@ -204,24 +211,24 @@ export class Relationships extends Component { }, { name: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.columnActionsName', + 'savedObjectsManagement.objectsTable.relationships.columnActionsName', { defaultMessage: 'Actions' } ), actions: [ { name: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.columnActions.inspectActionName', + 'savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionName', { defaultMessage: 'Inspect' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.columnActions.inspectActionDescription', + 'savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionDescription', { defaultMessage: 'Inspect this saved object' } ), type: 'icon', icon: 'inspect', 'data-test-subj': 'relationshipsTableAction-inspect', - onClick: object => goInspectObject(object), - available: object => !!object.meta.editUrl, + onClick: (object: SavedObjectWithMetadata) => goInspectObject(object), + available: (object: SavedObjectWithMetadata) => !!object.meta.editUrl, }, ], }, @@ -244,7 +251,7 @@ export class Relationships extends Component { type: 'field_value_selection', field: 'relationship', name: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.search.filters.relationship.name', + 'savedObjectsManagement.objectsTable.relationships.search.filters.relationship.name', { defaultMessage: 'Direct relationship' } ), multiSelect: 'or', @@ -253,7 +260,7 @@ export class Relationships extends Component { value: 'parent', name: 'parent', view: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.search.filters.relationship.parentAsValue.view', + 'savedObjectsManagement.objectsTable.relationships.search.filters.relationship.parentAsValue.view', { defaultMessage: 'Parent' } ), }, @@ -261,7 +268,7 @@ export class Relationships extends Component { value: 'child', name: 'child', view: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.search.filters.relationship.childAsValue.view', + 'savedObjectsManagement.objectsTable.relationships.search.filters.relationship.childAsValue.view', { defaultMessage: 'Child' } ), }, @@ -271,13 +278,13 @@ export class Relationships extends Component { type: 'field_value_selection', field: 'type', name: i18n.translate( - 'kbn.management.objects.objectsTable.relationships.search.filters.type.name', + 'savedObjectsManagement.objectsTable.relationships.search.filters.type.name', { defaultMessage: 'Type' } ), multiSelect: 'or', options: [...filterTypesMap.values()], }, - ], + ] as FilterConfig[], }; return ( @@ -285,7 +292,7 @@ export class Relationships extends Component {

    {i18n.translate( - 'kbn.management.objects.objectsTable.relationships.relationshipsTitle', + 'savedObjectsManagement.objectsTable.relationships.relationshipsTitle', { defaultMessage: 'Here are the saved objects related to {title}. ' + @@ -301,7 +308,7 @@ export class Relationships extends Component { ({ diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/table.test.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx similarity index 87% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/table.test.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx index 9b3e2314c9f84a..356f227773610f 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/__jest__/table.test.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx @@ -19,27 +19,22 @@ import React from 'react'; import { shallowWithI18nProvider, mountWithI18nProvider } from 'test_utils/enzyme_helpers'; +// @ts-ignore import { findTestSubject } from '@elastic/eui/lib/test'; -import { keyCodes } from '@elastic/eui/lib/services'; -import { npSetup as mockNpSetup } from '../../../../../../../../../../../ui/public/new_platform/__mocks__'; +import { keyCodes } from '@elastic/eui'; +import { httpServiceMock } from '../../../../../../core/public/mocks'; +import { actionServiceMock } from '../../../services/action_service.mock'; +import { Table, TableProps } from './table'; -jest.mock('ui/kfetch', () => ({ kfetch: jest.fn() })); - -jest.mock('ui/chrome', () => ({ - addBasePath: () => '', -})); - -jest.mock('ui/new_platform', () => ({ - npSetup: mockNpSetup, -})); - -import { Table } from '../table'; - -const defaultProps = { +const defaultProps: TableProps = { + basePath: httpServiceMock.createSetupContract().basePath, + actionRegistry: actionServiceMock.createStart(), selectedSavedObjects: [ { id: '1', type: 'index-pattern', + attributes: {}, + references: [], meta: { title: `MyIndexPattern*`, icon: 'indexPatternApp', @@ -58,13 +53,15 @@ const defaultProps = { onDelete: () => {}, onExport: () => {}, goInspectObject: () => {}, - canGoInApp: () => {}, + canGoInApp: () => true, pageIndex: 1, pageSize: 2, items: [ { id: '1', type: 'index-pattern', + attributes: {}, + references: [], meta: { title: `MyIndexPattern*`, icon: 'indexPatternApp', @@ -120,7 +117,7 @@ describe('Table', () => { { type: 'visualization' }, { type: 'search' }, { type: 'index-pattern' }, - ]; + ] as any; const customizedProps = { ...defaultProps, selectedSavedObjects, canDelete: false }; const component = shallowWithI18nProvider(

); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/table.js b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx similarity index 71% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/table.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx index 132fa1e691c1cb..5b574e4b3d331f 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/table.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx @@ -17,12 +17,10 @@ * under the License. */ -import chrome from 'ui/chrome'; -import { npSetup } from 'ui/new_platform'; +import { IBasePath } from 'src/core/public'; import React, { PureComponent, Fragment } from 'react'; -import PropTypes from 'prop-types'; - import { + // @ts-ignore EuiSearchBar, EuiBasicTable, EuiButton, @@ -35,54 +33,64 @@ import { EuiSwitch, EuiFormRow, EuiText, + EuiTableFieldDataColumnType, + EuiTableActionsColumnType, } from '@elastic/eui'; -import { getDefaultTitle, getSavedObjectLabel } from '../../../../lib'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { getDefaultTitle, getSavedObjectLabel } from '../../../lib'; +import { SavedObjectWithMetadata } from '../../../types'; +import { + SavedObjectsManagementActionServiceStart, + SavedObjectsManagementAction, +} from '../../../services'; -export class Table extends PureComponent { - static propTypes = { - selectedSavedObjects: PropTypes.array.isRequired, - selectionConfig: PropTypes.shape({ - selectable: PropTypes.func, - selectableMessage: PropTypes.func, - onSelectionChange: PropTypes.func.isRequired, - }).isRequired, - filterOptions: PropTypes.array.isRequired, - canDelete: PropTypes.bool.isRequired, - onDelete: PropTypes.func.isRequired, - onExport: PropTypes.func.isRequired, - goInspectObject: PropTypes.func.isRequired, - - pageIndex: PropTypes.number.isRequired, - pageSize: PropTypes.number.isRequired, - items: PropTypes.array.isRequired, - itemId: PropTypes.oneOfType([ - PropTypes.string, // the name of the item id property - PropTypes.func, // (item) => string - ]), - totalItemCount: PropTypes.number.isRequired, - onQueryChange: PropTypes.func.isRequired, - onTableChange: PropTypes.func.isRequired, - isSearching: PropTypes.bool.isRequired, - - onShowRelationships: PropTypes.func.isRequired, +export interface TableProps { + basePath: IBasePath; + actionRegistry: SavedObjectsManagementActionServiceStart; + selectedSavedObjects: SavedObjectWithMetadata[]; + selectionConfig: { + onSelectionChange: (selection: SavedObjectWithMetadata[]) => void; }; + filterOptions: any[]; + canDelete: boolean; + onDelete: () => void; + onExport: (includeReferencesDeep: boolean) => void; + goInspectObject: (obj: SavedObjectWithMetadata) => void; + pageIndex: number; + pageSize: number; + items: SavedObjectWithMetadata[]; + itemId: string | (() => string); + totalItemCount: number; + onQueryChange: (query: any) => void; + onTableChange: (table: any) => void; + isSearching: boolean; + onShowRelationships: (object: SavedObjectWithMetadata) => void; + canGoInApp: (obj: SavedObjectWithMetadata) => boolean; +} + +interface TableState { + isSearchTextValid: boolean; + parseErrorMessage: any; + isExportPopoverOpen: boolean; + isIncludeReferencesDeepChecked: boolean; + activeAction?: SavedObjectsManagementAction; +} - state = { +export class Table extends PureComponent { + state: TableState = { isSearchTextValid: true, parseErrorMessage: null, isExportPopoverOpen: false, isIncludeReferencesDeepChecked: true, - activeAction: null, + activeAction: undefined, }; - constructor(props) { + constructor(props: TableProps) { super(props); - this.extraActions = npSetup.plugins.savedObjectsManagement.actionRegistry.getAll(); } - onChange = ({ query, error }) => { + onChange = ({ query, error }: any) => { if (error) { this.setState({ isSearchTextValid: false, @@ -136,12 +144,14 @@ export class Table extends PureComponent { onTableChange, goInspectObject, onShowRelationships, + basePath, + actionRegistry, } = this.props; const pagination = { - pageIndex: pageIndex, - pageSize: pageSize, - totalItemCount: totalItemCount, + pageIndex, + pageSize, + totalItemCount, pageSizeOptions: [5, 10, 20, 50], }; @@ -149,7 +159,7 @@ export class Table extends PureComponent { { type: 'field_value_selection', field: 'type', - name: i18n.translate('kbn.management.objects.objectsTable.table.typeFilterName', { + name: i18n.translate('savedObjectsManagement.objectsTable.table.typeFilterName', { defaultMessage: 'Type', }), multiSelect: 'or', @@ -168,18 +178,18 @@ export class Table extends PureComponent { const columns = [ { field: 'type', - name: i18n.translate('kbn.management.objects.objectsTable.table.columnTypeName', { + name: i18n.translate('savedObjectsManagement.objectsTable.table.columnTypeName', { defaultMessage: 'Type', }), width: '50px', align: 'center', description: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnTypeDescription', + 'savedObjectsManagement.objectsTable.table.columnTypeDescription', { defaultMessage: 'Type of the saved object' } ), sortable: false, 'data-test-subj': 'savedObjectsTableRowType', - render: (type, object) => { + render: (type: string, object: SavedObjectWithMetadata) => { return ( ); }, - }, + } as EuiTableFieldDataColumnType>, { field: 'meta.title', - name: i18n.translate('kbn.management.objects.objectsTable.table.columnTitleName', { + name: i18n.translate('savedObjectsManagement.objectsTable.table.columnTitleName', { defaultMessage: 'Title', }), description: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnTitleDescription', + 'savedObjectsManagement.objectsTable.table.columnTitleDescription', { defaultMessage: 'Title of the saved object' } ), dataType: 'string', sortable: false, 'data-test-subj': 'savedObjectsTableRowTitle', - render: (title, object) => { - const { path } = object.meta.inAppUrl || {}; + render: (title: string, object: SavedObjectWithMetadata) => { + const { path = '' } = object.meta.inAppUrl || {}; const canGoInApp = this.props.canGoInApp(object); if (!canGoInApp) { return {title || getDefaultTitle(object)}; } return ( - {title || getDefaultTitle(object)} + {title || getDefaultTitle(object)} ); }, - }, + } as EuiTableFieldDataColumnType>, { - name: i18n.translate('kbn.management.objects.objectsTable.table.columnActionsName', { + name: i18n.translate('savedObjectsManagement.objectsTable.table.columnActionsName', { defaultMessage: 'Actions', }), actions: [ { name: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnActions.inspectActionName', + 'savedObjectsManagement.objectsTable.table.columnActions.inspectActionName', { defaultMessage: 'Inspect' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnActions.inspectActionDescription', + 'savedObjectsManagement.objectsTable.table.columnActions.inspectActionDescription', { defaultMessage: 'Inspect this saved object' } ), type: 'icon', @@ -237,11 +247,11 @@ export class Table extends PureComponent { }, { name: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionName', + 'savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionName', { defaultMessage: 'Relationships' } ), description: i18n.translate( - 'kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionDescription', + 'savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionDescription', { defaultMessage: 'View the relationships this saved object has to other saved objects', @@ -252,33 +262,35 @@ export class Table extends PureComponent { onClick: object => onShowRelationships(object), 'data-test-subj': 'savedObjectsTableAction-relationships', }, - ...this.extraActions.map(action => { + ...actionRegistry.getAll().map(action => { return { ...action.euiAction, 'data-test-subj': `savedObjectsTableAction-${action.id}`, - onClick: object => { + onClick: (object: SavedObjectWithMetadata) => { this.setState({ activeAction: action, }); action.registerOnFinishCallback(() => { this.setState({ - activeAction: null, + activeAction: undefined, }); }); - action.euiAction.onClick(object); + if (action.euiAction.onClick) { + action.euiAction.onClick(object as any); + } }, }; }), ], - }, + } as EuiTableActionsColumnType, ]; let queryParseError; if (!this.state.isSearchTextValid) { const parseErrorMsg = i18n.translate( - 'kbn.management.objects.objectsTable.searchBar.unableToParseQueryErrorMessage', + 'savedObjectsManagement.objectsTable.searchBar.unableToParseQueryErrorMessage', { defaultMessage: 'Unable to parse query' } ); queryParseError = ( @@ -294,20 +306,20 @@ export class Table extends PureComponent { isDisabled={selectedSavedObjects.length === 0} > ); - const activeActionContents = this.state.activeAction ? this.state.activeAction.render() : null; + const activeActionContents = this.state.activeAction?.render() ?? null; return ( {activeActionContents} , @@ -339,7 +351,7 @@ export class Table extends PureComponent { } @@ -348,7 +360,7 @@ export class Table extends PureComponent { name="includeReferencesDeep" label={ } @@ -359,7 +371,7 @@ export class Table extends PureComponent { @@ -374,7 +386,7 @@ export class Table extends PureComponent { loading={isSearching} itemId={itemId} items={items} - columns={columns} + columns={columns as any} pagination={pagination} selection={selection} onChange={onTableChange} diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/index.js b/src/plugins/saved_objects_management/public/management_section/objects_table/index.ts similarity index 93% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/index.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/index.ts index e1195c6edfe317..8777b153896903 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/components/table/index.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { Table } from './table'; +export { SavedObjectsTable } from './saved_objects_table'; diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.mocks.ts b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.mocks.ts new file mode 100644 index 00000000000000..6b4659a6b5a13e --- /dev/null +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.mocks.ts @@ -0,0 +1,67 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const saveAsMock = jest.fn(); +jest.doMock('@elastic/filesaver', () => ({ + saveAs: saveAsMock, +})); + +jest.doMock('lodash', () => ({ + ...jest.requireActual('lodash'), + debounce: (func: Function) => { + function debounced(this: any, ...args: any[]) { + return func.apply(this, args); + } + return debounced; + }, +})); + +export const findObjectsMock = jest.fn(); +jest.doMock('../../lib/find_objects', () => ({ + findObjects: findObjectsMock, +})); + +export const fetchExportObjectsMock = jest.fn(); +jest.doMock('../../lib/fetch_export_objects', () => ({ + fetchExportObjects: fetchExportObjectsMock, +})); + +export const fetchExportByTypeAndSearchMock = jest.fn(); +jest.doMock('../../lib/fetch_export_by_type_and_search', () => ({ + fetchExportByTypeAndSearch: fetchExportByTypeAndSearchMock, +})); + +export const extractExportDetailsMock = jest.fn(); +jest.doMock('../../lib/extract_export_details', () => ({ + extractExportDetails: extractExportDetailsMock, +})); + +jest.doMock('./components/header', () => ({ + Header: () => 'Header', +})); + +export const getSavedObjectCountsMock = jest.fn(); +jest.doMock('../../lib/get_saved_object_counts', () => ({ + getSavedObjectCounts: getSavedObjectCountsMock, +})); + +export const getRelationshipsMock = jest.fn(); +jest.doMock('../../lib/get_relationships', () => ({ + getRelationships: getRelationshipsMock, +})); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/objects_table.test.js b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx similarity index 58% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/objects_table.test.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx index 7b9c17640a0f3e..342fdc4784b098 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/__jest__/objects_table.test.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx @@ -17,69 +17,39 @@ * under the License. */ +import { + extractExportDetailsMock, + fetchExportByTypeAndSearchMock, + fetchExportObjectsMock, + findObjectsMock, + getRelationshipsMock, + getSavedObjectCountsMock, + saveAsMock, +} from './saved_objects_table.test.mocks'; + import React from 'react'; -import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; -import { mockManagementPlugin } from '../../../../../../../../../../plugins/index_pattern_management/public/mocks'; import { Query } from '@elastic/eui'; - -import { ObjectsTable, POSSIBLE_TYPES } from '../objects_table'; -import { Flyout } from '../components/flyout/'; -import { Relationships } from '../components/relationships/'; -import { findObjects } from '../../../lib'; -import { extractExportDetails } from '../../../lib/extract_export_details'; - -jest.mock('ui/kfetch', () => ({ kfetch: jest.fn() })); - -jest.mock('../../../../../../../../../../plugins/index_pattern_management/public', () => ({ - setup: mockManagementPlugin.createSetupContract(), - start: mockManagementPlugin.createStartContract(), -})); - -jest.mock('../../../lib/find_objects', () => ({ - findObjects: jest.fn(), -})); - -jest.mock('../components/header', () => ({ - Header: () => 'Header', -})); - -jest.mock('ui/chrome', () => ({ - addBasePath: () => '', - getInjected: () => ['index-pattern', 'visualization', 'dashboard', 'search'], -})); - -jest.mock('../../../lib/fetch_export_objects', () => ({ - fetchExportObjects: jest.fn(), -})); - -jest.mock('../../../lib/fetch_export_by_type_and_search', () => ({ - fetchExportByTypeAndSearch: jest.fn(), -})); - -jest.mock('../../../lib/extract_export_details', () => ({ - extractExportDetails: jest.fn(), -})); - -jest.mock('../../../lib/get_saved_object_counts', () => ({ - getSavedObjectCounts: jest.fn().mockImplementation(() => { - return { - 'index-pattern': 0, - visualization: 0, - dashboard: 0, - search: 0, - }; - }), -})); - -jest.mock('@elastic/filesaver', () => ({ - saveAs: jest.fn(), -})); - -jest.mock('../../../lib/get_relationships', () => ({ - getRelationships: jest.fn(), -})); - -jest.mock('ui/notify', () => ({})); +import { ShallowWrapper } from 'enzyme'; +import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; +import { + httpServiceMock, + overlayServiceMock, + notificationServiceMock, + savedObjectsServiceMock, + applicationServiceMock, +} from '../../../../../core/public/mocks'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import { serviceRegistryMock } from '../../services/service_registry.mock'; +import { actionServiceMock } from '../../services/action_service.mock'; +import { + SavedObjectsTable, + SavedObjectsTableProps, + SavedObjectsTableState, +} from './saved_objects_table'; +import { Flyout, Relationships } from './components'; +import { SavedObjectWithMetadata } from '../../types'; + +const allowedTypes = ['index-pattern', 'visualization', 'dashboard', 'search']; const allSavedObjects = [ { @@ -112,122 +82,128 @@ const allSavedObjects = [ }, ]; -const $http = () => {}; -$http.post = jest.fn().mockImplementation(() => []); -const defaultProps = { - goInspectObject: () => {}, - confirmModalPromise: jest.fn(), - savedObjectsClient: { - find: jest.fn(), - bulkGet: jest.fn(), - }, - indexPatterns: { - clearCache: jest.fn(), - }, - $http, - basePath: '', - newIndexPatternUrl: '', - kbnIndex: '', - services: [], - uiCapabilities: { - savedObjectsManagement: { - read: true, - edit: false, - delete: false, - }, - }, - canDelete: true, -}; - -beforeEach(() => { - findObjects.mockImplementation(() => ({ - total: 4, - savedObjects: [ - { - id: '1', - type: 'index-pattern', - meta: { - title: `MyIndexPattern*`, - icon: 'indexPatternApp', - editUrl: '#/management/kibana/index_patterns/1', - inAppUrl: { - path: '/management/kibana/index_patterns/1', - uiCapabilitiesPath: 'management.kibana.index_patterns', +describe('SavedObjectsTable', () => { + let defaultProps: SavedObjectsTableProps; + let http: ReturnType; + let overlays: ReturnType; + let notifications: ReturnType; + let savedObjects: ReturnType; + + const shallowRender = (overrides: Partial = {}) => { + return (shallowWithI18nProvider( + + ) as unknown) as ShallowWrapper< + SavedObjectsTableProps, + SavedObjectsTableState, + SavedObjectsTable + >; + }; + + beforeEach(() => { + extractExportDetailsMock.mockReset(); + + http = httpServiceMock.createStartContract(); + overlays = overlayServiceMock.createStartContract(); + notifications = notificationServiceMock.createStartContract(); + savedObjects = savedObjectsServiceMock.createStartContract(); + + const applications = applicationServiceMock.createStartContract(); + applications.capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + savedObjectsManagement: { + read: true, + edit: false, + delete: false, + }, + }; + + http.post.mockResolvedValue([]); + + getSavedObjectCountsMock.mockReturnValue({ + 'index-pattern': 0, + visualization: 0, + dashboard: 0, + search: 0, + }); + + defaultProps = { + allowedTypes, + serviceRegistry: serviceRegistryMock.create(), + actionRegistry: actionServiceMock.createStart(), + savedObjectsClient: savedObjects.client, + indexPatterns: dataPluginMock.createStartContract().indexPatterns, + http, + overlays, + notifications, + applications, + perPageConfig: 15, + goInspectObject: () => {}, + canGoInApp: () => true, + }; + + findObjectsMock.mockImplementation(() => ({ + total: 4, + savedObjects: [ + { + id: '1', + type: 'index-pattern', + meta: { + title: `MyIndexPattern*`, + icon: 'indexPatternApp', + editUrl: '#/management/kibana/index_patterns/1', + inAppUrl: { + path: '/management/kibana/index_patterns/1', + uiCapabilitiesPath: 'management.kibana.index_patterns', + }, }, }, - }, - { - id: '2', - type: 'search', - meta: { - title: `MySearch`, - icon: 'search', - editUrl: '#/management/kibana/objects/savedSearches/2', - inAppUrl: { - path: '/discover/2', - uiCapabilitiesPath: 'discover.show', + { + id: '2', + type: 'search', + meta: { + title: `MySearch`, + icon: 'search', + editUrl: '#/management/kibana/objects/savedSearches/2', + inAppUrl: { + path: '/discover/2', + uiCapabilitiesPath: 'discover.show', + }, }, }, - }, - { - id: '3', - type: 'dashboard', - meta: { - title: `MyDashboard`, - icon: 'dashboardApp', - editUrl: '#/management/kibana/objects/savedDashboards/3', - inAppUrl: { - path: '/dashboard/3', - uiCapabilitiesPath: 'dashboard.show', + { + id: '3', + type: 'dashboard', + meta: { + title: `MyDashboard`, + icon: 'dashboardApp', + editUrl: '#/management/kibana/objects/savedDashboards/3', + inAppUrl: { + path: '/dashboard/3', + uiCapabilitiesPath: 'dashboard.show', + }, }, }, - }, - { - id: '4', - type: 'visualization', - meta: { - title: `MyViz`, - icon: 'visualizeApp', - editUrl: '#/management/kibana/objects/savedVisualizations/4', - inAppUrl: { - path: '/visualize/edit/4', - uiCapabilitiesPath: 'visualize.show', + { + id: '4', + type: 'visualization', + meta: { + title: `MyViz`, + icon: 'visualizeApp', + editUrl: '#/management/kibana/objects/savedVisualizations/4', + inAppUrl: { + path: '/visualize/edit/4', + uiCapabilitiesPath: 'visualize.show', + }, }, }, - }, - ], - })); -}); - -let addDangerMock; -let addSuccessMock; -let addWarningMock; - -describe('ObjectsTable', () => { - beforeEach(() => { - defaultProps.savedObjectsClient.find.mockClear(); - extractExportDetails.mockReset(); - // mock _.debounce to fire immediately with no internal timer - require('lodash').debounce = func => { - function debounced(...args) { - return func.apply(this, args); - } - return debounced; - }; - addDangerMock = jest.fn(); - addSuccessMock = jest.fn(); - addWarningMock = jest.fn(); - require('ui/notify').toastNotifications = { - addDanger: addDangerMock, - addSuccess: addSuccessMock, - addWarning: addWarningMock, - }; + ], + })); }); it('should render normally', async () => { - const component = shallowWithI18nProvider( - - ); + const component = shallowRender({ perPageConfig: 15 }); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -238,19 +214,17 @@ describe('ObjectsTable', () => { }); it('should add danger toast when find fails', async () => { - findObjects.mockImplementation(() => { + findObjectsMock.mockImplementation(() => { throw new Error('Simulated find error'); }); - const component = shallowWithI18nProvider( - - ); + const component = shallowRender({ perPageConfig: 15 }); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); // Ensure the state changes are reflected component.update(); - expect(addDangerMock).toHaveBeenCalled(); + expect(notifications.toasts.addDanger).toHaveBeenCalled(); }); describe('export', () => { @@ -258,7 +232,7 @@ describe('ObjectsTable', () => { const mockSelectedSavedObjects = [ { id: '1', type: 'index-pattern' }, { id: '3', type: 'dashboard' }, - ]; + ] as SavedObjectWithMetadata[]; const mockSavedObjects = mockSelectedSavedObjects.map(obj => ({ _id: obj.id, @@ -272,11 +246,7 @@ describe('ObjectsTable', () => { })), }; - const { fetchExportObjects } = require('../../../lib/fetch_export_objects'); - - const component = shallowWithI18nProvider( - - ); + const component = shallowRender({ savedObjectsClient: mockSavedObjectsClient }); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -288,8 +258,8 @@ describe('ObjectsTable', () => { await component.instance().onExport(true); - expect(fetchExportObjects).toHaveBeenCalledWith(mockSelectedSavedObjects, true); - expect(addSuccessMock).toHaveBeenCalledWith({ + expect(fetchExportObjectsMock).toHaveBeenCalledWith(http, mockSelectedSavedObjects, true); + expect(notifications.toasts.addSuccess).toHaveBeenCalledWith({ title: 'Your file is downloading in the background', }); }); @@ -298,7 +268,7 @@ describe('ObjectsTable', () => { const mockSelectedSavedObjects = [ { id: '1', type: 'index-pattern' }, { id: '3', type: 'dashboard' }, - ]; + ] as SavedObjectWithMetadata[]; const mockSavedObjects = mockSelectedSavedObjects.map(obj => ({ _id: obj.id, @@ -312,16 +282,13 @@ describe('ObjectsTable', () => { })), }; - const { fetchExportObjects } = require('../../../lib/fetch_export_objects'); - extractExportDetails.mockImplementation(() => ({ + extractExportDetailsMock.mockImplementation(() => ({ exportedCount: 2, missingRefCount: 1, missingReferences: [{ id: '7', type: 'visualisation' }], })); - const component = shallowWithI18nProvider( - - ); + const component = shallowRender({ savedObjectsClient: mockSavedObjectsClient }); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -333,8 +300,8 @@ describe('ObjectsTable', () => { await component.instance().onExport(true); - expect(fetchExportObjects).toHaveBeenCalledWith(mockSelectedSavedObjects, true); - expect(addWarningMock).toHaveBeenCalledWith({ + expect(fetchExportObjectsMock).toHaveBeenCalledWith(http, mockSelectedSavedObjects, true); + expect(notifications.toasts.addWarning).toHaveBeenCalledWith({ title: 'Your file is downloading in the background. ' + 'Some related objects could not be found. ' + @@ -343,25 +310,21 @@ describe('ObjectsTable', () => { }); it('should allow the user to choose when exporting all', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); // Ensure the state changes are reflected component.update(); - component.find('Header').prop('onExportAll')(); + (component.find('Header') as any).prop('onExportAll')(); component.update(); expect(component.find('EuiModal')).toMatchSnapshot(); }); it('should export all', async () => { - const { - fetchExportByTypeAndSearch, - } = require('../../../lib/fetch_export_by_type_and_search'); - const { saveAs } = require('@elastic/filesaver'); - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -370,23 +333,24 @@ describe('ObjectsTable', () => { // Set up mocks const blob = new Blob([JSON.stringify(allSavedObjects)], { type: 'application/ndjson' }); - fetchExportByTypeAndSearch.mockImplementation(() => blob); + fetchExportByTypeAndSearchMock.mockImplementation(() => blob); await component.instance().onExportAll(); - expect(fetchExportByTypeAndSearch).toHaveBeenCalledWith(POSSIBLE_TYPES, undefined, true); - expect(saveAs).toHaveBeenCalledWith(blob, 'export.ndjson'); - expect(addSuccessMock).toHaveBeenCalledWith({ + expect(fetchExportByTypeAndSearchMock).toHaveBeenCalledWith( + http, + allowedTypes, + undefined, + true + ); + expect(saveAsMock).toHaveBeenCalledWith(blob, 'export.ndjson'); + expect(notifications.toasts.addSuccess).toHaveBeenCalledWith({ title: 'Your file is downloading in the background', }); }); it('should export all, accounting for the current search criteria', async () => { - const { - fetchExportByTypeAndSearch, - } = require('../../../lib/fetch_export_by_type_and_search'); - const { saveAs } = require('@elastic/filesaver'); - const component = shallowWithI18nProvider(); + const component = shallowRender(); component.instance().onQueryChange({ query: Query.parse('test'), @@ -399,13 +363,18 @@ describe('ObjectsTable', () => { // Set up mocks const blob = new Blob([JSON.stringify(allSavedObjects)], { type: 'application/ndjson' }); - fetchExportByTypeAndSearch.mockImplementation(() => blob); + fetchExportByTypeAndSearchMock.mockImplementation(() => blob); await component.instance().onExportAll(); - expect(fetchExportByTypeAndSearch).toHaveBeenCalledWith(POSSIBLE_TYPES, 'test*', true); - expect(saveAs).toHaveBeenCalledWith(blob, 'export.ndjson'); - expect(addSuccessMock).toHaveBeenCalledWith({ + expect(fetchExportByTypeAndSearchMock).toHaveBeenCalledWith( + http, + allowedTypes, + 'test*', + true + ); + expect(saveAsMock).toHaveBeenCalledWith(blob, 'export.ndjson'); + expect(notifications.toasts.addSuccess).toHaveBeenCalledWith({ title: 'Your file is downloading in the background', }); }); @@ -413,7 +382,7 @@ describe('ObjectsTable', () => { describe('import', () => { it('should show the flyout', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -427,7 +396,7 @@ describe('ObjectsTable', () => { }); it('should hide the flyout', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -443,9 +412,7 @@ describe('ObjectsTable', () => { describe('relationships', () => { it('should fetch relationships', async () => { - const { getRelationships } = require('../../../lib/get_relationships'); - - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -454,17 +421,11 @@ describe('ObjectsTable', () => { await component.instance().getRelationships('search', '1'); const savedObjectTypes = ['index-pattern', 'visualization', 'dashboard', 'search']; - expect(getRelationships).toHaveBeenCalledWith( - 'search', - '1', - savedObjectTypes, - defaultProps.$http, - defaultProps.basePath - ); + expect(getRelationshipsMock).toHaveBeenCalledWith(http, 'search', '1', savedObjectTypes); }); it('should show the flyout', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -483,7 +444,7 @@ describe('ObjectsTable', () => { uiCapabilitiesPath: 'discover.show', }, }, - }); + } as SavedObjectWithMetadata); component.update(); expect(component.find(Relationships)).toMatchSnapshot(); @@ -503,7 +464,7 @@ describe('ObjectsTable', () => { }); it('should hide the flyout', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -522,12 +483,12 @@ describe('ObjectsTable', () => { describe('delete', () => { it('should show a confirm modal', async () => { - const component = shallowWithI18nProvider(); + const component = shallowRender(); const mockSelectedSavedObjects = [ - { id: '1', type: 'index-pattern', title: 'Title 1' }, - { id: '3', type: 'dashboard', title: 'Title 2' }, - ]; + { id: '1', type: 'index-pattern' }, + { id: '3', type: 'dashboard' }, + ] as SavedObjectWithMetadata[]; // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); @@ -546,7 +507,7 @@ describe('ObjectsTable', () => { const mockSelectedSavedObjects = [ { id: '1', type: 'index-pattern' }, { id: '3', type: 'dashboard' }, - ]; + ] as SavedObjectWithMetadata[]; const mockSavedObjects = mockSelectedSavedObjects.map(obj => ({ id: obj.id, @@ -562,9 +523,7 @@ describe('ObjectsTable', () => { delete: jest.fn(), }; - const component = shallowWithI18nProvider( - - ); + const component = shallowRender({ savedObjectsClient: mockSavedObjectsClient }); // Ensure all promises resolve await new Promise(resolve => process.nextTick(resolve)); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/objects_table.js b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx similarity index 73% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/objects_table.js rename to src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx index 188762f165b24a..c76fea5a0fb29f 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/components/objects_table/objects_table.js +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx @@ -17,17 +17,10 @@ * under the License. */ -import chrome from 'ui/chrome'; -import { saveAs } from '@elastic/filesaver'; import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { debounce } from 'lodash'; -import { Header } from './components/header'; -import { Flyout } from './components/flyout'; -import { Relationships } from './components/relationships'; -import { Table } from './components/table'; -import { toastNotifications } from 'ui/notify'; - +// @ts-ignore +import { saveAs } from '@elastic/filesaver'; import { EuiSpacer, Query, @@ -54,7 +47,15 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; - +import { + SavedObjectsClientContract, + SavedObjectsFindOptions, + HttpStart, + OverlayStart, + NotificationsStart, + ApplicationStart, +} from 'src/core/public'; +import { IndexPatternsContract } from '../../../../data/public'; import { parseQuery, getSavedObjectCounts, @@ -63,39 +64,72 @@ import { fetchExportObjects, fetchExportByTypeAndSearch, findObjects, + extractExportDetails, + SavedObjectsExportResultDetails, } from '../../lib'; -import { extractExportDetails } from '../../lib/extract_export_details'; - -export const POSSIBLE_TYPES = chrome.getInjected('importAndExportableTypes'); - -export class ObjectsTable extends Component { - static propTypes = { - savedObjectsClient: PropTypes.object.isRequired, - indexPatterns: PropTypes.object.isRequired, - $http: PropTypes.func.isRequired, - basePath: PropTypes.string.isRequired, - perPageConfig: PropTypes.number, - newIndexPatternUrl: PropTypes.string.isRequired, - confirmModalPromise: PropTypes.func.isRequired, - services: PropTypes.array.isRequired, - uiCapabilities: PropTypes.object.isRequired, - goInspectObject: PropTypes.func.isRequired, - canGoInApp: PropTypes.func.isRequired, - }; +import { SavedObjectWithMetadata } from '../../types'; +import { + ISavedObjectsManagementServiceRegistry, + SavedObjectsManagementActionServiceStart, +} from '../../services'; +import { Header, Table, Flyout, Relationships } from './components'; + +interface ExportAllOption { + id: string; + label: string; +} - constructor(props) { +export interface SavedObjectsTableProps { + allowedTypes: string[]; + serviceRegistry: ISavedObjectsManagementServiceRegistry; + actionRegistry: SavedObjectsManagementActionServiceStart; + savedObjectsClient: SavedObjectsClientContract; + indexPatterns: IndexPatternsContract; + http: HttpStart; + overlays: OverlayStart; + notifications: NotificationsStart; + applications: ApplicationStart; + perPageConfig: number; + goInspectObject: (obj: SavedObjectWithMetadata) => void; + canGoInApp: (obj: SavedObjectWithMetadata) => boolean; +} + +export interface SavedObjectsTableState { + totalCount: number; + page: number; + perPage: number; + savedObjects: SavedObjectWithMetadata[]; + savedObjectCounts: Record; + activeQuery: Query; + selectedSavedObjects: SavedObjectWithMetadata[]; + isShowingImportFlyout: boolean; + isSearching: boolean; + filteredItemCount: number; + isShowingRelationships: boolean; + relationshipObject?: SavedObjectWithMetadata; + isShowingDeleteConfirmModal: boolean; + isShowingExportAllOptionsModal: boolean; + isDeleting: boolean; + exportAllOptions: ExportAllOption[]; + exportAllSelectedOptions: Record; + isIncludeReferencesDeepChecked: boolean; +} + +export class SavedObjectsTable extends Component { + private _isMounted = false; + + constructor(props: SavedObjectsTableProps) { super(props); - this.savedObjectTypes = POSSIBLE_TYPES; this.state = { totalCount: 0, page: 0, perPage: props.perPageConfig || 50, savedObjects: [], - savedObjectCounts: this.savedObjectTypes.reduce((typeToCountMap, type) => { + savedObjectCounts: props.allowedTypes.reduce((typeToCountMap, type) => { typeToCountMap[type] = 0; return typeToCountMap; - }, {}), + }, {} as Record), activeQuery: Query.parse(''), selectedSavedObjects: [], isShowingImportFlyout: false, @@ -124,21 +158,20 @@ export class ObjectsTable extends Component { } fetchCounts = async () => { + const { allowedTypes } = this.props; const { queryText, visibleTypes } = parseQuery(this.state.activeQuery); - const filteredTypes = this.savedObjectTypes.filter( - type => !visibleTypes || visibleTypes.includes(type) - ); + const filteredTypes = allowedTypes.filter(type => !visibleTypes || visibleTypes.includes(type)); // These are the saved objects visible in the table. const filteredSavedObjectCounts = await getSavedObjectCounts( - this.props.$http, + this.props.http, filteredTypes, queryText ); - const exportAllOptions = []; - const exportAllSelectedOptions = {}; + const exportAllOptions: ExportAllOption[] = []; + const exportAllSelectedOptions: Record = {}; Object.keys(filteredSavedObjectCounts).forEach(id => { // Add this type as a bulk-export option. @@ -147,17 +180,13 @@ export class ObjectsTable extends Component { label: `${id} (${filteredSavedObjectCounts[id] || 0})`, }); - // Select it by defayult. + // Select it by default. exportAllSelectedOptions[id] = true; }); // Fetch all the saved objects that exist so we can accurately populate the counts within // the table filter dropdown. - const savedObjectCounts = await getSavedObjectCounts( - this.props.$http, - this.savedObjectTypes, - queryText - ); + const savedObjectCounts = await getSavedObjectCounts(this.props.http, allowedTypes, queryText); this.setState(state => ({ ...state, @@ -178,66 +207,64 @@ export class ObjectsTable extends Component { debouncedFetch = debounce(async () => { const { activeQuery: query, page, perPage } = this.state; + const { notifications, http, allowedTypes } = this.props; const { queryText, visibleTypes } = parseQuery(query); // "searchFields" is missing from the "findOptions" but gets injected via the API. // The API extracts the fields from each uiExports.savedObjectsManagement "defaultSearchField" attribute - const findOptions = { + const findOptions: SavedObjectsFindOptions = { search: queryText ? `${queryText}*` : undefined, perPage, page: page + 1, fields: ['id'], - type: this.savedObjectTypes.filter(type => !visibleTypes || visibleTypes.includes(type)), + type: allowedTypes.filter(type => !visibleTypes || visibleTypes.includes(type)), }; if (findOptions.type.length > 1) { findOptions.sortField = 'type'; } - let resp; try { - resp = await findObjects(findOptions); + const resp = await findObjects(http, findOptions); + if (!this._isMounted) { + return; + } + + this.setState(({ activeQuery }) => { + // ignore results for old requests + if (activeQuery.text !== query.text) { + return null; + } + + return { + savedObjects: resp.savedObjects, + filteredItemCount: resp.total, + isSearching: false, + }; + }); } catch (error) { if (this._isMounted) { this.setState({ isSearching: false, }); } - toastNotifications.addDanger({ + notifications.toasts.addDanger({ title: i18n.translate( - 'kbn.management.objects.objectsTable.unableFindSavedObjectsNotificationMessage', + 'savedObjectsManagement.objectsTable.unableFindSavedObjectsNotificationMessage', { defaultMessage: 'Unable find saved objects' } ), text: `${error}`, }); - return; - } - - if (!this._isMounted) { - return; } - - this.setState(({ activeQuery }) => { - // ignore results for old requests - if (activeQuery.text !== query.text) { - return {}; - } - - return { - savedObjects: resp.savedObjects, - filteredItemCount: resp.total, - isSearching: false, - }; - }); }, 300); refreshData = async () => { await Promise.all([this.fetchSavedObjects(), this.fetchCounts()]); }; - onSelectionChanged = selection => { + onSelectionChanged = (selection: SavedObjectWithMetadata[]) => { this.setState({ selectedSavedObjects: selection }); }; - onQueryChange = ({ query }) => { + onQueryChange = ({ query }: { query: Query }) => { // TODO: Use isSameQuery to compare new query with state.activeQuery to avoid re-fetching the // same data we already have. this.setState( @@ -253,7 +280,7 @@ export class ObjectsTable extends Component { ); }; - onTableChange = async table => { + onTableChange = async (table: any) => { const { index: page, size: perPage } = table.page || {}; this.setState( @@ -266,7 +293,7 @@ export class ObjectsTable extends Component { ); }; - onShowRelationships = object => { + onShowRelationships = (object: SavedObjectWithMetadata) => { this.setState({ isShowingRelationships: true, relationshipObject: object, @@ -280,16 +307,17 @@ export class ObjectsTable extends Component { }); }; - onExport = async includeReferencesDeep => { + onExport = async (includeReferencesDeep: boolean) => { const { selectedSavedObjects } = this.state; + const { notifications, http } = this.props; const objectsToExport = selectedSavedObjects.map(obj => ({ id: obj.id, type: obj.type })); let blob; try { - blob = await fetchExportObjects(objectsToExport, includeReferencesDeep); + blob = await fetchExportObjects(http, objectsToExport, includeReferencesDeep); } catch (e) { - toastNotifications.addDanger({ - title: i18n.translate('kbn.management.objects.objectsTable.export.dangerNotification', { + notifications.toasts.addDanger({ + title: i18n.translate('savedObjectsManagement.objectsTable.export.dangerNotification', { defaultMessage: 'Unable to generate export', }), }); @@ -304,24 +332,26 @@ export class ObjectsTable extends Component { onExportAll = async () => { const { exportAllSelectedOptions, isIncludeReferencesDeepChecked, activeQuery } = this.state; + const { notifications, http } = this.props; const { queryText } = parseQuery(activeQuery); const exportTypes = Object.entries(exportAllSelectedOptions).reduce((accum, [id, selected]) => { if (selected) { accum.push(id); } return accum; - }, []); + }, [] as string[]); let blob; try { blob = await fetchExportByTypeAndSearch( + http, exportTypes, queryText ? `${queryText}*` : undefined, isIncludeReferencesDeepChecked ); } catch (e) { - toastNotifications.addDanger({ - title: i18n.translate('kbn.management.objects.objectsTable.export.dangerNotification', { + notifications.toasts.addDanger({ + title: i18n.translate('savedObjectsManagement.objectsTable.export.dangerNotification', { defaultMessage: 'Unable to generate export', }), }); @@ -335,11 +365,12 @@ export class ObjectsTable extends Component { this.setState({ isShowingExportAllOptionsModal: false }); }; - showExportSuccessMessage = exportDetails => { + showExportSuccessMessage = (exportDetails: SavedObjectsExportResultDetails | undefined) => { + const { notifications } = this.props; if (exportDetails && exportDetails.missingReferences.length > 0) { - toastNotifications.addWarning({ + notifications.toasts.addWarning({ title: i18n.translate( - 'kbn.management.objects.objectsTable.export.successWithMissingRefsNotification', + 'savedObjectsManagement.objectsTable.export.successWithMissingRefsNotification', { defaultMessage: 'Your file is downloading in the background. ' + @@ -349,8 +380,8 @@ export class ObjectsTable extends Component { ), }); } else { - toastNotifications.addSuccess({ - title: i18n.translate('kbn.management.objects.objectsTable.export.successNotification', { + notifications.toasts.addSuccess({ + title: i18n.translate('savedObjectsManagement.objectsTable.export.successNotification', { defaultMessage: 'Your file is downloading in the background', }), }); @@ -412,30 +443,30 @@ export class ObjectsTable extends Component { }); }; - getRelationships = async (type, id) => { - return await getRelationships( - type, - id, - this.savedObjectTypes, - this.props.$http, - this.props.basePath - ); + getRelationships = async (type: string, id: string) => { + const { allowedTypes, http } = this.props; + return await getRelationships(http, type, id, allowedTypes); }; renderFlyout() { if (!this.state.isShowingImportFlyout) { return null; } + const { applications } = this.props; + const newIndexPatternUrl = applications.getUrlForApp('kibana', { + path: '#/management/kibana/index_pattern', + }); return ( ); } @@ -447,10 +478,10 @@ export class ObjectsTable extends Component { return ( @@ -482,7 +513,7 @@ export class ObjectsTable extends Component { } @@ -491,19 +522,19 @@ export class ObjectsTable extends Component { buttonColor="danger" cancelButtonText={ } confirmButtonText={ isDeleting ? ( ) : ( ) @@ -512,7 +543,7 @@ export class ObjectsTable extends Component { >

@@ -522,7 +553,7 @@ export class ObjectsTable extends Component { { field: 'type', name: i18n.translate( - 'kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName', + 'savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName', { defaultMessage: 'Type' } ), width: '50px', @@ -535,14 +566,14 @@ export class ObjectsTable extends Component { { field: 'id', name: i18n.translate( - 'kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.idColumnName', + 'savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.idColumnName', { defaultMessage: 'Id' } ), }, { field: 'meta.title', name: i18n.translate( - 'kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName', + 'savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName', { defaultMessage: 'Title' } ), }, @@ -586,7 +617,7 @@ export class ObjectsTable extends Component { } @@ -626,7 +657,7 @@ export class ObjectsTable extends Component { name="includeReferencesDeep" label={ } @@ -641,7 +672,7 @@ export class ObjectsTable extends Component { @@ -649,7 +680,7 @@ export class ObjectsTable extends Component { @@ -673,12 +704,13 @@ export class ObjectsTable extends Component { isSearching, savedObjectCounts, } = this.state; + const { http, allowedTypes, applications } = this.props; const selectionConfig = { onSelectionChange: this.onSelectionChanged, }; - const filterOptions = this.savedObjectTypes.map(type => ({ + const filterOptions = allowedTypes.map(type => ({ value: type, name: type, view: `${type} (${savedObjectCounts[type] || 0})`, @@ -698,14 +730,16 @@ export class ObjectsTable extends Component { />
=> { const mock = { - actionRegistry: actionRegistryMock.create(), + actions: actionServiceMock.createSetup(), + serviceRegistry: serviceRegistryMock.create(), }; return mock; }; const createStartContractMock = (): jest.Mocked => { - const mock = {}; + const mock = { + actions: actionServiceMock.createStart(), + }; return mock; }; export const savedObjectsManagementPluginMock = { - createActionRegistry: actionRegistryMock.create, + createServiceRegistry: serviceRegistryMock.create, createSetupContract: createSetupContractMock, createStartContract: createStartContractMock, }; diff --git a/src/plugins/saved_objects_management/public/plugin.test.ts b/src/plugins/saved_objects_management/public/plugin.test.ts index 1cafbb235ad5b9..09080f46a68694 100644 --- a/src/plugins/saved_objects_management/public/plugin.test.ts +++ b/src/plugins/saved_objects_management/public/plugin.test.ts @@ -20,6 +20,9 @@ import { coreMock } from '../../../core/public/mocks'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { homePluginMock } from '../../home/public/mocks'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { managementPluginMock } from '../../management/public/mocks'; +import { dataPluginMock } from '../../data/public/mocks'; import { SavedObjectsManagementPlugin } from './plugin'; describe('SavedObjectsManagementPlugin', () => { @@ -31,10 +34,13 @@ describe('SavedObjectsManagementPlugin', () => { describe('#setup', () => { it('registers the saved_objects feature to the home plugin', async () => { - const coreSetup = coreMock.createSetup(); + const coreSetup = coreMock.createSetup({ + pluginStartDeps: { data: dataPluginMock.createStartContract() }, + }); const homeSetup = homePluginMock.createSetupContract(); + const managementSetup = managementPluginMock.createSetupContract(); - await plugin.setup(coreSetup, { home: homeSetup }); + await plugin.setup(coreSetup, { home: homeSetup, management: managementSetup }); expect(homeSetup.featureCatalogue.register).toHaveBeenCalledTimes(1); expect(homeSetup.featureCatalogue.register).toHaveBeenCalledWith( diff --git a/src/plugins/saved_objects_management/public/plugin.ts b/src/plugins/saved_objects_management/public/plugin.ts index 3f2e9c166058ea..c8dede3da92631 100644 --- a/src/plugins/saved_objects_management/public/plugin.ts +++ b/src/plugins/saved_objects_management/public/plugin.ts @@ -19,37 +19,59 @@ import { i18n } from '@kbn/i18n'; import { CoreSetup, CoreStart, Plugin } from 'src/core/public'; +import { ManagementSetup } from '../../management/public'; +import { DataPublicPluginStart } from '../../data/public'; +import { DashboardStart } from '../../dashboard/public'; +import { DiscoverStart } from '../../discover/public'; import { HomePublicPluginSetup, FeatureCatalogueCategory } from '../../home/public'; +import { VisualizationsStart } from '../../visualizations/public'; import { - SavedObjectsManagementActionRegistry, - ISavedObjectsManagementActionRegistry, + SavedObjectsManagementActionService, + SavedObjectsManagementActionServiceSetup, + SavedObjectsManagementActionServiceStart, + SavedObjectsManagementServiceRegistry, + ISavedObjectsManagementServiceRegistry, } from './services'; +import { registerServices } from './register_services'; export interface SavedObjectsManagementPluginSetup { - actionRegistry: ISavedObjectsManagementActionRegistry; + actions: SavedObjectsManagementActionServiceSetup; + serviceRegistry: ISavedObjectsManagementServiceRegistry; } -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface SavedObjectsManagementPluginStart {} +export interface SavedObjectsManagementPluginStart { + actions: SavedObjectsManagementActionServiceStart; +} export interface SetupDependencies { + management: ManagementSetup; home: HomePublicPluginSetup; } +export interface StartDependencies { + data: DataPublicPluginStart; + dashboard?: DashboardStart; + visualizations?: VisualizationsStart; + discover?: DiscoverStart; +} + export class SavedObjectsManagementPlugin implements Plugin< SavedObjectsManagementPluginSetup, SavedObjectsManagementPluginStart, SetupDependencies, - {} + StartDependencies > { - private actionRegistry = new SavedObjectsManagementActionRegistry(); + private actionService = new SavedObjectsManagementActionService(); + private serviceRegistry = new SavedObjectsManagementServiceRegistry(); public setup( - core: CoreSetup<{}>, - { home }: SetupDependencies + core: CoreSetup, + { home, management }: SetupDependencies ): SavedObjectsManagementPluginSetup { + const actionSetup = this.actionService.setup(); + home.featureCatalogue.register({ id: 'saved_objects', title: i18n.translate('savedObjectsManagement.objects.savedObjectsTitle', { @@ -65,12 +87,39 @@ export class SavedObjectsManagementPlugin category: FeatureCatalogueCategory.ADMIN, }); + const kibanaSection = management.sections.getSection('kibana'); + if (!kibanaSection) { + throw new Error('`kibana` management section not found.'); + } + kibanaSection.registerApp({ + id: 'objects', + title: i18n.translate('savedObjectsManagement.managementSectionLabel', { + defaultMessage: 'Saved Objects', + }), + order: 10, + mount: async mountParams => { + const { mountManagementSection } = await import('./management_section'); + return mountManagementSection({ + core, + serviceRegistry: this.serviceRegistry, + mountParams, + }); + }, + }); + + // depends on `getStartServices`, should not be awaited + registerServices(this.serviceRegistry, core.getStartServices); + return { - actionRegistry: this.actionRegistry, + actions: actionSetup, + serviceRegistry: this.serviceRegistry, }; } public start(core: CoreStart) { - return {}; + const actionStart = this.actionService.start(); + return { + actions: actionStart, + }; } } diff --git a/src/plugins/saved_objects_management/public/register_services.ts b/src/plugins/saved_objects_management/public/register_services.ts new file mode 100644 index 00000000000000..a34b632b78f6cb --- /dev/null +++ b/src/plugins/saved_objects_management/public/register_services.ts @@ -0,0 +1,59 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { StartServicesAccessor } from '../../../core/public'; +import { SavedObjectsManagementPluginStart, StartDependencies } from './plugin'; +import { ISavedObjectsManagementServiceRegistry } from './services'; + +export const registerServices = async ( + registry: ISavedObjectsManagementServiceRegistry, + getStartServices: StartServicesAccessor +) => { + const [coreStart, { dashboard, data, visualizations, discover }] = await getStartServices(); + + if (dashboard) { + registry.register({ + id: 'savedDashboards', + title: 'dashboards', + service: dashboard.getSavedDashboardLoader(), + }); + } + + if (visualizations) { + registry.register({ + id: 'savedVisualizations', + title: 'visualizations', + service: visualizations.savedVisualizationsLoader, + }); + } + + if (discover) { + registry.register({ + id: 'savedSearches', + title: 'searches', + service: discover.savedSearches.createLoader({ + savedObjectsClient: coreStart.savedObjects.client, + indexPatterns: data.indexPatterns, + search: data.search, + chrome: coreStart.chrome, + overlays: coreStart.overlays, + }), + }); + } +}; diff --git a/src/plugins/saved_objects_management/public/services/action_service.mock.ts b/src/plugins/saved_objects_management/public/services/action_service.mock.ts new file mode 100644 index 00000000000000..97c95a589b9250 --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/action_service.mock.ts @@ -0,0 +1,57 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + SavedObjectsManagementActionService, + SavedObjectsManagementActionServiceSetup, + SavedObjectsManagementActionServiceStart, +} from './action_service'; + +const createSetupMock = (): jest.Mocked => { + const mock = { + register: jest.fn(), + }; + return mock; +}; + +const createStartMock = (): jest.Mocked => { + const mock = { + has: jest.fn(), + getAll: jest.fn(), + }; + + mock.has.mockReturnValue(true); + mock.getAll.mockReturnValue([]); + + return mock; +}; + +const createServiceMock = (): jest.Mocked> => { + const mock = { + setup: jest.fn().mockReturnValue(createSetupMock()), + start: jest.fn().mockReturnValue(createStartMock()), + }; + return mock; +}; + +export const actionServiceMock = { + create: createServiceMock, + createSetup: createSetupMock, + createStart: createStartMock, +}; diff --git a/src/plugins/saved_objects_management/public/services/action_registry.test.ts b/src/plugins/saved_objects_management/public/services/action_service.test.ts similarity index 69% rename from src/plugins/saved_objects_management/public/services/action_registry.test.ts rename to src/plugins/saved_objects_management/public/services/action_service.test.ts index eb3bda00f4196e..107554589f83df 100644 --- a/src/plugins/saved_objects_management/public/services/action_registry.test.ts +++ b/src/plugins/saved_objects_management/public/services/action_service.test.ts @@ -17,8 +17,11 @@ * under the License. */ -import { SavedObjectsManagementActionRegistry } from './action_registry'; -import { SavedObjectsManagementAction } from './action_types'; +import { + SavedObjectsManagementActionService, + SavedObjectsManagementActionServiceSetup, +} from './action_service'; +import { SavedObjectsManagementAction } from './types'; class DummyAction extends SavedObjectsManagementAction { constructor(public id: string) { @@ -36,27 +39,30 @@ class DummyAction extends SavedObjectsManagementAction { } describe('SavedObjectsManagementActionRegistry', () => { - let registry: SavedObjectsManagementActionRegistry; + let service: SavedObjectsManagementActionService; + let setup: SavedObjectsManagementActionServiceSetup; const createAction = (id: string): SavedObjectsManagementAction => { return new DummyAction(id); }; beforeEach(() => { - registry = new SavedObjectsManagementActionRegistry(); + service = new SavedObjectsManagementActionService(); + setup = service.setup(); }); describe('#register', () => { it('allows actions to be registered and retrieved', () => { const action = createAction('foo'); - registry.register(action); - expect(registry.getAll()).toContain(action); + setup.register(action); + const start = service.start(); + expect(start.getAll()).toContain(action); }); it('does not allow actions with duplicate ids to be registered', () => { const action = createAction('my-action'); - registry.register(action); - expect(() => registry.register(action)).toThrowErrorMatchingInlineSnapshot( + setup.register(action); + expect(() => setup.register(action)).toThrowErrorMatchingInlineSnapshot( `"Saved Objects Management Action with id 'my-action' already exists"` ); }); @@ -65,12 +71,14 @@ describe('SavedObjectsManagementActionRegistry', () => { describe('#has', () => { it('returns true when an action with a matching ID exists', () => { const action = createAction('existing-action'); - registry.register(action); - expect(registry.has('existing-action')).toEqual(true); + setup.register(action); + const start = service.start(); + expect(start.has('existing-action')).toEqual(true); }); it(`returns false when an action doesn't exist`, () => { - expect(registry.has('missing-action')).toEqual(false); + const start = service.start(); + expect(start.has('missing-action')).toEqual(false); }); }); }); diff --git a/src/plugins/saved_objects_management/public/services/action_registry.ts b/src/plugins/saved_objects_management/public/services/action_service.ts similarity index 56% rename from src/plugins/saved_objects_management/public/services/action_registry.ts rename to src/plugins/saved_objects_management/public/services/action_service.ts index 8bf77231dd73fe..2b0b4cf5431e53 100644 --- a/src/plugins/saved_objects_management/public/services/action_registry.ts +++ b/src/plugins/saved_objects_management/public/services/action_service.ts @@ -17,36 +17,44 @@ * under the License. */ -import { SavedObjectsManagementAction } from './action_types'; - -export type ISavedObjectsManagementActionRegistry = PublicMethodsOf< - SavedObjectsManagementActionRegistry ->; - -export class SavedObjectsManagementActionRegistry { - private readonly actions = new Map(); +import { SavedObjectsManagementAction } from './types'; +export interface SavedObjectsManagementActionServiceSetup { /** * register given action in the registry. */ - register(action: SavedObjectsManagementAction) { - if (this.actions.has(action.id)) { - throw new Error(`Saved Objects Management Action with id '${action.id}' already exists`); - } - this.actions.set(action.id, action); - } + register: (action: SavedObjectsManagementAction) => void; +} +export interface SavedObjectsManagementActionServiceStart { /** * return true if the registry contains given action, false otherwise. */ - has(actionId: string) { - return this.actions.has(actionId); - } - + has: (actionId: string) => boolean; /** * return all {@link SavedObjectsManagementAction | actions} currently registered. */ - getAll() { - return [...this.actions.values()]; + getAll: () => SavedObjectsManagementAction[]; +} + +export class SavedObjectsManagementActionService { + private readonly actions = new Map(); + + setup(): SavedObjectsManagementActionServiceSetup { + return { + register: action => { + if (this.actions.has(action.id)) { + throw new Error(`Saved Objects Management Action with id '${action.id}' already exists`); + } + this.actions.set(action.id, action); + }, + }; + } + + start(): SavedObjectsManagementActionServiceStart { + return { + has: actionId => this.actions.has(actionId), + getAll: () => [...this.actions.values()], + }; } } diff --git a/src/plugins/saved_objects_management/public/services/index.ts b/src/plugins/saved_objects_management/public/services/index.ts index d6353576b8e11c..a59ad9012c4029 100644 --- a/src/plugins/saved_objects_management/public/services/index.ts +++ b/src/plugins/saved_objects_management/public/services/index.ts @@ -18,7 +18,13 @@ */ export { - SavedObjectsManagementActionRegistry, - ISavedObjectsManagementActionRegistry, -} from './action_registry'; -export { SavedObjectsManagementAction, SavedObjectsManagementRecord } from './action_types'; + SavedObjectsManagementActionService, + SavedObjectsManagementActionServiceStart, + SavedObjectsManagementActionServiceSetup, +} from './action_service'; +export { + SavedObjectsManagementServiceRegistry, + ISavedObjectsManagementServiceRegistry, + SavedObjectsManagementServiceRegistryEntry, +} from './service_registry'; +export { SavedObjectsManagementAction, SavedObjectsManagementRecord } from './types'; diff --git a/src/plugins/saved_objects_management/public/services/action_registry.mock.ts b/src/plugins/saved_objects_management/public/services/service_registry.mock.ts similarity index 79% rename from src/plugins/saved_objects_management/public/services/action_registry.mock.ts rename to src/plugins/saved_objects_management/public/services/service_registry.mock.ts index a9093ad42d0aca..2e671c781928ff 100644 --- a/src/plugins/saved_objects_management/public/services/action_registry.mock.ts +++ b/src/plugins/saved_objects_management/public/services/service_registry.mock.ts @@ -17,21 +17,20 @@ * under the License. */ -import { ISavedObjectsManagementActionRegistry } from './action_registry'; +import { ISavedObjectsManagementServiceRegistry } from './service_registry'; -const createRegistryMock = (): jest.Mocked => { +const createRegistryMock = (): jest.Mocked => { const mock = { register: jest.fn(), - has: jest.fn(), - getAll: jest.fn(), + all: jest.fn(), + get: jest.fn(), }; - mock.has.mockReturnValue(true); - mock.getAll.mockReturnValue([]); + mock.all.mockReturnValue([]); return mock; }; -export const actionRegistryMock = { +export const serviceRegistryMock = { create: createRegistryMock, }; diff --git a/src/plugins/saved_objects_management/public/services/service_registry.ts b/src/plugins/saved_objects_management/public/services/service_registry.ts new file mode 100644 index 00000000000000..2d6ec0b92047af --- /dev/null +++ b/src/plugins/saved_objects_management/public/services/service_registry.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SavedObjectLoader } from '../../../saved_objects/public'; + +export interface SavedObjectsManagementServiceRegistryEntry { + id: string; + service: SavedObjectLoader; + title: string; +} + +export type ISavedObjectsManagementServiceRegistry = PublicMethodsOf< + SavedObjectsManagementServiceRegistry +>; + +export class SavedObjectsManagementServiceRegistry { + private readonly registry = new Map(); + + public register(entry: SavedObjectsManagementServiceRegistryEntry) { + if (this.registry.has(entry.id)) { + throw new Error(''); + } + this.registry.set(entry.id, entry); + } + + public all(): SavedObjectsManagementServiceRegistryEntry[] { + return [...this.registry.values()]; + } + + public get(id: string): SavedObjectsManagementServiceRegistryEntry | undefined { + return this.registry.get(id); + } +} diff --git a/src/plugins/saved_objects_management/public/services/action_types.ts b/src/plugins/saved_objects_management/public/services/types.ts similarity index 100% rename from src/plugins/saved_objects_management/public/services/action_types.ts rename to src/plugins/saved_objects_management/public/services/types.ts diff --git a/src/plugins/saved_objects_management/public/types.ts b/src/plugins/saved_objects_management/public/types.ts new file mode 100644 index 00000000000000..e91b5d253b55f9 --- /dev/null +++ b/src/plugins/saved_objects_management/public/types.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { SavedObjectMetadata, SavedObjectWithMetadata, SavedObjectRelation } from '../common'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/objects/index.js b/src/plugins/saved_objects_management/server/routes/get_allowed_types.ts similarity index 61% rename from src/legacy/core_plugins/kibana/public/management/sections/objects/index.js rename to src/plugins/saved_objects_management/server/routes/get_allowed_types.ts index 3965c42ac088dd..ab5bec66789466 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/objects/index.js +++ b/src/plugins/saved_objects_management/server/routes/get_allowed_types.ts @@ -17,20 +17,24 @@ * under the License. */ -import { i18n } from '@kbn/i18n'; -import { management } from 'ui/management'; -import './_view'; -import './_objects'; -import 'ace'; -import { uiModules } from 'ui/modules'; +import { IRouter } from 'src/core/server'; -// add the module deps to this module -uiModules.get('apps/management'); +export const registerGetAllowedTypesRoute = (router: IRouter) => { + router.get( + { + path: '/api/kibana/management/saved_objects/_allowed_types', + validate: false, + }, + async (context, req, res) => { + const allowedTypes = context.core.savedObjects.typeRegistry + .getImportableAndExportableTypes() + .map(type => type.name); -management.getSection('kibana').register('objects', { - display: i18n.translate('kbn.management.objects.savedObjectsSectionLabel', { - defaultMessage: 'Saved Objects', - }), - order: 10, - url: '#/management/kibana/objects', -}); + return res.ok({ + body: { + types: allowedTypes, + }, + }); + } + ); +}; diff --git a/src/plugins/saved_objects_management/server/routes/index.test.ts b/src/plugins/saved_objects_management/server/routes/index.test.ts index f183972953dce4..237760444f04eb 100644 --- a/src/plugins/saved_objects_management/server/routes/index.test.ts +++ b/src/plugins/saved_objects_management/server/routes/index.test.ts @@ -34,7 +34,7 @@ describe('registerRoutes', () => { }); expect(httpSetup.createRouter).toHaveBeenCalledTimes(1); - expect(router.get).toHaveBeenCalledTimes(2); + expect(router.get).toHaveBeenCalledTimes(3); expect(router.post).toHaveBeenCalledTimes(2); expect(router.get).toHaveBeenCalledWith( @@ -49,6 +49,12 @@ describe('registerRoutes', () => { }), expect.any(Function) ); + expect(router.get).toHaveBeenCalledWith( + expect.objectContaining({ + path: '/api/kibana/management/saved_objects/_allowed_types', + }), + expect.any(Function) + ); expect(router.post).toHaveBeenCalledWith( expect.objectContaining({ path: '/api/kibana/management/saved_objects/scroll/counts', diff --git a/src/plugins/saved_objects_management/server/routes/index.ts b/src/plugins/saved_objects_management/server/routes/index.ts index 2c6adb71ed3cea..0929de56b215e4 100644 --- a/src/plugins/saved_objects_management/server/routes/index.ts +++ b/src/plugins/saved_objects_management/server/routes/index.ts @@ -23,6 +23,7 @@ import { registerFindRoute } from './find'; import { registerScrollForCountRoute } from './scroll_count'; import { registerScrollForExportRoute } from './scroll_export'; import { registerRelationshipsRoute } from './relationships'; +import { registerGetAllowedTypesRoute } from './get_allowed_types'; interface RegisterRouteOptions { http: HttpServiceSetup; @@ -35,4 +36,5 @@ export function registerRoutes({ http, managementServicePromise }: RegisterRoute registerScrollForCountRoute(router); registerScrollForExportRoute(router); registerRelationshipsRoute(router, managementServicePromise); + registerGetAllowedTypesRoute(router); } diff --git a/src/plugins/saved_objects_management/server/types.ts b/src/plugins/saved_objects_management/server/types.ts index 5c4763d357e875..bd17d6a19ae708 100644 --- a/src/plugins/saved_objects_management/server/types.ts +++ b/src/plugins/saved_objects_management/server/types.ts @@ -17,38 +17,10 @@ * under the License. */ -import { SavedObject } from 'src/core/server'; - // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SavedObjectsManagementPluginSetup {} // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SavedObjectsManagementPluginStart {} -/** - * The metadata injected into a {@link SavedObject | saved object} when returning - * {@link SavedObjectWithMetadata | enhanced objects} from the plugin API endpoints. - */ -export interface SavedObjectMetadata { - icon?: string; - title?: string; - editUrl?: string; - inAppUrl?: { path: string; uiCapabilitiesPath: string }; -} - -/** - * A {@link SavedObject | saved object} enhanced with meta properties used by the client-side plugin. - */ -export type SavedObjectWithMetadata = SavedObject & { - meta: SavedObjectMetadata; -}; - -/** - * Represents a relation between two {@link SavedObject | saved object} - */ -export interface SavedObjectRelation { - id: string; - type: string; - relationship: 'child' | 'parent'; - meta: SavedObjectMetadata; -} +export { SavedObjectMetadata, SavedObjectWithMetadata, SavedObjectRelation } from '../common'; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts index 7d680f0ee0ed64..4e61756d933c94 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.test.ts @@ -22,8 +22,8 @@ describe('CopySavedObjectsToSpaceService', () => { const service = new CopySavedObjectsToSpaceService(); service.setup(deps); - expect(deps.savedObjectsManagementSetup.actionRegistry.register).toHaveBeenCalledTimes(1); - expect(deps.savedObjectsManagementSetup.actionRegistry.register).toHaveBeenCalledWith( + expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledTimes(1); + expect(deps.savedObjectsManagementSetup.actions.register).toHaveBeenCalledWith( expect.any(CopyToSpaceSavedObjectsManagementAction) ); }); diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts index d564514beebffe..93d0f92744d41e 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/copy_saved_objects_to_space_service.ts @@ -18,6 +18,6 @@ interface SetupDeps { export class CopySavedObjectsToSpaceService { public setup({ spacesManager, savedObjectsManagementSetup, notificationsSetup }: SetupDeps) { const action = new CopyToSpaceSavedObjectsManagementAction(spacesManager, notificationsSetup); - savedObjectsManagementSetup.actionRegistry.register(action); + savedObjectsManagementSetup.actions.register(action); } } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index fe0c58e83e544a..e579830bad203a 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -2011,7 +2011,6 @@ "kbn.dashboard.listing.table.descriptionColumnName": "説明", "kbn.dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "「6.1.0」のダッシュボードの互換性のため、パネルデータを移行できませんでした。パネルには想定された列または行フィールドがありません", "kbn.dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "「6.3.0」のダッシュボードの互換性のため、パネルデータを移行できませんでした。パネルに必要なフィールドがありません: {key}", - "kbn.dashboard.savedDashboardsTitle": "ダッシュボード", "kbn.dashboardTitle": "ダッシュボード", "kbn.devToolsTitle": "開発ツール", "kbn.discover.backToTopLinkText": "最上部へ戻る。", @@ -2281,9 +2280,6 @@ "kbn.management.editIndexPattern.timeFilterLabel.mappingAPILink": "マッピング API", "kbn.management.editIndexPattern.timeFilterLabel.timeFilterDetail": "このページは {indexPatternTitle} インデックス内のすべてのフィールドと、Elasticsearch に記録された各フィールドのコアタイプを一覧表示します。フィールドタイプを変更するには Elasticsearch を使用します", "kbn.management.editIndexPatternLiveRegionAriaLabel": "インデックスパターン", - "kbn.management.indexPattern.confirmOverwriteButton": "上書き", - "kbn.management.indexPattern.confirmOverwriteLabel": "「{title}」に上書きしてよろしいですか?", - "kbn.management.indexPattern.confirmOverwriteTitle": "{type} を上書きしますか?", "kbn.management.indexPattern.goToPatternButtonLabel": "既存のパターンに移動", "kbn.management.indexPattern.sectionsHeader": "インデックスパターン", "kbn.management.indexPattern.titleExistsLabel": "「{title}」というタイトルのインデックスパターンが既に存在します。", @@ -2306,125 +2302,128 @@ "kbn.management.indexPatternTable.title": "インデックスパターン", "kbn.management.landing.header": "Kibana {version} 管理", "kbn.management.landing.subhead": "インデックス、インデックスパターン、保存されたオブジェクト、Kibana の設定、その他を管理します。", - "kbn.management.landing.text": "アプリの一覧は左側のメニューにあります。", - "kbn.management.objects.confirmModalOptions.deleteButtonLabel": "削除", - "kbn.management.objects.confirmModalOptions.modalDescription": "このアクションはオブジェクトを Kibana から永久に削除します。", - "kbn.management.objects.confirmModalOptions.modalTitle": "「{title}」を削除しますか?", - "kbn.management.objects.deleteSavedObjectsConfirmModalDescription": "この操作は次の保存されたオブジェクトを削除します:", - "kbn.management.objects.field.offLabel": "オフ", - "kbn.management.objects.field.onLabel": "オン", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "キャンセル", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.deleteButtonLabel": "削除", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.deleteProcessButtonLabel": "削除中…", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.idColumnName": "ID", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName": "タイトル", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName": "タイプ", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModalTitle": "保存されたオブジェクトの削除", - "kbn.management.objects.objectsTable.export.dangerNotification": "エクスポートを生成できません", - "kbn.management.objects.objectsTable.export.successNotification": "ファイルはバックグラウンドでダウンロード中です", - "kbn.management.objects.objectsTable.export.successWithMissingRefsNotification": "ファイルはバックグラウンドでダウンロード中です。一部の関連オブジェクトが見つかりませんでした。足りないオブジェクトの一覧は、エクスポートされたファイルの最後の行をご覧ください。", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.cancelButtonLabel": "キャンセル", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.exportAllButtonLabel": "すべてエクスポート:", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.exportOptionsLabel": "オプション", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel": "関連オブジェクトを含める", - "kbn.management.objects.objectsTable.exportObjectsConfirmModalDescription": "エクスポートするタイプを選択してください", - "kbn.management.objects.objectsTable.exportObjectsConfirmModalTitle": "{filteredItemCount, plural, one{# オブジェクト} other {# オブジェクト}}をエクスポート", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage": "矛盾を解決中…", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage": "失敗したオブジェクトを再試行中…", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage": "保存された検索が正しくリンクされていることを確認してください…", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage": "矛盾を保存中…", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteBody": "{title} を上書きしてよろしいですか?", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteCancelButtonText": "キャンセル", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteOverwriteButtonText": "上書き", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteTitle": "{type} を上書きしますか?", - "kbn.management.objects.objectsTable.flyout.errorCalloutTitle": "申し訳ございませんが、エラーが発生しました", - "kbn.management.objects.objectsTable.flyout.import.cancelButtonLabel": "キャンセル", - "kbn.management.objects.objectsTable.flyout.import.confirmButtonLabel": "インポート", - "kbn.management.objects.objectsTable.flyout.importFailedDescription": "{totalImportCount} 個中 {failedImportCount} 個のオブジェクトのインポートに失敗しました。インポート失敗", - "kbn.management.objects.objectsTable.flyout.importFailedMissingReference": "{type} [id={id}] は {refType} [id={refId}] を見つけられませんでした", - "kbn.management.objects.objectsTable.flyout.importFailedTitle": "インポート失敗", - "kbn.management.objects.objectsTable.flyout.importFailedUnsupportedType": "{type} [id={id}] サポートされていないタイプ", - "kbn.management.objects.objectsTable.flyout.importFileErrorMessage": "ファイルを処理できませんでした。", - "kbn.management.objects.objectsTable.flyout.importLegacyFileErrorMessage": "ファイルを処理できませんでした。", - "kbn.management.objects.objectsTable.flyout.importPromptText": "インポート", - "kbn.management.objects.objectsTable.flyout.importSavedObjectTitle": "保存されたオブジェクトのインポート", - "kbn.management.objects.objectsTable.flyout.importSuccessful.confirmAllChangesButtonLabel": "すべての変更を確定", - "kbn.management.objects.objectsTable.flyout.importSuccessful.confirmButtonLabel": "完了", - "kbn.management.objects.objectsTable.flyout.importSuccessfulCallout.noObjectsImportedTitle": "オブジェクトがインポートされませんでした", - "kbn.management.objects.objectsTable.flyout.importSuccessfulDescription": "{importCount} 個のオブジェクトがインポートされました。", - "kbn.management.objects.objectsTable.flyout.importSuccessfulTitle": "インポート成功", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsCalloutLinkText": "新規インデックスパターンを作成", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsDescription": "次の保存されたオブジェクトは、存在しないインデックスパターンを使用しています。別のデックスパターンを選択してください。必要に応じて {indexPatternLink} できます。", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsTitle": "インデックスパターンの矛盾", - "kbn.management.objects.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage": "保存されたオブジェクトのファイル形式が無効なため、インポートできません。", - "kbn.management.objects.objectsTable.flyout.legacyFileUsedBody": "最新のレポートで NDJSON ファイルを作成すれば完了です。", - "kbn.management.objects.objectsTable.flyout.legacyFileUsedTitle": "JSON ファイルのサポートが終了します", - "kbn.management.objects.objectsTable.flyout.overwriteSavedObjectsLabel": "すべての保存されたオブジェクトを自動的に上書きしますか?", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountDescription": "影響されるオブジェクトの数です", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountName": "カウント", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdDescription": "インデックスパターンの ID です", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdName": "ID", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnNewIndexPatternName": "新規インデックスパターン", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription": "影響されるオブジェクトのサンプルです", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName": "影響されるオブジェクトのサンプル", - "kbn.management.objects.objectsTable.flyout.resolveImportErrorsFileErrorMessage": "ファイルを処理できませんでした。", - "kbn.management.objects.objectsTable.flyout.selectFileToImportFormRowLabel": "インポートするファイルを選択してください", - "kbn.management.objects.objectsTable.header.exportButtonLabel": "{filteredCount, plural, one{# オブジェクト} other {# オブジェクト}}をエクスポート", - "kbn.management.objects.objectsTable.header.importButtonLabel": "インポート", - "kbn.management.objects.objectsTable.header.refreshButtonLabel": "更新", - "kbn.management.objects.objectsTable.header.savedObjectsTitle": "保存されたオブジェクト", - "kbn.management.objects.objectsTable.howToDeleteSavedObjectsDescription": "ここから保存された検索などの保存されたオブジェクトを削除できます。保存されたオブジェクトの生データを編集することもできます。通常、オブジェクトは関連アプリケーションでのみ編集され、こn画面で編集するよりもそちらのほうが賢明です。", - "kbn.management.objects.objectsTable.relationships.columnActions.inspectActionDescription": "この保存されたオブジェクトを確認してください", - "kbn.management.objects.objectsTable.relationships.columnActions.inspectActionName": "検査", - "kbn.management.objects.objectsTable.relationships.columnActionsName": "アクション", - "kbn.management.objects.objectsTable.relationships.columnRelationship.childAsValue": "子", - "kbn.management.objects.objectsTable.relationships.columnRelationship.parentAsValue": "ペアレント", - "kbn.management.objects.objectsTable.relationships.columnRelationshipName": "直接関係", - "kbn.management.objects.objectsTable.relationships.columnTitleDescription": "保存されたオブジェクトのタイトルです", - "kbn.management.objects.objectsTable.relationships.columnTitleName": "タイトル", - "kbn.management.objects.objectsTable.relationships.columnTypeDescription": "保存されたオブジェクトのタイプです", - "kbn.management.objects.objectsTable.relationships.columnTypeName": "タイプ", - "kbn.management.objects.objectsTable.relationships.relationshipsTitle": "{title} に関連する保存されたオブジェクトはこちらです。この {type} を削除すると、親オブジェクトに影響がありますが、子オブジェクトには影響はありません。", - "kbn.management.objects.objectsTable.relationships.renderErrorMessage": "エラー", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.childAsValue.view": "子", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.name": "直接関係", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.parentAsValue.view": "親", - "kbn.management.objects.objectsTable.relationships.search.filters.type.name": "タイプ", - "kbn.management.objects.objectsTable.searchBar.unableToParseQueryErrorMessage": "クエリをパースできません", - "kbn.management.objects.objectsTable.table.columnActions.inspectActionDescription": "この保存されたオブジェクトを確認してください", - "kbn.management.objects.objectsTable.table.columnActions.inspectActionName": "検査", - "kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionDescription": "この保存されたオブジェクトと他の保存されたオブジェクトとの関係性を表示します", - "kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionName": "関係性", - "kbn.management.objects.objectsTable.table.columnActionsName": "アクション", - "kbn.management.objects.objectsTable.table.columnTitleDescription": "保存されたオブジェクトのタイトルです", - "kbn.management.objects.objectsTable.table.columnTitleName": "タイトル", - "kbn.management.objects.objectsTable.table.columnTypeDescription": "保存されたオブジェクトのタイプです", - "kbn.management.objects.objectsTable.table.columnTypeName": "タイプ", - "kbn.management.objects.objectsTable.table.deleteButtonLabel": "削除", - "kbn.management.objects.objectsTable.table.deleteButtonTitle": "保存されたオブジェクトを削除できません", - "kbn.management.objects.objectsTable.table.exportButtonLabel": "エクスポート", - "kbn.management.objects.objectsTable.table.exportPopoverButtonLabel": "エクスポート", - "kbn.management.objects.objectsTable.table.typeFilterName": "タイプ", - "kbn.management.objects.objectsTable.unableFindSavedObjectsNotificationMessage": "保存されたオブジェクトが見つかりません", - "kbn.management.objects.parsingFieldErrorMessage": "{fieldName} をインデックスパターン {indexName} 用にパース中にエラーが発生しました: {errorMessage}", - "kbn.management.objects.savedObjectsSectionLabel": "保存されたオブジェクト", - "kbn.management.objects.view.cancelButtonAriaLabel": "キャンセル", - "kbn.management.objects.view.cancelButtonLabel": "キャンセル", - "kbn.management.objects.view.deleteItemButtonLabel": "{title} を削除", - "kbn.management.objects.view.editItemTitle": "{title} の編集", - "kbn.management.objects.view.fieldDoesNotExistErrorMessage": "このオブジェクトに関連付けられたフィールドは、現在このインデックスパターンに存在しません。", - "kbn.management.objects.view.howToFixErrorDescription": "このエラーの原因がわかる場合は修正してください。わからない場合は上の削除ボタンをクリックしてください。", - "kbn.management.objects.view.howToModifyObjectDescription": "オブジェクトの編集は上級ユーザー向けです。オブジェクトのプロパティが検証されておらず、無効なオブジェクトはエラー、データ損失、またはそれ以上の問題の原因となります。コードを熟知した人に指示されていない限り、この設定は変更しない方が無難です。", - "kbn.management.objects.view.howToModifyObjectTitle": "十分ご注意ください!", - "kbn.management.objects.view.indexPatternDoesNotExistErrorMessage": "このオブジェクトに関連付けられたインデックスパターンは現在存在しません。", - "kbn.management.objects.view.saveButtonAriaLabel": "{ title } オブジェクトを保存", - "kbn.management.objects.view.saveButtonLabel": "{ title } オブジェクトを保存", - "kbn.management.objects.view.savedObjectProblemErrorMessage": "この保存されたオブジェクトに問題があります", - "kbn.management.objects.view.savedSearchDoesNotExistErrorMessage": "このオブジェクトに関連付けられた保存された検索は現在存在しません。", - "kbn.management.objects.view.viewItemButtonLabel": "{title} を表示", - "kbn.management.objects.view.viewItemTitle": "{title} を表示", - "kbn.management.savedObjects.editBreadcrumb": "{savedObjectType} を編集", - "kbn.management.savedObjects.indexBreadcrumb": "保存されたオブジェクト", + "kbn.management.landing.text": "すべてのツールの一覧は、左のメニューにあります。", + "savedObjectsManagement.indexPattern.confirmOverwriteButton": "上書き", + "savedObjectsManagement.indexPattern.confirmOverwriteLabel": "「{title}」に上書きしてよろしいですか?", + "savedObjectsManagement.indexPattern.confirmOverwriteTitle": "{type} を上書きしますか?", + "savedObjectsManagement.deleteConfirm.modalDeleteButtonLabel": "削除", + "savedObjectsManagement.deleteConfirm.modalDescription": "このアクションはオブジェクトを Kibana から永久に削除します。", + "savedObjectsManagement.deleteConfirm.modalTitle": "「{title}」を削除しますか?", + "savedObjectsManagement.deleteSavedObjectsConfirmModalDescription": "この操作は次の保存されたオブジェクトを削除します:", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "キャンセル", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.deleteButtonLabel": "削除", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.deleteProcessButtonLabel": "削除中…", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.idColumnName": "ID", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName": "タイトル", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName": "タイプ", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModalTitle": "保存されたオブジェクトの削除", + "savedObjectsManagement.objectsTable.export.dangerNotification": "エクスポートを生成できません", + "savedObjectsManagement.objectsTable.export.successNotification": "ファイルはバックグラウンドでダウンロード中です", + "savedObjectsManagement.objectsTable.export.successWithMissingRefsNotification": "ファイルはバックグラウンドでダウンロード中です。一部の関連オブジェクトが見つかりませんでした。足りないオブジェクトの一覧は、エクスポートされたファイルの最後の行をご覧ください。", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.cancelButtonLabel": "キャンセル", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportAllButtonLabel": "すべてエクスポート:", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportOptionsLabel": "オプション", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel": "関連オブジェクトを含める", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModalDescription": "エクスポートするタイプを選択してください", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModalTitle": "{filteredItemCount, plural, one{# オブジェクト} other {# オブジェクト}}をエクスポート", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage": "矛盾を解決中…", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage": "失敗したオブジェクトを再試行中…", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage": "保存された検索が正しくリンクされていることを確認してください…", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage": "矛盾を保存中…", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteBody": "{title} を上書きしてよろしいですか?", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteCancelButtonText": "キャンセル", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteOverwriteButtonText": "上書き", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteTitle": "{type} を上書きしますか?", + "savedObjectsManagement.objectsTable.flyout.errorCalloutTitle": "申し訳ございませんが、エラーが発生しました", + "savedObjectsManagement.objectsTable.flyout.import.cancelButtonLabel": "キャンセル", + "savedObjectsManagement.objectsTable.flyout.import.confirmButtonLabel": "インポート", + "savedObjectsManagement.objectsTable.flyout.importFailedDescription": "{totalImportCount} 個中 {failedImportCount} 個のオブジェクトのインポートに失敗しました。インポート失敗", + "savedObjectsManagement.objectsTable.flyout.importFailedMissingReference": "{type} [id={id}] は {refType} [id={refId}] を見つけられませんでした", + "savedObjectsManagement.objectsTable.flyout.importFailedTitle": "インポート失敗", + "savedObjectsManagement.objectsTable.flyout.importFailedUnsupportedType": "{type} [id={id}] サポートされていないタイプ", + "savedObjectsManagement.objectsTable.flyout.importFileErrorMessage": "ファイルを処理できませんでした。", + "savedObjectsManagement.objectsTable.flyout.importLegacyFileErrorMessage": "ファイルを処理できませんでした。", + "savedObjectsManagement.objectsTable.flyout.importPromptText": "インポート", + "savedObjectsManagement.objectsTable.flyout.importSavedObjectTitle": "保存されたオブジェクトのインポート", + "savedObjectsManagement.objectsTable.flyout.importSuccessful.confirmAllChangesButtonLabel": "すべての変更を確定", + "savedObjectsManagement.objectsTable.flyout.importSuccessful.confirmButtonLabel": "完了", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulCallout.noObjectsImportedTitle": "オブジェクトがインポートされませんでした", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulDescription": "{importCount} 個のオブジェクトがインポートされました。", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulTitle": "インポート成功", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsCalloutLinkText": "新規インデックスパターンを作成", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsDescription": "次の保存されたオブジェクトは、存在しないインデックスパターンを使用しています。別のデックスパターンを選択してください。必要に応じて {indexPatternLink} できます。", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsTitle": "インデックスパターンの矛盾", + "savedObjectsManagement.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage": "保存されたオブジェクトのファイル形式が無効なため、インポートできません。", + "savedObjectsManagement.objectsTable.flyout.legacyFileUsedBody": "最新のレポートで NDJSON ファイルを作成すれば完了です。", + "savedObjectsManagement.objectsTable.flyout.legacyFileUsedTitle": "JSON ファイルのサポートが終了します", + "savedObjectsManagement.objectsTable.flyout.overwriteSavedObjectsLabel": "すべての保存されたオブジェクトを自動的に上書きしますか?", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountDescription": "影響されるオブジェクトの数です", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountName": "カウント", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdDescription": "インデックスパターンの ID です", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdName": "ID", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnNewIndexPatternName": "新規インデックスパターン", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription": "影響されるオブジェクトのサンプルです", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName": "影響されるオブジェクトのサンプル", + "savedObjectsManagement.objectsTable.flyout.resolveImportErrorsFileErrorMessage": "ファイルを処理できませんでした。", + "savedObjectsManagement.objectsTable.flyout.selectFileToImportFormRowLabel": "インポートするファイルを選択してください", + "savedObjectsManagement.objectsTable.header.exportButtonLabel": "{filteredCount, plural, one{# オブジェクト} other {# オブジェクト}}をエクスポート", + "savedObjectsManagement.objectsTable.header.importButtonLabel": "インポート", + "savedObjectsManagement.objectsTable.header.refreshButtonLabel": "更新", + "savedObjectsManagement.objectsTable.header.savedObjectsTitle": "保存されたオブジェクト", + "savedObjectsManagement.objectsTable.howToDeleteSavedObjectsDescription": "ここから保存された検索などの保存されたオブジェクトを削除できます。保存されたオブジェクトの生データを編集することもできます。通常、オブジェクトは関連アプリケーションでのみ編集され、こn画面で編集するよりもそちらのほうが賢明です。", + "savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionDescription": "この保存されたオブジェクトを確認してください", + "savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionName": "検査", + "savedObjectsManagement.objectsTable.relationships.columnActionsName": "アクション", + "savedObjectsManagement.objectsTable.relationships.columnRelationship.childAsValue": "子", + "savedObjectsManagement.objectsTable.relationships.columnRelationship.parentAsValue": "ペアレント", + "savedObjectsManagement.objectsTable.relationships.columnRelationshipName": "直接関係", + "savedObjectsManagement.objectsTable.relationships.columnTitleDescription": "保存されたオブジェクトのタイトルです", + "savedObjectsManagement.objectsTable.relationships.columnTitleName": "タイトル", + "savedObjectsManagement.objectsTable.relationships.columnTypeDescription": "保存されたオブジェクトのタイプです", + "savedObjectsManagement.objectsTable.relationships.columnTypeName": "タイプ", + "savedObjectsManagement.objectsTable.relationships.relationshipsTitle": "{title} に関連する保存されたオブジェクトはこちらです。この {type} を削除すると、親オブジェクトに影響がありますが、子オブジェクトには影響はありません。", + "savedObjectsManagement.objectsTable.relationships.renderErrorMessage": "エラー", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.childAsValue.view": "子", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.name": "直接関係", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.parentAsValue.view": "親", + "savedObjectsManagement.objectsTable.relationships.search.filters.type.name": "タイプ", + "savedObjectsManagement.objectsTable.searchBar.unableToParseQueryErrorMessage": "クエリをパースできません", + "savedObjectsManagement.objectsTable.table.columnActions.inspectActionDescription": "この保存されたオブジェクトを確認してください", + "savedObjectsManagement.objectsTable.table.columnActions.inspectActionName": "検査", + "savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionDescription": "この保存されたオブジェクトと他の保存されたオブジェクトとの関係性を表示します", + "savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionName": "関係性", + "savedObjectsManagement.objectsTable.table.columnActionsName": "アクション", + "savedObjectsManagement.objectsTable.table.columnTitleDescription": "保存されたオブジェクトのタイトルです", + "savedObjectsManagement.objectsTable.table.columnTitleName": "タイトル", + "savedObjectsManagement.objectsTable.table.columnTypeDescription": "保存されたオブジェクトのタイプです", + "savedObjectsManagement.objectsTable.table.columnTypeName": "タイプ", + "savedObjectsManagement.objectsTable.table.deleteButtonLabel": "削除", + "savedObjectsManagement.objectsTable.table.deleteButtonTitle": "保存されたオブジェクトを削除できません", + "savedObjectsManagement.objectsTable.table.exportButtonLabel": "エクスポート", + "savedObjectsManagement.objectsTable.table.exportPopoverButtonLabel": "エクスポート", + "savedObjectsManagement.objectsTable.table.typeFilterName": "タイプ", + "savedObjectsManagement.objectsTable.unableFindSavedObjectsNotificationMessage": "保存されたオブジェクトが見つかりません", + "savedObjectsManagement.parsingFieldErrorMessage": "{fieldName} をインデックスパターン {indexName} 用にパース中にエラーが発生しました: {errorMessage}", + "savedObjectsManagement.managementSectionLabel": "保存されたオブジェクト", + "savedObjectsManagement.view.cancelButtonAriaLabel": "キャンセル", + "savedObjectsManagement.view.cancelButtonLabel": "キャンセル", + "savedObjectsManagement.view.deleteItemButtonLabel": "{title} を削除", + "savedObjectsManagement.view.editItemTitle": "{title} の編集", + "savedObjectsManagement.view.fieldDoesNotExistErrorMessage": "このオブジェクトに関連付けられたフィールドは、現在このインデックスパターンに存在しません。", + "savedObjectsManagement.view.howToFixErrorDescription": "このエラーの原因がわかる場合は修正してください。わからない場合は上の削除ボタンをクリックしてください。", + "savedObjectsManagement.view.howToModifyObjectDescription": " オブジェクトの編集は上級ユーザー向けです。オブジェクトのプロパティが検証されておらず、無効なオブジェクトはエラー、データ損失、またはそれ以上の問題の原因となります。コードを熟知した人に指示されていない限り、この設定は変更しない方が無難です。", + "savedObjectsManagement.view.howToModifyObjectTitle": "十分ご注意ください!", + "savedObjectsManagement.view.indexPatternDoesNotExistErrorMessage": "このオブジェクトに関連付けられたインデックスパターンは現在存在しません。", + "savedObjectsManagement.view.saveButtonAriaLabel": "{ title } オブジェクトを保存", + "savedObjectsManagement.view.saveButtonLabel": "{ title } オブジェクトを保存", + "savedObjectsManagement.view.savedObjectProblemErrorMessage": "この保存されたオブジェクトに問題があります", + "savedObjectsManagement.view.savedSearchDoesNotExistErrorMessage": "このオブジェクトに関連付けられた保存された検索は現在存在しません。", + "savedObjectsManagement.view.viewItemButtonLabel": "{title} を表示", + "savedObjectsManagement.view.viewItemTitle": "{title} を表示", + "savedObjectsManagement.breadcrumb.edit": "{savedObjectType} を編集", + "savedObjectsManagement.breadcrumb.index": "保存されたオブジェクト", + "savedObjectsManagement.field.offLabel": "オフ", + "savedObjectsManagement.field.onLabel": "オン", "kbn.managementTitle": "管理", "kbn.topNavMenu.openInspectorButtonLabel": "検査", "kbn.topNavMenu.refreshButtonLabel": "更新", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index fd2a92c2c402f6..75f48fb11823ab 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -2012,7 +2012,6 @@ "kbn.dashboard.listing.table.descriptionColumnName": "描述", "kbn.dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "无法迁移用于“6.1.0”向后兼容的面板数据,面板不包含所需的列和/或行字段", "kbn.dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "无法迁移用于“6.3.0”向后兼容的面板数据,面板不包含预期字段:{key}", - "kbn.dashboard.savedDashboardsTitle": "仪表板", "kbn.dashboardTitle": "仪表板", "kbn.devToolsTitle": "开发工具", "kbn.discover.backToTopLinkText": "返至顶部。", @@ -2282,9 +2281,6 @@ "kbn.management.editIndexPattern.timeFilterLabel.mappingAPILink": "映射 API", "kbn.management.editIndexPattern.timeFilterLabel.timeFilterDetail": "此页根据 Elasticsearch 的记录列出“{indexPatternTitle}”索引中的每个字段以及字段的关联核心类型。要更改字段类型,请使用 Elasticsearch", "kbn.management.editIndexPatternLiveRegionAriaLabel": "索引模式", - "kbn.management.indexPattern.confirmOverwriteButton": "覆盖", - "kbn.management.indexPattern.confirmOverwriteLabel": "确定要覆盖 “{title}”?", - "kbn.management.indexPattern.confirmOverwriteTitle": "覆盖“{type}”?", "kbn.management.indexPattern.goToPatternButtonLabel": "前往现有模式", "kbn.management.indexPattern.sectionsHeader": "索引模式", "kbn.management.indexPattern.titleExistsLabel": "具有标题 “{title}” 的索引模式已存在。", @@ -2308,124 +2304,127 @@ "kbn.management.landing.header": "Kibana {version} 管理", "kbn.management.landing.subhead": "管理您的索引、索引模式、已保存对象、Kibana 设置等等。", "kbn.management.landing.text": "应用的完整列表位于左侧菜单中。", - "kbn.management.objects.confirmModalOptions.deleteButtonLabel": "删除", - "kbn.management.objects.confirmModalOptions.modalDescription": "此操作会将对象从 Kibana 永久移除。", - "kbn.management.objects.confirmModalOptions.modalTitle": "删除“{title}”?", - "kbn.management.objects.deleteSavedObjectsConfirmModalDescription": "此操作将删除以下已保存对象:", - "kbn.management.objects.field.offLabel": "关闭", - "kbn.management.objects.field.onLabel": "开启", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "取消", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.deleteButtonLabel": "删除", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.deleteProcessButtonLabel": "正在删除……", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.idColumnName": "ID", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName": "标题", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName": "类型", - "kbn.management.objects.objectsTable.deleteSavedObjectsConfirmModalTitle": "删除已保存对象", - "kbn.management.objects.objectsTable.export.dangerNotification": "无法生成报告", - "kbn.management.objects.objectsTable.export.successNotification": "您的文件正在后台下载", - "kbn.management.objects.objectsTable.export.successWithMissingRefsNotification": "您的文件正在后台下载。找不到某些相关对象。有关缺失对象列表,请查看导出文件的最后一行。", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.cancelButtonLabel": "取消", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.exportAllButtonLabel": "全部导出", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.exportOptionsLabel": "选项", - "kbn.management.objects.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel": "包括相关对象", - "kbn.management.objects.objectsTable.exportObjectsConfirmModalDescription": "选择要导出的类型。", - "kbn.management.objects.objectsTable.exportObjectsConfirmModalTitle": "导出 {filteredItemCount, plural, one{# 个对象} other {# 个对象}}", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage": "正在解决冲突……", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage": "正在重试失败的对象……", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage": "确保已保存搜索已正确链接……", - "kbn.management.objects.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage": "正在保存冲突……", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteBody": "确定要覆盖 “{title}”?", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteCancelButtonText": "取消", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteOverwriteButtonText": "覆盖", - "kbn.management.objects.objectsTable.flyout.confirmOverwriteTitle": "覆盖“{type}”?", - "kbn.management.objects.objectsTable.flyout.errorCalloutTitle": "抱歉,出现了错误", - "kbn.management.objects.objectsTable.flyout.import.cancelButtonLabel": "取消", - "kbn.management.objects.objectsTable.flyout.import.confirmButtonLabel": "导入", - "kbn.management.objects.objectsTable.flyout.importFailedDescription": "无法导入 {failedImportCount} 个对象,共 {totalImportCount} 个。导入失败", - "kbn.management.objects.objectsTable.flyout.importFailedMissingReference": "{type} [id={id}] 无法找到 {refType} [id={refId}]", - "kbn.management.objects.objectsTable.flyout.importFailedTitle": "导入失败", - "kbn.management.objects.objectsTable.flyout.importFailedUnsupportedType": "{type} [id={id}] 不受支持的类型", - "kbn.management.objects.objectsTable.flyout.importFileErrorMessage": "无法处理该文件。", - "kbn.management.objects.objectsTable.flyout.importLegacyFileErrorMessage": "无法处理该文件。", - "kbn.management.objects.objectsTable.flyout.importPromptText": "导入", - "kbn.management.objects.objectsTable.flyout.importSavedObjectTitle": "导入已保存对象", - "kbn.management.objects.objectsTable.flyout.importSuccessful.confirmAllChangesButtonLabel": "确认所有更改", - "kbn.management.objects.objectsTable.flyout.importSuccessful.confirmButtonLabel": "完成", - "kbn.management.objects.objectsTable.flyout.importSuccessfulCallout.noObjectsImportedTitle": "未导入任何对象", - "kbn.management.objects.objectsTable.flyout.importSuccessfulDescription": "已成功导入 {importCount} 个对象。", - "kbn.management.objects.objectsTable.flyout.importSuccessfulTitle": "导入成功", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsCalloutLinkText": "创建新的索引模式", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsDescription": "以下已保存对象使用不存在的索引模式。请选择要重新关联的索引模式。必要时,您可以{indexPatternLink}。", - "kbn.management.objects.objectsTable.flyout.indexPatternConflictsTitle": "索引模式冲突", - "kbn.management.objects.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage": "已保存对象文件格式无效,无法导入。", - "kbn.management.objects.objectsTable.flyout.legacyFileUsedBody": "只需使用更新的导出功能生成 NDJSON 文件,便万事俱备。", - "kbn.management.objects.objectsTable.flyout.legacyFileUsedTitle": "将不再支持 JSON 文件", - "kbn.management.objects.objectsTable.flyout.overwriteSavedObjectsLabel": "自动覆盖所有已保存对象?", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountDescription": "受影响对象数目", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnCountName": "计数", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdDescription": "索引模式的 ID", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnIdName": "ID", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnNewIndexPatternName": "新建索引模式", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription": "受影响对象样例", - "kbn.management.objects.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName": "受影响对象样例", - "kbn.management.objects.objectsTable.flyout.resolveImportErrorsFileErrorMessage": "无法处理该文件。", - "kbn.management.objects.objectsTable.flyout.selectFileToImportFormRowLabel": "请选择要导入的文件", - "kbn.management.objects.objectsTable.header.exportButtonLabel": "导出 {filteredCount, plural, one{# 个对象} other {# 个对象}}", - "kbn.management.objects.objectsTable.header.importButtonLabel": "导入", - "kbn.management.objects.objectsTable.header.refreshButtonLabel": "刷新", - "kbn.management.objects.objectsTable.header.savedObjectsTitle": "已保存对象", - "kbn.management.objects.objectsTable.howToDeleteSavedObjectsDescription": "从这里您可以删除已保存对象,如已保存搜索。还可以编辑已保存对象的原始数据。通常,对象只能通过其关联的应用程序进行修改;或许您应该遵循这一原则,而非使用此屏幕进行修改。", - "kbn.management.objects.objectsTable.relationships.columnActions.inspectActionDescription": "检查此已保存对象", - "kbn.management.objects.objectsTable.relationships.columnActions.inspectActionName": "检查", - "kbn.management.objects.objectsTable.relationships.columnActionsName": "操作", - "kbn.management.objects.objectsTable.relationships.columnRelationship.childAsValue": "子项", - "kbn.management.objects.objectsTable.relationships.columnRelationship.parentAsValue": "父项", - "kbn.management.objects.objectsTable.relationships.columnRelationshipName": "直接关系", - "kbn.management.objects.objectsTable.relationships.columnTitleDescription": "已保存对象的标题", - "kbn.management.objects.objectsTable.relationships.columnTitleName": "标题", - "kbn.management.objects.objectsTable.relationships.columnTypeDescription": "已保存对象的类型", - "kbn.management.objects.objectsTable.relationships.columnTypeName": "类型", - "kbn.management.objects.objectsTable.relationships.relationshipsTitle": "以下是与 {title} 相关的已保存对象。删除此{type}将影响其父级对象,但不会影响其子级对象。", - "kbn.management.objects.objectsTable.relationships.renderErrorMessage": "错误", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.childAsValue.view": "子项", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.name": "直接关系", - "kbn.management.objects.objectsTable.relationships.search.filters.relationship.parentAsValue.view": "父项", - "kbn.management.objects.objectsTable.relationships.search.filters.type.name": "类型", - "kbn.management.objects.objectsTable.searchBar.unableToParseQueryErrorMessage": "无法解析查询", - "kbn.management.objects.objectsTable.table.columnActions.inspectActionDescription": "检查此已保存对象", - "kbn.management.objects.objectsTable.table.columnActions.inspectActionName": "检查", - "kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionDescription": "查看此已保存对象与其他已保存对象的关系", - "kbn.management.objects.objectsTable.table.columnActions.viewRelationshipsActionName": "关系", - "kbn.management.objects.objectsTable.table.columnActionsName": "操作", - "kbn.management.objects.objectsTable.table.columnTitleDescription": "已保存对象的标题", - "kbn.management.objects.objectsTable.table.columnTitleName": "标题", - "kbn.management.objects.objectsTable.table.columnTypeDescription": "已保存对象的类型", - "kbn.management.objects.objectsTable.table.columnTypeName": "类型", - "kbn.management.objects.objectsTable.table.deleteButtonLabel": "删除", - "kbn.management.objects.objectsTable.table.deleteButtonTitle": "无法删除已保存对象", - "kbn.management.objects.objectsTable.table.exportButtonLabel": "导出", - "kbn.management.objects.objectsTable.table.exportPopoverButtonLabel": "导出", - "kbn.management.objects.objectsTable.table.typeFilterName": "类型", - "kbn.management.objects.objectsTable.unableFindSavedObjectsNotificationMessage": "找不到已保存对象", - "kbn.management.objects.parsingFieldErrorMessage": "为索引模式 “{indexName}” 解析 “{fieldName}” 时发生错误:{errorMessage}", - "kbn.management.objects.savedObjectsSectionLabel": "已保存对象", - "kbn.management.objects.view.cancelButtonAriaLabel": "取消", - "kbn.management.objects.view.cancelButtonLabel": "取消", - "kbn.management.objects.view.deleteItemButtonLabel": "删除“{title}”", - "kbn.management.objects.view.editItemTitle": "编辑“{title}", - "kbn.management.objects.view.fieldDoesNotExistErrorMessage": "与此对象关联的字段在该索引模式中已不存在。", - "kbn.management.objects.view.howToFixErrorDescription": "如果您清楚此错误的含义,请修复该错误 — 否则单击上面的删除按钮。", - "kbn.management.objects.view.howToModifyObjectDescription": "修改对象仅适用于高级用户。对象属性未得到验证,无效的对象可能会导致错误、数据丢失或更坏的情况发生。除非熟悉该代码的人让您来这里,否则您可能不应该来这里。", - "kbn.management.objects.view.howToModifyObjectTitle": "谨慎操作!", - "kbn.management.objects.view.indexPatternDoesNotExistErrorMessage": "与此对象关联的索引模式已不存在。", - "kbn.management.objects.view.saveButtonAriaLabel": "保存 { title } 对象", - "kbn.management.objects.view.saveButtonLabel": "保存 { title } 对象", - "kbn.management.objects.view.savedObjectProblemErrorMessage": "此已保存对象有问题", - "kbn.management.objects.view.savedSearchDoesNotExistErrorMessage": "与此对象关联的已保存搜索已不存在。", - "kbn.management.objects.view.viewItemButtonLabel": "查看“{title}”", - "kbn.management.objects.view.viewItemTitle": "查看“{title}”", - "kbn.management.savedObjects.editBreadcrumb": "编辑 {savedObjectType}", - "kbn.management.savedObjects.indexBreadcrumb": "已保存对象", + "savedObjectsManagement.indexPattern.confirmOverwriteButton": "覆盖", + "savedObjectsManagement.indexPattern.confirmOverwriteLabel": "确定要覆盖 “{title}”?", + "savedObjectsManagement.indexPattern.confirmOverwriteTitle": "覆盖“{type}”?", + "savedObjectsManagement.deleteConfirm.modalDeleteButtonLabel": "删除", + "savedObjectsManagement.deleteConfirm.modalDescription": "此操作会将对象从 Kibana 永久移除。", + "savedObjectsManagement.deleteConfirm.modalTitle": "删除“{title}”?", + "savedObjectsManagement.deleteSavedObjectsConfirmModalDescription": "此操作将删除以下已保存对象:", + "savedObjectsManagement.field.offLabel": "关闭", + "savedObjectsManagement.field.onLabel": "开启", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "取消", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.deleteButtonLabel": "删除", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.deleteProcessButtonLabel": "正在删除……", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.idColumnName": "ID", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.titleColumnName": "标题", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.typeColumnName": "类型", + "savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModalTitle": "删除已保存对象", + "savedObjectsManagement.objectsTable.export.dangerNotification": "无法生成报告", + "savedObjectsManagement.objectsTable.export.successNotification": "您的文件正在后台下载", + "savedObjectsManagement.objectsTable.export.successWithMissingRefsNotification": "您的文件正在后台下载。找不到某些相关对象。有关缺失对象列表,请查看导出文件的最后一行。", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.cancelButtonLabel": "取消", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportAllButtonLabel": "全部导出", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportOptionsLabel": "选项", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel": "包括相关对象", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModalDescription": "选择要导出的类型。", + "savedObjectsManagement.objectsTable.exportObjectsConfirmModalTitle": "导出 {filteredItemCount, plural, one{# 个对象} other {# 个对象}}", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.resolvingConflictsLoadingMessage": "正在解决冲突……", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.retryingFailedObjectsLoadingMessage": "正在重试失败的对象……", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savedSearchAreLinkedProperlyLoadingMessage": "确保已保存搜索已正确链接……", + "savedObjectsManagement.objectsTable.flyout.confirmLegacyImport.savingConflictsLoadingMessage": "正在保存冲突……", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteBody": "确定要覆盖 “{title}”?", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteCancelButtonText": "取消", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteOverwriteButtonText": "覆盖", + "savedObjectsManagement.objectsTable.flyout.confirmOverwriteTitle": "覆盖“{type}”?", + "savedObjectsManagement.objectsTable.flyout.errorCalloutTitle": "抱歉,出现了错误", + "savedObjectsManagement.objectsTable.flyout.import.cancelButtonLabel": "取消", + "savedObjectsManagement.objectsTable.flyout.import.confirmButtonLabel": "导入", + "savedObjectsManagement.objectsTable.flyout.importFailedDescription": "无法导入 {failedImportCount} 个对象,共 {totalImportCount} 个。导入失败", + "savedObjectsManagement.objectsTable.flyout.importFailedMissingReference": "{type} [id={id}] 无法找到 {refType} [id={refId}]", + "savedObjectsManagement.objectsTable.flyout.importFailedTitle": "导入失败", + "savedObjectsManagement.objectsTable.flyout.importFailedUnsupportedType": "{type} [id={id}] 不受支持的类型", + "savedObjectsManagement.objectsTable.flyout.importFileErrorMessage": "无法处理该文件。", + "savedObjectsManagement.objectsTable.flyout.importLegacyFileErrorMessage": "无法处理该文件。", + "savedObjectsManagement.objectsTable.flyout.importPromptText": "导入", + "savedObjectsManagement.objectsTable.flyout.importSavedObjectTitle": "导入已保存对象", + "savedObjectsManagement.objectsTable.flyout.importSuccessful.confirmAllChangesButtonLabel": "确认所有更改", + "savedObjectsManagement.objectsTable.flyout.importSuccessful.confirmButtonLabel": "完成", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulCallout.noObjectsImportedTitle": "未导入任何对象", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulDescription": "已成功导入 {importCount} 个对象。", + "savedObjectsManagement.objectsTable.flyout.importSuccessfulTitle": "导入成功", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsCalloutLinkText": "创建新的索引模式", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsDescription": "以下已保存对象使用不存在的索引模式。请选择要重新关联的索引模式。必要时,您可以{indexPatternLink}。", + "savedObjectsManagement.objectsTable.flyout.indexPatternConflictsTitle": "索引模式冲突", + "savedObjectsManagement.objectsTable.flyout.invalidFormatOfImportedFileErrorMessage": "已保存对象文件格式无效,无法导入。", + "savedObjectsManagement.objectsTable.flyout.legacyFileUsedBody": "只需使用更新的导出功能生成 NDJSON 文件,便万事俱备。", + "savedObjectsManagement.objectsTable.flyout.legacyFileUsedTitle": "将不再支持 JSON 文件", + "savedObjectsManagement.objectsTable.flyout.overwriteSavedObjectsLabel": "自动覆盖所有已保存对象?", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountDescription": "受影响对象数目", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnCountName": "计数", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdDescription": "索引模式的 ID", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnIdName": "ID", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnNewIndexPatternName": "新建索引模式", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsDescription": "受影响对象样例", + "savedObjectsManagement.objectsTable.flyout.renderConflicts.columnSampleOfAffectedObjectsName": "受影响对象样例", + "savedObjectsManagement.objectsTable.flyout.resolveImportErrorsFileErrorMessage": "无法处理该文件。", + "savedObjectsManagement.objectsTable.flyout.selectFileToImportFormRowLabel": "请选择要导入的文件", + "savedObjectsManagement.objectsTable.header.exportButtonLabel": "导出 {filteredCount, plural, one{# 个对象} other {# 个对象}}", + "savedObjectsManagement.objectsTable.header.importButtonLabel": "导入", + "savedObjectsManagement.objectsTable.header.refreshButtonLabel": "刷新", + "savedObjectsManagement.objectsTable.header.savedObjectsTitle": "已保存对象", + "savedObjectsManagement.objectsTable.howToDeleteSavedObjectsDescription": "从这里您可以删除已保存对象,如已保存搜索。还可以编辑已保存对象的原始数据。通常,对象只能通过其关联的应用程序进行修改;或许您应该遵循这一原则,而非使用此屏幕进行修改。", + "savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionDescription": "检查此已保存对象", + "savedObjectsManagement.objectsTable.relationships.columnActions.inspectActionName": "检查", + "savedObjectsManagement.objectsTable.relationships.columnActionsName": "操作", + "savedObjectsManagement.objectsTable.relationships.columnRelationship.childAsValue": "子项", + "savedObjectsManagement.objectsTable.relationships.columnRelationship.parentAsValue": "父项", + "savedObjectsManagement.objectsTable.relationships.columnRelationshipName": "直接关系", + "savedObjectsManagement.objectsTable.relationships.columnTitleDescription": "已保存对象的标题", + "savedObjectsManagement.objectsTable.relationships.columnTitleName": "标题", + "savedObjectsManagement.objectsTable.relationships.columnTypeDescription": "已保存对象的类型", + "savedObjectsManagement.objectsTable.relationships.columnTypeName": "类型", + "savedObjectsManagement.objectsTable.relationships.relationshipsTitle": "以下是与 {title} 相关的已保存对象。删除此{type}将影响其父级对象,但不会影响其子级对象。", + "savedObjectsManagement.objectsTable.relationships.renderErrorMessage": "错误", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.childAsValue.view": "子项", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.name": "直接关系", + "savedObjectsManagement.objectsTable.relationships.search.filters.relationship.parentAsValue.view": "父项", + "savedObjectsManagement.objectsTable.relationships.search.filters.type.name": "类型", + "savedObjectsManagement.objectsTable.searchBar.unableToParseQueryErrorMessage": "无法解析查询", + "savedObjectsManagement.objectsTable.table.columnActions.inspectActionDescription": "检查此已保存对象", + "savedObjectsManagement.objectsTable.table.columnActions.inspectActionName": "检查", + "savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionDescription": "查看此已保存对象与其他已保存对象的关系", + "savedObjectsManagement.objectsTable.table.columnActions.viewRelationshipsActionName": "关系", + "savedObjectsManagement.objectsTable.table.columnActionsName": "操作", + "savedObjectsManagement.objectsTable.table.columnTitleDescription": "已保存对象的标题", + "savedObjectsManagement.objectsTable.table.columnTitleName": "标题", + "savedObjectsManagement.objectsTable.table.columnTypeDescription": "已保存对象的类型", + "savedObjectsManagement.objectsTable.table.columnTypeName": "类型", + "savedObjectsManagement.objectsTable.table.deleteButtonLabel": "删除", + "savedObjectsManagement.objectsTable.table.deleteButtonTitle": "无法删除已保存对象", + "savedObjectsManagement.objectsTable.table.exportButtonLabel": "导出", + "savedObjectsManagement.objectsTable.table.exportPopoverButtonLabel": "导出", + "savedObjectsManagement.objectsTable.table.typeFilterName": "类型", + "savedObjectsManagement.objectsTable.unableFindSavedObjectsNotificationMessage": "找不到已保存对象", + "savedObjectsManagement.parsingFieldErrorMessage": "为索引模式 “{indexName}” 解析 “{fieldName}” 时发生错误:{errorMessage}", + "savedObjectsManagement.managementSectionLabel": "已保存对象", + "savedObjectsManagement.view.cancelButtonAriaLabel": "取消", + "savedObjectsManagement.view.cancelButtonLabel": "取消", + "savedObjectsManagement.view.deleteItemButtonLabel": "删除“{title}”", + "savedObjectsManagement.view.editItemTitle": "编辑“{title}", + "savedObjectsManagement.view.fieldDoesNotExistErrorMessage": "与此对象关联的字段在该索引模式中已不存在。", + "savedObjectsManagement.view.howToFixErrorDescription": "如果您清楚此错误的含义,请修复该错误 — 否则单击上面的删除按钮。", + "savedObjectsManagement.view.howToModifyObjectDescription": " 修改对象仅适用于高级用户。对象属性未得到验证,无效的对象可能会导致错误、数据丢失或更坏的情况发生。除非熟悉该代码的人让您来这里,否则您可能不应该来这里。", + "savedObjectsManagement.view.howToModifyObjectTitle": "谨慎操作!", + "savedObjectsManagement.view.indexPatternDoesNotExistErrorMessage": "与此对象关联的索引模式已不存在。", + "savedObjectsManagement.view.saveButtonAriaLabel": "保存 { title } 对象", + "savedObjectsManagement.view.saveButtonLabel": "保存 { title } 对象", + "savedObjectsManagement.view.savedObjectProblemErrorMessage": "此已保存对象有问题", + "savedObjectsManagement.view.savedSearchDoesNotExistErrorMessage": "与此对象关联的已保存搜索已不存在。", + "savedObjectsManagement.view.viewItemButtonLabel": "查看“{title}”", + "savedObjectsManagement.view.viewItemTitle": "查看“{title}”", + "savedObjectsManagement.breadcrumb.edit": "编辑 {savedObjectType}", + "savedObjectsManagement.breadcrumb.index": "已保存对象", "kbn.managementTitle": "管理", "kbn.topNavMenu.openInspectorButtonLabel": "检查", "kbn.topNavMenu.refreshButtonLabel": "刷新", From 61271c0652a8393f9af6972a46b31759d8b81c7d Mon Sep 17 00:00:00 2001 From: Shahzad Date: Mon, 13 Apr 2020 13:44:10 +0200 Subject: [PATCH 02/35] [Uptime] Simplify monitor param usage (#63121) * add useMonitorId hook * update url param hook * update type Co-authored-by: Elastic Machine --- .../connected/charts/monitor_duration.tsx | 5 ++-- .../connected/charts/ping_histogram.tsx | 5 ++-- .../connected/charts/snapshot_container.tsx | 5 ++-- .../monitor/list_drawer_container.tsx | 5 ++-- .../monitor/status_bar_container.tsx | 5 ++-- .../monitor/status_details_container.tsx | 5 ++-- .../monitor_list_drawer/most_recent_error.tsx | 5 ++-- .../monitor_details/ml/manage_ml_job.tsx | 10 +++---- .../ml/ml_flyout_container.tsx | 10 +++---- .../monitor_details/ml/ml_integeration.tsx | 6 ++--- .../contexts/uptime_settings_context.tsx | 6 ++--- .../hooks/__tests__/use_url_params.test.tsx | 3 ++- .../uptime/public/hooks/use_monitor.ts | 14 ++++++++++ .../uptime/public/hooks/use_telemetry.ts | 10 ++++--- .../uptime/public/hooks/use_url_params.ts | 27 +++++++++---------- .../plugins/uptime/public/pages/monitor.tsx | 6 ++--- .../plugins/uptime/public/pages/overview.tsx | 5 ++-- 17 files changed, 66 insertions(+), 66 deletions(-) create mode 100644 x-pack/legacy/plugins/uptime/public/hooks/use_monitor.ts diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/charts/monitor_duration.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/charts/monitor_duration.tsx index 7d1cb08cb8b1c8..40480905350aff 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/charts/monitor_duration.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/charts/monitor_duration.tsx @@ -6,7 +6,7 @@ import React, { useContext, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; import { getAnomalyRecordsAction, getMLCapabilitiesAction, @@ -28,13 +28,12 @@ interface Props { } export const DurationChart: React.FC = ({ monitorId }: Props) => { - const [getUrlParams] = useUrlParams(); const { dateRangeStart, dateRangeEnd, absoluteDateRangeStart, absoluteDateRangeEnd, - } = getUrlParams(); + } = useGetUrlParams(); const { durationLines, loading } = useSelector(selectDurationLines); diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/charts/ping_histogram.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/charts/ping_histogram.tsx index 50f91be4ff09f3..6428ddfd10f8c5 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/charts/ping_histogram.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/charts/ping_histogram.tsx @@ -15,7 +15,7 @@ import { getPingHistogram } from '../../../state/actions'; import { selectPingHistogram } from '../../../state/selectors'; import { withResponsiveWrapper, ResponsiveWrapperProps } from '../../higher_order'; import { GetPingHistogramParams, HistogramResult } from '../../../../common/types'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; type Props = ResponsiveWrapperProps & Pick & @@ -30,14 +30,13 @@ const PingHistogramContainer: React.FC = ({ loading, esKuery, }) => { - const [getUrlParams] = useUrlParams(); const { absoluteDateRangeStart, absoluteDateRangeEnd, dateRangeStart: dateStart, dateRangeEnd: dateEnd, statusFilter, - } = getUrlParams(); + } = useGetUrlParams(); useEffect(() => { loadData({ monitorId, dateStart, dateEnd, statusFilter, filters: esKuery }); diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/charts/snapshot_container.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/charts/snapshot_container.tsx index ac8ff13d1edce9..39ead242527f8e 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/charts/snapshot_container.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/charts/snapshot_container.tsx @@ -6,7 +6,7 @@ import React, { useEffect } from 'react'; import { connect } from 'react-redux'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; import { AppState } from '../../../state'; import { getSnapshotCountAction } from '../../../state/actions'; import { SnapshotComponent } from '../../functional/snapshot'; @@ -54,8 +54,7 @@ export const Container: React.FC = ({ esKuery, loadSnapshotCount, }: Props) => { - const [getUrlParams] = useUrlParams(); - const { dateRangeStart, dateRangeEnd, statusFilter } = getUrlParams(); + const { dateRangeStart, dateRangeEnd, statusFilter } = useGetUrlParams(); useEffect(() => { loadSnapshotCount({ dateRangeStart, dateRangeEnd, filters: esKuery, statusFilter }); diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/list_drawer_container.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/list_drawer_container.tsx index ceeaa7026059f6..70da62d5833af2 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/list_drawer_container.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/list_drawer_container.tsx @@ -11,7 +11,7 @@ import { monitorDetailsSelector } from '../../../state/selectors'; import { MonitorDetailsActionPayload } from '../../../state/actions/types'; import { getMonitorDetailsAction } from '../../../state/actions/monitor'; import { MonitorListDrawerComponent } from '../../functional/monitor_list/monitor_list_drawer/monitor_list_drawer'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; import { MonitorSummary } from '../../../../common/graphql/types'; import { MonitorDetails } from '../../../../common/runtime_types/monitor'; @@ -24,8 +24,7 @@ interface ContainerProps { const Container: React.FC = ({ summary, loadMonitorDetails, monitorDetails }) => { const monitorId = summary?.monitor_id; - const [getUrlParams] = useUrlParams(); - const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = getUrlParams(); + const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = useGetUrlParams(); useEffect(() => { loadMonitorDetails({ diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_bar_container.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_bar_container.tsx index dd6f7a89cf9a33..00cfd02d8dc326 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_bar_container.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_bar_container.tsx @@ -11,7 +11,7 @@ import { AppState } from '../../../state'; import { monitorLocationsSelector, monitorStatusSelector } from '../../../state/selectors'; import { MonitorStatusBarComponent } from '../../functional/monitor_status_details/monitor_status_bar'; import { getMonitorStatusAction } from '../../../state/actions'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; import { Ping } from '../../../../common/graphql/types'; import { MonitorLocations } from '../../../../common/runtime_types/monitor'; import { UptimeRefreshContext } from '../../../contexts'; @@ -39,8 +39,7 @@ const Container: React.FC = ({ }: Props) => { const { lastRefresh } = useContext(UptimeRefreshContext); - const [getUrlParams] = useUrlParams(); - const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = getUrlParams(); + const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = useGetUrlParams(); useEffect(() => { loadMonitorStatus({ dateStart, dateEnd, monitorId }); diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_details_container.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_details_container.tsx index 3ced251dfab8c6..9d2e48830fbfe7 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_details_container.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/monitor/status_details_container.tsx @@ -7,7 +7,7 @@ import React, { useContext, useEffect } from 'react'; import { connect } from 'react-redux'; import { Dispatch } from 'redux'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; import { AppState } from '../../../state'; import { monitorLocationsSelector } from '../../../state/selectors'; import { getMonitorLocationsAction, MonitorLocationsPayload } from '../../../state/actions/monitor'; @@ -36,8 +36,7 @@ export const Container: React.FC = ({ }: Props) => { const { lastRefresh } = useContext(UptimeRefreshContext); - const [getUrlParams] = useUrlParams(); - const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = getUrlParams(); + const { dateRangeStart: dateStart, dateRangeEnd: dateEnd } = useGetUrlParams(); useEffect(() => { loadMonitorLocations({ dateStart, dateEnd, monitorId }); diff --git a/x-pack/legacy/plugins/uptime/public/components/functional/monitor_list/monitor_list_drawer/most_recent_error.tsx b/x-pack/legacy/plugins/uptime/public/components/functional/monitor_list/monitor_list_drawer/most_recent_error.tsx index 036882b49359f4..1963a9c852b11d 100644 --- a/x-pack/legacy/plugins/uptime/public/components/functional/monitor_list/monitor_list_drawer/most_recent_error.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/functional/monitor_list/monitor_list_drawer/most_recent_error.tsx @@ -8,7 +8,7 @@ import { EuiText, EuiSpacer } from '@elastic/eui'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { MonitorPageLink } from '../monitor_page_link'; -import { useUrlParams } from '../../../../hooks'; +import { useGetUrlParams } from '../../../../hooks'; import { stringifyUrlParams } from '../../../../lib/helper/stringify_url_params'; import { MonitorError } from '../../../../../common/runtime_types'; @@ -30,8 +30,7 @@ interface MostRecentErrorProps { } export const MostRecentError = ({ error, monitorId, timestamp }: MostRecentErrorProps) => { - const [getUrlParams] = useUrlParams(); - const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = getUrlParams(); + const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = useGetUrlParams(); params.selectedPingStatus = 'down'; const linkParameters = stringifyUrlParams(params, true); diff --git a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/manage_ml_job.tsx b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/manage_ml_job.tsx index 29f003437f7cba..1abda87abf73ac 100644 --- a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/manage_ml_job.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/manage_ml_job.tsx @@ -7,13 +7,13 @@ import React, { useContext, useState } from 'react'; import { EuiButtonEmpty, EuiContextMenu, EuiIcon, EuiPopover } from '@elastic/eui'; -import { useParams } from 'react-router-dom'; import { useSelector } from 'react-redux'; import { canDeleteMLJobSelector } from '../../../state/selectors'; import { UptimeSettingsContext } from '../../../contexts'; import * as labels from './translations'; import { getMLJobLinkHref } from './ml_job_link'; -import { useUrlParams } from '../../../hooks'; +import { useGetUrlParams } from '../../../hooks'; +import { useMonitorId } from '../../../hooks/use_monitor'; interface Props { hasMLJob: boolean; @@ -28,11 +28,9 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro const canDeleteMLJob = useSelector(canDeleteMLJobSelector); - const [getUrlParams] = useUrlParams(); - const { dateRangeStart, dateRangeEnd } = getUrlParams(); + const { dateRangeStart, dateRangeEnd } = useGetUrlParams(); - let { monitorId } = useParams(); - monitorId = atob(monitorId || ''); + const monitorId = useMonitorId(); const button = ( void; @@ -77,8 +77,7 @@ export const MachineLearningFlyout: React.FC = ({ onClose }) => { const { refreshApp } = useContext(UptimeRefreshContext); - let { monitorId } = useParams(); - monitorId = atob(monitorId || ''); + const monitorId = useMonitorId(); const canCreateMLJob = useSelector(canCreateMLJobSelector) && heartbeatIndices !== ''; @@ -93,8 +92,7 @@ export const MachineLearningFlyout: React.FC = ({ onClose }) => { const [isCreatingJob, setIsCreatingJob] = useState(false); - const [getUrlParams] = useUrlParams(); - const { dateRangeStart, dateRangeEnd } = getUrlParams(); + const { dateRangeStart, dateRangeEnd } = useGetUrlParams(); useEffect(() => { if (isCreatingJob && !isMLJobCreating) { diff --git a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/ml_integeration.tsx b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/ml_integeration.tsx index a27796167091ed..e65a2510ea6f26 100644 --- a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/ml_integeration.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/ml_integeration.tsx @@ -5,8 +5,6 @@ */ import React, { useContext, useEffect, useState } from 'react'; - -import { useParams } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; import { MachineLearningFlyout } from './ml_flyout_container'; import { @@ -23,6 +21,7 @@ import * as labels from './translations'; import { useKibana } from '../../../../../../../../src/plugins/kibana_react/public'; import { ManageMLJobComponent } from './manage_ml_job'; import { JobStat } from '../../../../../../../plugins/ml/common/types/data_recognizer'; +import { useMonitorId } from '../../../hooks/use_monitor'; export const MLIntegrationComponent = () => { const [isMlFlyoutOpen, setIsMlFlyoutOpen] = useState(false); @@ -32,8 +31,7 @@ export const MLIntegrationComponent = () => { const { notifications } = useKibana(); - let { monitorId } = useParams(); - monitorId = atob(monitorId || ''); + const monitorId = useMonitorId(); const dispatch = useDispatch(); diff --git a/x-pack/legacy/plugins/uptime/public/contexts/uptime_settings_context.tsx b/x-pack/legacy/plugins/uptime/public/contexts/uptime_settings_context.tsx index 44a87d310c9c74..c5a0ec48317988 100644 --- a/x-pack/legacy/plugins/uptime/public/contexts/uptime_settings_context.tsx +++ b/x-pack/legacy/plugins/uptime/public/contexts/uptime_settings_context.tsx @@ -8,7 +8,7 @@ import React, { createContext, useMemo } from 'react'; import { UptimeAppProps } from '../uptime_app'; import { CLIENT_DEFAULTS, CONTEXT_DEFAULTS } from '../../common/constants'; import { CommonlyUsedRange } from '../components/functional/uptime_date_picker'; -import { useUrlParams } from '../hooks'; +import { useGetUrlParams } from '../hooks'; import { ILicense } from '../../../../../plugins/licensing/common/types'; export interface UptimeSettingsContextValues { @@ -50,9 +50,7 @@ export const UptimeSettingsContextProvider: React.FC = ({ childr plugins, } = props; - const [getUrlParams] = useUrlParams(); - - const { dateRangeStart, dateRangeEnd } = getUrlParams(); + const { dateRangeStart, dateRangeEnd } = useGetUrlParams(); let license: ILicense | null = null; diff --git a/x-pack/legacy/plugins/uptime/public/hooks/__tests__/use_url_params.test.tsx b/x-pack/legacy/plugins/uptime/public/hooks/__tests__/use_url_params.test.tsx index a8999a50927d21..deb1f163c13267 100644 --- a/x-pack/legacy/plugins/uptime/public/hooks/__tests__/use_url_params.test.tsx +++ b/x-pack/legacy/plugins/uptime/public/hooks/__tests__/use_url_params.test.tsx @@ -19,6 +19,7 @@ interface MockUrlParamsComponentProps { const UseUrlParamsTestComponent = ({ hook, updateParams }: MockUrlParamsComponentProps) => { const [params, setParams] = useState({}); const [getUrlParams, updateUrlParams] = hook(); + const queryParams = getUrlParams(); return ( {Object.keys(params).length > 0 ?
{JSON.stringify(params)}
: null} @@ -30,7 +31,7 @@ const UseUrlParamsTestComponent = ({ hook, updateParams }: MockUrlParamsComponen > Set url params -
diff --git a/x-pack/legacy/plugins/uptime/public/hooks/use_monitor.ts b/x-pack/legacy/plugins/uptime/public/hooks/use_monitor.ts new file mode 100644 index 00000000000000..8080ce2696a3cd --- /dev/null +++ b/x-pack/legacy/plugins/uptime/public/hooks/use_monitor.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; + +export const useMonitorId = (): string => { + const { monitorId } = useParams(); + + // decode 64 base string, it was decoded to make it a valid url, since monitor id can be a url + return atob(monitorId || ''); +}; diff --git a/x-pack/legacy/plugins/uptime/public/hooks/use_telemetry.ts b/x-pack/legacy/plugins/uptime/public/hooks/use_telemetry.ts index 13fe523332ae5c..a2012b8ac56365 100644 --- a/x-pack/legacy/plugins/uptime/public/hooks/use_telemetry.ts +++ b/x-pack/legacy/plugins/uptime/public/hooks/use_telemetry.ts @@ -5,7 +5,7 @@ */ import { useEffect } from 'react'; -import { useUrlParams } from './use_url_params'; +import { useGetUrlParams } from './use_url_params'; import { apiService } from '../state/api/utils'; import { API_URLS } from '../../common/constants'; @@ -17,8 +17,12 @@ export enum UptimePage { } export const useUptimeTelemetry = (page?: UptimePage) => { - const [getUrlParams] = useUrlParams(); - const { dateRangeStart, dateRangeEnd, autorefreshInterval, autorefreshIsPaused } = getUrlParams(); + const { + dateRangeStart, + dateRangeEnd, + autorefreshInterval, + autorefreshIsPaused, + } = useGetUrlParams(); useEffect(() => { if (!apiService.http) throw new Error('Core http services are not defined'); diff --git a/x-pack/legacy/plugins/uptime/public/hooks/use_url_params.ts b/x-pack/legacy/plugins/uptime/public/hooks/use_url_params.ts index 20063b2c1bc93f..8b13e9e4805597 100644 --- a/x-pack/legacy/plugins/uptime/public/hooks/use_url_params.ts +++ b/x-pack/legacy/plugins/uptime/public/hooks/use_url_params.ts @@ -15,27 +15,26 @@ export type UpdateUrlParams = (updatedParams: { export type UptimeUrlParamsHook = () => [GetUrlParams, UpdateUrlParams]; -export const useUrlParams: UptimeUrlParamsHook = () => { +const getParsedParams = (search: string) => { + return search ? parse(search[0] === '?' ? search.slice(1) : search, { sort: false }) : {}; +}; + +export const useGetUrlParams: GetUrlParams = () => { const location = useLocation(); - const history = useHistory(); - const getUrlParams: GetUrlParams = () => { - let search: string | undefined; - if (location) { - search = location.search; - } + const params = getParsedParams(location?.search); - const params = search - ? parse(search[0] === '?' ? search.slice(1) : search, { sort: false }) - : {}; + return getSupportedUrlParams(params); +}; - return getSupportedUrlParams(params); - }; +export const useUrlParams: UptimeUrlParamsHook = () => { + const location = useLocation(); + const history = useHistory(); const updateUrlParams: UpdateUrlParams = updatedParams => { if (!history || !location) return; const { pathname, search } = location; - const currentParams = parse(search[0] === '?' ? search.slice(1) : search, { sort: false }); + const currentParams = getParsedParams(search); const mergedParams = { ...currentParams, ...updatedParams, @@ -60,5 +59,5 @@ export const useUrlParams: UptimeUrlParamsHook = () => { }); }; - return [getUrlParams, updateUrlParams]; + return [useGetUrlParams, updateUrlParams]; }; diff --git a/x-pack/legacy/plugins/uptime/public/pages/monitor.tsx b/x-pack/legacy/plugins/uptime/public/pages/monitor.tsx index 21124b7323d680..5016ccebbab54d 100644 --- a/x-pack/legacy/plugins/uptime/public/pages/monitor.tsx +++ b/x-pack/legacy/plugins/uptime/public/pages/monitor.tsx @@ -6,7 +6,6 @@ import { EuiSpacer } from '@elastic/eui'; import React, { useContext, useState } from 'react'; -import { useParams } from 'react-router-dom'; import { useSelector } from 'react-redux'; import { MonitorCharts, PingList } from '../components/functional'; import { UptimeRefreshContext } from '../contexts'; @@ -16,11 +15,10 @@ import { MonitorStatusDetails } from '../components/connected'; import { monitorStatusSelector } from '../state/selectors'; import { PageHeader } from './page_header'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; +import { useMonitorId } from '../hooks/use_monitor'; export const MonitorPage: React.FC = () => { - // decode 64 base string, it was decoded to make it a valid url, since monitor id can be a url - let { monitorId } = useParams(); - monitorId = atob(monitorId || ''); + const monitorId = useMonitorId(); const [pingListPageCount, setPingListPageCount] = useState(10); const { refreshApp } = useContext(UptimeRefreshContext); diff --git a/x-pack/legacy/plugins/uptime/public/pages/overview.tsx b/x-pack/legacy/plugins/uptime/public/pages/overview.tsx index 943dbd6bd57bab..5550facaf42e9f 100644 --- a/x-pack/legacy/plugins/uptime/public/pages/overview.tsx +++ b/x-pack/legacy/plugins/uptime/public/pages/overview.tsx @@ -13,7 +13,7 @@ import { OverviewPageParsingErrorCallout, StatusPanel, } from '../components/functional'; -import { useUrlParams, useUptimeTelemetry, UptimePage } from '../hooks'; +import { useUptimeTelemetry, UptimePage, useGetUrlParams } from '../hooks'; import { stringifyUrlParams } from '../lib/helper/stringify_url_params'; import { useTrackPageview } from '../../../../../plugins/observability/public'; import { DataPublicPluginSetup, IIndexPattern } from '../../../../../../src/plugins/data/public'; @@ -55,12 +55,11 @@ const getMonitorListPageSizeValue = () => { export const OverviewPageComponent = ({ autocomplete, indexPattern, setEsKueryFilters }: Props) => { const { colors } = useContext(UptimeThemeContext); - const [getUrlParams] = useUrlParams(); // TODO: this is temporary until we migrate the monitor list to our Redux implementation const [monitorListPageSize, setMonitorListPageSize] = useState( getMonitorListPageSizeValue() ); - const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = getUrlParams(); + const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = useGetUrlParams(); const { dateRangeStart, dateRangeEnd, From c7f61f956a581bf39be01f9e0c263577c2165b6b Mon Sep 17 00:00:00 2001 From: Shahzad Date: Mon, 13 Apr 2020 13:49:46 +0200 Subject: [PATCH 03/35] [Uptime] Update Ml functional test (#62562) * update test * added test * updated type * updated test * updated test * update test Co-authored-by: Elastic Machine --- .../connected/empty_state/empty_state.tsx | 6 +- .../confirm_delete.test.tsx.snap | 2 + .../__snapshots__/license_info.test.tsx.snap | 2 + .../__snapshots__/ml_flyout.test.tsx.snap | 5 ++ .../ml_integerations.test.tsx.snap | 1 + .../__snapshots__/ml_manage_job.test.tsx.snap | 1 + .../monitor_details/ml/confirm_delete.tsx | 1 + .../monitor_details/ml/license_info.tsx | 1 + .../monitor_details/ml/manage_ml_job.tsx | 8 ++- .../monitor_details/ml/ml_flyout.tsx | 3 +- .../ml/ml_flyout_container.tsx | 6 +- .../monitor_details/ml/ml_integeration.tsx | 2 +- .../plugins/uptime/public/pages/settings.tsx | 2 +- x-pack/test/functional/apps/uptime/index.ts | 5 +- .../test/functional/apps/uptime/ml_anomaly.ts | 51 ++++++++++++++++ x-pack/test/functional/apps/uptime/monitor.ts | 7 +-- .../test/functional/apps/uptime/overview.ts | 24 ++++---- .../functional/page_objects/uptime_page.ts | 39 ++++++------ .../test/functional/services/uptime/common.ts | 15 +++++ .../functional/services/uptime/ml_anomaly.ts | 59 +++++++++++++++++++ .../functional/services/uptime/navigation.ts | 52 +++++++++++----- .../test/functional/services/uptime/uptime.ts | 3 + 22 files changed, 235 insertions(+), 60 deletions(-) create mode 100644 x-pack/test/functional/apps/uptime/ml_anomaly.ts create mode 100644 x-pack/test/functional/services/uptime/ml_anomaly.ts diff --git a/x-pack/legacy/plugins/uptime/public/components/connected/empty_state/empty_state.tsx b/x-pack/legacy/plugins/uptime/public/components/connected/empty_state/empty_state.tsx index b383a696095a32..55c92e70b6066d 100644 --- a/x-pack/legacy/plugins/uptime/public/components/connected/empty_state/empty_state.tsx +++ b/x-pack/legacy/plugins/uptime/public/components/connected/empty_state/empty_state.tsx @@ -4,20 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useEffect } from 'react'; +import React, { useContext, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { indexStatusAction } from '../../../state/actions'; import { indexStatusSelector } from '../../../state/selectors'; import { EmptyStateComponent } from '../../functional/empty_state/empty_state'; +import { UptimeRefreshContext } from '../../../contexts'; export const EmptyState: React.FC = ({ children }) => { const { data, loading, error } = useSelector(indexStatusSelector); + const { lastRefresh } = useContext(UptimeRefreshContext); const dispatch = useDispatch(); useEffect(() => { dispatch(indexStatusAction.get()); - }, [dispatch]); + }, [dispatch, lastRefresh]); return (
diff --git a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/__tests__/__snapshots__/ml_flyout.test.tsx.snap b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/__tests__/__snapshots__/ml_flyout.test.tsx.snap index ead27425c26f3b..a83a1d99d7bb0c 100644 --- a/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/__tests__/__snapshots__/ml_flyout.test.tsx.snap +++ b/x-pack/legacy/plugins/uptime/public/components/monitor_details/ml/__tests__/__snapshots__/ml_flyout.test.tsx.snap @@ -3,6 +3,7 @@ exports[`ML Flyout component renders without errors 1`] = `
{}} fieldWildcardMatcher={() => {}} - saveFilter={() => {}} + saveFilter={() => undefined} isSaving={true} /> ); @@ -43,31 +58,33 @@ describe('Table', () => { expect(component).toMatchSnapshot(); }); - it('should render filter matches', async () => { - const component = shallowWithI18nProvider( + test('should render filter matches', () => { + const component = shallow
(
[{ name: 'time' }, { name: 'value' }], - }} + })} items={items} deleteFilter={() => {}} - fieldWildcardMatcher={filter => field => field.includes(filter[0])} - saveFilter={() => {}} + fieldWildcardMatcher={(filter: string) => (field: string) => field.includes(filter[0])} + saveFilter={() => undefined} isSaving={false} /> ); - const matchesTableCell = shallow(component.prop('columns')[1].render('tim', { clientId: 1 })); + const matchesTableCell = shallow( + getTableColumnRender(component, 1).render('tim', { clientId: 1 }) + ); expect(matchesTableCell).toMatchSnapshot(); }); describe('editing', () => { const saveFilter = jest.fn(); - const clientId = 1; - let component; + const clientId = '1'; + let component: ShallowWrapper; beforeEach(() => { - component = shallowWithI18nProvider( + component = shallow
(
{ ); }); - it('should show an input field', () => { + test('should show an input field', () => { // Start the editing process + const editingComponent = shallow( // Wrap in a div because: https://github.com/airbnb/enzyme/issues/1213 -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{getTableColumnRender(component, 2).render({ clientId, value: 'tim*' })}
); editingComponent .find('EuiButtonIcon') @@ -92,19 +110,19 @@ describe('Table', () => { // Ensure the state change propagates component.update(); - // Ensure the table cell switches to an input - const filterNameTableCell = shallow( - component.prop('columns')[0].render('tim*', { clientId }) - ); + const cell = getTableColumnRender(component).render('tim*', { clientId }); + const filterNameTableCell = shallow(cell); + expect(filterNameTableCell).toMatchSnapshot(); }); - it('should show a save button', () => { + test('should show a save button', () => { // Start the editing process const editingComponent = shallow( // Fixes: Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{getTableColumnRender(component, 2).render({ clientId, value: 'tim*' })}
); + editingComponent .find('EuiButtonIcon') .at(1) @@ -116,22 +134,20 @@ describe('Table', () => { // Verify save button const saveTableCell = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{getTableColumnRender(component, 2).render({ clientId, value: 'tim*' })}
); expect(saveTableCell).toMatchSnapshot(); }); - it('should update the matches dynamically as input value is changed', () => { - const localComponent = shallowWithI18nProvider( + test('should update the matches dynamically as input value is changed', () => { + const localComponent = shallow(
[{ name: 'time' }, { name: 'value' }], - }} + })} items={items} deleteFilter={() => {}} - fieldWildcardMatcher={query => () => { - return query.includes('time*'); - }} + fieldWildcardMatcher={(query: string) => () => query.includes('time*')} saveFilter={saveFilter} isSaving={false} /> @@ -142,6 +158,7 @@ describe('Table', () => { // Fixes: Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`.
{localComponent.prop('columns')[2].render({ clientId, value: 'tim*' })}
); + editingComponent .find('EuiButtonIcon') .at(1) @@ -161,7 +178,7 @@ describe('Table', () => { expect(matchesTableCell).toMatchSnapshot(); }); - it('should exit on save', () => { + test('should exit on save', () => { // Change the value to something else component.setState({ editingFilterId: clientId, @@ -171,34 +188,37 @@ describe('Table', () => { // Click the save button const editingComponent = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{getTableColumnRender(component, 2).render({ clientId, value: 'tim*' })}
); + editingComponent .find('EuiButtonIcon') .at(0) .simulate('click'); + editingComponent.update(); + // Ensure we call saveFilter properly expect(saveFilter).toBeCalledWith({ - filterId: clientId, - newFilterValue: 'ti*', + clientId, + value: 'ti*', }); // Ensure the state is properly reset - expect(component.state('editingFilterId')).toBe(null); + expect(component.state('editingFilterId')).toBe(''); }); }); - it('should allow deletes', () => { + test('should allow deletes', () => { const deleteFilter = jest.fn(); - const component = shallowWithI18nProvider( + const component = shallow(
{}} - saveFilter={() => {}} + saveFilter={() => undefined} isSaving={false} /> ); @@ -210,16 +230,15 @@ describe('Table', () => { ); deleteCellComponent .find('EuiButtonIcon') - .at(0) + .at(1) .simulate('click'); expect(deleteFilter).toBeCalled(); }); - it('should save when in edit mode and the enter key is pressed', () => { + test('should save when in edit mode and the enter key is pressed', () => { const saveFilter = jest.fn(); - const clientId = 1; - const component = shallowWithI18nProvider( + const component = shallow(
{ // Start the editing process const editingComponent = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{component.prop('columns')[2].render({ clientId: 1, value: 'tim*' })}
); editingComponent .find('EuiButtonIcon') - .at(1) + .at(0) .simulate('click'); - // Ensure the state change propagates + component.update(); // Get the rendered input cell const filterNameTableCell = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[0].render('tim*', { clientId })}
+
{component.prop('columns')[0].render('tim*', { clientId: 1 })}
); // Press the enter key @@ -253,14 +272,13 @@ describe('Table', () => { expect(saveFilter).toBeCalled(); // It should reset - expect(component.state('editingFilterId')).toBe(null); + expect(component.state('editingFilterId')).toBe(''); }); - it('should cancel when in edit mode and the esc key is pressed', () => { + test('should cancel when in edit mode and the esc key is pressed', () => { const saveFilter = jest.fn(); - const clientId = 1; - const component = shallowWithI18nProvider( + const component = shallow(
{ // Start the editing process const editingComponent = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[2].render({ clientId, value: 'tim*' })}
+
{component.prop('columns')[2].render({ clientId: 1, value: 'tim*' })}
); + editingComponent .find('EuiButtonIcon') - .at(1) + .at(0) .simulate('click'); + // Ensure the state change propagates component.update(); // Get the rendered input cell const filterNameTableCell = shallow( // Fixes Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was `symbol`. -
{component.prop('columns')[0].render('tim*', { clientId })}
+
{component.prop('columns')[0].render('tim*', { clientId: 1 })}
); - // Press the enter key + // Press the ESCAPE key filterNameTableCell.find('EuiFieldText').simulate('keydown', { keyCode: keyCodes.ESCAPE }); expect(saveFilter).not.toBeCalled(); // It should reset - expect(component.state('editingFilterId')).toBe(null); + expect(component.state('editingFilterId')).toBe(''); }); }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.tsx similarity index 54% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.tsx index f16663e1cd41af..db2b74bbc9824d 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/components/table/table.tsx @@ -17,48 +17,94 @@ * under the License. */ -import React, { Component, Fragment } from 'react'; -import PropTypes from 'prop-types'; +import React, { Component } from 'react'; import { + keyCodes, + EuiBasicTableColumn, EuiInMemoryTable, EuiFieldText, EuiButtonIcon, - keyCodes, RIGHT_ALIGNMENT, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { SourceFiltersTableFilter } from '../../types'; -export class Table extends Component { - static propTypes = { - indexPattern: PropTypes.object.isRequired, - items: PropTypes.array.isRequired, - deleteFilter: PropTypes.func.isRequired, - fieldWildcardMatcher: PropTypes.func.isRequired, - saveFilter: PropTypes.func.isRequired, - isSaving: PropTypes.bool.isRequired, - }; +import { IIndexPattern } from '../../../../../../../../../../../plugins/data/public'; + +const filterHeader = i18n.translate('kbn.management.editIndexPattern.source.table.filterHeader', { + defaultMessage: 'Filter', +}); + +const filterDescription = i18n.translate( + 'kbn.management.editIndexPattern.source.table.filterDescription', + { defaultMessage: 'Filter name' } +); + +const matchesHeader = i18n.translate('kbn.management.editIndexPattern.source.table.matchesHeader', { + defaultMessage: 'Matches', +}); + +const matchesDescription = i18n.translate( + 'kbn.management.editIndexPattern.source.table.matchesDescription', + { defaultMessage: 'Language used for the field' } +); + +const editAria = i18n.translate('kbn.management.editIndexPattern.source.table.editAria', { + defaultMessage: 'Edit', +}); + +const saveAria = i18n.translate('kbn.management.editIndexPattern.source.table.saveAria', { + defaultMessage: 'Save', +}); + +const deleteAria = i18n.translate('kbn.management.editIndexPattern.source.table.deleteAria', { + defaultMessage: 'Delete', +}); + +const cancelAria = i18n.translate('kbn.management.editIndexPattern.source.table.cancelAria', { + defaultMessage: 'Cancel', +}); + +export interface TableProps { + indexPattern: IIndexPattern; + items: SourceFiltersTableFilter[]; + deleteFilter: Function; + fieldWildcardMatcher: Function; + saveFilter: (filter: SourceFiltersTableFilter) => any; + isSaving: boolean; +} + +export interface TableState { + editingFilterId: string | number; + editingFilterValue: string; +} - constructor(props) { +export class Table extends Component { + constructor(props: TableProps) { super(props); this.state = { - editingFilterId: null, - editingFilterValue: null, + editingFilterId: '', + editingFilterValue: '', }; } - startEditingFilter = (id, value) => - this.setState({ editingFilterId: id, editingFilterValue: value }); - stopEditingFilter = () => this.setState({ editingFilterId: null }); - onEditingFilterChange = e => this.setState({ editingFilterValue: e.target.value }); + startEditingFilter = ( + editingFilterId: TableState['editingFilterId'], + editingFilterValue: TableState['editingFilterValue'] + ) => this.setState({ editingFilterId, editingFilterValue }); + + stopEditingFilter = () => this.setState({ editingFilterId: '' }); + onEditingFilterChange = (e: React.ChangeEvent) => + this.setState({ editingFilterValue: e.target.value }); - onEditFieldKeyDown = ({ keyCode }) => { - if (keyCodes.ENTER === keyCode) { + onEditFieldKeyDown = ({ keyCode }: React.KeyboardEvent) => { + if (keyCodes.ENTER === keyCode && this.state.editingFilterId && this.state.editingFilterValue) { this.props.saveFilter({ - filterId: this.state.editingFilterId, - newFilterValue: this.state.editingFilterValue, + clientId: this.state.editingFilterId, + value: this.state.editingFilterValue, }); this.stopEditingFilter(); } @@ -67,23 +113,18 @@ export class Table extends Component { } }; - getColumns() { + getColumns(): Array> { const { deleteFilter, fieldWildcardMatcher, indexPattern, saveFilter } = this.props; return [ { field: 'value', - name: i18n.translate('kbn.management.editIndexPattern.source.table.filterHeader', { - defaultMessage: 'Filter', - }), - description: i18n.translate( - 'kbn.management.editIndexPattern.source.table.filterDescription', - { defaultMessage: 'Filter name' } - ), + name: filterHeader, + description: filterDescription, dataType: 'string', sortable: true, render: (value, filter) => { - if (this.state.editingFilterId === filter.clientId) { + if (this.state.editingFilterId && this.state.editingFilterId === filter.clientId) { return ( { - const realtimeValue = - this.state.editingFilterId === filter.clientId ? this.state.editingFilterValue : value; - const matcher = fieldWildcardMatcher([realtimeValue]); + const wildcardMatcher = fieldWildcardMatcher([ + this.state.editingFilterId === filter.clientId ? this.state.editingFilterValue : value, + ]); const matches = indexPattern .getNonScriptedFields() - .map(f => f.name) - .filter(matcher) + .map((currentFilter: any) => currentFilter.name) + .filter(wildcardMatcher) .sort(); + if (matches.length) { return {matches.join(', ')}; } @@ -135,24 +172,21 @@ export class Table extends Component { name: '', align: RIGHT_ALIGNMENT, width: '100', - render: filter => { + render: (filter: SourceFiltersTableFilter) => { if (this.state.editingFilterId === filter.clientId) { return ( - + <> { saveFilter({ - filterId: this.state.editingFilterId, - newFilterValue: this.state.editingFilterValue, + clientId: this.state.editingFilterId, + value: this.state.editingFilterValue, }); this.stopEditingFilter(); }} iconType="checkInCircleFilled" - aria-label={i18n.translate( - 'kbn.management.editIndexPattern.source.table.saveAria', - { defaultMessage: 'Save' } - )} + aria-label={saveAria} /> - + ); } return ( - + <> deleteFilter(filter)} - iconType="trash" - aria-label={i18n.translate( - 'kbn.management.editIndexPattern.source.table.deleteAria', - { defaultMessage: 'Delete' } - )} + onClick={() => this.startEditingFilter(filter.clientId, filter.value)} + iconType="pencil" + aria-label={editAria} /> this.startEditingFilter(filter.clientId, filter.value)} - iconType="pencil" - aria-label={i18n.translate( - 'kbn.management.editIndexPattern.source.table.editAria', - { defaultMessage: 'Edit' } - )} + color="danger" + onClick={() => deleteFilter(filter)} + iconType="trash" + aria-label={deleteAria} /> - + ); }, }, diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/__jest__/source_filters_table.test.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.test.tsx similarity index 64% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/__jest__/source_filters_table.test.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.test.tsx index a39958a77abbf6..1b68dd13566d39 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/__jest__/source_filters_table.test.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.test.tsx @@ -20,13 +20,13 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { SourceFiltersTable } from '../source_filters_table'; +import { SourceFiltersTable } from './source_filters_table'; +import { IIndexPattern } from '../../../../../../../../../plugins/data/public'; jest.mock('@elastic/eui', () => ({ EuiButton: 'eui-button', EuiTitle: 'eui-title', EuiText: 'eui-text', - EuiButton: 'eui-button', EuiHorizontalRule: 'eui-horizontal-rule', EuiSpacer: 'eui-spacer', EuiCallOut: 'eui-call-out', @@ -39,42 +39,54 @@ jest.mock('@elastic/eui', () => ({ default: () => {}, }, })); -jest.mock('../components/header', () => ({ Header: 'header' })); -jest.mock('../components/table', () => ({ + +jest.mock('./components/header', () => ({ Header: 'header' })); +jest.mock('./components/table', () => ({ // Note: this seems to fix React complaining about non lowercase attributes Table: () => { return 'table'; }, })); -const indexPattern = { - sourceFilters: [{ value: 'time*' }, { value: 'nam*' }, { value: 'age*' }], -}; +const getIndexPatternMock = (mockedFields: any = {}) => + ({ + sourceFilters: [{ value: 'time*' }, { value: 'nam*' }, { value: 'age*' }], + ...mockedFields, + } as IIndexPattern); describe('SourceFiltersTable', () => { - it('should render normally', async () => { + test('should render normally', () => { const component = shallow( - {}} /> + {}} + filterFilter={''} + /> ); expect(component).toMatchSnapshot(); }); - it('should filter based on the query bar', async () => { + test('should filter based on the query bar', () => { const component = shallow( - {}} /> + {}} + filterFilter={''} + /> ); component.setProps({ filterFilter: 'ti' }); expect(component).toMatchSnapshot(); }); - it('should should a loading indicator when saving', async () => { + test('should should a loading indicator when saving', () => { const component = shallow( {}} /> ); @@ -83,34 +95,36 @@ describe('SourceFiltersTable', () => { expect(component).toMatchSnapshot(); }); - it('should show a delete modal', async () => { - const component = shallow( + test('should show a delete modal', () => { + const component = shallow( {}} /> ); - component.instance().startDeleteFilter({ value: 'tim*' }); + component.instance().startDeleteFilter({ value: 'tim*', clientId: 1 }); component.update(); // We are not calling `.setState` directly so we need to re-render expect(component).toMatchSnapshot(); }); - it('should remove a filter', async () => { + test('should remove a filter', async () => { const save = jest.fn(); - const component = shallow( + const component = shallow( {}} /> ); - component.instance().startDeleteFilter({ value: 'tim*' }); + component.instance().startDeleteFilter({ value: 'tim*', clientId: 1 }); component.update(); // We are not calling `.setState` directly so we need to re-render await component.instance().deleteFilter(); component.update(); // We are not calling `.setState` directly so we need to re-render @@ -119,14 +133,15 @@ describe('SourceFiltersTable', () => { expect(component).toMatchSnapshot(); }); - it('should add a filter', async () => { + test('should add a filter', async () => { const save = jest.fn(); - const component = shallow( + const component = shallow( {}} /> ); @@ -138,19 +153,20 @@ describe('SourceFiltersTable', () => { expect(component).toMatchSnapshot(); }); - it('should update a filter', async () => { + test('should update a filter', async () => { const save = jest.fn(); - const component = shallow( + const component = shallow( {}} /> ); - await component.instance().saveFilter({ oldFilterValue: 'tim*', newFilterValue: 'ti*' }); + await component.instance().saveFilter({ clientId: 'tim*', value: 'ti*' }); component.update(); // We are not calling `.setState` directly so we need to re-render expect(save).toBeCalled(); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.tsx similarity index 56% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.tsx index 3b485573f38212..dcf8ae9e1323f3 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/source_filters_table.tsx @@ -18,33 +18,40 @@ */ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { createSelector } from 'reselect'; -import { EuiSpacer, EuiOverlayMask, EuiConfirmModal, EUI_MODAL_CONFIRM_BUTTON } from '@elastic/eui'; +import { EuiSpacer } from '@elastic/eui'; +import { AddFilter, Table, Header, DeleteFilterConfirmationModal } from './components'; +import { IIndexPattern } from '../../../../../../../../../plugins/data/public'; +import { SourceFiltersTableFilter } from './types'; -import { Table } from './components/table'; -import { Header } from './components/header'; -import { AddFilter } from './components/add_filter'; -import { FormattedMessage } from '@kbn/i18n/react'; +export interface SourceFiltersTableProps { + indexPattern: IIndexPattern; + filterFilter: string; + fieldWildcardMatcher: Function; + onAddOrRemoveFilter?: Function; +} -export class SourceFiltersTable extends Component { - static propTypes = { - indexPattern: PropTypes.object.isRequired, - filterFilter: PropTypes.string, - fieldWildcardMatcher: PropTypes.func.isRequired, - onAddOrRemoveFilter: PropTypes.func, - }; +export interface SourceFiltersTableState { + filterToDelete: any; + isDeleteConfirmationModalVisible: boolean; + isSaving: boolean; + filters: SourceFiltersTableFilter[]; +} - constructor(props) { +export class SourceFiltersTable extends Component< + SourceFiltersTableProps, + SourceFiltersTableState +> { + // Source filters do not have any unique ids, only the value is stored. + // To ensure we can create a consistent and expected UX when managing + // source filters, we are assigning a unique id to each filter on the + // client side only + private clientSideId: number = 0; + + constructor(props: SourceFiltersTableProps) { super(props); - // Source filters do not have any unique ids, only the value is stored. - // To ensure we can create a consistent and expected UX when managing - // source filters, we are assigning a unique id to each filter on the - // client side only - this.clientSideId = 0; - this.state = { filterToDelete: undefined, isDeleteConfirmationModalVisible: false, @@ -58,9 +65,9 @@ export class SourceFiltersTable extends Component { } updateFilters = () => { - const sourceFilters = this.props.indexPattern.sourceFilters || []; - const filters = sourceFilters.map(filter => ({ - ...filter, + const sourceFilters = this.props.indexPattern.sourceFilters; + const filters = (sourceFilters || []).map((sourceFilter: any) => ({ + ...sourceFilter, clientId: ++this.clientSideId, })); @@ -68,8 +75,8 @@ export class SourceFiltersTable extends Component { }; getFilteredFilters = createSelector( - state => state.filters, - (state, props) => props.filterFilter, + (state: SourceFiltersTableState) => state.filters, + (state: SourceFiltersTableState, props: SourceFiltersTableProps) => props.filterFilter, (filters, filterFilter) => { if (filterFilter) { const filterFilterToLowercase = filterFilter.toLowerCase(); @@ -82,7 +89,7 @@ export class SourceFiltersTable extends Component { } ); - startDeleteFilter = filter => { + startDeleteFilter = (filter: SourceFiltersTableFilter) => { this.setState({ filterToDelete: filter, isDeleteConfirmationModalVisible: true, @@ -106,35 +113,44 @@ export class SourceFiltersTable extends Component { this.setState({ isSaving: true }); await indexPattern.save(); - onAddOrRemoveFilter && onAddOrRemoveFilter(); + + if (onAddOrRemoveFilter) { + onAddOrRemoveFilter(); + } + this.updateFilters(); this.setState({ isSaving: false }); this.hideDeleteConfirmationModal(); }; - onAddFilter = async value => { + onAddFilter = async (value: string) => { const { indexPattern, onAddOrRemoveFilter } = this.props; indexPattern.sourceFilters = [...(indexPattern.sourceFilters || []), { value }]; this.setState({ isSaving: true }); await indexPattern.save(); - onAddOrRemoveFilter && onAddOrRemoveFilter(); + + if (onAddOrRemoveFilter) { + onAddOrRemoveFilter(); + } + this.updateFilters(); this.setState({ isSaving: false }); }; - saveFilter = async ({ filterId, newFilterValue }) => { + saveFilter = async ({ clientId, value }: SourceFiltersTableFilter) => { const { indexPattern } = this.props; const { filters } = this.state; indexPattern.sourceFilters = filters.map(filter => { - if (filter.clientId === filterId) { + if (filter.clientId === clientId) { return { - value: newFilterValue, - clientId: filter.clientId, + value, + clientId, }; } + return filter; }); @@ -144,55 +160,13 @@ export class SourceFiltersTable extends Component { this.setState({ isSaving: false }); }; - renderDeleteConfirmationModal() { - const { filterToDelete } = this.state; - - if (!filterToDelete) { - return null; - } - - return ( - - - } - onCancel={this.hideDeleteConfirmationModal} - onConfirm={this.deleteFilter} - cancelButtonText={ - - } - buttonColor="danger" - confirmButtonText={ - - } - defaultFocusedButton={EUI_MODAL_CONFIRM_BUTTON} - /> - - ); - } - render() { const { indexPattern, fieldWildcardMatcher } = this.props; - - const { isSaving } = this.state; - + const { isSaving, filterToDelete } = this.state; const filteredFilters = this.getFilteredFilters(this.state, this.props); return ( -
+ <>
@@ -205,8 +179,14 @@ export class SourceFiltersTable extends Component { saveFilter={this.saveFilter} /> - {this.renderDeleteConfirmationModal()} -
+ {filterToDelete && ( + + )} + ); } } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/types.ts b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/types.ts new file mode 100644 index 00000000000000..ee3689f0174711 --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/source_filters_table/types.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** @internal **/ +export interface SourceFiltersTableFilter { + value: string; + clientId: string | number; +} From 7ea3f12e31f198d6e79907f26518bbab612266b9 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Mon, 13 Apr 2020 19:02:22 +0300 Subject: [PATCH 11/35] Index pattern management UI -> TypeScript (scripted_fields_table) (#63247) * Index pattern management UI -> TypeScript (scripted_fields_table) --- .../scripted_field_table.test.tsx.snap} | 40 +++--- .../call_outs.test.tsx.snap} | 4 +- .../call_outs.test.js => call_outs.test.tsx} | 4 +- .../call_outs/{call_outs.js => call_outs.tsx} | 12 +- .../call_outs/{index.js => index.ts} | 0 .../confirmation_modal.test.tsx.snap | 14 ++ .../confirmation_modal.test.tsx | 37 ++++++ .../confirmation_modal/confirmation_modal.tsx | 63 +++++++++ .../components/confirmation_modal/index.ts | 20 +++ .../header.test.tsx.snap} | 0 .../header.test.js => header.test.tsx} | 4 +- .../header/{header.js => header.tsx} | 12 +- .../components/header/{index.js => index.ts} | 0 .../components/{index.js => index.ts} | 1 + .../table.test.tsx.snap} | 7 +- .../components/table/{index.js => index.ts} | 0 .../table.test.js => table.test.tsx} | 49 +++---- .../components/table/{table.js => table.tsx} | 35 +++-- .../{index.js => index.ts} | 0 ....test.js => scripted_field_table.test.tsx} | 67 ++++++---- ...lds_table.js => scripted_fields_table.tsx} | 122 ++++++++---------- .../scripted_fields_table/types.ts | 25 ++++ .../{index.js => index.ts} | 12 +- 23 files changed, 346 insertions(+), 182 deletions(-) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/{__jest__/__snapshots__/scripted_field_table.test.js.snap => __snapshots__/scripted_field_table.test.tsx.snap} (89%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/{__jest__/__snapshots__/call_outs.test.js.snap => __snapshots__/call_outs.test.tsx.snap} (98%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/{__jest__/call_outs.test.js => call_outs.test.tsx} (92%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/{call_outs.js => call_outs.tsx} (94%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/{index.js => index.ts} (100%) create mode 100644 src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap create mode 100644 src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.test.tsx create mode 100644 src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.tsx create mode 100644 src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/index.ts rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/{__jest__/__snapshots__/header.test.js.snap => __snapshots__/header.test.tsx.snap} (100%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/{__jest__/header.test.js => header.test.tsx} (92%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/{header.js => header.tsx} (92%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/{index.js => index.ts} (100%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/{index.js => index.ts} (92%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/{__jest__/__snapshots__/table.test.js.snap => __snapshots__/table.test.tsx.snap} (93%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/{index.js => index.ts} (100%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/{__jest__/table.test.js => table.test.tsx} (71%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/{table.js => table.tsx} (84%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/{index.js => index.ts} (100%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/{__jest__/scripted_field_table.test.js => scripted_field_table.test.tsx} (75%) rename src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/{scripted_fields_table.js => scripted_fields_table.tsx} (60%) create mode 100644 src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/types.ts rename src/legacy/ui/public/scripting_languages/{index.js => index.ts} (83%) diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/__snapshots__/scripted_field_table.test.js.snap b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__snapshots__/scripted_field_table.test.tsx.snap similarity index 89% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/__snapshots__/scripted_field_table.test.js.snap rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__snapshots__/scripted_field_table.test.tsx.snap index a53f4d7f609cb7..569b75c848c522 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/__snapshots__/scripted_field_table.test.js.snap +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__snapshots__/scripted_field_table.test.tsx.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ScriptedFieldsTable should filter based on the lang filter 1`] = ` -
+
@@ -39,11 +39,11 @@ exports[`ScriptedFieldsTable should filter based on the lang filter 1`] = ` ] } /> -
+ `; exports[`ScriptedFieldsTable should filter based on the query bar 1`] = ` -
+
@@ -72,11 +72,11 @@ exports[`ScriptedFieldsTable should filter based on the query bar 1`] = ` ] } /> -
+ `; exports[`ScriptedFieldsTable should hide the table if there are no scripted fields 1`] = ` -
+
@@ -97,11 +97,11 @@ exports[`ScriptedFieldsTable should hide the table if there are no scripted fiel } items={Array []} /> -
+ `; exports[`ScriptedFieldsTable should render normally 1`] = ` -
+
@@ -135,11 +135,11 @@ exports[`ScriptedFieldsTable should render normally 1`] = ` ] } /> -
+ `; exports[`ScriptedFieldsTable should show a delete modal 1`] = ` -
+
@@ -173,14 +173,16 @@ exports[`ScriptedFieldsTable should show a delete modal 1`] = ` ] } /> - - - -
+ + `; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/__snapshots__/call_outs.test.js.snap b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__snapshots__/call_outs.test.tsx.snap similarity index 98% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/__snapshots__/call_outs.test.js.snap rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__snapshots__/call_outs.test.tsx.snap index e6f0d6cd819e35..4dfda1b9339b1a 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/__snapshots__/call_outs.test.js.snap +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__snapshots__/call_outs.test.tsx.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CallOuts should render normally 1`] = ` -
+ -
+ `; exports[`CallOuts should render without any call outs 1`] = `""`; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/call_outs.test.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.test.tsx similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/call_outs.test.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.test.tsx index 12e0ee88399677..407928931191de 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/__jest__/call_outs.test.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.test.tsx @@ -23,7 +23,7 @@ import { shallow } from 'enzyme'; import { CallOuts } from '../call_outs'; describe('CallOuts', () => { - it('should render normally', async () => { + test('should render normally', () => { const component = shallow( { expect(component).toMatchSnapshot(); }); - it('should render without any call outs', async () => { + test('should render without any call outs', () => { const component = shallow( ); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.tsx similarity index 94% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.tsx index 0c321c8ba8b01b..8e38b569a32fa9 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/call_outs.tsx @@ -20,16 +20,20 @@ import React from 'react'; import { EuiCallOut, EuiLink, EuiSpacer } from '@elastic/eui'; - import { FormattedMessage } from '@kbn/i18n/react'; -export const CallOuts = ({ deprecatedLangsInUse, painlessDocLink }) => { +interface CallOutsProps { + deprecatedLangsInUse: string[]; + painlessDocLink: string; +} + +export const CallOuts = ({ deprecatedLangsInUse, painlessDocLink }: CallOutsProps) => { if (!deprecatedLangsInUse.length) { return null; } return ( -
+ <> {

-
+ ); }; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/call_outs/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap new file mode 100644 index 00000000000000..2b320782cb1634 --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap @@ -0,0 +1,14 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DeleteScritpedFieldConfirmationModal should render normally 1`] = ` + + + +`; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.test.tsx b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.test.tsx new file mode 100644 index 00000000000000..f3594e7507a6a4 --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.test.tsx @@ -0,0 +1,37 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { DeleteScritpedFieldConfirmationModal } from './confirmation_modal'; + +describe('DeleteScritpedFieldConfirmationModal', () => { + test('should render normally', () => { + const component = shallow( + {}} + hideDeleteConfirmationModal={() => {}} + /> + ); + + expect(component).toMatchSnapshot(); + }); +}); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.tsx b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.tsx new file mode 100644 index 00000000000000..1e82174f863b0d --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/confirmation_modal.tsx @@ -0,0 +1,63 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EUI_MODAL_CONFIRM_BUTTON, EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; + +import { ScriptedFieldItem } from '../../types'; + +interface DeleteScritpedFieldConfirmationModalProps { + field: ScriptedFieldItem; + hideDeleteConfirmationModal: ( + event?: React.KeyboardEvent | React.MouseEvent + ) => void; + deleteField: (event: React.MouseEvent) => void; +} + +export const DeleteScritpedFieldConfirmationModal = ({ + field, + hideDeleteConfirmationModal, + deleteField, +}: DeleteScritpedFieldConfirmationModalProps) => { + const title = i18n.translate('kbn.management.editIndexPattern.scripted.deleteFieldLabel', { + defaultMessage: "Delete scripted field '{fieldName}'?", + values: { fieldName: field.name }, + }); + const cancelButtonText = i18n.translate( + 'kbn.management.editIndexPattern.scripted.deleteField.cancelButton', + { defaultMessage: 'Cancel' } + ); + const confirmButtonText = i18n.translate( + 'kbn.management.editIndexPattern.scripted.deleteField.deleteButton', + { defaultMessage: 'Delete' } + ); + + return ( + + + + ); +}; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/index.ts b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/index.ts new file mode 100644 index 00000000000000..b87b572333e6fa --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/confirmation_modal/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { DeleteScritpedFieldConfirmationModal } from './confirmation_modal'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__jest__/__snapshots__/header.test.js.snap b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__snapshots__/header.test.tsx.snap similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__jest__/__snapshots__/header.test.js.snap rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__snapshots__/header.test.tsx.snap diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__jest__/header.test.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.test.tsx similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__jest__/header.test.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.test.tsx index 3e377ccfbdd410..19479de8f2aa4c 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/__jest__/header.test.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.test.tsx @@ -20,10 +20,10 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { Header } from '../header'; +import { Header } from './header'; describe('Header', () => { - it('should render normally', async () => { + test('should render normally', () => { const component = shallow(
); expect(component).toMatchSnapshot(); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.tsx similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.tsx index 97c235d82f870a..b8f832dad72af6 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/header.tsx @@ -18,13 +18,15 @@ */ import React from 'react'; -import PropTypes from 'prop-types'; - import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -export const Header = ({ addScriptedFieldUrl }) => ( +interface HeaderProps { + addScriptedFieldUrl: string; +} + +export const Header = ({ addScriptedFieldUrl }: HeaderProps) => ( @@ -56,7 +58,3 @@ export const Header = ({ addScriptedFieldUrl }) => ( ); - -Header.propTypes = { - addScriptedFieldUrl: PropTypes.string.isRequired, -}; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/header/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.ts similarity index 92% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.ts index 5c0bb41eab7650..7d74776fb2bcad 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/index.ts @@ -20,3 +20,4 @@ export { Table } from './table'; export { Header } from './header'; export { CallOuts } from './call_outs'; +export { DeleteScritpedFieldConfirmationModal } from './confirmation_modal'; diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/__snapshots__/table.test.js.snap b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap similarity index 93% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/__snapshots__/table.test.js.snap rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap index 2da4d84463b291..8439887dd468a9 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/__snapshots__/table.test.js.snap +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap @@ -41,6 +41,7 @@ exports[`Table should render normally 1`] = ` "icon": "pencil", "name": "Edit", "onClick": [Function], + "type": "icon", }, Object { "color": "danger", @@ -48,6 +49,7 @@ exports[`Table should render normally 1`] = ` "icon": "trash", "name": "Delete", "onClick": [Function], + "type": "icon", }, ], "name": "", @@ -58,8 +60,9 @@ exports[`Table should render normally 1`] = ` items={ Array [ Object { - "id": 1, - "name": "Elastic", + "lang": "Elastic", + "name": "1", + "script": "", }, ] } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/table.test.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx similarity index 71% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/table.test.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx index 4545bfa8f64db5..13b3875f586871 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/__jest__/table.test.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.test.tsx @@ -19,45 +19,50 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; import { Table } from '../table'; +import { ScriptedFieldItem } from '../../types'; +import { IIndexPattern } from '../../../../../../../../../../../plugins/data/public'; -const indexPattern = { - fieldFormatMap: { - Elastic: { - type: { - title: 'string', - }, - }, - }, -}; +const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as IIndexPattern); -const items = [{ id: 1, name: 'Elastic' }]; +const items: ScriptedFieldItem[] = [{ name: '1', lang: 'Elastic', script: '' }]; describe('Table', () => { - it('should render normally', async () => { - const component = shallowWithI18nProvider( + let indexPattern: IIndexPattern; + + beforeEach(() => { + indexPattern = getIndexPatternMock({ + fieldFormatMap: { + Elastic: { + type: { + title: 'string', + }, + }, + }, + }); + }); + + test('should render normally', () => { + const component = shallow
(
{}} deleteField={() => {}} - onChange={() => {}} /> ); expect(component).toMatchSnapshot(); }); - it('should render the format', async () => { - const component = shallowWithI18nProvider( + test('should render the format', () => { + const component = shallow(
{}} deleteField={() => {}} - onChange={() => {}} /> ); @@ -65,16 +70,15 @@ describe('Table', () => { expect(formatTableCell).toMatchSnapshot(); }); - it('should allow edits', () => { + test('should allow edits', () => { const editField = jest.fn(); - const component = shallowWithI18nProvider( + const component = shallow(
{}} - onChange={() => {}} /> ); @@ -83,16 +87,15 @@ describe('Table', () => { expect(editField).toBeCalled(); }); - it('should allow deletes', () => { + test('should allow deletes', () => { const deleteField = jest.fn(); - const component = shallowWithI18nProvider( + const component = shallow(
{}} deleteField={deleteField} - onChange={() => {}} /> ); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.tsx similarity index 84% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.tsx index 5e05dd95827c7d..14aed11b32203f 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/components/table/table.tsx @@ -18,27 +18,24 @@ */ import React, { PureComponent } from 'react'; -import PropTypes from 'prop-types'; - -import { EuiInMemoryTable } from '@elastic/eui'; - +import { get } from 'lodash'; import { i18n } from '@kbn/i18n'; +import { EuiInMemoryTable, EuiBasicTableColumn } from '@elastic/eui'; -export class Table extends PureComponent { - static propTypes = { - indexPattern: PropTypes.object.isRequired, - items: PropTypes.array.isRequired, - editField: PropTypes.func.isRequired, - deleteField: PropTypes.func.isRequired, - }; +import { ScriptedFieldItem } from '../../types'; +import { IIndexPattern } from '../../../../../../../../../../../plugins/data/public'; - renderFormatCell = value => { - const { indexPattern } = this.props; +interface TableProps { + indexPattern: IIndexPattern; + items: ScriptedFieldItem[]; + editField: (field: ScriptedFieldItem) => void; + deleteField: (field: ScriptedFieldItem) => void; +} - const title = - indexPattern.fieldFormatMap[value] && indexPattern.fieldFormatMap[value].type - ? indexPattern.fieldFormatMap[value].type.title - : ''; +export class Table extends PureComponent { + renderFormatCell = (value: string) => { + const { indexPattern } = this.props; + const title = get(indexPattern, ['fieldFormatMap', value, 'type', 'title'], ''); return {title}; }; @@ -46,7 +43,7 @@ export class Table extends PureComponent { render() { const { items, editField, deleteField } = this.props; - const columns = [ + const columns: Array> = [ { field: 'displayName', name: i18n.translate('kbn.management.editIndexPattern.scripted.table.nameHeader', { @@ -101,6 +98,7 @@ export class Table extends PureComponent { name: '', actions: [ { + type: 'icon', name: i18n.translate('kbn.management.editIndexPattern.scripted.table.editHeader', { defaultMessage: 'Edit', }), @@ -112,6 +110,7 @@ export class Table extends PureComponent { onClick: editField, }, { + type: 'icon', name: i18n.translate('kbn.management.editIndexPattern.scripted.table.deleteHeader', { defaultMessage: 'Delete', }), diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/index.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/index.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/index.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/index.ts diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/scripted_field_table.test.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_field_table.test.tsx similarity index 75% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/scripted_field_table.test.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_field_table.test.tsx index 5be963ad94b7d2..914d80f9f61d7b 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/__jest__/scripted_field_table.test.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_field_table.test.tsx @@ -18,9 +18,10 @@ */ import React from 'react'; -import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers'; +import { shallow } from 'enzyme'; import { ScriptedFieldsTable } from '../scripted_fields_table'; +import { IIndexPattern } from '../../../../../../../../../plugins/data/common/index_patterns'; jest.mock('@elastic/eui', () => ({ EuiTitle: 'eui-title', @@ -36,18 +37,20 @@ jest.mock('@elastic/eui', () => ({ default: () => {}, }, })); -jest.mock('../components/header', () => ({ Header: 'header' })); -jest.mock('../components/call_outs', () => ({ CallOuts: 'call-outs' })); -jest.mock('../components/table', () => ({ +jest.mock('./components/header', () => ({ Header: 'header' })); +jest.mock('./components/call_outs', () => ({ CallOuts: 'call-outs' })); +jest.mock('./components/table', () => ({ // Note: this seems to fix React complaining about non lowercase attributes Table: () => { return 'table'; }, })); + jest.mock('ui/scripting_languages', () => ({ getSupportedScriptingLanguages: () => ['painless'], getDeprecatedScriptingLanguages: () => [], })); + jest.mock('ui/documentation_links', () => ({ documentationLinks: { scriptedFields: { @@ -61,16 +64,22 @@ const helpers = { getRouteHref: () => '#', }; -const indexPattern = { - getScriptedFields: () => [ - { name: 'ScriptedField', lang: 'painless', script: 'x++' }, - { name: 'JustATest', lang: 'painless', script: 'z++' }, - ], -}; +const getIndexPatternMock = (mockedFields: any = {}) => ({ ...mockedFields } as IIndexPattern); describe('ScriptedFieldsTable', () => { - it('should render normally', async () => { - const component = shallowWithI18nProvider( + let indexPattern: IIndexPattern; + + beforeEach(() => { + indexPattern = getIndexPatternMock({ + getScriptedFields: () => [ + { name: 'ScriptedField', lang: 'painless', script: 'x++' }, + { name: 'JustATest', lang: 'painless', script: 'z++' }, + ], + }); + }); + + test('should render normally', async () => { + const component = shallow( ); @@ -82,8 +91,8 @@ describe('ScriptedFieldsTable', () => { expect(component).toMatchSnapshot(); }); - it('should filter based on the query bar', async () => { - const component = shallowWithI18nProvider( + test('should filter based on the query bar', async () => { + const component = shallow( ); @@ -98,16 +107,16 @@ describe('ScriptedFieldsTable', () => { expect(component).toMatchSnapshot(); }); - it('should filter based on the lang filter', async () => { - const component = shallowWithI18nProvider( + test('should filter based on the lang filter', async () => { + const component = shallow( [ { name: 'ScriptedField', lang: 'painless', script: 'x++' }, { name: 'JustATest', lang: 'painless', script: 'z++' }, { name: 'Bad', lang: 'somethingElse', script: 'z++' }, ], - }} + })} helpers={helpers} /> ); @@ -123,12 +132,12 @@ describe('ScriptedFieldsTable', () => { expect(component).toMatchSnapshot(); }); - it('should hide the table if there are no scripted fields', async () => { - const component = shallowWithI18nProvider( + test('should hide the table if there are no scripted fields', async () => { + const component = shallow( [], - }} + })} helpers={helpers} /> ); @@ -141,22 +150,22 @@ describe('ScriptedFieldsTable', () => { expect(component).toMatchSnapshot(); }); - it('should show a delete modal', async () => { - const component = shallowWithI18nProvider( + test('should show a delete modal', async () => { + const component = shallow( ); await component.update(); // Fire `componentWillMount()` - component.instance().startDeleteField({ name: 'ScriptedField' }); + component.instance().startDeleteField({ name: 'ScriptedField', lang: '', script: '' }); await component.update(); // Ensure the modal is visible expect(component).toMatchSnapshot(); }); - it('should delete a field', async () => { + test('should delete a field', async () => { const removeScriptedField = jest.fn(); - const component = shallowWithI18nProvider( + const component = shallow( { ); await component.update(); // Fire `componentWillMount()` - component.instance().startDeleteField({ name: 'ScriptedField' }); + component.instance().startDeleteField({ name: 'ScriptedField', lang: '', script: '' }); + await component.update(); await component.instance().deleteField(); await component.update(); + expect(removeScriptedField).toBeCalled(); }); }); diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.js b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx similarity index 60% rename from src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.js rename to src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx index 69343a5175a25c..ba044296a693a9 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.js +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx @@ -18,31 +18,42 @@ */ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { getSupportedScriptingLanguages, getDeprecatedScriptingLanguages, } from 'ui/scripting_languages'; import { documentationLinks } from 'ui/documentation_links'; -import { EuiSpacer, EuiOverlayMask, EuiConfirmModal, EUI_MODAL_CONFIRM_BUTTON } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { Table, Header, CallOuts } from './components'; - -export class ScriptedFieldsTable extends Component { - static propTypes = { - indexPattern: PropTypes.object.isRequired, - fieldFilter: PropTypes.string, - scriptedFieldLanguageFilter: PropTypes.string, - helpers: PropTypes.shape({ - redirectToRoute: PropTypes.func.isRequired, - getRouteHref: PropTypes.func.isRequired, - }), - onRemoveField: PropTypes.func, +import { EuiSpacer } from '@elastic/eui'; + +import { Table, Header, CallOuts, DeleteScritpedFieldConfirmationModal } from './components'; +import { ScriptedFieldItem } from './types'; + +import { IIndexPattern } from '../../../../../../../../../plugins/data/public'; + +interface ScriptedFieldsTableProps { + indexPattern: IIndexPattern; + fieldFilter?: string; + scriptedFieldLanguageFilter?: string; + helpers: { + redirectToRoute: Function; + getRouteHref: Function; }; + onRemoveField?: () => void; +} - constructor(props) { +interface ScriptedFieldsTableState { + deprecatedLangsInUse: string[]; + fieldToDelete: ScriptedFieldItem | undefined; + isDeleteConfirmationModalVisible: boolean; + fields: ScriptedFieldItem[]; +} + +export class ScriptedFieldsTable extends Component< + ScriptedFieldsTableProps, + ScriptedFieldsTableState +> { + constructor(props: ScriptedFieldsTableProps) { super(props); this.state = { @@ -64,7 +75,8 @@ export class ScriptedFieldsTable extends Component { const deprecatedLangs = getDeprecatedScriptingLanguages(); const supportedLangs = getSupportedScriptingLanguages(); - for (const { lang } of fields) { + for (const field of fields) { + const lang: string = field.lang; if (deprecatedLangs.includes(lang) || !supportedLangs.includes(lang)) { deprecatedLangsInUse.push(lang); } @@ -91,7 +103,8 @@ export class ScriptedFieldsTable extends Component { let filteredFields = languageFilteredFields; if (fieldFilter) { - const normalizedFieldFilter = this.props.fieldFilter.toLowerCase(); + const normalizedFieldFilter = fieldFilter.toLowerCase(); + filteredFields = languageFilteredFields.filter(field => field.name.toLowerCase().includes(normalizedFieldFilter) ); @@ -100,18 +113,7 @@ export class ScriptedFieldsTable extends Component { return filteredFields; }; - renderCallOuts() { - const { deprecatedLangsInUse } = this.state; - - return ( - - ); - } - - startDeleteField = field => { + startDeleteField = (field: ScriptedFieldItem) => { this.setState({ fieldToDelete: field, isDeleteConfirmationModalVisible: true }); }; @@ -124,55 +126,29 @@ export class ScriptedFieldsTable extends Component { const { fieldToDelete } = this.state; indexPattern.removeScriptedField(fieldToDelete); - onRemoveField && onRemoveField(); - this.fetchFields(); - this.hideDeleteConfirmationModal(); - }; - renderDeleteConfirmationModal() { - const { fieldToDelete } = this.state; - - if (!fieldToDelete) { - return null; + if (onRemoveField) { + onRemoveField(); } - const title = i18n.translate('kbn.management.editIndexPattern.scripted.deleteFieldLabel', { - defaultMessage: "Delete scripted field '{fieldName}'?", - values: { fieldName: fieldToDelete.name }, - }); - const cancelButtonText = i18n.translate( - 'kbn.management.editIndexPattern.scripted.deleteField.cancelButton', - { defaultMessage: 'Cancel' } - ); - const confirmButtonText = i18n.translate( - 'kbn.management.editIndexPattern.scripted.deleteField.deleteButton', - { defaultMessage: 'Delete' } - ); - - return ( - - - - ); - } + this.fetchFields(); + this.hideDeleteConfirmationModal(); + }; render() { const { helpers, indexPattern } = this.props; + const { fieldToDelete, deprecatedLangsInUse } = this.state; const items = this.getFilteredItems(); return ( -
+ <>
- {this.renderCallOuts()} + @@ -183,8 +159,14 @@ export class ScriptedFieldsTable extends Component { deleteField={this.startDeleteField} /> - {this.renderDeleteConfirmationModal()} -
+ {fieldToDelete && ( + + )} + ); } } diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/types.ts b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/types.ts new file mode 100644 index 00000000000000..c1227393c561f0 --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/scripted_fields_table/types.ts @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** @internal **/ +export interface ScriptedFieldItem { + name: string; + lang: string; + script: string; +} diff --git a/src/legacy/ui/public/scripting_languages/index.js b/src/legacy/ui/public/scripting_languages/index.ts similarity index 83% rename from src/legacy/ui/public/scripting_languages/index.js rename to src/legacy/ui/public/scripting_languages/index.ts index 2f43a44d660686..283a3273a2a5df 100644 --- a/src/legacy/ui/public/scripting_languages/index.js +++ b/src/legacy/ui/public/scripting_languages/index.ts @@ -17,23 +17,25 @@ * under the License. */ +import { IHttpService } from 'angular'; +import { i18n } from '@kbn/i18n'; + import chrome from '../chrome'; import { toastNotifications } from '../notify'; -import { i18n } from '@kbn/i18n'; -export function getSupportedScriptingLanguages() { +export function getSupportedScriptingLanguages(): string[] { return ['painless']; } -export function getDeprecatedScriptingLanguages() { +export function getDeprecatedScriptingLanguages(): string[] { return []; } -export function GetEnabledScriptingLanguagesProvider($http) { +export function GetEnabledScriptingLanguagesProvider($http: IHttpService) { return () => { return $http .get(chrome.addBasePath('/api/kibana/scripts/languages')) - .then(res => res.data) + .then((res: any) => res.data) .catch(() => { toastNotifications.addDanger( i18n.translate('common.ui.scriptingLanguages.errorFetchingToastDescription', { From 52747c9c1775c0e961a06ff808f8fac6fb189743 Mon Sep 17 00:00:00 2001 From: Brandon Kobel Date: Mon, 13 Apr 2020 09:02:48 -0700 Subject: [PATCH 12/35] Only fetching TaskManager's available tasks once per call to fillPool (#61991) Co-authored-by: Elastic Machine --- .../task_manager/server/lib/fill_pool.test.ts | 4 +- .../task_manager/server/lib/fill_pool.ts | 49 +++++++++---------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/x-pack/plugins/task_manager/server/lib/fill_pool.test.ts b/x-pack/plugins/task_manager/server/lib/fill_pool.test.ts index 3863fdaf9da62c..ebb72c3ed36d62 100644 --- a/x-pack/plugins/task_manager/server/lib/fill_pool.test.ts +++ b/x-pack/plugins/task_manager/server/lib/fill_pool.test.ts @@ -10,7 +10,7 @@ import { fillPool } from './fill_pool'; import { TaskPoolRunResult } from '../task_pool'; describe('fillPool', () => { - test('stops filling when there are no more tasks in the store', async () => { + test('stops filling when pool runs all claimed tasks, even if there is more capacity', async () => { const tasks = [ [1, 2, 3], [4, 5], @@ -22,7 +22,7 @@ describe('fillPool', () => { await fillPool(fetchAvailableTasks, converter, run); - expect(_.flattenDeep(run.args)).toEqual([1, 2, 3, 4, 5]); + expect(_.flattenDeep(run.args)).toEqual([1, 2, 3]); }); test('stops filling when the pool has no more capacity', async () => { diff --git a/x-pack/plugins/task_manager/server/lib/fill_pool.ts b/x-pack/plugins/task_manager/server/lib/fill_pool.ts index 60470b22c00a98..9e4894587203d6 100644 --- a/x-pack/plugins/task_manager/server/lib/fill_pool.ts +++ b/x-pack/plugins/task_manager/server/lib/fill_pool.ts @@ -5,12 +5,12 @@ */ import { performance } from 'perf_hooks'; -import { after } from 'lodash'; import { TaskPoolRunResult } from '../task_pool'; export enum FillPoolResult { NoTasksClaimed = 'NoTasksClaimed', RanOutOfCapacity = 'RanOutOfCapacity', + PoolFilled = 'PoolFilled', } type BatchRun = (tasks: T[]) => Promise; @@ -35,33 +35,28 @@ export async function fillPool( run: BatchRun ): Promise { performance.mark('fillPool.start'); - const markClaimedTasksOnRerunCycle = after(2, () => - performance.mark('fillPool.claimedOnRerunCycle') - ); - while (true) { - const instances = await fetchAvailableTasks(); + const instances = await fetchAvailableTasks(); - if (!instances.length) { - performance.mark('fillPool.bailNoTasks'); - performance.measure( - 'fillPool.activityDurationUntilNoTasks', - 'fillPool.start', - 'fillPool.bailNoTasks' - ); - return FillPoolResult.NoTasksClaimed; - } - markClaimedTasksOnRerunCycle(); - const tasks = instances.map(converter); + if (!instances.length) { + performance.mark('fillPool.bailNoTasks'); + performance.measure( + 'fillPool.activityDurationUntilNoTasks', + 'fillPool.start', + 'fillPool.bailNoTasks' + ); + return FillPoolResult.NoTasksClaimed; + } + const tasks = instances.map(converter); - if ((await run(tasks)) === TaskPoolRunResult.RanOutOfCapacity) { - performance.mark('fillPool.bailExhaustedCapacity'); - performance.measure( - 'fillPool.activityDurationUntilExhaustedCapacity', - 'fillPool.start', - 'fillPool.bailExhaustedCapacity' - ); - return FillPoolResult.RanOutOfCapacity; - } - performance.mark('fillPool.cycle'); + if ((await run(tasks)) === TaskPoolRunResult.RanOutOfCapacity) { + performance.mark('fillPool.bailExhaustedCapacity'); + performance.measure( + 'fillPool.activityDurationUntilExhaustedCapacity', + 'fillPool.start', + 'fillPool.bailExhaustedCapacity' + ); + return FillPoolResult.RanOutOfCapacity; } + performance.mark('fillPool.cycle'); + return FillPoolResult.PoolFilled; } From 0c09a7756fb76f26b3da81b58af00b4555d0a213 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Mon, 13 Apr 2020 09:47:03 -0700 Subject: [PATCH 13/35] Added connectors loading spinner to show the actions forms only when connectors is loaded (#63211) * Added connectors loading spinner to show the actions forms only when connectors is loaded * Added warning message for actions with removed connectors * Fixed loading connectors spinner --- .../action_connector_form/action_form.tsx | 180 +++++++++++------- 1 file changed, 106 insertions(+), 74 deletions(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx index 5890d9fe07f0ea..87a8d572fda0fd 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx @@ -24,6 +24,7 @@ import { EuiToolTip, EuiIconTip, EuiLink, + EuiCallOut, } from '@elastic/eui'; import { HttpSetup, ToastsApi } from 'kibana/public'; import { loadActionTypes, loadAllActions } from '../../lib/action_connector_api'; @@ -85,8 +86,10 @@ export const ActionForm = ({ ); const [isAddActionPanelOpen, setIsAddActionPanelOpen] = useState(true); const [connectors, setConnectors] = useState([]); + const [isLoadingConnectors, setIsLoadingConnectors] = useState(false); const [isLoadingActionTypes, setIsLoadingActionTypes] = useState(false); const [actionTypesIndex, setActionTypesIndex] = useState(undefined); + const [emptyActionsIds, setEmptyActionsIds] = useState([]); // load action types useEffect(() => { @@ -128,6 +131,7 @@ export const ActionForm = ({ async function loadConnectors() { try { + setIsLoadingConnectors(true); const actionsResponse = await loadAllActions({ http }); setConnectors(actionsResponse); } catch (e) { @@ -139,6 +143,8 @@ export const ActionForm = ({ } ), }); + } finally { + setIsLoadingConnectors(false); } } const preconfiguredMessage = i18n.translate( @@ -387,13 +393,25 @@ export const ActionForm = ({ > + emptyActionsIds.find((emptyId: string) => actionItem.id === emptyId) ? ( + + ) : ( + + ) } actions={[ - {actions.map((actionItem: AlertAction, index: number) => { - const actionConnector = connectors.find(field => field.id === actionItem.id); - // connectors doesn't exists - if (!actionConnector) { - return getAddConnectorsForm(actionItem, index); - } + const alertActionsList = actions.map((actionItem: AlertAction, index: number) => { + const actionConnector = connectors.find(field => field.id === actionItem.id); + // connectors doesn't exists + if (!actionConnector) { + return getAddConnectorsForm(actionItem, index); + } + + const actionErrors: { errors: IErrorObject } = actionTypeRegistry + .get(actionItem.actionTypeId) + ?.validateParams(actionItem.params); - const actionErrors: { errors: IErrorObject } = actionTypeRegistry - .get(actionItem.actionTypeId) - ?.validateParams(actionItem.params); + return getActionTypeForm(actionItem, actionConnector, actionErrors, index); + }); - return getActionTypeForm(actionItem, actionConnector, actionErrors, index); - })} - - {isAddActionPanelOpen === false ? ( - setIsAddActionPanelOpen(true)} - > + return ( + + {isLoadingConnectors ? ( + - - ) : null} - {isAddActionPanelOpen ? ( + + ) : ( - - - -
- -
-
-
- {hasDisabledByLicenseActionTypes && ( - - -
- + {alertActionsList} + + {isAddActionPanelOpen === false ? ( + setIsAddActionPanelOpen(true)} + > + + + ) : null} + {isAddActionPanelOpen ? ( + + + + +
- -
-
-
- )} -
- - - {isLoadingActionTypes ? ( - - - - ) : ( - actionTypeNodes - )} - +
+
+
+ {hasDisabledByLicenseActionTypes && ( + + +
+ + + +
+
+
+ )} +
+ + + {isLoadingActionTypes ? ( + + + + ) : ( + actionTypeNodes + )} + +
+ ) : null} - ) : null} + )} {actionTypesIndex && activeActionItem ? ( Date: Mon, 13 Apr 2020 11:22:11 -0600 Subject: [PATCH 14/35] [Maps] turn on blended layer for geojson upload (#63200) Co-authored-by: Elastic Machine --- .../client_file_source/geojson_file_source.js | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js b/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js index 1003f8329da227..df11fe9f327709 100644 --- a/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js +++ b/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js @@ -10,11 +10,11 @@ import { ES_GEO_FIELD_TYPE, GEOJSON_FILE, DEFAULT_MAX_RESULT_WINDOW, + SCALING_TYPES, } from '../../../../common/constants'; import { ClientFileCreateSourceEditor } from './create_client_file_source_editor'; import { ESSearchSource } from '../es_search_source'; import uuid from 'uuid/v4'; -import _ from 'lodash'; import { i18n } from '@kbn/i18n'; import { registerSource } from '../source_registry'; @@ -91,23 +91,22 @@ const viewIndexedData = ( importErrorHandler(indexResponses); return; } - const { fields, id } = indexPatternResp; - const geoFieldArr = fields.filter(field => - Object.values(ES_GEO_FIELD_TYPE).includes(field.type) - ); - const geoField = _.get(geoFieldArr, '[0].name'); - const indexPatternId = id; + const { fields, id: indexPatternId } = indexPatternResp; + const geoField = fields.find(field => Object.values(ES_GEO_FIELD_TYPE).includes(field.type)); if (!indexPatternId || !geoField) { addAndViewSource(null); } else { - // Only turn on bounds filter for large doc counts - const filterByMapBounds = indexDataResp.docCount > DEFAULT_MAX_RESULT_WINDOW; const source = new ESSearchSource( { id: uuid(), indexPatternId, - geoField, - filterByMapBounds, + geoField: geoField.name, + // Only turn on bounds filter for large doc counts + filterByMapBounds: indexDataResp.docCount > DEFAULT_MAX_RESULT_WINDOW, + scalingType: + geoField.type === ES_GEO_FIELD_TYPE.GEO_POINT + ? SCALING_TYPES.CLUSTERS + : SCALING_TYPES.LIMIT, }, inspectorAdapters ); From 5559b09dccbf682686a48d7bfc3b4123e3aa245c Mon Sep 17 00:00:00 2001 From: Ryland Herrick Date: Mon, 13 Apr 2020 12:24:09 -0500 Subject: [PATCH 15/35] Consistent terminology around cypress test data (#63279) * Uses "data" or "test data" when referring to the general idea * Uses "archive" when referring to the specific data/implementation * Adds a few grammar/spelling tweaks --- x-pack/legacy/plugins/siem/cypress/README.md | 32 +++++++------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/x-pack/legacy/plugins/siem/cypress/README.md b/x-pack/legacy/plugins/siem/cypress/README.md index a031fea172be5e..89bafce9c9dc86 100644 --- a/x-pack/legacy/plugins/siem/cypress/README.md +++ b/x-pack/legacy/plugins/siem/cypress/README.md @@ -129,31 +129,21 @@ yarn cypress:run-as-ci ``` Note that with this type of execution you don't need to have running a kibana and elasticsearch instance. This is because - the command, as it would happen in the CI, will launch the instances. The elasticsearch instance will be fed with the data - placed in: `x-pack/test/siem_cypress/es_archives` + the command, as it would happen in the CI, will launch the instances. The elasticsearch instance will be fed data + found in: `x-pack/test/siem_cypress/es_archives` As in this case we want to mimic a CI execution we want to execute the tests with the same set of data, this is why in this case does not make sense to override Cypress environment variables. ### Test data -As said before when running the tests as Jenkins the tests are fed with the data placed in: `x-pack/test/siem_cypress/es_archives`. +As mentioned above, when running the tests as Jenkins the tests are populated with data ("archives") found in: `x-pack/test/siem_cypress/es_archives`. -Currently there are two different ways of feeding data: -1. By default -2. Specifying a specific set of data for a specific test +By default, each test is populated with some base data: an empty kibana index and a set of auditbeat data (the `empty_kibana` and `auditbeat` archives, respectively). This is usually enough to cover most of the scenarios that we are testing. -#### By default +#### Running tests with additional archives -When a execution of the test is going to be done an empty kibana and a set of audibteat data are loaded (empty_kibana and auditbeat). With this data usually is enough to cover most of the scenarios that we are testing. - -#### Running tests with custom data - -Sometimes the default data is not enough and we need a specific set of data in order to being able to test the desired behaviour. - -In that case in the hooks of the test use the function `esArchiverLoad` to load the set of data neeed and `esArchiverUnload` to remove the changes done in the data. - -Example: +When the base data is insufficient, one can specify additional archives. Use `esArchiverLoad` to load the necessary archive, and `esArchiverUnload` to remove the archive from elasticsearch: ```typescript import { esArchiverLoad, esArchiverUnload } from '../tasks/es_archiver'; @@ -174,11 +164,11 @@ describe('This are going to be a set of tests', () => { ``` -Note that loading and unloading data takes a signifcant amount of time so try to minimize the use of it when possible. +Note that loading and unloading data take a significant amount of time, so try to minimize their use. -### Current sets of data +### Current archives -The current sets of data can be found in: `x-pack/test/siem_cypress/es_archives` folder. +The current archives can be found in `x-pack/test/siem_cypress/es_archives/`. - auditbeat - Auditbeat data generated in Sep, 2019 with the following hosts present: @@ -197,9 +187,9 @@ The current sets of data can be found in: `x-pack/test/siem_cypress/es_archives` - signals - Set of data with 108 opened signals linked to "Signals test" custom rule. -### How to generate new test data +### How to generate a new archive -We are using es_archiver in order to generate the data that our Cypress tests needs. +We are using es_archiver in order to manage the data that our Cypress tests needs. 1. Setup if possible a clean instance of kibana and elasticsearch (if not, possible please try to clean the data that you are going to generate). 2. With the kibana and elasticsearch instance up and running, create the data that you need for your test. From a58cc5da12a250610aae1cee078124ee350fd29b Mon Sep 17 00:00:00 2001 From: patrykkopycinski Date: Mon, 13 Apr 2020 19:40:48 +0200 Subject: [PATCH 16/35] [SIEM] Fix AlertsTable id (#63368) --- .../siem/public/components/alerts_viewer/alerts_table.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/alerts_table.tsx b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/alerts_table.tsx index 05d8f97bb8849b..dd608babef48fc 100644 --- a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/alerts_table.tsx +++ b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/alerts_table.tsx @@ -17,7 +17,7 @@ export interface OwnProps { start: number; } -const ALERTS_TABLE_ID = 'timeline-alerts-table'; +const ALERTS_TABLE_ID = 'alerts-table'; const defaultAlertsFilters: Filter[] = [ { meta: { From 1084b1c7b9ec09c98baa74ad56db3f5d2a394826 Mon Sep 17 00:00:00 2001 From: Maggie Ghamry <46542915+maggieghamry@users.noreply.github.com> Date: Mon, 13 Apr 2020 13:41:12 -0400 Subject: [PATCH 17/35] Update to pagination for workpad and templates (#62050) Added logic to hide pagination if no Canvas workpads exists, and disable the previous/next arrows if there is only one page, for both workapds and templates --- .../components/workpad_loader/workpad_loader.js | 16 +++++++++++----- .../workpad_templates/workpad_templates.js | 12 +++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/x-pack/legacy/plugins/canvas/public/components/workpad_loader/workpad_loader.js b/x-pack/legacy/plugins/canvas/public/components/workpad_loader/workpad_loader.js index 9b30b3e1ec7ca5..30d4ded8571c59 100644 --- a/x-pack/legacy/plugins/canvas/public/components/workpad_loader/workpad_loader.js +++ b/x-pack/legacy/plugins/canvas/public/components/workpad_loader/workpad_loader.js @@ -266,11 +266,17 @@ export class WorkpadLoader extends React.PureComponent { data-test-subj="canvasWorkpadLoaderTable" /> - - - - - + {rows.length > 0 && ( + + + + + + )} ); diff --git a/x-pack/legacy/plugins/canvas/public/components/workpad_templates/workpad_templates.js b/x-pack/legacy/plugins/canvas/public/components/workpad_templates/workpad_templates.js index c80db544bf3702..a9a157f5675f8d 100644 --- a/x-pack/legacy/plugins/canvas/public/components/workpad_templates/workpad_templates.js +++ b/x-pack/legacy/plugins/canvas/public/components/workpad_templates/workpad_templates.js @@ -113,11 +113,13 @@ export class WorkpadTemplates extends React.PureComponent { className="canvasWorkpad__dropzoneTable canvasWorkpad__dropzoneTable--tags" /> - - - - - + {rows.length > 0 && ( + + + + + + )} ); }; From 19fcc6111a1ce526c0c4157de6de36b40f4d634d Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Mon, 13 Apr 2020 14:21:02 -0400 Subject: [PATCH 18/35] Use MapInput type from Maps plugin (#61539) --- .../functions/common/saved_map.ts | 29 +++---------------- .../input_type_to_expression/map.test.ts | 10 +++---- .../input_type_to_expression/map.ts | 4 +-- 3 files changed, 11 insertions(+), 32 deletions(-) diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts index 4b045b0c5edcf2..cba19ce7da80f6 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts @@ -5,8 +5,6 @@ */ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; -import { TimeRange, Filter as DataFilter } from 'src/plugins/data/public'; -import { EmbeddableInput } from 'src/plugins/embeddable/public'; import { getQueryFilters } from '../../../public/lib/build_embeddable_filters'; import { Filter, MapCenter, TimeRange as TimeRangeArg } from '../../../types'; import { @@ -15,6 +13,7 @@ import { EmbeddableExpression, } from '../../expression_types'; import { getFunctionHelp } from '../../../i18n'; +import { MapEmbeddableInput } from '../../../../../plugins/maps/public'; interface Arguments { id: string; @@ -24,32 +23,12 @@ interface Arguments { timerange: TimeRangeArg | null; } -// Map embeddable is missing proper typings, so type is just to document what we -// are expecting to pass to the embeddable -export type SavedMapInput = EmbeddableInput & { - id: string; - isLayerTOCOpen: boolean; - timeRange?: TimeRange; - refreshConfig: { - isPaused: boolean; - interval: number; - }; - hideFilterActions: true; - filters: DataFilter[]; - mapCenter?: { - lat: number; - lon: number; - zoom: number; - }; - hiddenLayers?: string[]; -}; - const defaultTimeRange = { from: 'now-15m', to: 'now', }; -type Output = EmbeddableExpression; +type Output = EmbeddableExpression; export function savedMap(): ExpressionFunctionDefinition< 'savedMap', @@ -108,8 +87,8 @@ export function savedMap(): ExpressionFunctionDefinition< filters: getQueryFilters(filters), timeRange: args.timerange || defaultTimeRange, refreshConfig: { - isPaused: false, - interval: 0, + pause: false, + value: 0, }, mapCenter: center, diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.test.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.test.ts index 4c294fb37c2dba..f9ff94ee7d8f16 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.test.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.test.ts @@ -5,7 +5,7 @@ */ import { toExpression } from './map'; -import { SavedMapInput } from '../../../functions/common/saved_map'; +import { MapEmbeddableInput } from '../../../../../maps/public'; import { fromExpression, Ast } from '@kbn/interpreter/common'; const baseSavedMapInput = { @@ -13,15 +13,15 @@ const baseSavedMapInput = { filters: [], isLayerTOCOpen: false, refreshConfig: { - isPaused: true, - interval: 0, + pause: true, + value: 0, }, hideFilterActions: true as true, }; describe('toExpression', () => { it('converts to a savedMap expression', () => { - const input: SavedMapInput = { + const input: MapEmbeddableInput = { ...baseSavedMapInput, }; @@ -39,7 +39,7 @@ describe('toExpression', () => { }); it('includes optional input values', () => { - const input: SavedMapInput = { + const input: MapEmbeddableInput = { ...baseSavedMapInput, mapCenter: { lat: 1, diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.ts index e3f9eca61ae285..e0cb71c17774c0 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/input_type_to_expression/map.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { SavedMapInput } from '../../../functions/common/saved_map'; +import { MapEmbeddableInput } from '../../../../../maps/public'; -export function toExpression(input: SavedMapInput): string { +export function toExpression(input: MapEmbeddableInput): string { const expressionParts = [] as string[]; expressionParts.push('savedMap'); From e27526fd92eaa0094b70ddb2119a326543475c2c Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Mon, 13 Apr 2020 15:29:24 -0400 Subject: [PATCH 19/35] Move away from npStart for embeddables in canvas (#62680) Co-authored-by: Elastic Machine --- .../canvas/canvas_plugin_src/plugin.ts | 28 +++- .../renderers/embeddable/embeddable.tsx | 143 +++++++++--------- .../canvas_plugin_src/renderers/index.js | 5 +- .../components/embeddable_flyout/flyout.tsx | 7 +- .../components/embeddable_flyout/index.tsx | 1 + x-pack/legacy/plugins/canvas/public/legacy.ts | 2 + .../legacy/plugins/canvas/public/plugin.tsx | 18 ++- 7 files changed, 114 insertions(+), 90 deletions(-) diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/plugin.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/plugin.ts index 7cd1efe9e27c83..a654c6b28b3505 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/plugin.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/plugin.ts @@ -6,11 +6,14 @@ import { CoreSetup, CoreStart, Plugin } from 'src/core/public'; import { CanvasSetup } from '../public'; +import { EmbeddableStart } from '../../../../../src/plugins/embeddable/public'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; +import { Start as InspectorStart } from '../../../../../src/plugins/inspector/public'; import { functions } from './functions/browser'; import { typeFunctions } from './expression_types'; // @ts-ignore: untyped local -import { renderFunctions } from './renderers'; +import { renderFunctions, renderFunctionFactories } from './renderers'; import { elementSpecs } from './elements'; // @ts-ignore Untyped Local @@ -30,13 +33,26 @@ interface SetupDeps { canvas: CanvasSetup; } +export interface StartDeps { + embeddable: EmbeddableStart; + uiActions: UiActionsStart; + inspector: InspectorStart; +} + /** @internal */ -export class CanvasSrcPlugin implements Plugin<{}, {}, SetupDeps, {}> { - public setup(core: CoreSetup, plugins: SetupDeps) { +export class CanvasSrcPlugin implements Plugin { + public setup(core: CoreSetup, plugins: SetupDeps) { plugins.canvas.addFunctions(functions); plugins.canvas.addTypes(typeFunctions); + plugins.canvas.addRenderers(renderFunctions); + core.getStartServices().then(([coreStart, depsStart]) => { + plugins.canvas.addRenderers( + renderFunctionFactories.map((factory: any) => factory(coreStart, depsStart)) + ); + }); + plugins.canvas.addElements(elementSpecs); plugins.canvas.addDatasourceUIs(datasourceSpecs); plugins.canvas.addModelUIs(modelSpecs); @@ -45,11 +61,7 @@ export class CanvasSrcPlugin implements Plugin<{}, {}, SetupDeps, {}> { plugins.canvas.addTagUIs(tagSpecs); plugins.canvas.addTemplates(templateSpecs); plugins.canvas.addTransformUIs(transformSpecs); - - return {}; } - public start(core: CoreStart, plugins: {}) { - return {}; - } + public start(core: CoreStart, plugins: StartDeps) {} } diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx index 817be6e144fc83..a1096d50c16535 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx @@ -7,7 +7,8 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { I18nContext } from 'ui/i18n'; -import { npStart } from 'ui/new_platform'; +import { CoreStart } from '../../../../../../../src/core/public'; +import { StartDeps } from '../../plugin'; import { IEmbeddable, EmbeddableFactory, @@ -28,86 +29,88 @@ const embeddablesRegistry: { [key: string]: IEmbeddable; } = {}; -const renderEmbeddable = (embeddableObject: IEmbeddable, domNode: HTMLElement) => { - return ( -
- - - -
- ); +const renderEmbeddableFactory = (core: CoreStart, plugins: StartDeps) => { + return (embeddableObject: IEmbeddable, domNode: HTMLElement) => { + return ( +
+ + + +
+ ); + }; }; -const embeddable = () => ({ - name: 'embeddable', - displayName: strings.getDisplayName(), - help: strings.getHelpDescription(), - reuseDomNode: true, - render: async ( - domNode: HTMLElement, - { input, embeddableType }: EmbeddableExpression, - handlers: RendererHandlers - ) => { - const uniqueId = handlers.getElementId(); - - if (!embeddablesRegistry[uniqueId]) { - const factory = Array.from(npStart.plugins.embeddable.getEmbeddableFactories()).find( - embeddableFactory => embeddableFactory.type === embeddableType - ) as EmbeddableFactory; - - if (!factory) { - handlers.done(); - throw new EmbeddableFactoryNotFoundError(embeddableType); - } - - const embeddableObject = await factory.createFromSavedObject(input.id, input); +export const embeddableRendererFactory = (core: CoreStart, plugins: StartDeps) => { + const renderEmbeddable = renderEmbeddableFactory(core, plugins); + return () => ({ + name: 'embeddable', + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render: async ( + domNode: HTMLElement, + { input, embeddableType }: EmbeddableExpression, + handlers: RendererHandlers + ) => { + const uniqueId = handlers.getElementId(); + + if (!embeddablesRegistry[uniqueId]) { + const factory = Array.from(plugins.embeddable.getEmbeddableFactories()).find( + embeddableFactory => embeddableFactory.type === embeddableType + ) as EmbeddableFactory; + + if (!factory) { + handlers.done(); + throw new EmbeddableFactoryNotFoundError(embeddableType); + } - embeddablesRegistry[uniqueId] = embeddableObject; - ReactDOM.unmountComponentAtNode(domNode); + const embeddableObject = await factory.createFromSavedObject(input.id, input); - const subscription = embeddableObject.getInput$().subscribe(function(updatedInput) { - const updatedExpression = embeddableInputToExpression(updatedInput, embeddableType); + embeddablesRegistry[uniqueId] = embeddableObject; + ReactDOM.unmountComponentAtNode(domNode); - if (updatedExpression) { - handlers.onEmbeddableInputChange(updatedExpression); - } - }); + const subscription = embeddableObject.getInput$().subscribe(function(updatedInput) { + const updatedExpression = embeddableInputToExpression(updatedInput, embeddableType); - ReactDOM.render(renderEmbeddable(embeddableObject, domNode), domNode, () => handlers.done()); + if (updatedExpression) { + handlers.onEmbeddableInputChange(updatedExpression); + } + }); - handlers.onResize(() => { ReactDOM.render(renderEmbeddable(embeddableObject, domNode), domNode, () => handlers.done() ); - }); - handlers.onDestroy(() => { - subscription.unsubscribe(); - handlers.onEmbeddableDestroyed(); + handlers.onResize(() => { + ReactDOM.render(renderEmbeddable(embeddableObject, domNode), domNode, () => + handlers.done() + ); + }); - delete embeddablesRegistry[uniqueId]; + handlers.onDestroy(() => { + subscription.unsubscribe(); + handlers.onEmbeddableDestroyed(); - return ReactDOM.unmountComponentAtNode(domNode); - }); - } else { - embeddablesRegistry[uniqueId].updateInput(input); - } - }, -}); + delete embeddablesRegistry[uniqueId]; -export { embeddable }; + return ReactDOM.unmountComponentAtNode(domNode); + }); + } else { + embeddablesRegistry[uniqueId].updateInput(input); + } + }, + }); +}; diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/index.js b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/index.js index 48364be06e539c..84f92f5149893f 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/index.js +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/renderers/index.js @@ -7,7 +7,7 @@ import { advancedFilter } from './advanced_filter'; import { debug } from './debug'; import { dropdownFilter } from './dropdown_filter'; -import { embeddable } from './embeddable/embeddable'; +import { embeddableRendererFactory } from './embeddable/embeddable'; import { error } from './error'; import { image } from './image'; import { markdown } from './markdown'; @@ -26,7 +26,6 @@ export const renderFunctions = [ advancedFilter, debug, dropdownFilter, - embeddable, error, image, markdown, @@ -41,3 +40,5 @@ export const renderFunctions = [ text, timeFilter, ]; + +export const renderFunctionFactories = [embeddableRendererFactory]; diff --git a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx index 08cd3084c35cff..4916a27fcbe60a 100644 --- a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx +++ b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx @@ -5,7 +5,6 @@ */ import React from 'react'; -import { npStart } from 'ui/new_platform'; import { EuiFlyout, EuiFlyoutHeader, EuiFlyoutBody, EuiTitle } from '@elastic/eui'; import { SavedObjectFinderUi, @@ -13,6 +12,7 @@ import { } from '../../../../../../../src/plugins/saved_objects/public/'; import { ComponentStrings } from '../../../i18n'; import { CoreStart } from '../../../../../../../src/core/public'; +import { CanvasStartDeps } from '../../plugin'; const { AddEmbeddableFlyout: strings } = ComponentStrings; @@ -22,11 +22,12 @@ export interface Props { availableEmbeddables: string[]; savedObjects: CoreStart['savedObjects']; uiSettings: CoreStart['uiSettings']; + getEmbeddableFactories: CanvasStartDeps['embeddable']['getEmbeddableFactories']; } export class AddEmbeddableFlyout extends React.Component { onAddPanel = (id: string, savedObjectType: string, name: string) => { - const embeddableFactories = npStart.plugins.embeddable.getEmbeddableFactories(); + const embeddableFactories = this.props.getEmbeddableFactories(); // Find the embeddable type from the saved object type const found = Array.from(embeddableFactories).find(embeddableFactory => { @@ -42,7 +43,7 @@ export class AddEmbeddableFlyout extends React.Component { }; render() { - const embeddableFactories = npStart.plugins.embeddable.getEmbeddableFactories(); + const embeddableFactories = this.props.getEmbeddableFactories(); const availableSavedObjects = Array.from(embeddableFactories) .filter(factory => { diff --git a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/index.tsx b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/index.tsx index a86784d374f49b..c13cbfd0422377 100644 --- a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/index.tsx +++ b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/index.tsx @@ -105,6 +105,7 @@ export class EmbeddableFlyoutPortal extends React.Component, this.el ); diff --git a/x-pack/legacy/plugins/canvas/public/legacy.ts b/x-pack/legacy/plugins/canvas/public/legacy.ts index a6caa1985325ef..4af7c9b2bd0576 100644 --- a/x-pack/legacy/plugins/canvas/public/legacy.ts +++ b/x-pack/legacy/plugins/canvas/public/legacy.ts @@ -26,7 +26,9 @@ const shimSetupPlugins: CanvasSetupDeps = { }; const shimStartPlugins: CanvasStartDeps = { ...npStart.plugins, + embeddable: npStart.plugins.embeddable, expressions: npStart.plugins.expressions, + inspector: npStart.plugins.inspector, uiActions: npStart.plugins.uiActions, __LEGACY: { // ToDo: Copy directly into canvas diff --git a/x-pack/legacy/plugins/canvas/public/plugin.tsx b/x-pack/legacy/plugins/canvas/public/plugin.tsx index d9e5e6b4b084bf..3ea3ce625ca719 100644 --- a/x-pack/legacy/plugins/canvas/public/plugin.tsx +++ b/x-pack/legacy/plugins/canvas/public/plugin.tsx @@ -11,6 +11,8 @@ import { initLoadingIndicator } from './lib/loading_indicator'; import { featureCatalogueEntry } from './feature_catalogue_entry'; import { ExpressionsSetup, ExpressionsStart } from '../../../../../src/plugins/expressions/public'; import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; +import { EmbeddableStart } from '../../../../../src/plugins/embeddable/public'; +import { Start as InspectorStart } from '../../../../../src/plugins/inspector/public'; // @ts-ignore untyped local import { argTypeSpecs } from './expression_types/arg_types'; import { transitions } from './transitions'; @@ -31,7 +33,9 @@ export interface CanvasSetupDeps { } export interface CanvasStartDeps { + embeddable: EmbeddableStart; expressions: ExpressionsStart; + inspector: InspectorStart; uiActions: UiActionsStart; __LEGACY: { absoluteToParsedUrl: (url: string, basePath: string) => any; @@ -48,14 +52,19 @@ export interface CanvasStartDeps { // These interfaces are empty for now but will be populate as we need to export // things for other plugins to use at startup or runtime export type CanvasSetup = CanvasApi; -export interface CanvasStart {} // eslint-disable-line @typescript-eslint/no-empty-interface +export type CanvasStart = void; /** @internal */ export class CanvasPlugin implements Plugin { + // TODO: Do we want to completely move canvas_plugin_src into it's own plugin? + private srcPlugin = new CanvasSrcPlugin(); + public setup(core: CoreSetup, plugins: CanvasSetupDeps) { const { api: canvasApi, registries } = getPluginApi(plugins.expressions); + this.srcPlugin.setup(core, { canvas: canvasApi }); + core.application.register({ id: 'canvas', title: 'Canvas App', @@ -84,10 +93,6 @@ export class CanvasPlugin canvasApi.addElements(legacyRegistries.elements.getOriginalFns()); canvasApi.addTypes(legacyRegistries.types.getOriginalFns()); - // TODO: Do we want to completely move canvas_plugin_src into it's own plugin? - const srcPlugin = new CanvasSrcPlugin(); - srcPlugin.setup(core, { canvas: canvasApi }); - // Register core canvas stuff canvasApi.addFunctions(initFunctions({ typesRegistry: plugins.expressions.__LEGACY.types })); canvasApi.addArgumentUIs(argTypeSpecs); @@ -99,8 +104,7 @@ export class CanvasPlugin } public start(core: CoreStart, plugins: CanvasStartDeps) { + this.srcPlugin.start(core, plugins); initLoadingIndicator(core.http.addLoadingCountSource); - - return {}; } } From 301b795db6b988adb5875ef4a9d96fdb20c66ed5 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 13 Apr 2020 13:30:18 -0600 Subject: [PATCH 20/35] [Maps] update geospatial filters to use geo_shape query for geo_point fields (#62966) Co-authored-by: Elastic Machine --- .../map/mb/draw_control/draw_control.js | 19 ++-- .../maps/public/elasticsearch_geo_utils.js | 99 ++++++------------- 2 files changed, 34 insertions(+), 84 deletions(-) diff --git a/x-pack/legacy/plugins/maps/public/connected_components/map/mb/draw_control/draw_control.js b/x-pack/legacy/plugins/maps/public/connected_components/map/mb/draw_control/draw_control.js index df2988d399c5bb..cc0e665525036f 100644 --- a/x-pack/legacy/plugins/maps/public/connected_components/map/mb/draw_control/draw_control.js +++ b/x-pack/legacy/plugins/maps/public/connected_components/map/mb/draw_control/draw_control.js @@ -12,7 +12,6 @@ import DrawRectangle from 'mapbox-gl-draw-rectangle-mode'; import { DrawCircle } from './draw_circle'; import { createDistanceFilterWithMeta, - createSpatialFilterWithBoundingBox, createSpatialFilterWithGeometry, getBoundingBoxGeometry, roundCoordinates, @@ -84,23 +83,17 @@ export class DrawControl extends React.Component { roundCoordinates(geometry.coordinates); try { - const options = { + const filter = createSpatialFilterWithGeometry({ + geometry: + this.props.drawState.drawType === DRAW_TYPE.BOUNDS + ? getBoundingBoxGeometry(geometry) + : geometry, indexPatternId: this.props.drawState.indexPatternId, geoFieldName: this.props.drawState.geoFieldName, geoFieldType: this.props.drawState.geoFieldType, geometryLabel: this.props.drawState.geometryLabel, relation: this.props.drawState.relation, - }; - const filter = - this.props.drawState.drawType === DRAW_TYPE.BOUNDS - ? createSpatialFilterWithBoundingBox({ - ...options, - geometry: getBoundingBoxGeometry(geometry), - }) - : createSpatialFilterWithGeometry({ - ...options, - geometry, - }); + }); this.props.addFilters([filter]); } catch (error) { // TODO notify user why filter was not created diff --git a/x-pack/plugins/maps/public/elasticsearch_geo_utils.js b/x-pack/plugins/maps/public/elasticsearch_geo_utils.js index 79467e26ec3fad..617cf537fd5c31 100644 --- a/x-pack/plugins/maps/public/elasticsearch_geo_utils.js +++ b/x-pack/plugins/maps/public/elasticsearch_geo_utils.js @@ -231,28 +231,16 @@ function createGeoBoundBoxFilter(geometry, geoFieldName, filterProps = {}) { }; } -function createGeoPolygonFilter(polygonCoordinates, geoFieldName, filterProps = {}) { - return { - geo_polygon: { - ignore_unmapped: true, - [geoFieldName]: { - points: polygonCoordinates[POLYGON_COORDINATES_EXTERIOR_INDEX].map(coordinatePair => { - return { - lon: coordinatePair[LON_INDEX], - lat: coordinatePair[LAT_INDEX], - }; - }), - }, - }, - ...filterProps, - }; -} - export function createExtentFilter(mapExtent, geoFieldName, geoFieldType) { ensureGeoField(geoFieldType); const safePolygon = convertMapExtentToPolygon(mapExtent); + // Extent filters are used to dynamically filter data for the current map view port. + // Continue to use geo_bounding_box queries for extent filters + // 1) geo_bounding_box queries are faster than polygon queries + // 2) geo_shape benefits of pre-indexed shapes and + // compatability across multi-indices with geo_point and geo_shape do not apply to this use case. if (geoFieldType === ES_GEO_FIELD_TYPE.GEO_POINT) { return createGeoBoundBoxFilter(safePolygon, geoFieldName); } @@ -267,15 +255,7 @@ export function createExtentFilter(mapExtent, geoFieldName, geoFieldType) { }; } -export function createSpatialFilterWithBoundingBox(options) { - return createGeometryFilterWithMeta({ ...options, isBoundingBox: true }); -} - -export function createSpatialFilterWithGeometry(options) { - return createGeometryFilterWithMeta(options); -} - -function createGeometryFilterWithMeta({ +export function createSpatialFilterWithGeometry({ preIndexedShape, geometry, geometryLabel, @@ -283,16 +263,16 @@ function createGeometryFilterWithMeta({ geoFieldName, geoFieldType, relation = ES_SPATIAL_RELATIONS.INTERSECTS, - isBoundingBox = false, }) { ensureGeoField(geoFieldType); - const relationLabel = - geoFieldType === ES_GEO_FIELD_TYPE.GEO_POINT - ? i18n.translate('xpack.maps.es_geo_utils.shapeFilter.geoPointRelationLabel', { - defaultMessage: 'in', - }) - : getEsSpatialRelationLabel(relation); + const isGeoPoint = geoFieldType === ES_GEO_FIELD_TYPE.GEO_POINT; + + const relationLabel = isGeoPoint + ? i18n.translate('xpack.maps.es_geo_utils.shapeFilter.geoPointRelationLabel', { + defaultMessage: 'in', + }) + : getEsSpatialRelationLabel(relation); const meta = { type: SPATIAL_FILTER_TYPE, negate: false, @@ -301,47 +281,24 @@ function createGeometryFilterWithMeta({ alias: `${geoFieldName} ${relationLabel} ${geometryLabel}`, }; - if (geoFieldType === ES_GEO_FIELD_TYPE.GEO_SHAPE) { - const shapeQuery = { - relation, - }; - - if (preIndexedShape) { - shapeQuery.indexed_shape = preIndexedShape; - } else { - shapeQuery.shape = geometry; - } - - return { - meta, - geo_shape: { - ignore_unmapped: true, - [geoFieldName]: shapeQuery, - }, - }; - } - - // geo_points supports limited geometry types - ensureGeometryType(geometry.type, [GEO_JSON_TYPE.POLYGON, GEO_JSON_TYPE.MULTI_POLYGON]); - - if (geometry.type === GEO_JSON_TYPE.MULTI_POLYGON) { - return { - meta, - query: { - bool: { - should: geometry.coordinates.map(polygonCoordinates => { - return createGeoPolygonFilter(polygonCoordinates, geoFieldName); - }), - }, - }, - }; - } + const shapeQuery = { + // geo_shape query with geo_point field only supports intersects relation + relation: isGeoPoint ? ES_SPATIAL_RELATIONS.INTERSECTS : relation, + }; - if (isBoundingBox) { - return createGeoBoundBoxFilter(geometry, geoFieldName, { meta }); + if (preIndexedShape) { + shapeQuery.indexed_shape = preIndexedShape; + } else { + shapeQuery.shape = geometry; } - return createGeoPolygonFilter(geometry.coordinates, geoFieldName, { meta }); + return { + meta, + geo_shape: { + ignore_unmapped: true, + [geoFieldName]: shapeQuery, + }, + }; } export function createDistanceFilterWithMeta({ From a6ecd4c2783c81090072936c142faf6a0dc1bfe0 Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Mon, 13 Apr 2020 15:33:43 -0400 Subject: [PATCH 21/35] [Maps] Add SOURCE_TYPES enumeration (#62975) --- .../ems_raster_tile_to_ems_vector_tile.js | 4 ++-- .../migrations/move_apply_global_query.js | 6 +++-- .../maps/common/migrations/references.js | 8 +++++-- .../maps/common/migrations/references.test.js | 14 +++++------ .../maps/common/migrations/scaling_type.ts | 4 ++-- .../migrations/top_hits_time_to_sort.js | 4 ++-- .../server/maps_telemetry/maps_telemetry.ts | 4 ++-- .../components/embeddables/map_config.ts | 5 ++-- x-pack/plugins/maps/common/constants.ts | 23 ++++++++++--------- .../public/layers/blended_vector_layer.ts | 8 +++++-- .../client_file_source/geojson_file_source.js | 6 ++--- .../ems_file_source/ems_file_source.js | 6 ++--- .../sources/ems_tms_source/ems_tms_source.js | 6 ++--- .../es_geo_grid_source/es_geo_grid_source.js | 8 +++---- .../es_geo_grid_source.test.ts | 4 ++-- .../es_pew_pew_source/es_pew_pew_source.js | 6 ++--- .../es_search_source/es_search_source.js | 8 +++---- .../es_search_source/es_search_source.test.ts | 4 ++-- .../kibana_regionmap_source.js | 6 ++--- .../kibana_tilemap_source.js | 6 ++--- .../layers/sources/wms_source/wms_source.js | 6 ++--- .../xyz_tms_source/xyz_tms_source.test.ts | 4 ++-- .../sources/xyz_tms_source/xyz_tms_source.ts | 6 ++--- .../maps/public/layers/tile_layer.test.ts | 4 ++-- 24 files changed, 86 insertions(+), 74 deletions(-) diff --git a/x-pack/legacy/plugins/maps/common/migrations/ems_raster_tile_to_ems_vector_tile.js b/x-pack/legacy/plugins/maps/common/migrations/ems_raster_tile_to_ems_vector_tile.js index 94f4018bbdbb75..091cfd8605cb69 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/ems_raster_tile_to_ems_vector_tile.js +++ b/x-pack/legacy/plugins/maps/common/migrations/ems_raster_tile_to_ems_vector_tile.js @@ -5,11 +5,11 @@ */ import _ from 'lodash'; -import { EMS_TMS, LAYER_TYPE } from '../constants'; +import { SOURCE_TYPES, LAYER_TYPE } from '../constants'; function isEmsTileSource(layerDescriptor) { const sourceType = _.get(layerDescriptor, 'sourceDescriptor.type'); - return sourceType === EMS_TMS; + return sourceType === SOURCE_TYPES.EMS_TMS; } function isTileLayer(layerDescriptor) { diff --git a/x-pack/legacy/plugins/maps/common/migrations/move_apply_global_query.js b/x-pack/legacy/plugins/maps/common/migrations/move_apply_global_query.js index 490e760d8c0031..0d6b0052d2b0d2 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/move_apply_global_query.js +++ b/x-pack/legacy/plugins/maps/common/migrations/move_apply_global_query.js @@ -5,11 +5,13 @@ */ import _ from 'lodash'; -import { ES_GEO_GRID, ES_PEW_PEW, ES_SEARCH } from '../constants'; +import { SOURCE_TYPES } from '../constants'; function isEsSource(layerDescriptor) { const sourceType = _.get(layerDescriptor, 'sourceDescriptor.type'); - return [ES_GEO_GRID, ES_PEW_PEW, ES_SEARCH].includes(sourceType); + return [SOURCE_TYPES.ES_GEO_GRID, SOURCE_TYPES.ES_PEW_PEW, SOURCE_TYPES.ES_SEARCH].includes( + sourceType + ); } // Migration to move applyGlobalQuery from layer to sources. diff --git a/x-pack/legacy/plugins/maps/common/migrations/references.js b/x-pack/legacy/plugins/maps/common/migrations/references.js index a96af700da37c2..3980705fd7cfab 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/references.js +++ b/x-pack/legacy/plugins/maps/common/migrations/references.js @@ -7,11 +7,15 @@ // Can not use public Layer classes to extract references since this logic must run in both client and server. import _ from 'lodash'; -import { ES_GEO_GRID, ES_SEARCH, ES_PEW_PEW } from '../constants'; +import { SOURCE_TYPES } from '../constants'; function doesSourceUseIndexPattern(layerDescriptor) { const sourceType = _.get(layerDescriptor, 'sourceDescriptor.type'); - return sourceType === ES_GEO_GRID || sourceType === ES_SEARCH || sourceType === ES_PEW_PEW; + return ( + sourceType === SOURCE_TYPES.ES_GEO_GRID || + sourceType === SOURCE_TYPES.ES_SEARCH || + sourceType === SOURCE_TYPES.ES_PEW_PEW + ); } export function extractReferences({ attributes, references = [] }) { diff --git a/x-pack/legacy/plugins/maps/common/migrations/references.test.js b/x-pack/legacy/plugins/maps/common/migrations/references.test.js index 40f6fd72a48d7d..50a45c81339dc3 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/references.test.js +++ b/x-pack/legacy/plugins/maps/common/migrations/references.test.js @@ -5,16 +5,16 @@ */ import { extractReferences, injectReferences } from './references'; -import { ES_GEO_GRID, ES_SEARCH, ES_PEW_PEW } from '../constants'; +import { SOURCE_TYPES } from '../constants'; const layerListJSON = { esSearchSource: { - withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${ES_SEARCH}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, - withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${ES_SEARCH}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, + withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_SEARCH}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, + withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_SEARCH}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, }, esGeoGridSource: { - withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${ES_GEO_GRID}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, - withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${ES_GEO_GRID}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, + withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_GEO_GRID}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, + withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_GEO_GRID}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, }, join: { withIndexPatternId: @@ -23,8 +23,8 @@ const layerListJSON = { '[{"joins":[{"right":{"indexPatternRefName":"layer_0_join_0_index_pattern"}}]}]', }, pewPewSource: { - withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${ES_PEW_PEW}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, - withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${ES_PEW_PEW}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, + withIndexPatternId: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_PEW_PEW}\",\"indexPatternId\":\"c698b940-e149-11e8-a35a-370a8516603a\"}}]`, + withIndexPatternRef: `[{\"sourceDescriptor\":{\"type\":\"${SOURCE_TYPES.ES_PEW_PEW}\",\"indexPatternRefName\":\"layer_0_source_index_pattern\"}}]`, }, }; diff --git a/x-pack/legacy/plugins/maps/common/migrations/scaling_type.ts b/x-pack/legacy/plugins/maps/common/migrations/scaling_type.ts index 5823ddd6b42e35..551975fbacea52 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/scaling_type.ts +++ b/x-pack/legacy/plugins/maps/common/migrations/scaling_type.ts @@ -5,13 +5,13 @@ */ import _ from 'lodash'; -import { ES_SEARCH, SCALING_TYPES } from '../constants'; +import { SOURCE_TYPES, SCALING_TYPES } from '../constants'; import { LayerDescriptor, ESSearchSourceDescriptor } from '../descriptor_types'; import { MapSavedObjectAttributes } from '../../../../../plugins/maps/common/map_saved_object_type'; function isEsDocumentSource(layerDescriptor: LayerDescriptor) { const sourceType = _.get(layerDescriptor, 'sourceDescriptor.type'); - return sourceType === ES_SEARCH; + return sourceType === SOURCE_TYPES.ES_SEARCH; } export function migrateUseTopHitsToScalingType({ diff --git a/x-pack/legacy/plugins/maps/common/migrations/top_hits_time_to_sort.js b/x-pack/legacy/plugins/maps/common/migrations/top_hits_time_to_sort.js index 7392dfa71bf3ab..055c867486f6c1 100644 --- a/x-pack/legacy/plugins/maps/common/migrations/top_hits_time_to_sort.js +++ b/x-pack/legacy/plugins/maps/common/migrations/top_hits_time_to_sort.js @@ -5,11 +5,11 @@ */ import _ from 'lodash'; -import { ES_SEARCH, SORT_ORDER } from '../constants'; +import { SOURCE_TYPES, SORT_ORDER } from '../constants'; function isEsDocumentSource(layerDescriptor) { const sourceType = _.get(layerDescriptor, 'sourceDescriptor.type'); - return sourceType === ES_SEARCH; + return sourceType === SOURCE_TYPES.ES_SEARCH; } export function topHitsTimeToSort({ attributes }) { diff --git a/x-pack/legacy/plugins/maps/server/maps_telemetry/maps_telemetry.ts b/x-pack/legacy/plugins/maps/server/maps_telemetry/maps_telemetry.ts index 0300f22eeeb825..27c0211446e852 100644 --- a/x-pack/legacy/plugins/maps/server/maps_telemetry/maps_telemetry.ts +++ b/x-pack/legacy/plugins/maps/server/maps_telemetry/maps_telemetry.ts @@ -12,7 +12,7 @@ import { } from 'src/core/server'; import { IFieldType, IIndexPattern } from 'src/plugins/data/public'; import { - EMS_FILE, + SOURCE_TYPES, ES_GEO_FIELD_TYPE, MAP_SAVED_OBJECT_TYPE, TELEMETRY_TYPE, @@ -100,7 +100,7 @@ export function buildMapsTelemetry({ const emsLayersCount = layerLists.map(lList => _(lList) .countBy((layer: LayerDescriptor) => { - const isEmsFile = _.get(layer, 'sourceDescriptor.type') === EMS_FILE; + const isEmsFile = _.get(layer, 'sourceDescriptor.type') === SOURCE_TYPES.EMS_FILE; return isEmsFile && _.get(layer, 'sourceDescriptor.id'); }) .pick((val, key) => key !== 'false') diff --git a/x-pack/legacy/plugins/siem/public/components/embeddables/map_config.ts b/x-pack/legacy/plugins/siem/public/components/embeddables/map_config.ts index e8b267122f86fa..8c96e0b75a1365 100644 --- a/x-pack/legacy/plugins/siem/public/components/embeddables/map_config.ts +++ b/x-pack/legacy/plugins/siem/public/components/embeddables/map_config.ts @@ -13,6 +13,7 @@ import { LayerMappingDetails, } from './types'; import * as i18n from './translations'; +import { SOURCE_TYPES } from '../../../../../../plugins/maps/common/constants'; const euiVisColorPalette = euiPaletteColorBlind(); // Update field mappings to modify what fields will be returned to map tooltip @@ -101,7 +102,7 @@ export const lmc: LayerMappingCollection = { export const getLayerList = (indexPatternIds: IndexPatternMapping[]) => { return [ { - sourceDescriptor: { type: 'EMS_TMS', isAutoSelect: true }, + sourceDescriptor: { type: SOURCE_TYPES.EMS_TMS, isAutoSelect: true }, id: uuid.v4(), label: null, minZoom: 0, @@ -260,7 +261,7 @@ export const getLineLayer = ( layerDetails: LayerMapping ) => ({ sourceDescriptor: { - type: 'ES_PEW_PEW', + type: SOURCE_TYPES.ES_PEW_PEW, applyGlobalQuery: true, id: uuid.v4(), indexPatternId, diff --git a/x-pack/plugins/maps/common/constants.ts b/x-pack/plugins/maps/common/constants.ts index f3997f741a1bfe..1468bf7fdc1f27 100644 --- a/x-pack/plugins/maps/common/constants.ts +++ b/x-pack/plugins/maps/common/constants.ts @@ -56,15 +56,18 @@ export enum SORT_ORDER { DESC = 'desc', } -export const EMS_TMS = 'EMS_TMS'; -export const EMS_FILE = 'EMS_FILE'; -export const ES_GEO_GRID = 'ES_GEO_GRID'; -export const ES_SEARCH = 'ES_SEARCH'; -export const ES_PEW_PEW = 'ES_PEW_PEW'; -export const EMS_XYZ = 'EMS_XYZ'; // identifies a custom TMS source. Name is a little unfortunate. -export const WMS = 'WMS'; -export const KIBANA_TILEMAP = 'KIBANA_TILEMAP'; -export const REGIONMAP_FILE = 'REGIONMAP_FILE'; +export enum SOURCE_TYPES { + EMS_TMS = 'EMS_TMS', + EMS_FILE = 'EMS_FILE', + ES_GEO_GRID = 'ES_GEO_GRID', + ES_SEARCH = 'ES_SEARCH', + ES_PEW_PEW = 'ES_PEW_PEW', + EMS_XYZ = 'EMS_XYZ', // identifies a custom TMS source. Name is a little unfortunate. + WMS = 'WMS', + KIBANA_TILEMAP = 'KIBANA_TILEMAP', + REGIONMAP_FILE = 'REGIONMAP_FILE', + GEOJSON_FILE = 'GEOJSON_FILE', +} export enum FIELD_ORIGIN { SOURCE = 'source', @@ -77,8 +80,6 @@ export const SOURCE_META_ID_ORIGIN = `${SOURCE_DATA_ID_ORIGIN}_${META_ID_ORIGIN_ export const FORMATTERS_ID_ORIGIN_SUFFIX = 'formatters'; export const SOURCE_FORMATTERS_ID_ORIGIN = `${SOURCE_DATA_ID_ORIGIN}_${FORMATTERS_ID_ORIGIN_SUFFIX}`; -export const GEOJSON_FILE = 'GEOJSON_FILE'; - export const MIN_ZOOM = 0; export const MAX_ZOOM = 24; diff --git a/x-pack/plugins/maps/public/layers/blended_vector_layer.ts b/x-pack/plugins/maps/public/layers/blended_vector_layer.ts index 80bf0299380d9b..9a9ea2968ceebd 100644 --- a/x-pack/plugins/maps/public/layers/blended_vector_layer.ts +++ b/x-pack/plugins/maps/public/layers/blended_vector_layer.ts @@ -11,9 +11,9 @@ import { getDefaultDynamicProperties } from './styles/vector/vector_style_defaul import { IDynamicStyleProperty } from './styles/vector/properties/dynamic_style_property'; import { IStyleProperty } from './styles/vector/properties/style_property'; import { + SOURCE_TYPES, COUNT_PROP_LABEL, COUNT_PROP_NAME, - ES_GEO_GRID, LAYER_TYPE, AGG_TYPE, RENDER_AS, @@ -180,7 +180,11 @@ export class BlendedVectorLayer extends VectorLayer implements IVectorLayer { const sourceDataRequest = this.getSourceDataRequest(); if (sourceDataRequest) { const requestMeta = sourceDataRequest.getMeta(); - if (requestMeta && requestMeta.sourceType && requestMeta.sourceType === ES_GEO_GRID) { + if ( + requestMeta && + requestMeta.sourceType && + requestMeta.sourceType === SOURCE_TYPES.ES_GEO_GRID + ) { isClustered = true; } } diff --git a/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js b/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js index df11fe9f327709..137513ad7c6127 100644 --- a/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js +++ b/x-pack/plugins/maps/public/layers/sources/client_file_source/geojson_file_source.js @@ -8,7 +8,7 @@ import { AbstractVectorSource } from '../vector_source'; import React from 'react'; import { ES_GEO_FIELD_TYPE, - GEOJSON_FILE, + SOURCE_TYPES, DEFAULT_MAX_RESULT_WINDOW, SCALING_TYPES, } from '../../../../common/constants'; @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { registerSource } from '../source_registry'; export class GeojsonFileSource extends AbstractVectorSource { - static type = GEOJSON_FILE; + static type = SOURCE_TYPES.GEOJSON_FILE; static isIndexingSource = true; @@ -130,7 +130,7 @@ const previewGeojsonFile = (onPreviewSource, inspectorAdapters) => { registerSource({ ConstructorFunction: GeojsonFileSource, - type: GEOJSON_FILE, + type: SOURCE_TYPES.GEOJSON_FILE, }); export const uploadLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js b/x-pack/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js index d3ccc0cb55821c..e8af17b9119391 100644 --- a/x-pack/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js +++ b/x-pack/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js @@ -7,7 +7,7 @@ import { AbstractVectorSource } from '../vector_source'; import { VECTOR_SHAPE_TYPES } from '../vector_feature_types'; import React from 'react'; -import { EMS_FILE, FIELD_ORIGIN } from '../../../../common/constants'; +import { SOURCE_TYPES, FIELD_ORIGIN } from '../../../../common/constants'; import { getEMSClient } from '../../../meta'; import { EMSFileCreateSourceEditor } from './create_source_editor'; import { i18n } from '@kbn/i18n'; @@ -21,7 +21,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.emsFileTitle', { }); export class EMSFileSource extends AbstractVectorSource { - static type = EMS_FILE; + static type = SOURCE_TYPES.EMS_FILE; static createDescriptor({ id, tooltipProperties = [] }) { return { @@ -159,7 +159,7 @@ export class EMSFileSource extends AbstractVectorSource { registerSource({ ConstructorFunction: EMSFileSource, - type: EMS_FILE, + type: SOURCE_TYPES.EMS_FILE, }); export const emsBoundariesLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/ems_tms_source/ems_tms_source.js b/x-pack/plugins/maps/public/layers/sources/ems_tms_source/ems_tms_source.js index 1da3680dfdc862..79121c4cdb31f6 100644 --- a/x-pack/plugins/maps/public/layers/sources/ems_tms_source/ems_tms_source.js +++ b/x-pack/plugins/maps/public/layers/sources/ems_tms_source/ems_tms_source.js @@ -14,7 +14,7 @@ import { TileServiceSelect } from './tile_service_select'; import { UpdateSourceEditor } from './update_source_editor'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; -import { EMS_TMS } from '../../../../common/constants'; +import { SOURCE_TYPES } from '../../../../common/constants'; import { getInjectedVarFunc, getUiSettings } from '../../../kibana_services'; import { registerSource } from '../source_registry'; @@ -23,7 +23,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.emsTileTitle', { }); export class EMSTMSSource extends AbstractTMSSource { - static type = EMS_TMS; + static type = SOURCE_TYPES.EMS_TMS; static createDescriptor(sourceConfig) { return { @@ -148,7 +148,7 @@ export class EMSTMSSource extends AbstractTMSSource { registerSource({ ConstructorFunction: EMSTMSSource, - type: EMS_TMS, + type: SOURCE_TYPES.EMS_TMS, }); export const emsBaseMapLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.js b/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.js index 04f944396ab35b..b9ef13e520bf89 100644 --- a/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.js +++ b/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.js @@ -17,8 +17,8 @@ import { COLOR_GRADIENTS } from '../../styles/color_utils'; import { CreateSourceEditor } from './create_source_editor'; import { UpdateSourceEditor } from './update_source_editor'; import { + SOURCE_TYPES, DEFAULT_MAX_BUCKETS_LIMIT, - ES_GEO_GRID, COUNT_PROP_NAME, COLOR_MAP_TYPE, RENDER_AS, @@ -45,7 +45,7 @@ const heatmapTitle = i18n.translate('xpack.maps.source.esGridHeatmapTitle', { }); export class ESGeoGridSource extends AbstractESAggSource { - static type = ES_GEO_GRID; + static type = SOURCE_TYPES.ES_GEO_GRID; static createDescriptor({ indexPatternId, geoField, requestType, resolution }) { return { @@ -311,7 +311,7 @@ export class ESGeoGridSource extends AbstractESAggSource { }, meta: { areResultsTrimmed: false, - sourceType: ES_GEO_GRID, + sourceType: SOURCE_TYPES.ES_GEO_GRID, }, }; } @@ -420,7 +420,7 @@ export class ESGeoGridSource extends AbstractESAggSource { registerSource({ ConstructorFunction: ESGeoGridSource, - type: ES_GEO_GRID, + type: SOURCE_TYPES.ES_GEO_GRID, }); export const clustersLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.test.ts b/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.test.ts index 727435c3cbfef1..e35bb998ce7dbe 100644 --- a/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.test.ts +++ b/x-pack/plugins/maps/public/layers/sources/es_geo_grid_source/es_geo_grid_source.test.ts @@ -7,7 +7,7 @@ jest.mock('../../../kibana_services', () => {}); jest.mock('ui/new_platform'); import { ESGeoGridSource } from './es_geo_grid_source'; -import { ES_GEO_GRID, GRID_RESOLUTION, RENDER_AS } from '../../../../common/constants'; +import { GRID_RESOLUTION, RENDER_AS, SOURCE_TYPES } from '../../../../common/constants'; describe('ESGeoGridSource', () => { const geogridSource = new ESGeoGridSource( @@ -17,7 +17,7 @@ describe('ESGeoGridSource', () => { geoField: 'bar', metrics: [], resolution: GRID_RESOLUTION.COARSE, - type: ES_GEO_GRID, + type: SOURCE_TYPES.ES_GEO_GRID, requestType: RENDER_AS.HEATMAP, }, {} diff --git a/x-pack/plugins/maps/public/layers/sources/es_pew_pew_source/es_pew_pew_source.js b/x-pack/plugins/maps/public/layers/sources/es_pew_pew_source/es_pew_pew_source.js index ea3a2d2fe634d5..57e5afb99404b5 100644 --- a/x-pack/plugins/maps/public/layers/sources/es_pew_pew_source/es_pew_pew_source.js +++ b/x-pack/plugins/maps/public/layers/sources/es_pew_pew_source/es_pew_pew_source.js @@ -16,7 +16,7 @@ import { getDefaultDynamicProperties } from '../../styles/vector/vector_style_de import { i18n } from '@kbn/i18n'; import { FIELD_ORIGIN, - ES_PEW_PEW, + SOURCE_TYPES, COUNT_PROP_NAME, VECTOR_STYLES, } from '../../../../common/constants'; @@ -35,7 +35,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.pewPewTitle', { }); export class ESPewPewSource extends AbstractESAggSource { - static type = ES_PEW_PEW; + static type = SOURCE_TYPES.ES_PEW_PEW; static createDescriptor({ indexPatternId, sourceGeoField, destGeoField }) { return { @@ -232,7 +232,7 @@ export class ESPewPewSource extends AbstractESAggSource { registerSource({ ConstructorFunction: ESPewPewSource, - type: ES_PEW_PEW, + type: SOURCE_TYPES.ES_PEW_PEW, }); export const point2PointLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.js b/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.js index ce9932bd15cea7..96679f0e859412 100644 --- a/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.js +++ b/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.js @@ -17,7 +17,7 @@ import { hitsToGeoJson } from '../../../elasticsearch_geo_utils'; import { CreateSourceEditor } from './create_source_editor'; import { UpdateSourceEditor } from './update_source_editor'; import { - ES_SEARCH, + SOURCE_TYPES, ES_GEO_FIELD_TYPE, DEFAULT_MAX_BUCKETS_LIMIT, SORT_ORDER, @@ -69,7 +69,7 @@ function getDocValueAndSourceFields(indexPattern, fieldNames) { } export class ESSearchSource extends AbstractESSource { - static type = ES_SEARCH; + static type = SOURCE_TYPES.ES_SEARCH; constructor(descriptor, inspectorAdapters) { super( @@ -404,7 +404,7 @@ export class ESSearchSource extends AbstractESSource { return { data: featureCollection, - meta: { ...meta, sourceType: ES_SEARCH }, + meta: { ...meta, sourceType: SOURCE_TYPES.ES_SEARCH }, }; } @@ -570,7 +570,7 @@ export class ESSearchSource extends AbstractESSource { registerSource({ ConstructorFunction: ESSearchSource, - type: ES_SEARCH, + type: SOURCE_TYPES.ES_SEARCH, }); export const esDocumentsLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.test.ts b/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.test.ts index 2197e24aedb59a..66cc2ddd854041 100644 --- a/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.test.ts +++ b/x-pack/plugins/maps/public/layers/sources/es_search_source/es_search_source.test.ts @@ -8,11 +8,11 @@ jest.mock('../../../kibana_services'); import { ESSearchSource } from './es_search_source'; import { VectorLayer } from '../../vector_layer'; -import { ES_SEARCH, SCALING_TYPES } from '../../../../common/constants'; +import { SCALING_TYPES, SOURCE_TYPES } from '../../../../common/constants'; import { ESSearchSourceDescriptor } from '../../../../common/descriptor_types'; const descriptor: ESSearchSourceDescriptor = { - type: ES_SEARCH, + type: SOURCE_TYPES.ES_SEARCH, id: '1234', indexPatternId: 'myIndexPattern', geoField: 'myLocation', diff --git a/x-pack/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js b/x-pack/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js index 7f4bcfa41f7c4e..be333f8ee85a43 100644 --- a/x-pack/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js +++ b/x-pack/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js @@ -10,7 +10,7 @@ import { CreateSourceEditor } from './create_source_editor'; import { getKibanaRegionList } from '../../../meta'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; -import { FIELD_ORIGIN, REGIONMAP_FILE } from '../../../../common/constants'; +import { FIELD_ORIGIN, SOURCE_TYPES } from '../../../../common/constants'; import { KibanaRegionField } from '../../fields/kibana_region_field'; import { registerSource } from '../source_registry'; @@ -19,7 +19,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.kbnRegionMapTitle', { }); export class KibanaRegionmapSource extends AbstractVectorSource { - static type = REGIONMAP_FILE; + static type = SOURCE_TYPES.REGIONMAP_FILE; static createDescriptor({ name }) { return { @@ -99,7 +99,7 @@ export class KibanaRegionmapSource extends AbstractVectorSource { registerSource({ ConstructorFunction: KibanaRegionmapSource, - type: REGIONMAP_FILE, + type: SOURCE_TYPES.REGIONMAP_FILE, }); export const kibanaRegionMapLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/kibana_tilemap_source/kibana_tilemap_source.js b/x-pack/plugins/maps/public/layers/sources/kibana_tilemap_source/kibana_tilemap_source.js index b21bb6bdbbad45..bbb653eff32e24 100644 --- a/x-pack/plugins/maps/public/layers/sources/kibana_tilemap_source/kibana_tilemap_source.js +++ b/x-pack/plugins/maps/public/layers/sources/kibana_tilemap_source/kibana_tilemap_source.js @@ -11,7 +11,7 @@ import { getKibanaTileMap } from '../../../meta'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; import _ from 'lodash'; -import { KIBANA_TILEMAP } from '../../../../common/constants'; +import { SOURCE_TYPES } from '../../../../common/constants'; import { registerSource } from '../source_registry'; const sourceTitle = i18n.translate('xpack.maps.source.kbnTMSTitle', { @@ -19,7 +19,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.kbnTMSTitle', { }); export class KibanaTilemapSource extends AbstractTMSSource { - static type = KIBANA_TILEMAP; + static type = SOURCE_TYPES.KIBANA_TILEMAP; static createDescriptor() { return { @@ -86,7 +86,7 @@ export class KibanaTilemapSource extends AbstractTMSSource { registerSource({ ConstructorFunction: KibanaTilemapSource, - type: KIBANA_TILEMAP, + type: SOURCE_TYPES.KIBANA_TILEMAP, }); export const kibanaBasemapLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/wms_source/wms_source.js b/x-pack/plugins/maps/public/layers/sources/wms_source/wms_source.js index 749560a2bb4b19..33f764784124e0 100644 --- a/x-pack/plugins/maps/public/layers/sources/wms_source/wms_source.js +++ b/x-pack/plugins/maps/public/layers/sources/wms_source/wms_source.js @@ -12,7 +12,7 @@ import { WMSCreateSourceEditor } from './wms_create_source_editor'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel, getUrlLabel } from '../../../../common/i18n_getters'; import { WmsClient } from './wms_client'; -import { WMS } from '../../../../common/constants'; +import { SOURCE_TYPES } from '../../../../common/constants'; import { registerSource } from '../source_registry'; const sourceTitle = i18n.translate('xpack.maps.source.wmsTitle', { @@ -20,7 +20,7 @@ const sourceTitle = i18n.translate('xpack.maps.source.wmsTitle', { }); export class WMSSource extends AbstractTMSSource { - static type = WMS; + static type = SOURCE_TYPES.WMS; static createDescriptor({ serviceUrl, layers, styles, attributionText, attributionUrl }) { return { @@ -92,7 +92,7 @@ export class WMSSource extends AbstractTMSSource { registerSource({ ConstructorFunction: WMSSource, - type: WMS, + type: SOURCE_TYPES.WMS, }); export const wmsLayerWizardConfig = { diff --git a/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.test.ts b/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.test.ts index 8a5cfb01e58215..4031a18bff7cb7 100644 --- a/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.test.ts +++ b/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.test.ts @@ -7,11 +7,11 @@ import { XYZTMSSource } from './xyz_tms_source'; import { ILayer } from '../../layer'; import { TileLayer } from '../../tile_layer'; -import { EMS_XYZ } from '../../../../common/constants'; +import { SOURCE_TYPES } from '../../../../common/constants'; import { XYZTMSSourceDescriptor } from '../../../../common/descriptor_types'; const descriptor: XYZTMSSourceDescriptor = { - type: EMS_XYZ, + type: SOURCE_TYPES.EMS_XYZ, urlTemplate: 'https://example.com/{x}/{y}/{z}.png', id: 'foobar', }; diff --git a/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.ts b/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.ts index dd96c315733162..8b64480f92961a 100644 --- a/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.ts +++ b/x-pack/plugins/maps/public/layers/sources/xyz_tms_source/xyz_tms_source.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import { TileLayer } from '../../tile_layer'; import { getDataSourceLabel, getUrlLabel } from '../../../../common/i18n_getters'; -import { EMS_XYZ } from '../../../../common/constants'; +import { SOURCE_TYPES } from '../../../../common/constants'; import { registerSource } from '../source_registry'; import { AbstractTMSSource } from '../tms_source'; import { LayerDescriptor, XYZTMSSourceDescriptor } from '../../../../common/descriptor_types'; @@ -19,7 +19,7 @@ export const sourceTitle = i18n.translate('xpack.maps.source.ems_xyzTitle', { }); export class XYZTMSSource extends AbstractTMSSource { - static type = EMS_XYZ; + static type = SOURCE_TYPES.EMS_XYZ; readonly _descriptor: XYZTMSSourceDescriptor; @@ -83,5 +83,5 @@ export class XYZTMSSource extends AbstractTMSSource { registerSource({ ConstructorFunction: XYZTMSSource, - type: EMS_XYZ, + type: SOURCE_TYPES.EMS_XYZ, }); diff --git a/x-pack/plugins/maps/public/layers/tile_layer.test.ts b/x-pack/plugins/maps/public/layers/tile_layer.test.ts index 43465eac7f3ceb..f8c2fd9db60fa5 100644 --- a/x-pack/plugins/maps/public/layers/tile_layer.test.ts +++ b/x-pack/plugins/maps/public/layers/tile_layer.test.ts @@ -5,13 +5,13 @@ */ import { TileLayer } from './tile_layer'; -import { EMS_XYZ } from '../../common/constants'; +import { SOURCE_TYPES } from '../../common/constants'; import { XYZTMSSourceDescriptor } from '../../common/descriptor_types'; import { ITMSSource, AbstractTMSSource } from './sources/tms_source'; import { ILayer } from './layer'; const sourceDescriptor: XYZTMSSourceDescriptor = { - type: EMS_XYZ, + type: SOURCE_TYPES.EMS_XYZ, urlTemplate: 'https://example.com/{x}/{y}/{z}.png', id: 'foobar', }; From 9b25fe1ebdf03df51cde86a7f8c1dbf789e97877 Mon Sep 17 00:00:00 2001 From: Melori Arellano Date: Mon, 13 Apr 2020 13:57:50 -0600 Subject: [PATCH 22/35] [DOCS] Add ILM tutorial (#59502) * Add tutorial for ILM with filebeat * Change screenshots and add additional steps * Update screenshots, add numbered steps, and other minor edits * Incorporate feedback: update links, formatting, and minor edits * Move tip inline with list * Apply suggestions from code review Co-Authored-By: James Rodewig * Move TIP inline . . . again * Put TIP inline Co-authored-by: James Rodewig --- docs/images/tutorial-ilm-custom-policy.png | Bin 0 -> 482469 bytes .../tutorial-ilm-delete-phase-creation.png | Bin 0 -> 71022 bytes docs/images/tutorial-ilm-delete-rollover.png | Bin 0 -> 123735 bytes .../tutorial-ilm-hotphaserollover-default.png | Bin 0 -> 252951 bytes ...ilm-modify-default-warm-phase-rollover.png | Bin 0 -> 455134 bytes .../example-index-lifecycle-policy.asciidoc | 186 ++++++++++++++++-- 6 files changed, 171 insertions(+), 15 deletions(-) create mode 100644 docs/images/tutorial-ilm-custom-policy.png create mode 100644 docs/images/tutorial-ilm-delete-phase-creation.png create mode 100644 docs/images/tutorial-ilm-delete-rollover.png create mode 100644 docs/images/tutorial-ilm-hotphaserollover-default.png create mode 100644 docs/images/tutorial-ilm-modify-default-warm-phase-rollover.png diff --git a/docs/images/tutorial-ilm-custom-policy.png b/docs/images/tutorial-ilm-custom-policy.png new file mode 100644 index 0000000000000000000000000000000000000000..03b67829f605ca339df644110f9cf57838c58fb7 GIT binary patch literal 482469 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

Wj3VY2Cq%y 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 literal 0 HcmV?d00001 diff --git a/docs/images/tutorial-ilm-modify-default-warm-phase-rollover.png b/docs/images/tutorial-ilm-modify-default-warm-phase-rollover.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f1e9b40e9777450420d36d1dbe5122466ea36f GIT binary patch literal 455134 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≤HxUyZFe%r=|9)j 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

Zy?<$S#a~QZiZ(-`)Ddt^i(@r#-kxn==YtvXz z6#e0J^NV?>fjZRdlF81`dBxIX)^7Q%qc#w1d~ReJ$G)Wcom-bPf%Y>-X6WWjr7ub9SO*Qrqk;Gr!rHx)U*mcJxIoVAmC3|OaElPhTXOQ1ESX;{r~^~ literal 0 HcmV?d00001 diff --git a/docs/management/index-lifecycle-policies/example-index-lifecycle-policy.asciidoc b/docs/management/index-lifecycle-policies/example-index-lifecycle-policy.asciidoc index f68708f1b6394b..e6d94e9ca61a33 100644 --- a/docs/management/index-lifecycle-policies/example-index-lifecycle-policy.asciidoc +++ b/docs/management/index-lifecycle-policies/example-index-lifecycle-policy.asciidoc @@ -1,23 +1,179 @@ [role="xpack"] + [[example-using-index-lifecycle-policy]] -=== Example of using an index lifecycle policy +=== Tutorial: Use {ilm-init} to manage {filebeat} time-based indices + +With {ilm} ({ilm-init}), you can create policies that perform actions automatically +on indices as they age and grow. {ilm-init} policies help you to manage +performance, resilience, and retention of your data during its lifecycle. This tutorial shows +you how to use {kib}’s *Index Lifecycle Policies* to modify and create {ilm-init} +policies. You can learn more about all of the actions, benefits, and lifecycle +phases in the {ref}/overview-index-lifecycle-management.html[{ilm-init} overview]. + + +[discrete] +[[example-using-index-lifecycle-policy-scenario]] +==== Scenario + +You’re tasked with sending syslog files to an {es} cluster. This +log data has the following data retention guidelines: + +* Keep logs on hot data nodes for 30 days +* Roll over to a new index if the size reaches 50GB +* After 30 days: +** Move the logs to warm data nodes +** Set {ref}/glossary.html#glossary-replica-shard[replica shards] to 1 +** {ref}/indices-forcemerge.html[Force merge] multiple index segments to free up the space used by deleted documents +* Delete logs after 90 days + + +[discrete] +[[example-using-index-lifecycle-policy-prerequisites]] +==== Prerequisites + +To complete this tutorial, you'll need: + +* An {es} cluster with hot and warm nodes configured for shard allocation +awareness. If you’re using {cloud}/ec-getting-started-templates-hot-warm.html[{ess}], +choose the hot-warm architecture deployment template. + ++ +For a self-managed cluster, add node attributes as described for {ref}/shard-allocation-filtering.html[shard allocation filtering] +to label data nodes as hot or warm. This step is required to migrate shards between +nodes configured with specific hardware for the hot or warm phases. ++ +For example, you can set this in your `elasticsearch.yml` for each data node: ++ +[source,yaml] +-------------------------------------------------------------------------------- +node.attr.data: "warm" +-------------------------------------------------------------------------------- + +* A server with {filebeat} installed and configured to send logs to the `elasticsearch` +output as described in {filebeat-ref}/filebeat-getting-started.html[Getting Started with {filebeat}]. + +[discrete] +[[example-using-index-lifecycle-policy-view-fb-ilm-policy]] +==== View the {filebeat} {ilm-init} policy + +{filebeat} includes a default {ilm-init} policy that enables rollover. {ilm-init} +is enabled automatically if you’re using the default `filebeat.yml` and index template. + +To view the default policy in {kib}, go to *Management > Index Lifecycle Policies*, +search for _filebeat_, and choose the _filebeat-version_ policy. + +This policy initiates the rollover action when the index size reaches 50GB or +becomes 30 days old. + +[role="screenshot"] +image::images/tutorial-ilm-hotphaserollover-default.png["Default policy"] + + +[float] +==== Modify the policy + +The default policy is enough to prevent the creation of many tiny daily indices. +You can modify the policy to meet more complex requirements. + +. Activate the warm phase. + ++ +. Set either of the following options to control when the index moves to the warm phase: + +** Provide a value for *Timing for warm phase*. Setting this to *15* keeps the +indices on hot nodes for a range of 15-45 days, depending on when the initial +rollover occurred. + +** Enable *Move to warm phase on rollover*. The index might move to the warm phase +more quickly than intended if it reaches the *Maximum index size* before the +the *Maximum age*. + +. In the *Select a node attribute to control shard allocation* dropdown, select +*data:warm(2)* to migrate shards to warm data nodes. + +. Change *Number of replicas* to *1*. + +. Enable *Force merge data* and set *Number of segments* to *1*. ++ +NOTE: When rollover is enabled in the hot phase, action timing in the other phases +is based on the rollover date. + ++ +[role="screenshot"] +image::images/tutorial-ilm-modify-default-warm-phase-rollover.png["Modify to add warm phase"] + +. Activate the delete phase and set *Timing for delete phase* to *90* days. ++ +[role="screenshot"] +image::images/tutorial-ilm-delete-rollover.png["Add a delete phase"] + +[float] +==== Create a custom policy + +If meeting a specific retention time period is most important, you can create a +custom policy. For this option, you will use {filebeat} daily indices without +rollover. + +. Create a custom policy in {kib}, go to *Management > Index Lifecycle Policies > +Create Policy*. + +. Activate the warm phase and configure it as follows: ++ +|=== +|*Setting* |*Value* + +|Timing for warm phase +|30 days from index creation + +|Node attribute +|`data:warm` + +|Number of replicas +|1 + +|Force merge data +|enable + +|Number of segments +|1 +|=== + ++ +[role="screenshot"] +image::images/tutorial-ilm-custom-policy.png["Modify the custom policy to add a warm phase"] + -A common use case for managing index lifecycle policies is when you’re using -{beats-ref}/beats-reference.html[Beats] to continually send time-series data, -such as metrics and log data, to {es}. When you create the Beats packages, an -index template is installed. The template includes a default policy to apply -when new indices are created. ++ +. Activate the delete phase and set the timing. ++ +|=== +|*Setting* |*Value* +|Timing for delete phase +|90 +|=== -You can edit the policy in {kib}'s *Index Lifecycle Policies*. For example, you might: ++ +[role="screenshot"] +image::images/tutorial-ilm-delete-phase-creation.png["Delete phase"] -* Rollover the index when it reaches 50 GB in size or is 30 days old. These -settings are the default for the Beats lifecycle policy. This avoids -having 1000s of tiny indices. When a rollover occurs, a new “hot” index is -created and added to the index alias. +. Configure the index to use the new policy in *{kib} > Management > Index Lifecycle +Policies* -* Move the index into the warm phase, shrink the index down to a single shard, -and force merge to a single segment. +.. Find your {ilm-init} policy. +.. Click the *Actions* link next to your policy name. +.. Choose *Add policy to index template*. +.. Select your {filebeat} index template name from the *Index template* list. For example, `filebeat-7.5.x`. +.. Click *Add Policy* to save the changes. -* After 60 days, move the index into the cold phase and onto less expensive hardware. ++ +NOTE: If you initially used the default {filebeat} {ilm-init} policy, you will +see a notice that the template already has a policy associated with it. Confirm +that you want to overwrite that configuration. -* Delete the index after 90 days. ++ ++ +TIP: When you change the policy associated with the index template, the active +index will continue to use the policy it was associated with at index creation +unless you manually update it. The next new index will use the updated policy. +For more reasons that your {ilm-init} policy changes might be delayed, see +{ref}/update-lifecycle-policy.html#update-lifecycle-policy[Update Lifecycle Policy]. From 25cedbe60c89173900be726a550c2c20c22577ca Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Mon, 13 Apr 2020 16:26:00 -0400 Subject: [PATCH 23/35] [Canvas] Migrate saved object mappings and migrations to Kibana Platform (#58891) * Move saved object mappings and migratins to kibana platform * Remove ts-ignore Co-authored-by: Elastic Machine --- x-pack/legacy/plugins/canvas/index.js | 4 -- .../legacy/plugins/canvas/migrations.test.js | 37 ------------------ x-pack/plugins/canvas/server/plugin.ts | 4 ++ .../server/saved_objects/custom_element.ts} | 27 ++++--------- .../canvas/server/saved_objects/index.ts} | 14 ++----- .../migrations/remove_attributes_id.test.ts | 39 +++++++++++++++++++ .../migrations/remove_attributes_id.ts | 14 +++++++ .../canvas/server/saved_objects/workpad.ts | 33 ++++++++++++++++ 8 files changed, 101 insertions(+), 71 deletions(-) delete mode 100644 x-pack/legacy/plugins/canvas/migrations.test.js rename x-pack/{legacy/plugins/canvas/server/mappings.ts => plugins/canvas/server/saved_objects/custom_element.ts} (56%) rename x-pack/{legacy/plugins/canvas/migrations.js => plugins/canvas/server/saved_objects/index.ts} (53%) create mode 100644 x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.test.ts create mode 100644 x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.ts create mode 100644 x-pack/plugins/canvas/server/saved_objects/workpad.ts diff --git a/x-pack/legacy/plugins/canvas/index.js b/x-pack/legacy/plugins/canvas/index.js index 489b9600f200ea..a1d4b35826b003 100644 --- a/x-pack/legacy/plugins/canvas/index.js +++ b/x-pack/legacy/plugins/canvas/index.js @@ -7,9 +7,7 @@ import { resolve } from 'path'; import { DEFAULT_APP_CATEGORIES } from '../../../../src/core/utils'; import { init } from './init'; -import { mappings } from './server/mappings'; import { CANVAS_APP, CANVAS_TYPE, CUSTOM_ELEMENT_TYPE } from './common/lib'; -import { migrations } from './migrations'; export function canvas(kibana) { return new kibana.Plugin({ @@ -33,8 +31,6 @@ export function canvas(kibana) { 'plugins/canvas/lib/window_error_handler.js', ], home: ['plugins/canvas/legacy_register_feature'], - mappings, - migrations, savedObjectsManagement: { [CANVAS_TYPE]: { icon: 'canvasApp', diff --git a/x-pack/legacy/plugins/canvas/migrations.test.js b/x-pack/legacy/plugins/canvas/migrations.test.js deleted file mode 100644 index 182ef3b18cce76..00000000000000 --- a/x-pack/legacy/plugins/canvas/migrations.test.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { migrations } from './migrations'; -import { CANVAS_TYPE } from './common/lib'; - -describe(`${CANVAS_TYPE}`, () => { - describe('7.0.0', () => { - const migrate = doc => migrations[CANVAS_TYPE]['7.0.0'](doc); - - it('does not throw error on empty object', () => { - const migratedDoc = migrate({}); - expect(migratedDoc).toMatchInlineSnapshot(`Object {}`); - }); - - it('removes id from "attributes"', () => { - const migratedDoc = migrate({ - foo: true, - attributes: { - id: '123', - bar: true, - }, - }); - expect(migratedDoc).toMatchInlineSnapshot(` -Object { - "attributes": Object { - "bar": true, - }, - "foo": true, -} -`); - }); - }); -}); diff --git a/x-pack/plugins/canvas/server/plugin.ts b/x-pack/plugins/canvas/server/plugin.ts index 0325de9cf29e2f..91a56347345597 100644 --- a/x-pack/plugins/canvas/server/plugin.ts +++ b/x-pack/plugins/canvas/server/plugin.ts @@ -14,6 +14,7 @@ import { initRoutes } from './routes'; import { registerCanvasUsageCollector } from './collectors'; import { loadSampleData } from './sample_data'; import { setupInterpreter } from './setup_interpreter'; +import { customElementType, workpadType } from './saved_objects'; interface PluginsSetup { expressions: ExpressionsServerSetup; @@ -29,6 +30,9 @@ export class CanvasPlugin implements Plugin { } public async setup(coreSetup: CoreSetup, plugins: PluginsSetup) { + coreSetup.savedObjects.registerType(customElementType); + coreSetup.savedObjects.registerType(workpadType); + plugins.features.registerFeature({ id: 'canvas', name: 'Canvas', diff --git a/x-pack/legacy/plugins/canvas/server/mappings.ts b/x-pack/plugins/canvas/server/saved_objects/custom_element.ts similarity index 56% rename from x-pack/legacy/plugins/canvas/server/mappings.ts rename to x-pack/plugins/canvas/server/saved_objects/custom_element.ts index bf2be51882b1a7..dadead0263be19 100644 --- a/x-pack/legacy/plugins/canvas/server/mappings.ts +++ b/x-pack/plugins/canvas/server/saved_objects/custom_element.ts @@ -4,26 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -// @ts-ignore converting /libs/constants to TS breaks CI -import { CANVAS_TYPE, CUSTOM_ELEMENT_TYPE } from '../common/lib/constants'; +import { SavedObjectsType } from 'src/core/server'; +import { CUSTOM_ELEMENT_TYPE } from '../../../../legacy/plugins/canvas/common/lib/constants'; -export const mappings = { - [CANVAS_TYPE]: { - dynamic: false, - properties: { - name: { - type: 'text', - fields: { - keyword: { - type: 'keyword', - }, - }, - }, - '@timestamp': { type: 'date' }, - '@created': { type: 'date' }, - }, - }, - [CUSTOM_ELEMENT_TYPE]: { +export const customElementType: SavedObjectsType = { + name: CUSTOM_ELEMENT_TYPE, + hidden: false, + namespaceAgnostic: false, + mappings: { dynamic: false, properties: { name: { @@ -41,4 +29,5 @@ export const mappings = { '@created': { type: 'date' }, }, }, + migrations: {}, }; diff --git a/x-pack/legacy/plugins/canvas/migrations.js b/x-pack/plugins/canvas/server/saved_objects/index.ts similarity index 53% rename from x-pack/legacy/plugins/canvas/migrations.js rename to x-pack/plugins/canvas/server/saved_objects/index.ts index d5b3d3fb1ce2a4..dd7e74b87e2f4c 100644 --- a/x-pack/legacy/plugins/canvas/migrations.js +++ b/x-pack/plugins/canvas/server/saved_objects/index.ts @@ -4,15 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { CANVAS_TYPE } from './common/lib'; +import { workpadType } from './workpad'; +import { customElementType } from './custom_element'; -export const migrations = { - [CANVAS_TYPE]: { - '7.0.0': doc => { - if (doc.attributes) { - delete doc.attributes.id; - } - return doc; - }, - }, -}; +export { customElementType, workpadType }; diff --git a/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.test.ts b/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.test.ts new file mode 100644 index 00000000000000..a7112504e99804 --- /dev/null +++ b/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.test.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { removeAttributesId } from './remove_attributes_id'; + +const context: any = { + log: jest.fn(), +}; + +describe(`removeAttributesId`, () => { + it('does not throw error on empty object', () => { + const migratedDoc = removeAttributesId({} as any, context); + expect(migratedDoc).toMatchInlineSnapshot(`Object {}`); + }); + + it('removes id from "attributes"', () => { + const migratedDoc = removeAttributesId( + { + foo: true, + attributes: { + id: '123', + bar: true, + }, + } as any, + context + ); + expect(migratedDoc).toMatchInlineSnapshot(` +Object { + "attributes": Object { + "bar": true, + }, + "foo": true, +} +`); + }); +}); diff --git a/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.ts b/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.ts new file mode 100644 index 00000000000000..893a73d7b59130 --- /dev/null +++ b/x-pack/plugins/canvas/server/saved_objects/migrations/remove_attributes_id.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectMigrationFn } from 'src/core/server'; + +export const removeAttributesId: SavedObjectMigrationFn = doc => { + if (typeof doc.attributes === 'object' && doc.attributes !== null) { + delete (doc.attributes as any).id; + } + return doc; +}; diff --git a/x-pack/plugins/canvas/server/saved_objects/workpad.ts b/x-pack/plugins/canvas/server/saved_objects/workpad.ts new file mode 100644 index 00000000000000..e83ba9720b43ad --- /dev/null +++ b/x-pack/plugins/canvas/server/saved_objects/workpad.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsType } from 'src/core/server'; +import { CANVAS_TYPE } from '../../../../legacy/plugins/canvas/common/lib/constants'; +import { removeAttributesId } from './migrations/remove_attributes_id'; + +export const workpadType: SavedObjectsType = { + name: CANVAS_TYPE, + hidden: false, + namespaceAgnostic: false, + mappings: { + dynamic: false, + properties: { + name: { + type: 'text', + fields: { + keyword: { + type: 'keyword', + }, + }, + }, + '@timestamp': { type: 'date' }, + '@created': { type: 'date' }, + }, + }, + migrations: { + '7.0.0': removeAttributesId, + }, +}; From 48fd5c025526e3aa6736ca1db2a1f757c90ea508 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Mon, 13 Apr 2020 16:26:45 -0400 Subject: [PATCH 24/35] [Endpoint] Policy list support for URL pagination state (#63291) * store changes to support pagination via url * Fix storing location when pagination happens * Initial set of tests * Redux spy middleware and async utility * Add better types to `waitForAction` * Add more docs * fix urlSearchParams selector to account for array of values * full set of tests for policy list store concerns * More efficient redux spy middleware (no more sleep()) * Set spy middleware `dispatch` to a `jest.fn` and expose `mock` info. * Fix url param selector to return first param value when it is defined multiple times * Removed PageId and associated hook * clean up TODO items * Fixes post-merge frm `master` * Address code review comments --- .../endpoint/store/policy_list/action.ts | 13 +- .../endpoint/store/policy_list/index.test.ts | 168 +++++++++++++++--- .../endpoint/store/policy_list/middleware.ts | 19 +- .../endpoint/store/policy_list/reducer.ts | 29 +-- .../endpoint/store/policy_list/selectors.ts | 50 +++++- .../store/policy_list/services/ingest.ts | 2 +- .../store/policy_list/test_mock_utils.ts | 151 ++++++++++++++++ .../endpoint/store/routing/action.ts | 14 +- .../public/applications/endpoint/types.ts | 10 ++ .../endpoint/view/policy/policy_list.tsx | 17 +- .../applications/endpoint/view/use_page_id.ts | 28 --- 11 files changed, 384 insertions(+), 117 deletions(-) create mode 100644 x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/test_mock_utils.ts delete mode 100644 x-pack/plugins/endpoint/public/applications/endpoint/view/use_page_id.ts diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/action.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/action.ts index 3f4f3f39e9be00..3db224f049c059 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/action.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/action.ts @@ -21,15 +21,4 @@ interface ServerFailedToReturnPolicyListData { payload: ServerApiError; } -interface UserPaginatedPolicyListTable { - type: 'userPaginatedPolicyListTable'; - payload: { - pageSize: number; - pageIndex: number; - }; -} - -export type PolicyListAction = - | ServerReturnedPolicyListData - | UserPaginatedPolicyListTable - | ServerFailedToReturnPolicyListData; +export type PolicyListAction = ServerReturnedPolicyListData | ServerFailedToReturnPolicyListData; diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/index.test.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/index.test.ts index 0cf0eb8bfa3cdb..4d153b5e03cd24 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/index.test.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/index.test.ts @@ -4,71 +4,106 @@ * you may not use this file except in compliance with the Elastic License. */ -import { PolicyListState } from '../../types'; +import { EndpointAppLocation, PolicyListState } from '../../types'; import { applyMiddleware, createStore, Dispatch, Store } from 'redux'; import { AppAction } from '../action'; import { policyListReducer } from './reducer'; import { policyListMiddlewareFactory } from './middleware'; import { coreMock } from '../../../../../../../../src/core/public/mocks'; -import { CoreStart } from 'kibana/public'; -import { selectIsLoading } from './selectors'; +import { isOnPolicyListPage, selectIsLoading, urlSearchParams } from './selectors'; import { DepsStartMock, depsStartMock } from '../../mocks'; +import { + createSpyMiddleware, + MiddlewareActionSpyHelper, + setPolicyListApiMockImplementation, +} from './test_mock_utils'; +import { INGEST_API_DATASOURCES } from './services/ingest'; describe('policy list store concerns', () => { - const sleep = () => new Promise(resolve => setTimeout(resolve, 1000)); - let fakeCoreStart: jest.Mocked; + let fakeCoreStart: ReturnType; let depsStart: DepsStartMock; let store: Store; let getState: typeof store['getState']; let dispatch: Dispatch; + let waitForAction: MiddlewareActionSpyHelper['waitForAction']; beforeEach(() => { fakeCoreStart = coreMock.createStart({ basePath: '/mock' }); depsStart = depsStartMock(); + setPolicyListApiMockImplementation(fakeCoreStart.http); + let actionSpyMiddleware; + ({ actionSpyMiddleware, waitForAction } = createSpyMiddleware()); + store = createStore( policyListReducer, - applyMiddleware(policyListMiddlewareFactory(fakeCoreStart, depsStart)) + applyMiddleware(policyListMiddlewareFactory(fakeCoreStart, depsStart), actionSpyMiddleware) ); getState = store.getState; dispatch = store.dispatch; }); - // https://github.com/elastic/kibana/issues/58972 - test.skip('it sets `isLoading` when `userNavigatedToPage`', async () => { - expect(selectIsLoading(getState())).toBe(false); - dispatch({ type: 'userNavigatedToPage', payload: 'policyListPage' }); - expect(selectIsLoading(getState())).toBe(true); - await sleep(); - expect(selectIsLoading(getState())).toBe(false); + it('it does nothing on `userChangedUrl` if pathname is NOT `/policy`', async () => { + const state = getState(); + expect(isOnPolicyListPage(state)).toBe(false); + dispatch({ + type: 'userChangedUrl', + payload: { + pathname: '/foo', + search: '', + hash: '', + } as EndpointAppLocation, + }); + expect(getState()).toEqual(state); }); - // https://github.com/elastic/kibana/issues/58896 - test.skip('it sets `isLoading` when `userPaginatedPolicyListTable`', async () => { + it('it reports `isOnPolicyListPage` correctly when router pathname is `/policy`', async () => { + dispatch({ + type: 'userChangedUrl', + payload: { + pathname: '/policy', + search: '', + hash: '', + }, + }); + expect(isOnPolicyListPage(getState())).toBe(true); + }); + + it('it sets `isLoading` when `userChangedUrl`', async () => { expect(selectIsLoading(getState())).toBe(false); dispatch({ - type: 'userPaginatedPolicyListTable', + type: 'userChangedUrl', payload: { - pageSize: 10, - pageIndex: 1, + pathname: '/policy', + search: '', + hash: '', }, }); expect(selectIsLoading(getState())).toBe(true); - await sleep(); + await waitForAction('serverReturnedPolicyListData'); expect(selectIsLoading(getState())).toBe(false); }); - test('it resets state on `userNavigatedFromPage` action', async () => { + it('it resets state on `userChangedUrl` and pathname is NOT `/policy`', async () => { + dispatch({ + type: 'userChangedUrl', + payload: { + pathname: '/policy', + search: '', + hash: '', + }, + }); + await waitForAction('serverReturnedPolicyListData'); dispatch({ - type: 'serverReturnedPolicyListData', + type: 'userChangedUrl', payload: { - policyItems: [], - pageIndex: 20, - pageSize: 50, - total: 200, + pathname: '/foo', + search: '', + hash: '', }, }); - dispatch({ type: 'userNavigatedFromPage', payload: 'policyListPage' }); expect(getState()).toEqual({ + apiError: undefined, + location: undefined, policyItems: [], isLoading: false, pageIndex: 0, @@ -76,4 +111,85 @@ describe('policy list store concerns', () => { total: 0, }); }); + it('uses default pagination params when not included in url', async () => { + dispatch({ + type: 'userChangedUrl', + payload: { + pathname: '/policy', + search: '', + hash: '', + }, + }); + await waitForAction('serverReturnedPolicyListData'); + expect(fakeCoreStart.http.get).toHaveBeenCalledWith(INGEST_API_DATASOURCES, { + query: { kuery: 'datasources.package.name: endpoint', page: 1, perPage: 10 }, + }); + }); + + describe('when url contains search params', () => { + const dispatchUserChangedUrl = (searchParams: string = '') => + dispatch({ + type: 'userChangedUrl', + payload: { + pathname: '/policy', + search: searchParams, + hash: '', + }, + }); + + it('uses pagination params from url', async () => { + dispatchUserChangedUrl('?page_size=50&page_index=0'); + await waitForAction('serverReturnedPolicyListData'); + expect(fakeCoreStart.http.get).toHaveBeenCalledWith(INGEST_API_DATASOURCES, { + query: { kuery: 'datasources.package.name: endpoint', page: 1, perPage: 50 }, + }); + }); + it('uses defaults for params not in url', async () => { + dispatchUserChangedUrl('?page_index=99'); + expect(urlSearchParams(getState())).toEqual({ + page_index: 99, + page_size: 10, + }); + dispatchUserChangedUrl('?page_size=50'); + expect(urlSearchParams(getState())).toEqual({ + page_index: 0, + page_size: 50, + }); + }); + it('accepts only positive numbers for page_index and page_size', async () => { + dispatchUserChangedUrl('?page_size=-50&page_index=-99'); + await waitForAction('serverReturnedPolicyListData'); + expect(fakeCoreStart.http.get).toHaveBeenCalledWith(INGEST_API_DATASOURCES, { + query: { kuery: 'datasources.package.name: endpoint', page: 1, perPage: 10 }, + }); + }); + it('it ignores non-numeric values for page_index and page_size', async () => { + dispatchUserChangedUrl('?page_size=fifty&page_index=ten'); + await waitForAction('serverReturnedPolicyListData'); + expect(fakeCoreStart.http.get).toHaveBeenCalledWith(INGEST_API_DATASOURCES, { + query: { kuery: 'datasources.package.name: endpoint', page: 1, perPage: 10 }, + }); + }); + it('accepts only known values for `page_size`', async () => { + dispatchUserChangedUrl('?page_size=300&page_index=10'); + await waitForAction('serverReturnedPolicyListData'); + expect(fakeCoreStart.http.get).toHaveBeenCalledWith(INGEST_API_DATASOURCES, { + query: { kuery: 'datasources.package.name: endpoint', page: 11, perPage: 10 }, + }); + }); + it(`ignores unknown url search params`, async () => { + dispatchUserChangedUrl('?page_size=20&page_index=10&foo=bar'); + expect(urlSearchParams(getState())).toEqual({ + page_index: 10, + page_size: 20, + }); + }); + it(`uses last param value if param is defined multiple times`, async () => { + dispatchUserChangedUrl('?page_size=20&page_size=50&page_index=20&page_index=40'); + expect(urlSearchParams(getState())).toEqual({ + page_index: 20, + page_size: 20, + }); + }); + }); }); diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/middleware.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/middleware.ts index adc176740fb4b3..c073d26a676f08 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/middleware.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/middleware.ts @@ -6,6 +6,7 @@ import { MiddlewareFactory, PolicyListState, GetDatasourcesResponse } from '../../types'; import { sendGetEndpointSpecificDatasources } from './services/ingest'; +import { isOnPolicyListPage, urlSearchParams } from './selectors'; export const policyListMiddlewareFactory: MiddlewareFactory = coreStart => { const http = coreStart.http; @@ -13,22 +14,10 @@ export const policyListMiddlewareFactory: MiddlewareFactory = c return ({ getState, dispatch }) => next => async action => { next(action); - if ( - (action.type === 'userNavigatedToPage' && action.payload === 'policyListPage') || - action.type === 'userPaginatedPolicyListTable' - ) { - const state = getState(); - let pageSize: number; - let pageIndex: number; - - if (action.type === 'userPaginatedPolicyListTable') { - pageSize = action.payload.pageSize; - pageIndex = action.payload.pageIndex; - } else { - pageSize = state.pageSize; - pageIndex = state.pageIndex; - } + const state = getState(); + if (action.type === 'userChangedUrl' && isOnPolicyListPage(state)) { + const { page_index: pageIndex, page_size: pageSize } = urlSearchParams(state); let response: GetDatasourcesResponse; try { diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/reducer.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/reducer.ts index b964f4f0238669..30c1deac7f5e18 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/reducer.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/reducer.ts @@ -7,6 +7,7 @@ import { Reducer } from 'redux'; import { PolicyListState } from '../../types'; import { AppAction } from '../action'; +import { isOnPolicyListPage } from './selectors'; const initialPolicyListState = (): PolicyListState => { return { @@ -16,6 +17,7 @@ const initialPolicyListState = (): PolicyListState => { pageIndex: 0, pageSize: 10, total: 0, + location: undefined, }; }; @@ -39,19 +41,26 @@ export const policyListReducer: Reducer = ( }; } - if ( - action.type === 'userPaginatedPolicyListTable' || - (action.type === 'userNavigatedToPage' && action.payload === 'policyListPage') - ) { - return { + if (action.type === 'userChangedUrl') { + const newState = { ...state, - apiError: undefined, - isLoading: true, + location: action.payload, }; - } + const isCurrentlyOnListPage = isOnPolicyListPage(newState); + const wasPreviouslyOnListPage = isOnPolicyListPage(state); - if (action.type === 'userNavigatedFromPage' && action.payload === 'policyListPage') { - return initialPolicyListState(); + // If on the current page, then return new state with location information + // Also adjust some state if user is just entering the policy list view + if (isCurrentlyOnListPage) { + if (!wasPreviouslyOnListPage) { + newState.apiError = undefined; + newState.isLoading = true; + } + return newState; + } + return { + ...initialPolicyListState(), + }; } return state; diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/selectors.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/selectors.ts index 7ca25e81ce75a5..ce13d89b2b8c27 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/selectors.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/selectors.ts @@ -4,7 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import { PolicyListState } from '../../types'; +import { createSelector } from 'reselect'; +import { parse } from 'query-string'; +import { PolicyListState, PolicyListUrlSearchParams } from '../../types'; + +const PAGE_SIZES = Object.freeze([10, 20, 50]); export const selectPolicyItems = (state: PolicyListState) => state.policyItems; @@ -17,3 +21,47 @@ export const selectTotal = (state: PolicyListState) => state.total; export const selectIsLoading = (state: PolicyListState) => state.isLoading; export const selectApiError = (state: PolicyListState) => state.apiError; + +export const isOnPolicyListPage = (state: PolicyListState) => { + return state.location?.pathname === '/policy'; +}; + +const routeLocation = (state: PolicyListState) => state.location; + +/** + * Returns the supported URL search params, populated with defaults if none where present in the URL + */ +export const urlSearchParams: ( + state: PolicyListState +) => PolicyListUrlSearchParams = createSelector(routeLocation, location => { + const searchParams = { + page_index: 0, + page_size: 10, + }; + if (!location) { + return searchParams; + } + + const query = parse(location.search); + + // Search params can appear multiple times in the URL, in which case the value for them, + // once parsed, would be an array. In these case, we take the first value defined + searchParams.page_index = Number( + (Array.isArray(query.page_index) ? query.page_index[0] : query.page_index) ?? 0 + ); + searchParams.page_size = Number( + (Array.isArray(query.page_size) ? query.page_size[0] : query.page_size) ?? 10 + ); + + // If pageIndex is not a valid positive integer, set it to 0 + if (!Number.isFinite(searchParams.page_index) || searchParams.page_index < 0) { + searchParams.page_index = 0; + } + + // if pageSize is not one of the expected page sizes, reset it to 10 + if (!PAGE_SIZES.includes(searchParams.page_size)) { + searchParams.page_size = 10; + } + + return searchParams; +}); diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/services/ingest.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/services/ingest.ts index 16c885f26f0a42..bfbb5f94e8950f 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/services/ingest.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/services/ingest.ts @@ -17,7 +17,7 @@ import { } from '../../../types'; const INGEST_API_ROOT = `/api/ingest_manager`; -const INGEST_API_DATASOURCES = `${INGEST_API_ROOT}/datasources`; +export const INGEST_API_DATASOURCES = `${INGEST_API_ROOT}/datasources`; const INGEST_API_FLEET = `${INGEST_API_ROOT}/fleet`; const INGEST_API_FLEET_AGENT_STATUS = `${INGEST_API_FLEET}/agent-status`; diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/test_mock_utils.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/test_mock_utils.ts new file mode 100644 index 00000000000000..0d41ae0d76da4d --- /dev/null +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/policy_list/test_mock_utils.ts @@ -0,0 +1,151 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { HttpStart } from 'kibana/public'; +import { Dispatch } from 'redux'; +import { INGEST_API_DATASOURCES } from './services/ingest'; +import { EndpointDocGenerator } from '../../../../../common/generate_data'; +import { AppAction, GetDatasourcesResponse, GlobalState, MiddlewareFactory } from '../../types'; + +const generator = new EndpointDocGenerator('policy-list'); + +/** + * It sets the mock implementation on the necessary http methods to support the policy list view + * @param mockedHttpService + * @param responseItems + */ +export const setPolicyListApiMockImplementation = ( + mockedHttpService: jest.Mocked, + responseItems: GetDatasourcesResponse['items'] = [generator.generatePolicyDatasource()] +): void => { + mockedHttpService.get.mockImplementation((...args) => { + const [path] = args; + if (typeof path === 'string') { + if (path === INGEST_API_DATASOURCES) { + return Promise.resolve({ + items: responseItems, + total: 10, + page: 1, + perPage: 10, + success: true, + }); + } + } + return Promise.reject(new Error(`MOCK: unknown policy list api: ${path}`)); + }); +}; + +/** + * Utilities for testing Redux middleware + */ +export interface MiddlewareActionSpyHelper { + /** + * Returns a promise that is fulfilled when the given action is dispatched or a timeout occurs. + * The use of this method instead of a `sleep()` type of delay should avoid test case instability + * especially when run in a CI environment. + * + * @param actionType + */ + waitForAction: (actionType: AppAction['type']) => Promise; + /** + * A property holding the information around the calls that were processed by the internal + * `actionSpyMiddlware`. This property holds the information typically found in Jets's mocked + * function `mock` property - [see here for more information](https://jestjs.io/docs/en/mock-functions#mock-property) + * + * **Note**: this property will only be set **after* the `actionSpyMiddlware` has been + * initialized (ex. via `createStore()`. Attempting to reference this property before that time + * will throw an error. + * Also - do not hold on to references to this property value if `jest.clearAllMocks()` or + * `jest.resetAllMocks()` is called between usages of the value. + */ + dispatchSpy: jest.Mock>['mock']; + /** + * Redux middleware that enables spying on the action that are dispatched through the store + */ + actionSpyMiddleware: ReturnType>; +} + +/** + * Creates a new instance of middleware action helpers + * Note: in most cases (testing concern specific middleware) this function should be given + * the state type definition, else, the global state will be used. + * + * @example + * // Use in Policy List middleware testing + * const middlewareSpyUtils = createSpyMiddleware(); + * store = createStore( + * policyListReducer, + * applyMiddleware( + * policyListMiddlewareFactory(fakeCoreStart, depsStart), + * middlewareSpyUtils.actionSpyMiddleware + * ) + * ); + * // Reference `dispatchSpy` ONLY after creating the store that includes `actionSpyMiddleware` + * const { waitForAction, dispatchSpy } = middlewareSpyUtils; + * // + * // later in test + * // + * it('...', async () => { + * //... + * await waitForAction('serverReturnedPolicyListData'); + * // do assertions + * // or check how action was called + * expect(dispatchSpy.calls.length).toBe(2) + * }); + */ +export const createSpyMiddleware = (): MiddlewareActionSpyHelper => { + type ActionWatcher = (action: AppAction) => void; + + const watchers = new Set(); + let spyDispatch: jest.Mock>; + + return { + waitForAction: async (actionType: string) => { + // Error is defined here so that we get a better stack trace that points to the test from where it was used + const err = new Error(`action '${actionType}' was not dispatched within the allocated time`); + + await new Promise((resolve, reject) => { + const watch: ActionWatcher = action => { + if (action.type === actionType) { + watchers.delete(watch); + clearTimeout(timeout); + resolve(); + } + }; + + // We timeout before jest's default 5s, so that a better error stack is returned + const timeout = setTimeout(() => { + watchers.delete(watch); + reject(err); + }, 4500); + watchers.add(watch); + }); + }, + + get dispatchSpy() { + if (!spyDispatch) { + throw new Error( + 'Spy Middleware has not been initialized. Access this property only after using `actionSpyMiddleware` in a redux store' + ); + } + return spyDispatch.mock; + }, + + actionSpyMiddleware: api => { + return next => { + spyDispatch = jest.fn(action => { + next(action); + // loop through the list of watcher (if any) and call them with this action + for (const watch of watchers) { + watch(action); + } + return action; + }); + return spyDispatch; + }; + }, + }; +}; diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/store/routing/action.ts b/x-pack/plugins/endpoint/public/applications/endpoint/store/routing/action.ts index f22272bc682332..fd72a02b33588c 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/store/routing/action.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/store/routing/action.ts @@ -5,21 +5,11 @@ */ import { Immutable } from '../../../../../common/types'; -import { EndpointAppLocation, PageId } from '../../types'; - -interface UserNavigatedToPage { - readonly type: 'userNavigatedToPage'; - readonly payload: PageId; -} - -interface UserNavigatedFromPage { - readonly type: 'userNavigatedFromPage'; - readonly payload: PageId; -} +import { EndpointAppLocation } from '../../types'; interface UserChangedUrl { readonly type: 'userChangedUrl'; readonly payload: Immutable; } -export type RoutingAction = UserNavigatedToPage | UserNavigatedFromPage | UserChangedUrl; +export type RoutingAction = UserChangedUrl; diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/types.ts b/x-pack/plugins/endpoint/public/applications/endpoint/types.ts index f9ad8f6708f6b8..a625c49bf7d5ab 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/types.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/types.ts @@ -95,6 +95,8 @@ export interface PolicyListState { pageIndex: number; /** data is being retrieved from server */ isLoading: boolean; + /** current location information */ + location?: Immutable; } /** @@ -117,6 +119,14 @@ export interface PolicyDetailsState { }; } +/** + * The URL search params that are supported by the Policy List page view + */ +export interface PolicyListUrlSearchParams { + page_index: number; + page_size: number; +} + /** * Endpoint Policy configuration */ diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/view/policy/policy_list.tsx b/x-pack/plugins/endpoint/public/applications/endpoint/view/policy/policy_list.tsx index 06ba74aa467327..295312fff01dd0 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/view/policy/policy_list.tsx +++ b/x-pack/plugins/endpoint/public/applications/endpoint/view/policy/policy_list.tsx @@ -9,8 +9,7 @@ import { EuiBasicTable, EuiText, EuiTableFieldDataColumnType, EuiLink } from '@e import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { useDispatch } from 'react-redux'; -import { useHistory } from 'react-router-dom'; -import { usePageId } from '../use_page_id'; +import { useHistory, useLocation } from 'react-router-dom'; import { selectApiError, selectIsLoading, @@ -50,9 +49,9 @@ const renderPolicyNameLink = (value: string, _item: PolicyData) => { }; export const PolicyList = React.memo(() => { - usePageId('policyListPage'); - const { services, notifications } = useKibana(); + const history = useHistory(); + const location = useLocation(); const dispatch = useDispatch<(action: PolicyListAction) => void>(); const policyItems = usePolicyListSelector(selectPolicyItems); @@ -84,15 +83,9 @@ export const PolicyList = React.memo(() => { const handleTableChange = useCallback( ({ page: { index, size } }: TableChangeCallbackArguments) => { - dispatch({ - type: 'userPaginatedPolicyListTable', - payload: { - pageIndex: index, - pageSize: size, - }, - }); + history.push(`${location.pathname}?page_index=${index}&page_size=${size}`); }, - [dispatch] + [history, location.pathname] ); const columns: Array> = useMemo( diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/view/use_page_id.ts b/x-pack/plugins/endpoint/public/applications/endpoint/view/use_page_id.ts deleted file mode 100644 index 85ed8a39fb386f..00000000000000 --- a/x-pack/plugins/endpoint/public/applications/endpoint/view/use_page_id.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useEffect } from 'react'; -import { useDispatch } from 'react-redux'; -import { RoutingAction } from '../store/routing'; -import { PageId } from '../types'; - -/** - * Dispatches a 'userNavigatedToPage' action with the given 'pageId' as the action payload. - * When the component is un-mounted, a `userNavigatedFromPage` action will be dispatched - * with the given `pageId`. - * - * @param pageId A page id - */ -export function usePageId(pageId: PageId) { - const dispatch: (action: RoutingAction) => unknown = useDispatch(); - useEffect(() => { - dispatch({ type: 'userNavigatedToPage', payload: pageId }); - - return () => { - dispatch({ type: 'userNavigatedFromPage', payload: pageId }); - }; - }, [dispatch, pageId]); -} From 0666dbd35fe3ad8e8cd8824c23ed66c7465c8a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Mon, 13 Apr 2020 16:29:48 -0400 Subject: [PATCH 25/35] Fix task manager query to return tasks to retry (#63360) * Fix task manager query to also return tasks to retry * Fix failing jest tests --- .../server/queries/mark_available_tasks_as_claimed.ts | 7 ++++--- x-pack/plugins/task_manager/server/task_store.test.ts | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/task_manager/server/queries/mark_available_tasks_as_claimed.ts b/x-pack/plugins/task_manager/server/queries/mark_available_tasks_as_claimed.ts index b0d9dc61c96675..8f7cc47f936b2b 100644 --- a/x-pack/plugins/task_manager/server/queries/mark_available_tasks_as_claimed.ts +++ b/x-pack/plugins/task_manager/server/queries/mark_available_tasks_as_claimed.ts @@ -11,7 +11,7 @@ import { RangeFilter, mustBeAllOf, MustCondition, - MustNotCondition, + BoolClauseWithAnyCondition, } from './query_clauses'; export const TaskWithSchedule: ExistsFilter = { @@ -54,15 +54,16 @@ export const IdleTaskWithExpiredRunAt: MustCondition = }, }; -export const InactiveTasks: MustNotCondition = { +// TODO: Fix query clauses to support this +export const InactiveTasks: BoolClauseWithAnyCondition = { bool: { must_not: [ { bool: { should: [{ term: { 'task.status': 'running' } }, { term: { 'task.status': 'claiming' } }], + must: { range: { 'task.retryAt': { gt: 'now' } } }, }, }, - { range: { 'task.retryAt': { gt: 'now' } } }, ], }, }; diff --git a/x-pack/plugins/task_manager/server/task_store.test.ts b/x-pack/plugins/task_manager/server/task_store.test.ts index 97794311fb3d25..4ecefcb7984eb4 100644 --- a/x-pack/plugins/task_manager/server/task_store.test.ts +++ b/x-pack/plugins/task_manager/server/task_store.test.ts @@ -407,9 +407,9 @@ describe('TaskStore', () => { { term: { 'task.status': 'running' } }, { term: { 'task.status': 'claiming' } }, ], + must: { range: { 'task.retryAt': { gt: 'now' } } }, }, }, - { range: { 'task.retryAt': { gt: 'now' } } }, ], }, }, @@ -553,9 +553,9 @@ describe('TaskStore', () => { { term: { 'task.status': 'running' } }, { term: { 'task.status': 'claiming' } }, ], + must: { range: { 'task.retryAt': { gt: 'now' } } }, }, }, - { range: { 'task.retryAt': { gt: 'now' } } }, ], }, }, From 6f46e6b827ce5c35e7195bb32bf0bc6361686189 Mon Sep 17 00:00:00 2001 From: Aaron Caldwell Date: Mon, 13 Apr 2020 14:32:32 -0600 Subject: [PATCH 26/35] Migrate legacy maps service to NP & update refs (#60942) * Get legacy maps into basic NP plugin form. Swap out legacy services for NP * Pull service settings from injected vars. Return new instance of service settings from setup * Use NP service settings in vega maps. Clean up legacy shim * Use NP maps service in region maps. Clean up shim. Add exports to NP service * Pull zoom precision out to separate module since it's dependent on config * Update paths to point to NP resources * More path updates, clean up, use IServiceSettings * Remove dependency on legacy service settings. Add tile_map dependency ng-sanitize * More path cleanup. Use zoomPrecision provided through plugin inteface * Move getPrecision into contract-provided function since it depends on config * Move tests to new service location, remove vis dir * Update test paths. Move origin const declaration into public * Clean up, fixes * Fix type errors. General cleaning * Inject toast service into map when needed * Fix typo in regionmap config * i18n fixes * Update jest test path * Fix karma tests * i18n fixes * Type updates. Add mapsLegacy to np karma mock * Remove html sanitizer * Fix vega test that depends on serviceSettings * Revise xpack license handling to use NP serviceSettings. Remove angular bindings Co-authored-by: Elastic Machine --- .i18nrc.json | 1 + .../core_plugins/kibana/public/index.scss | 2 +- .../__tests__/region_map_visualization.js | 48 +++- .../region_map/public/choropleth_layer.js | 4 +- .../public/components/region_map_options.tsx | 9 +- .../core_plugins/region_map/public/legacy.ts | 9 +- .../core_plugins/region_map/public/plugin.ts | 10 +- .../public/region_map_visualization.js | 12 +- .../public/shim/legacy_dependencies_plugin.ts | 11 - .../core_plugins/region_map/public/types.ts | 2 +- .../core_plugins/region_map/public/util.ts | 2 +- .../coordinate_maps_visualization.js | 55 +++- .../public/__tests__/geohash_layer.js | 2 +- .../public/base_maps_visualization.js | 12 +- .../public/components/wms_options.tsx | 3 +- .../tile_map/public/geohash_layer.js | 3 +- .../core_plugins/tile_map/public/legacy.ts | 1 + .../tile_map/public/markers/scaled_circles.js | 3 +- .../core_plugins/tile_map/public/plugin.ts | 13 +- .../public/shim/legacy_dependencies_plugin.ts | 9 +- .../tile_map/public/tile_map_fn.js | 2 +- .../tile_map/public/tile_map_type.js | 4 +- .../tile_map/public/tile_map_visualization.js | 21 +- .../tile_map/public/tilemap_fn.test.js | 4 +- .../core_plugins/tile_map/public/types.ts | 2 +- .../public/shim/timelion_legacy_module.ts | 1 - .../public/__tests__/vega_visualization.js | 33 ++- .../vis_type_vega/public/legacy.ts | 6 +- .../vis_type_vega/public/plugin.ts | 11 +- .../public/shim/legacy_dependencies_plugin.ts | 49 ---- .../public/vega_view/vega_map_layer.js | 2 +- .../public/vega_view/vega_map_view.js | 27 +- .../public/vega_visualization.js | 3 +- .../new_platform/new_platform.karma_mock.js | 6 + .../ui/public/new_platform/new_platform.ts | 2 + .../ui/public/vis/map/service_settings.js | 256 ------------------ src/plugins/maps_legacy/kibana.json | 6 + .../__tests__/map/ems_mocks/sample_files.json | 0 .../map/ems_mocks/sample_manifest.json | 0 .../map/ems_mocks/sample_style_bright.json | 0 .../ems_mocks/sample_style_bright_vector.json | 0 .../sample_style_bright_vector_source.json | 0 .../map/ems_mocks/sample_style_dark.json | 0 .../ems_mocks/sample_style_desaturated.json | 0 .../__tests__/map/ems_mocks/sample_tiles.json | 0 .../public}/__tests__/map/kibana_map.js | 0 .../public}/__tests__/map/service_settings.js | 2 +- .../maps_legacy/public}/_index.scss | 0 .../maps_legacy/public/common/origin.ts} | 5 +- src/plugins/maps_legacy/public/index.ts | 61 +++++ .../maps_legacy/public/kibana_services.js} | 15 +- .../maps_legacy/public}/map/_index.scss | 0 .../public}/map/_leaflet_overrides.scss | 0 .../maps_legacy/public}/map/_legend.scss | 0 .../maps_legacy/public}/map/color_util.js | 0 .../public}/map/convert_to_geojson.js | 0 .../public}/map/decode_geo_hash.test.ts | 0 .../public}/map/decode_geo_hash.ts | 52 +--- .../public}/map/grid_dimensions.js | 0 .../maps_legacy/public}/map/kibana_map.js | 27 +- .../public}/map/kibana_map_layer.js | 0 .../maps_legacy/public}/map/map_messages.js | 9 +- .../maps_legacy/public/map/precision.ts | 74 +++++ .../public}/map/service_settings.d.ts | 2 +- .../public/map/service_settings.js | 254 +++++++++++++++++ .../public}/map/zoom_to_precision.ts | 0 src/plugins/maps_legacy/public/plugin.ts | 57 ++++ .../update_tilemap_settings.js | 17 +- .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - 70 files changed, 733 insertions(+), 492 deletions(-) delete mode 100644 src/legacy/core_plugins/vis_type_vega/public/shim/legacy_dependencies_plugin.ts delete mode 100644 src/legacy/ui/public/vis/map/service_settings.js create mode 100644 src/plugins/maps_legacy/kibana.json rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_files.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_manifest.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_style_bright.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_style_bright_vector.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_style_bright_vector_source.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_style_dark.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_style_desaturated.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/ems_mocks/sample_tiles.json (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/kibana_map.js (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/__tests__/map/service_settings.js (99%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/_index.scss (100%) rename src/{legacy/core_plugins/vis_type_vega/public/shim/index.ts => plugins/maps_legacy/public/common/origin.ts} (90%) create mode 100644 src/plugins/maps_legacy/public/index.ts rename src/{legacy/core_plugins/vis_type_vega/public/legacy_imports.ts => plugins/maps_legacy/public/kibana_services.js} (64%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/_index.scss (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/_leaflet_overrides.scss (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/_legend.scss (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/color_util.js (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/convert_to_geojson.js (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/decode_geo_hash.test.ts (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/decode_geo_hash.ts (79%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/grid_dimensions.js (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/kibana_map.js (96%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/kibana_map_layer.js (100%) rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/map_messages.js (93%) create mode 100644 src/plugins/maps_legacy/public/map/precision.ts rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/service_settings.d.ts (97%) create mode 100644 src/plugins/maps_legacy/public/map/service_settings.js rename src/{legacy/ui/public/vis => plugins/maps_legacy/public}/map/zoom_to_precision.ts (100%) create mode 100644 src/plugins/maps_legacy/public/plugin.ts diff --git a/.i18nrc.json b/.i18nrc.json index 19d361aed93445..e18f529b92ac31 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -24,6 +24,7 @@ "src/legacy/core_plugins/management", "src/plugins/management" ], + "maps_legacy": "src/plugins/maps_legacy", "indexPatternManagement": "src/plugins/index_pattern_management", "advancedSettings": "src/plugins/advanced_settings", "kibana_legacy": "src/plugins/kibana_legacy", diff --git a/src/legacy/core_plugins/kibana/public/index.scss b/src/legacy/core_plugins/kibana/public/index.scss index 9b7d0afcd7e39d..fbfb0a06fabcff 100644 --- a/src/legacy/core_plugins/kibana/public/index.scss +++ b/src/legacy/core_plugins/kibana/public/index.scss @@ -17,7 +17,7 @@ @import './visualize/index'; // Has to come after visualize because of some // bad cascading in the Editor layout -@import 'src/legacy/ui/public/vis/index'; +@import '../../../../plugins/maps_legacy/public/index'; // Home styles @import '../../../../plugins/home/public/application/index'; diff --git a/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js b/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js index 3880f42d52561c..6e1b0b71609417 100644 --- a/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js +++ b/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js @@ -23,12 +23,18 @@ import _ from 'lodash'; import ChoroplethLayer from '../choropleth_layer'; import { ImageComparator } from 'test_utils/image_comparator'; import worldJson from './world.json'; -import EMS_CATALOGUE from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_manifest.json'; -import EMS_FILES from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_files.json'; -import EMS_TILES from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_tiles.json'; -import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_bright'; -import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_desaturated'; -import EMS_STYLE_DARK_MAP from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_dark'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_CATALOGUE from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_FILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_TILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_DARK_MAP from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; import initialPng from './initial.png'; import toiso3Png from './toiso3.png'; @@ -44,6 +50,10 @@ import { createRegionMapTypeDefinition } from '../region_map_type'; import { ExprVis } from '../../../../../plugins/visualizations/public/expressions/vis'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { BaseVisType } from '../../../../../plugins/visualizations/public/vis_types/base_vis_type'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { setInjectedVarFunc } from '../../../../../plugins/maps_legacy/public/kibana_services'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { ServiceSettings } from '../../../../../plugins/maps_legacy/public/map/service_settings'; const THRESHOLD = 0.45; const PIXEL_DIFF = 96; @@ -92,7 +102,31 @@ describe('RegionMapsVisualizationTests', function() { let getManifestStub; beforeEach( ngMock.inject((Private, $injector) => { - const serviceSettings = $injector.get('serviceSettings'); + setInjectedVarFunc(injectedVar => { + switch (injectedVar) { + case 'mapConfig': + return { + emsFileApiUrl: '', + emsTileApiUrl: '', + emsLandingPageUrl: '', + }; + case 'tilemapsConfig': + return { + deprecated: { + config: { + options: { + attribution: '123', + }, + }, + }, + }; + case 'version': + return '123'; + default: + return 'not found'; + } + }); + const serviceSettings = new ServiceSettings(); const uiSettings = $injector.get('config'); const regionmapsConfig = { includeElasticMapsService: true, diff --git a/src/legacy/core_plugins/region_map/public/choropleth_layer.js b/src/legacy/core_plugins/region_map/public/choropleth_layer.js index e637a217bfbc3f..4ea9cc1f7bfbf1 100644 --- a/src/legacy/core_plugins/region_map/public/choropleth_layer.js +++ b/src/legacy/core_plugins/region_map/public/choropleth_layer.js @@ -22,11 +22,9 @@ import L from 'leaflet'; import _ from 'lodash'; import d3 from 'd3'; import { i18n } from '@kbn/i18n'; -import { KibanaMapLayer } from 'ui/vis/map/kibana_map_layer'; import * as topojson from 'topojson-client'; import { toastNotifications } from 'ui/notify'; -import * as colorUtil from 'ui/vis/map/color_util'; - +import { colorUtil, KibanaMapLayer } from '../../../../plugins/maps_legacy/public'; import { truncatedColorMaps } from '../../../../plugins/charts/public'; const EMPTY_STYLE = { diff --git a/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx b/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx index 187b27953830d9..31a27c4da7fcfe 100644 --- a/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx +++ b/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx @@ -21,9 +21,12 @@ import React, { useCallback, useMemo } from 'react'; import { EuiIcon, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; - -import { FileLayerField, VectorLayer, ServiceSettings } from 'ui/vis/map/service_settings'; import { VisOptionsProps } from 'src/plugins/vis_default_editor/public'; +import { + FileLayerField, + VectorLayer, + IServiceSettings, +} from '../../../../../plugins/maps_legacy/public'; import { NumberInputOption, SelectOption, @@ -43,7 +46,7 @@ const mapFieldForOption = ({ description, name }: FileLayerField) => ({ }); export type RegionMapOptionsProps = { - serviceSettings: ServiceSettings; + serviceSettings: IServiceSettings; } & VisOptionsProps; function RegionMapOptions(props: RegionMapOptionsProps) { diff --git a/src/legacy/core_plugins/region_map/public/legacy.ts b/src/legacy/core_plugins/region_map/public/legacy.ts index 08615946affa22..b0cc767a044e88 100644 --- a/src/legacy/core_plugins/region_map/public/legacy.ts +++ b/src/legacy/core_plugins/region_map/public/legacy.ts @@ -20,21 +20,18 @@ import { PluginInitializerContext } from 'kibana/public'; import { npSetup, npStart } from 'ui/new_platform'; -import { RegionMapPluginSetupDependencies, RegionMapsConfig } from './plugin'; +import { RegionMapPluginSetupDependencies } from './plugin'; import { LegacyDependenciesPlugin } from './shim'; import { plugin } from '.'; -const regionmapsConfig = npSetup.core.injectedMetadata.getInjectedVar( - 'regionmap' -) as RegionMapsConfig; - const plugins: Readonly = { expressions: npSetup.plugins.expressions, visualizations: npSetup.plugins.visualizations, + mapsLegacy: npSetup.plugins.mapsLegacy, // Temporary solution // It will be removed when all dependent services are migrated to the new platform. - __LEGACY: new LegacyDependenciesPlugin(regionmapsConfig), + __LEGACY: new LegacyDependenciesPlugin(), }; const pluginInstance = plugin({} as PluginInitializerContext); diff --git a/src/legacy/core_plugins/region_map/public/plugin.ts b/src/legacy/core_plugins/region_map/public/plugin.ts index cae569f8fd26d3..1453c2155e2d6f 100644 --- a/src/legacy/core_plugins/region_map/public/plugin.ts +++ b/src/legacy/core_plugins/region_map/public/plugin.ts @@ -32,10 +32,14 @@ import { LegacyDependenciesPlugin, LegacyDependenciesPluginSetup } from './shim' import { createRegionMapFn } from './region_map_fn'; // @ts-ignore import { createRegionMapTypeDefinition } from './region_map_type'; +import { IServiceSettings, MapsLegacyPluginSetup } from '../../../../plugins/maps_legacy/public'; /** @private */ interface RegionMapVisualizationDependencies extends LegacyDependenciesPluginSetup { uiSettings: IUiSettingsClient; + regionmapsConfig: RegionMapsConfig; + serviceSettings: IServiceSettings; + notificationService: any; } /** @internal */ @@ -43,6 +47,7 @@ export interface RegionMapPluginSetupDependencies { expressions: ReturnType; visualizations: VisualizationsSetup; __LEGACY: LegacyDependenciesPlugin; + mapsLegacy: MapsLegacyPluginSetup; } /** @internal */ @@ -61,10 +66,13 @@ export class RegionMapPlugin implements Plugin, void> { public async setup( core: CoreSetup, - { expressions, visualizations, __LEGACY }: RegionMapPluginSetupDependencies + { expressions, visualizations, mapsLegacy, __LEGACY }: RegionMapPluginSetupDependencies ) { const visualizationDependencies: Readonly = { uiSettings: core.uiSettings, + regionmapsConfig: core.injectedMetadata.getInjectedVar('regionmap') as RegionMapsConfig, + serviceSettings: mapsLegacy.serviceSettings, + notificationService: core.notifications.toasts, ...(await __LEGACY.setup()), }; diff --git a/src/legacy/core_plugins/region_map/public/region_map_visualization.js b/src/legacy/core_plugins/region_map/public/region_map_visualization.js index 72f9d66e7d2bf4..f08d53ee35c8d3 100644 --- a/src/legacy/core_plugins/region_map/public/region_map_visualization.js +++ b/src/legacy/core_plugins/region_map/public/region_map_visualization.js @@ -28,8 +28,16 @@ import { truncatedColorMaps } from '../../../../plugins/charts/public'; // TODO: reference to TILE_MAP plugin should be removed import { BaseMapsVisualizationProvider } from '../../tile_map/public/base_maps_visualization'; -export function createRegionMapVisualization({ serviceSettings, $injector, uiSettings }) { - const BaseMapsVisualization = new BaseMapsVisualizationProvider(serviceSettings); +export function createRegionMapVisualization({ + serviceSettings, + $injector, + uiSettings, + notificationService, +}) { + const BaseMapsVisualization = new BaseMapsVisualizationProvider( + serviceSettings, + notificationService + ); const tooltipFormatter = new TileMapTooltipFormatter($injector); return class RegionMapsVisualization extends BaseMapsVisualization { diff --git a/src/legacy/core_plugins/region_map/public/shim/legacy_dependencies_plugin.ts b/src/legacy/core_plugins/region_map/public/shim/legacy_dependencies_plugin.ts index c47fc40fbacd7e..3a7615e83f2817 100644 --- a/src/legacy/core_plugins/region_map/public/shim/legacy_dependencies_plugin.ts +++ b/src/legacy/core_plugins/region_map/public/shim/legacy_dependencies_plugin.ts @@ -19,31 +19,20 @@ import chrome from 'ui/chrome'; import { CoreStart, Plugin } from 'kibana/public'; -import 'ui/vis/map/service_settings'; -import { RegionMapsConfig } from '../plugin'; /** @internal */ export interface LegacyDependenciesPluginSetup { $injector: any; serviceSettings: any; - regionmapsConfig: RegionMapsConfig; } export class LegacyDependenciesPlugin implements Plugin, void> { - constructor(private readonly regionmapsConfig: RegionMapsConfig) {} - public async setup() { const $injector = await chrome.dangerouslyGetActiveInjector(); return { $injector, - regionmapsConfig: this.regionmapsConfig, - // Settings for EMSClient. - // EMSClient, which currently lives in the tile_map vis, - // will probably end up being exposed from the future vis_type_maps plugin, - // which would register both the tile_map and the region_map vis plugins. - serviceSettings: $injector.get('serviceSettings'), } as LegacyDependenciesPluginSetup; } diff --git a/src/legacy/core_plugins/region_map/public/types.ts b/src/legacy/core_plugins/region_map/public/types.ts index 2097aebd27ce00..8585bf720e0cf7 100644 --- a/src/legacy/core_plugins/region_map/public/types.ts +++ b/src/legacy/core_plugins/region_map/public/types.ts @@ -17,7 +17,7 @@ * under the License. */ -import { VectorLayer, FileLayerField } from 'ui/vis/map/service_settings'; +import { VectorLayer, FileLayerField } from '../../../../plugins/maps_legacy/public'; import { WMSOptions } from '../../tile_map/public/types'; export interface RegionMapVisParams { diff --git a/src/legacy/core_plugins/region_map/public/util.ts b/src/legacy/core_plugins/region_map/public/util.ts index 69a7a1815bc8e5..24c721da1f31ac 100644 --- a/src/legacy/core_plugins/region_map/public/util.ts +++ b/src/legacy/core_plugins/region_map/public/util.ts @@ -17,7 +17,7 @@ * under the License. */ -import { FileLayer, VectorLayer } from 'ui/vis/map/service_settings'; +import { FileLayer, VectorLayer } from '../../../../plugins/maps_legacy/public'; // TODO: reference to TILE_MAP plugin should be removed import { ORIGIN } from '../../../../legacy/core_plugins/tile_map/common/origin'; diff --git a/src/legacy/core_plugins/tile_map/public/__tests__/coordinate_maps_visualization.js b/src/legacy/core_plugins/tile_map/public/__tests__/coordinate_maps_visualization.js index 2c142b19d90961..3904c43707906b 100644 --- a/src/legacy/core_plugins/tile_map/public/__tests__/coordinate_maps_visualization.js +++ b/src/legacy/core_plugins/tile_map/public/__tests__/coordinate_maps_visualization.js @@ -25,12 +25,18 @@ import initial from './initial.png'; import blues from './blues.png'; import shadedGeohashGrid from './shadedGeohashGrid.png'; import heatmapRaw from './heatmap_raw.png'; -import EMS_CATALOGUE from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_manifest.json'; -import EMS_FILES from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_files.json'; -import EMS_TILES from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_tiles.json'; -import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_bright'; -import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_desaturated'; -import EMS_STYLE_DARK_MAP from '../../../../ui/public/vis/__tests__/map/ems_mocks/sample_style_dark'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_CATALOGUE from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_FILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_TILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import EMS_STYLE_DARK_MAP from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; import { createTileMapVisualization } from '../tile_map_visualization'; import { createTileMapTypeDefinition } from '../tile_map_type'; @@ -38,6 +44,15 @@ import { createTileMapTypeDefinition } from '../tile_map_type'; import { ExprVis } from '../../../../../plugins/visualizations/public/expressions/vis'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { BaseVisType } from '../../../../../plugins/visualizations/public/vis_types/base_vis_type'; +import { + getPrecision, + getZoomPrecision, + // eslint-disable-next-line @kbn/eslint/no-restricted-paths +} from '../../../../../plugins/maps_legacy/public/map/precision'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { ServiceSettings } from '../../../../../plugins/maps_legacy/public/map/service_settings'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { setInjectedVarFunc } from '../../../../../plugins/maps_legacy/public/kibana_services'; function mockRawData() { const stack = [dummyESResponse]; @@ -75,13 +90,39 @@ describe('CoordinateMapsVisualizationTest', function() { beforeEach(ngMock.module('kibana')); beforeEach( ngMock.inject((Private, $injector) => { - const serviceSettings = $injector.get('serviceSettings'); + setInjectedVarFunc(injectedVar => { + switch (injectedVar) { + case 'mapConfig': + return { + emsFileApiUrl: '', + emsTileApiUrl: '', + emsLandingPageUrl: '', + }; + case 'tilemapsConfig': + return { + deprecated: { + config: { + options: { + attribution: '123', + }, + }, + }, + }; + case 'version': + return '123'; + default: + return 'not found'; + } + }); + const serviceSettings = new ServiceSettings(); const uiSettings = $injector.get('config'); dependencies = { serviceSettings, uiSettings, $injector, + getPrecision, + getZoomPrecision, }; visType = new BaseVisType(createTileMapTypeDefinition(dependencies)); diff --git a/src/legacy/core_plugins/tile_map/public/__tests__/geohash_layer.js b/src/legacy/core_plugins/tile_map/public/__tests__/geohash_layer.js index 857432079e3768..fc029d6bccb6e6 100644 --- a/src/legacy/core_plugins/tile_map/public/__tests__/geohash_layer.js +++ b/src/legacy/core_plugins/tile_map/public/__tests__/geohash_layer.js @@ -18,13 +18,13 @@ */ import expect from '@kbn/expect'; -import { KibanaMap } from 'ui/vis/map/kibana_map'; import { GeohashLayer } from '../geohash_layer'; // import heatmapPng from './heatmap.png'; import scaledCircleMarkersPng from './scaledCircleMarkers.png'; // import shadedCircleMarkersPng from './shadedCircleMarkers.png'; import { ImageComparator } from 'test_utils/image_comparator'; import GeoHashSampleData from './dummy_es_response.json'; +import { KibanaMap } from '../../../../../plugins/maps_legacy/public'; describe('geohash_layer', function() { let domNode; diff --git a/src/legacy/core_plugins/tile_map/public/base_maps_visualization.js b/src/legacy/core_plugins/tile_map/public/base_maps_visualization.js index d38159c91ef9f9..1dac4607280cc7 100644 --- a/src/legacy/core_plugins/tile_map/public/base_maps_visualization.js +++ b/src/legacy/core_plugins/tile_map/public/base_maps_visualization.js @@ -19,22 +19,25 @@ import _ from 'lodash'; import { i18n } from '@kbn/i18n'; -import { KibanaMap } from 'ui/vis/map/kibana_map'; +import { KibanaMap } from '../../../../plugins/maps_legacy/public'; import * as Rx from 'rxjs'; import { filter, first } from 'rxjs/operators'; -import 'ui/vis/map/service_settings'; import { toastNotifications } from 'ui/notify'; import chrome from 'ui/chrome'; const WMS_MINZOOM = 0; const WMS_MAXZOOM = 22; //increase this to 22. Better for WMS -export function BaseMapsVisualizationProvider(serviceSettings) { +export function BaseMapsVisualizationProvider(mapServiceSettings, notificationService) { /** * Abstract base class for a visualization consisting of a map with a single baselayer. * @class BaseMapsVisualization * @constructor */ + + const serviceSettings = mapServiceSettings; + const toastService = notificationService; + return class BaseMapsVisualization { constructor(element, vis) { this.vis = vis; @@ -94,8 +97,9 @@ export function BaseMapsVisualizationProvider(serviceSettings) { const centerFromUIState = uiState.get('mapCenter'); options.zoom = !isNaN(zoomFromUiState) ? zoomFromUiState : this.vis.params.mapZoom; options.center = centerFromUIState ? centerFromUIState : this.vis.params.mapCenter; + const services = { toastService }; - this._kibanaMap = new KibanaMap(this._container, options); + this._kibanaMap = new KibanaMap(this._container, options, services); this._kibanaMap.setMinZoom(WMS_MINZOOM); //use a default this._kibanaMap.setMaxZoom(WMS_MAXZOOM); //use a default diff --git a/src/legacy/core_plugins/tile_map/public/components/wms_options.tsx b/src/legacy/core_plugins/tile_map/public/components/wms_options.tsx index b8535e72e88185..e74c260d3b8e5c 100644 --- a/src/legacy/core_plugins/tile_map/public/components/wms_options.tsx +++ b/src/legacy/core_plugins/tile_map/public/components/wms_options.tsx @@ -21,8 +21,7 @@ import React, { useMemo } from 'react'; import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; - -import { TmsLayer } from 'ui/vis/map/service_settings'; +import { TmsLayer } from '../../../../../plugins/maps_legacy/public'; import { Vis } from '../../../../../plugins/visualizations/public'; import { RegionMapVisParams } from '../../../region_map/public/types'; import { SelectOption, SwitchOption } from '../../../../../plugins/charts/public'; diff --git a/src/legacy/core_plugins/tile_map/public/geohash_layer.js b/src/legacy/core_plugins/tile_map/public/geohash_layer.js index a604e02be7c8c4..b9acf1a15208f7 100644 --- a/src/legacy/core_plugins/tile_map/public/geohash_layer.js +++ b/src/legacy/core_plugins/tile_map/public/geohash_layer.js @@ -20,8 +20,7 @@ import L from 'leaflet'; import { min, isEqual } from 'lodash'; import { i18n } from '@kbn/i18n'; - -import { KibanaMapLayer } from 'ui/vis/map/kibana_map_layer'; +import { KibanaMapLayer } from '../../../../plugins/maps_legacy/public'; import { HeatmapMarkers } from './markers/heatmap'; import { ScaledCirclesMarkers } from './markers/scaled_circles'; import { ShadedCirclesMarkers } from './markers/shaded_circles'; diff --git a/src/legacy/core_plugins/tile_map/public/legacy.ts b/src/legacy/core_plugins/tile_map/public/legacy.ts index 7b1f916076f614..741e118750f320 100644 --- a/src/legacy/core_plugins/tile_map/public/legacy.ts +++ b/src/legacy/core_plugins/tile_map/public/legacy.ts @@ -27,6 +27,7 @@ import { plugin } from '.'; const plugins: Readonly = { expressions: npSetup.plugins.expressions, visualizations: npSetup.plugins.visualizations, + mapsLegacy: npSetup.plugins.mapsLegacy, // Temporary solution // It will be removed when all dependent services are migrated to the new platform. diff --git a/src/legacy/core_plugins/tile_map/public/markers/scaled_circles.js b/src/legacy/core_plugins/tile_map/public/markers/scaled_circles.js index 88d6db82946c79..f39de6ca7d1797 100644 --- a/src/legacy/core_plugins/tile_map/public/markers/scaled_circles.js +++ b/src/legacy/core_plugins/tile_map/public/markers/scaled_circles.js @@ -22,8 +22,7 @@ import _ from 'lodash'; import d3 from 'd3'; import $ from 'jquery'; import { EventEmitter } from 'events'; -import * as colorUtil from 'ui/vis/map/color_util'; - +import { colorUtil } from '../../../../../plugins/maps_legacy/public'; import { truncatedColorMaps } from '../../../../../plugins/charts/public'; export class ScaledCirclesMarkers extends EventEmitter { diff --git a/src/legacy/core_plugins/tile_map/public/plugin.ts b/src/legacy/core_plugins/tile_map/public/plugin.ts index f2addbe3ab8729..2b97407b17b38c 100644 --- a/src/legacy/core_plugins/tile_map/public/plugin.ts +++ b/src/legacy/core_plugins/tile_map/public/plugin.ts @@ -32,16 +32,22 @@ import { LegacyDependenciesPlugin, LegacyDependenciesPluginSetup } from './shim' import { createTileMapFn } from './tile_map_fn'; // @ts-ignore import { createTileMapTypeDefinition } from './tile_map_type'; +import { IServiceSettings, MapsLegacyPluginSetup } from '../../../../plugins/maps_legacy/public'; /** @private */ interface TileMapVisualizationDependencies extends LegacyDependenciesPluginSetup { + serviceSettings: IServiceSettings; uiSettings: IUiSettingsClient; + getZoomPrecision: any; + getPrecision: any; + notificationService: any; } /** @internal */ export interface TileMapPluginSetupDependencies { expressions: ReturnType; visualizations: VisualizationsSetup; + mapsLegacy: MapsLegacyPluginSetup; __LEGACY: LegacyDependenciesPlugin; } @@ -55,9 +61,14 @@ export class TileMapPlugin implements Plugin, void> { public async setup( core: CoreSetup, - { expressions, visualizations, __LEGACY }: TileMapPluginSetupDependencies + { expressions, visualizations, mapsLegacy, __LEGACY }: TileMapPluginSetupDependencies ) { + const { getZoomPrecision, getPrecision, serviceSettings } = mapsLegacy; const visualizationDependencies: Readonly = { + serviceSettings, + getZoomPrecision, + getPrecision, + notificationService: core.notifications.toasts, uiSettings: core.uiSettings, ...(await __LEGACY.setup()), }; diff --git a/src/legacy/core_plugins/tile_map/public/shim/legacy_dependencies_plugin.ts b/src/legacy/core_plugins/tile_map/public/shim/legacy_dependencies_plugin.ts index 063b12bf0a2db8..5296e98b09efe8 100644 --- a/src/legacy/core_plugins/tile_map/public/shim/legacy_dependencies_plugin.ts +++ b/src/legacy/core_plugins/tile_map/public/shim/legacy_dependencies_plugin.ts @@ -18,12 +18,12 @@ */ import chrome from 'ui/chrome'; -import 'ui/vis/map/service_settings'; import { CoreStart, Plugin } from 'kibana/public'; +// TODO: Determine why visualizations don't populate without this +import 'angular-sanitize'; /** @internal */ export interface LegacyDependenciesPluginSetup { - serviceSettings: any; $injector: any; } @@ -34,11 +34,6 @@ export class LegacyDependenciesPlugin return { $injector, - // Settings for EMSClient. - // EMSClient, which currently lives in the tile_map vis, - // will probably end up being exposed from the future vis_type_maps plugin, - // which would register both the tile_map and the region_map vis plugins. - serviceSettings: $injector.get('serviceSettings'), } as LegacyDependenciesPluginSetup; } diff --git a/src/legacy/core_plugins/tile_map/public/tile_map_fn.js b/src/legacy/core_plugins/tile_map/public/tile_map_fn.js index 2f54d23590c334..5ad4a2c33db256 100644 --- a/src/legacy/core_plugins/tile_map/public/tile_map_fn.js +++ b/src/legacy/core_plugins/tile_map/public/tile_map_fn.js @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { convertToGeoJson } from 'ui/vis/map/convert_to_geojson'; +import { convertToGeoJson } from '../../../../plugins/maps_legacy/public'; import { i18n } from '@kbn/i18n'; export const createTileMapFn = () => ({ diff --git a/src/legacy/core_plugins/tile_map/public/tile_map_type.js b/src/legacy/core_plugins/tile_map/public/tile_map_type.js index fe82ad5c7352b2..ae3a839b600e94 100644 --- a/src/legacy/core_plugins/tile_map/public/tile_map_type.js +++ b/src/legacy/core_plugins/tile_map/public/tile_map_type.js @@ -19,9 +19,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; - -import { convertToGeoJson } from 'ui/vis/map/convert_to_geojson'; - +import { convertToGeoJson } from '../../../../plugins/maps_legacy/public'; import { Schemas } from '../../../../plugins/vis_default_editor/public'; import { createTileMapVisualization } from './tile_map_visualization'; import { TileMapOptions } from './components/tile_map_options'; diff --git a/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js b/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js index 910def8a0c78e8..fdce8bc51fe869 100644 --- a/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js +++ b/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js @@ -23,15 +23,19 @@ import { BaseMapsVisualizationProvider } from './base_maps_visualization'; import { TileMapTooltipFormatterProvider } from './editors/_tooltip_formatter'; import { npStart } from 'ui/new_platform'; import { getFormat } from '../../../ui/public/visualize/loader/pipeline_helpers/utilities'; -import { - scaleBounds, - zoomPrecision, - getPrecision, - geoContains, -} from '../../../ui/public/vis/map/decode_geo_hash'; +import { scaleBounds, geoContains } from '../../../../plugins/maps_legacy/public'; -export const createTileMapVisualization = ({ serviceSettings, $injector }) => { - const BaseMapsVisualization = new BaseMapsVisualizationProvider(serviceSettings); +export const createTileMapVisualization = ({ + serviceSettings, + $injector, + getZoomPrecision, + getPrecision, + notificationService, +}) => { + const BaseMapsVisualization = new BaseMapsVisualizationProvider( + serviceSettings, + notificationService + ); const tooltipFormatter = new TileMapTooltipFormatterProvider($injector); return class CoordinateMapsVisualization extends BaseMapsVisualization { @@ -59,6 +63,7 @@ export const createTileMapVisualization = ({ serviceSettings, $injector }) => { updateVarsObject.data.boundingBox = geohashAgg.aggConfigParams.boundingBox; } // todo: autoPrecision should be vis parameter, not aggConfig one + const zoomPrecision = getZoomPrecision(); updateVarsObject.data.precision = geohashAgg.aggConfigParams.autoPrecision ? zoomPrecision[this.vis.getUiState().get('mapZoom')] : getPrecision(geohashAgg.aggConfigParams.precision); diff --git a/src/legacy/core_plugins/tile_map/public/tilemap_fn.test.js b/src/legacy/core_plugins/tile_map/public/tilemap_fn.test.js index 0913d6fc92e8a7..6da37f4c5ef86c 100644 --- a/src/legacy/core_plugins/tile_map/public/tilemap_fn.test.js +++ b/src/legacy/core_plugins/tile_map/public/tilemap_fn.test.js @@ -22,7 +22,7 @@ import { functionWrapper } from '../../../../plugins/expressions/common/expressi import { createTileMapFn } from './tile_map_fn'; jest.mock('ui/new_platform'); -jest.mock('ui/vis/map/convert_to_geojson', () => ({ +jest.mock('../../../../plugins/maps_legacy/public', () => ({ convertToGeoJson: jest.fn().mockReturnValue({ featureCollection: { type: 'FeatureCollection', @@ -37,7 +37,7 @@ jest.mock('ui/vis/map/convert_to_geojson', () => ({ }), })); -import { convertToGeoJson } from 'ui/vis/map/convert_to_geojson'; +import { convertToGeoJson } from '../../../../plugins/maps_legacy/public'; describe('interpreter/functions#tilemap', () => { const fn = functionWrapper(createTileMapFn()); diff --git a/src/legacy/core_plugins/tile_map/public/types.ts b/src/legacy/core_plugins/tile_map/public/types.ts index 5f1c3f9b03c9e3..e1b4c27319123a 100644 --- a/src/legacy/core_plugins/tile_map/public/types.ts +++ b/src/legacy/core_plugins/tile_map/public/types.ts @@ -17,7 +17,7 @@ * under the License. */ -import { TmsLayer } from 'ui/vis/map/service_settings'; +import { TmsLayer } from '../../../../plugins/maps_legacy/public'; import { MapTypes } from './map_types'; export interface WMSOptions { diff --git a/src/legacy/core_plugins/timelion/public/shim/timelion_legacy_module.ts b/src/legacy/core_plugins/timelion/public/shim/timelion_legacy_module.ts index 9de8477e3978c0..8fadf223e18076 100644 --- a/src/legacy/core_plugins/timelion/public/shim/timelion_legacy_module.ts +++ b/src/legacy/core_plugins/timelion/public/shim/timelion_legacy_module.ts @@ -21,7 +21,6 @@ import 'ngreact'; import 'brace/mode/hjson'; import 'brace/ext/searchbox'; import 'ui/accessibility/kbn_ui_ace_keyboard_mode'; -import 'ui/vis/map/service_settings'; import { once } from 'lodash'; // @ts-ignore diff --git a/src/legacy/core_plugins/vis_type_vega/public/__tests__/vega_visualization.js b/src/legacy/core_plugins/vis_type_vega/public/__tests__/vega_visualization.js index c7fbc0815b07c4..6412d8a569b2a4 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/__tests__/vega_visualization.js +++ b/src/legacy/core_plugins/vis_type_vega/public/__tests__/vega_visualization.js @@ -49,6 +49,10 @@ import { BaseVisType } from '../../../../../plugins/visualizations/public/vis_ty // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { ExprVis } from '../../../../../plugins/visualizations/public/expressions/vis'; import { setInjectedVars } from '../services'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { setInjectedVarFunc } from '../../../../../plugins/maps_legacy/public/kibana_services'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { ServiceSettings } from '../../../../../plugins/maps_legacy/public/map/service_settings'; const THRESHOLD = 0.1; const PIXEL_DIFF = 30; @@ -69,9 +73,34 @@ describe('VegaVisualizations', () => { beforeEach(ngMock.module('kibana')); beforeEach( - ngMock.inject($injector => { + ngMock.inject(() => { + setInjectedVarFunc(injectedVar => { + switch (injectedVar) { + case 'mapConfig': + return { + emsFileApiUrl: '', + emsTileApiUrl: '', + emsLandingPageUrl: '', + }; + case 'tilemapsConfig': + return { + deprecated: { + config: { + options: { + attribution: '123', + }, + }, + }, + }; + case 'version': + return '123'; + default: + return 'not found'; + } + }); + const serviceSettings = new ServiceSettings(); vegaVisualizationDependencies = { - serviceSettings: $injector.get('serviceSettings'), + serviceSettings, core: { uiSettings: npStart.core.uiSettings, }, diff --git a/src/legacy/core_plugins/vis_type_vega/public/legacy.ts b/src/legacy/core_plugins/vis_type_vega/public/legacy.ts index b2c73894d978d4..450af4a6f253ea 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/legacy.ts +++ b/src/legacy/core_plugins/vis_type_vega/public/legacy.ts @@ -20,16 +20,12 @@ import { PluginInitializerContext } from 'kibana/public'; import { npSetup, npStart } from 'ui/new_platform'; import { VegaPluginSetupDependencies, VegaPluginStartDependencies } from './plugin'; -import { LegacyDependenciesPlugin } from './shim'; import { plugin } from '.'; const setupPlugins: Readonly = { ...npSetup.plugins, visualizations: npSetup.plugins.visualizations, - - // Temporary solution - // It will be removed when all dependent services are migrated to the new platform. - __LEGACY: new LegacyDependenciesPlugin(), + mapsLegacy: npSetup.plugins.mapsLegacy, }; const startPlugins: Readonly = { diff --git a/src/legacy/core_plugins/vis_type_vega/public/plugin.ts b/src/legacy/core_plugins/vis_type_vega/public/plugin.ts index 38b92a40cd99a9..9fa77d28fbbfa8 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/plugin.ts +++ b/src/legacy/core_plugins/vis_type_vega/public/plugin.ts @@ -17,7 +17,6 @@ * under the License. */ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from '../../../../core/public'; -import { LegacyDependenciesPlugin, LegacyDependenciesPluginSetup } from './shim'; import { Plugin as ExpressionsPublicPlugin } from '../../../../plugins/expressions/public'; import { Plugin as DataPublicPlugin } from '../../../../plugins/data/public'; import { VisualizationsSetup } from '../../../../plugins/visualizations/public'; @@ -32,13 +31,15 @@ import { import { createVegaFn } from './vega_fn'; import { createVegaTypeDefinition } from './vega_type'; import { VisTypeVegaSetup } from '../../../../plugins/vis_type_vega/public'; +import { IServiceSettings } from '../../../../plugins/maps_legacy/public'; /** @internal */ -export interface VegaVisualizationDependencies extends LegacyDependenciesPluginSetup { +export interface VegaVisualizationDependencies { core: CoreSetup; plugins: { data: ReturnType; }; + serviceSettings: IServiceSettings; } /** @internal */ @@ -47,7 +48,7 @@ export interface VegaPluginSetupDependencies { visualizations: VisualizationsSetup; data: ReturnType; visTypeVega: VisTypeVegaSetup; - __LEGACY: LegacyDependenciesPlugin; + mapsLegacy: any; } /** @internal */ @@ -65,7 +66,7 @@ export class VegaPlugin implements Plugin, void> { public async setup( core: CoreSetup, - { data, expressions, visualizations, visTypeVega, __LEGACY }: VegaPluginSetupDependencies + { data, expressions, visualizations, visTypeVega, mapsLegacy }: VegaPluginSetupDependencies ) { setInjectedVars({ enableExternalUrls: visTypeVega.config.enableExternalUrls, @@ -79,7 +80,7 @@ export class VegaPlugin implements Plugin, void> { plugins: { data, }, - ...(await __LEGACY.setup()), + serviceSettings: mapsLegacy.serviceSettings, }; expressions.registerFunction(() => createVegaFn(visualizationDependencies)); diff --git a/src/legacy/core_plugins/vis_type_vega/public/shim/legacy_dependencies_plugin.ts b/src/legacy/core_plugins/vis_type_vega/public/shim/legacy_dependencies_plugin.ts deleted file mode 100644 index 8925f76cffa43c..00000000000000 --- a/src/legacy/core_plugins/vis_type_vega/public/shim/legacy_dependencies_plugin.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// TODO remove this file as soon as serviceSettings is exposed in the new platform -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import chrome from 'ui/chrome'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import 'ui/vis/map/service_settings'; -import { CoreStart, Plugin } from 'kibana/public'; - -/** @internal */ -export interface LegacyDependenciesPluginSetup { - serviceSettings: any; -} - -export class LegacyDependenciesPlugin - implements Plugin, void> { - public async setup() { - const $injector = await chrome.dangerouslyGetActiveInjector(); - - return { - // Settings for EMSClient. - // EMSClient, which currently lives in the tile_map vis, - // will probably end up being exposed from the future vis_type_maps plugin, - // which would register both the tile_map and the region_map vis plugins. - serviceSettings: $injector.get('serviceSettings'), - } as LegacyDependenciesPluginSetup; - } - - public start(core: CoreStart) { - // nothing to do here yet - } -} diff --git a/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_layer.js b/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_layer.js index 38540e9f218fbd..d43eb9c3351eaf 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_layer.js +++ b/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_layer.js @@ -19,7 +19,7 @@ import L from 'leaflet'; import 'leaflet-vega'; -import { KibanaMapLayer } from '../legacy_imports'; +import { KibanaMapLayer } from '../../../../../plugins/maps_legacy/public'; export class VegaMapLayer extends KibanaMapLayer { constructor(spec, options) { diff --git a/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_view.js b/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_view.js index 487c90d01ada35..03aef29dc5739f 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_view.js +++ b/src/legacy/core_plugins/vis_type_vega/public/vega_view/vega_map_view.js @@ -21,10 +21,15 @@ import * as vega from 'vega-lib'; import { i18n } from '@kbn/i18n'; import { VegaBaseView } from './vega_base_view'; import { VegaMapLayer } from './vega_map_layer'; -import { KibanaMap } from '../legacy_imports'; +import { KibanaMap } from '../../../../../plugins/maps_legacy/public'; import { getEmsTileLayerId, getUISettings } from '../services'; export class VegaMapView extends VegaBaseView { + constructor(opts, services) { + super(opts); + this.services = services; + } + async _initViewCustomizations() { const mapConfig = this._parser.mapConfig; let baseMapOpts; @@ -102,14 +107,18 @@ export class VegaMapView extends VegaBaseView { // maxBounds = L.latLngBounds(L.latLng(b[1], b[0]), L.latLng(b[3], b[2])); // } - this._kibanaMap = new KibanaMap(this._$container.get(0), { - zoom, - minZoom, - maxZoom, - center: [mapConfig.latitude, mapConfig.longitude], - zoomControl: mapConfig.zoomControl, - scrollWheelZoom: mapConfig.scrollWheelZoom, - }); + this._kibanaMap = new KibanaMap( + this._$container.get(0), + { + zoom, + minZoom, + maxZoom, + center: [mapConfig.latitude, mapConfig.longitude], + zoomControl: mapConfig.zoomControl, + scrollWheelZoom: mapConfig.scrollWheelZoom, + }, + this.services + ); if (baseMapOpts) { this._kibanaMap.setBaseLayer({ diff --git a/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js b/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js index 96835ef3b10bcd..a6e911de7f0cb0 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js +++ b/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js @@ -116,7 +116,8 @@ export const createVegaVisualization = ({ serviceSettings }) => }; if (vegaParser.useMap) { - this._vegaView = new VegaMapView(vegaViewParams); + const services = { toastService: getNotifications().toasts }; + this._vegaView = new VegaMapView(vegaViewParams, services); } else { this._vegaView = new VegaView(vegaViewParams); } diff --git a/src/legacy/ui/public/new_platform/new_platform.karma_mock.js b/src/legacy/ui/public/new_platform/new_platform.karma_mock.js index 0779d6472671cb..33a7fdad065b45 100644 --- a/src/legacy/ui/public/new_platform/new_platform.karma_mock.js +++ b/src/legacy/ui/public/new_platform/new_platform.karma_mock.js @@ -309,6 +309,12 @@ export const npSetup = { registerAlias: sinon.fake(), hideTypes: sinon.fake(), }, + + mapsLegacy: { + serviceSettings: sinon.fake(), + getPrecision: sinon.fake(), + getZoomPrecision: sinon.fake(), + }, }, }; diff --git a/src/legacy/ui/public/new_platform/new_platform.ts b/src/legacy/ui/public/new_platform/new_platform.ts index cdd7e1a9949127..21b80e827e4c25 100644 --- a/src/legacy/ui/public/new_platform/new_platform.ts +++ b/src/legacy/ui/public/new_platform/new_platform.ts @@ -68,6 +68,7 @@ import { VisualizationsSetup, VisualizationsStart, } from '../../../../plugins/visualizations/public'; +import { MapsLegacyPluginSetup } from '../../../../plugins/maps_legacy/public'; export interface PluginsSetup { bfetch: BfetchPublicSetup; @@ -90,6 +91,7 @@ export interface PluginsSetup { visualizations: VisualizationsSetup; telemetry?: TelemetryPluginSetup; savedObjectsManagement: SavedObjectsManagementPluginSetup; + mapsLegacy: MapsLegacyPluginSetup; indexPatternManagement: IndexPatternManagementSetup; } diff --git a/src/legacy/ui/public/vis/map/service_settings.js b/src/legacy/ui/public/vis/map/service_settings.js deleted file mode 100644 index a014aeb182c673..00000000000000 --- a/src/legacy/ui/public/vis/map/service_settings.js +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { uiModules } from '../../modules'; -import _ from 'lodash'; -import MarkdownIt from 'markdown-it'; -import { ORIGIN } from '../../../../core_plugins/tile_map/common/origin'; -import { EMSClient } from '@elastic/ems-client'; -import { i18n } from '@kbn/i18n'; -import 'angular-sanitize'; - -const markdownIt = new MarkdownIt({ - html: false, - linkify: true, -}); - -const TMS_IN_YML_ID = 'TMS in config/kibana.yml'; - -uiModules - .get('kibana', ['ngSanitize']) - .service('serviceSettings', function($sanitize, mapConfig, tilemapsConfig, kbnVersion) { - const attributionFromConfig = $sanitize( - markdownIt.render(tilemapsConfig.deprecated.config.options.attribution || '') - ); - const tmsOptionsFromConfig = _.assign({}, tilemapsConfig.deprecated.config.options, { - attribution: attributionFromConfig, - }); - - class ServiceSettings { - constructor() { - this._showZoomMessage = true; - this._emsClient = new EMSClient({ - language: i18n.getLocale(), - appVersion: kbnVersion, - appName: 'kibana', - fileApiUrl: mapConfig.emsFileApiUrl, - tileApiUrl: mapConfig.emsTileApiUrl, - htmlSanitizer: $sanitize, - landingPageUrl: mapConfig.emsLandingPageUrl, - // Wrap to avoid errors passing window fetch - fetchFunction: function(...args) { - return fetch(...args); - }, - }); - } - - shouldShowZoomMessage({ origin }) { - return origin === ORIGIN.EMS && this._showZoomMessage; - } - - disableZoomMessage() { - this._showZoomMessage = false; - } - - __debugStubManifestCalls(manifestRetrieval) { - const oldGetManifest = this._emsClient.getManifest; - this._emsClient.getManifest = manifestRetrieval; - return { - removeStub: () => { - delete this._emsClient.getManifest; - //not strictly necessary since this is prototype method - if (this._emsClient.getManifest !== oldGetManifest) { - this._emsClient.getManifest = oldGetManifest; - } - }, - }; - } - - async getFileLayers() { - if (!mapConfig.includeElasticMapsService) { - return []; - } - - const fileLayers = await this._emsClient.getFileLayers(); - return fileLayers.map(fileLayer => { - //backfill to older settings - const format = fileLayer.getDefaultFormatType(); - const meta = fileLayer.getDefaultFormatMeta(); - - return { - name: fileLayer.getDisplayName(), - origin: fileLayer.getOrigin(), - id: fileLayer.getId(), - created_at: fileLayer.getCreatedAt(), - attribution: fileLayer.getHTMLAttribution(), - fields: fileLayer.getFieldsInLanguage(), - format: format, //legacy: format and meta are split up - meta: meta, //legacy, format and meta are split up - }; - }); - } - - /** - * Returns all the services published by EMS (if configures) - * It also includes the service configured in tilemap (override) - */ - async getTMSServices() { - let allServices = []; - if (tilemapsConfig.deprecated.isOverridden) { - //use tilemap.* settings from yml - const tmsService = _.cloneDeep(tmsOptionsFromConfig); - tmsService.id = TMS_IN_YML_ID; - tmsService.origin = ORIGIN.KIBANA_YML; - allServices.push(tmsService); - } - - if (mapConfig.includeElasticMapsService) { - const servicesFromManifest = await this._emsClient.getTMSServices(); - const strippedServiceFromManifest = await Promise.all( - servicesFromManifest - .filter(tmsService => tmsService.getId() === mapConfig.emsTileLayerId.bright) - .map(async tmsService => { - //shim for compatibility - const shim = { - origin: tmsService.getOrigin(), - id: tmsService.getId(), - minZoom: await tmsService.getMinZoom(), - maxZoom: await tmsService.getMaxZoom(), - attribution: tmsService.getHTMLAttribution(), - }; - return shim; - }) - ); - allServices = allServices.concat(strippedServiceFromManifest); - } - - return allServices; - } - - /** - * Add optional query-parameters to all requests - * - * @param additionalQueryParams - */ - addQueryParams(additionalQueryParams) { - this._emsClient.addQueryParams(additionalQueryParams); - } - - async getEMSHotLink(fileLayerConfig) { - const fileLayers = await this._emsClient.getFileLayers(); - const layer = fileLayers.find(fileLayer => { - const hasIdByName = fileLayer.hasId(fileLayerConfig.name); //legacy - const hasIdById = fileLayer.hasId(fileLayerConfig.id); - return hasIdByName || hasIdById; - }); - return layer ? layer.getEMSHotLink() : null; - } - - async _getAttributesForEMSTMSLayer(isDesaturated, isDarkMode) { - const tmsServices = await this._emsClient.getTMSServices(); - const emsTileLayerId = mapConfig.emsTileLayerId; - let serviceId; - if (isDarkMode) { - serviceId = emsTileLayerId.dark; - } else { - if (isDesaturated) { - serviceId = emsTileLayerId.desaturated; - } else { - serviceId = emsTileLayerId.bright; - } - } - const tmsService = tmsServices.find(service => { - return service.getId() === serviceId; - }); - return { - url: await tmsService.getUrlTemplate(), - minZoom: await tmsService.getMinZoom(), - maxZoom: await tmsService.getMaxZoom(), - attribution: await tmsService.getHTMLAttribution(), - origin: ORIGIN.EMS, - }; - } - - async getAttributesForTMSLayer(tmsServiceConfig, isDesaturated, isDarkMode) { - if (tmsServiceConfig.origin === ORIGIN.EMS) { - return this._getAttributesForEMSTMSLayer(isDesaturated, isDarkMode); - } else if (tmsServiceConfig.origin === ORIGIN.KIBANA_YML) { - const config = tilemapsConfig.deprecated.config; - const attrs = _.pick(config, ['url', 'minzoom', 'maxzoom', 'attribution']); - return { ...attrs, ...{ origin: ORIGIN.KIBANA_YML } }; - } else { - //this is an older config. need to resolve this dynamically. - if (tmsServiceConfig.id === TMS_IN_YML_ID) { - const config = tilemapsConfig.deprecated.config; - const attrs = _.pick(config, ['url', 'minzoom', 'maxzoom', 'attribution']); - return { ...attrs, ...{ origin: ORIGIN.KIBANA_YML } }; - } else { - //assume ems - return this._getAttributesForEMSTMSLayer(isDesaturated, isDarkMode); - } - } - } - - async _getFileUrlFromEMS(fileLayerConfig) { - const fileLayers = await this._emsClient.getFileLayers(); - const layer = fileLayers.find(fileLayer => { - const hasIdByName = fileLayer.hasId(fileLayerConfig.name); //legacy - const hasIdById = fileLayer.hasId(fileLayerConfig.id); - return hasIdByName || hasIdById; - }); - - if (layer) { - return layer.getDefaultFormatUrl(); - } else { - throw new Error(`File ${fileLayerConfig.name} not recognized`); - } - } - - async getUrlForRegionLayer(fileLayerConfig) { - let url; - if (fileLayerConfig.origin === ORIGIN.EMS) { - url = this._getFileUrlFromEMS(fileLayerConfig); - } else if ( - fileLayerConfig.layerId && - fileLayerConfig.layerId.startsWith(`${ORIGIN.EMS}.`) - ) { - //fallback for older saved objects - url = this._getFileUrlFromEMS(fileLayerConfig); - } else if ( - fileLayerConfig.layerId && - fileLayerConfig.layerId.startsWith(`${ORIGIN.KIBANA_YML}.`) - ) { - //fallback for older saved objects - url = fileLayerConfig.url; - } else { - //generic fallback - url = fileLayerConfig.url; - } - return url; - } - - async getJsonForRegionLayer(fileLayerConfig) { - const url = await this.getUrlForRegionLayer(fileLayerConfig); - const response = await fetch(url); - return await response.json(); - } - } - - return new ServiceSettings(); - }); diff --git a/src/plugins/maps_legacy/kibana.json b/src/plugins/maps_legacy/kibana.json new file mode 100644 index 00000000000000..d66be2b156bb92 --- /dev/null +++ b/src/plugins/maps_legacy/kibana.json @@ -0,0 +1,6 @@ +{ + "id": "mapsLegacy", + "version": "8.0.0", + "kibanaVersion": "kibana", + "ui": true +} diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_files.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_files.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_manifest.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_manifest.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright_vector.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright_vector.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright_vector.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright_vector.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright_vector_source.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright_vector_source.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_bright_vector_source.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright_vector_source.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_dark.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_dark.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_desaturated.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_style_desaturated.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated.json diff --git a/src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_tiles.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/ems_mocks/sample_tiles.json rename to src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json diff --git a/src/legacy/ui/public/vis/__tests__/map/kibana_map.js b/src/plugins/maps_legacy/public/__tests__/map/kibana_map.js similarity index 100% rename from src/legacy/ui/public/vis/__tests__/map/kibana_map.js rename to src/plugins/maps_legacy/public/__tests__/map/kibana_map.js diff --git a/src/legacy/ui/public/vis/__tests__/map/service_settings.js b/src/plugins/maps_legacy/public/__tests__/map/service_settings.js similarity index 99% rename from src/legacy/ui/public/vis/__tests__/map/service_settings.js rename to src/plugins/maps_legacy/public/__tests__/map/service_settings.js index 61925760457c65..a9272ea3966397 100644 --- a/src/legacy/ui/public/vis/__tests__/map/service_settings.js +++ b/src/plugins/maps_legacy/public/__tests__/map/service_settings.js @@ -26,7 +26,7 @@ import EMS_TILES from './ems_mocks/sample_tiles.json'; import EMS_STYLE_ROAD_MAP_BRIGHT from './ems_mocks/sample_style_bright'; import EMS_STYLE_ROAD_MAP_DESATURATED from './ems_mocks/sample_style_desaturated'; import EMS_STYLE_DARK_MAP from './ems_mocks/sample_style_dark'; -import { ORIGIN } from '../../../../../core_plugins/tile_map/common/origin'; +import { ORIGIN } from '../../common/origin'; describe('service_settings (FKA tilemaptest)', function() { let serviceSettings; diff --git a/src/legacy/ui/public/vis/_index.scss b/src/plugins/maps_legacy/public/_index.scss similarity index 100% rename from src/legacy/ui/public/vis/_index.scss rename to src/plugins/maps_legacy/public/_index.scss diff --git a/src/legacy/core_plugins/vis_type_vega/public/shim/index.ts b/src/plugins/maps_legacy/public/common/origin.ts similarity index 90% rename from src/legacy/core_plugins/vis_type_vega/public/shim/index.ts rename to src/plugins/maps_legacy/public/common/origin.ts index cfc7b62ff4f86d..fdf74cae4ba687 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/shim/index.ts +++ b/src/plugins/maps_legacy/public/common/origin.ts @@ -17,4 +17,7 @@ * under the License. */ -export * from './legacy_dependencies_plugin'; +export const ORIGIN = { + EMS: 'elastic_maps_service', + KIBANA_YML: 'self_hosted', +}; diff --git a/src/plugins/maps_legacy/public/index.ts b/src/plugins/maps_legacy/public/index.ts new file mode 100644 index 00000000000000..861f67006ad838 --- /dev/null +++ b/src/plugins/maps_legacy/public/index.ts @@ -0,0 +1,61 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { MapsLegacyPlugin } from './plugin'; +// @ts-ignore +import * as colorUtil from './map/color_util'; +// @ts-ignore +import { KibanaMap } from './map/kibana_map'; +// @ts-ignore +import { KibanaMapLayer } from './map/kibana_map_layer'; +// @ts-ignore +import { convertToGeoJson } from './map/convert_to_geojson'; +// @ts-ignore +import { scaleBounds, getPrecision, geoContains } from './map/decode_geo_hash'; +// @ts-ignore +import { + VectorLayer, + FileLayerField, + FileLayer, + TmsLayer, + IServiceSettings, +} from './map/service_settings'; + +export function plugin() { + return new MapsLegacyPlugin(); +} + +/** @public */ +export { + scaleBounds, + getPrecision, + geoContains, + colorUtil, + convertToGeoJson, + IServiceSettings, + KibanaMap, + KibanaMapLayer, + VectorLayer, + FileLayerField, + FileLayer, + TmsLayer, +}; + +export type MapsLegacyPluginSetup = ReturnType; +export type MapsLegacyPluginStart = ReturnType; diff --git a/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts b/src/plugins/maps_legacy/public/kibana_services.js similarity index 64% rename from src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts rename to src/plugins/maps_legacy/public/kibana_services.js index b868321d6310f2..815c6f9e5651f9 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts +++ b/src/plugins/maps_legacy/public/kibana_services.js @@ -17,7 +17,14 @@ * under the License. */ -// @ts-ignore -export { KibanaMapLayer } from 'ui/vis/map/kibana_map_layer'; -// @ts-ignore -export { KibanaMap } from 'ui/vis/map/kibana_map'; +let toast; +export const setToasts = notificationToast => (toast = notificationToast); +export const getToasts = () => toast; + +let uiSettings; +export const setUiSettings = coreUiSettings => (uiSettings = coreUiSettings); +export const getUiSettings = () => uiSettings; + +let getInjectedVar; +export const setInjectedVarFunc = getInjectedVarFunc => (getInjectedVar = getInjectedVarFunc); +export const getInjectedVarFunc = () => getInjectedVar; diff --git a/src/legacy/ui/public/vis/map/_index.scss b/src/plugins/maps_legacy/public/map/_index.scss similarity index 100% rename from src/legacy/ui/public/vis/map/_index.scss rename to src/plugins/maps_legacy/public/map/_index.scss diff --git a/src/legacy/ui/public/vis/map/_leaflet_overrides.scss b/src/plugins/maps_legacy/public/map/_leaflet_overrides.scss similarity index 100% rename from src/legacy/ui/public/vis/map/_leaflet_overrides.scss rename to src/plugins/maps_legacy/public/map/_leaflet_overrides.scss diff --git a/src/legacy/ui/public/vis/map/_legend.scss b/src/plugins/maps_legacy/public/map/_legend.scss similarity index 100% rename from src/legacy/ui/public/vis/map/_legend.scss rename to src/plugins/maps_legacy/public/map/_legend.scss diff --git a/src/legacy/ui/public/vis/map/color_util.js b/src/plugins/maps_legacy/public/map/color_util.js similarity index 100% rename from src/legacy/ui/public/vis/map/color_util.js rename to src/plugins/maps_legacy/public/map/color_util.js diff --git a/src/legacy/ui/public/vis/map/convert_to_geojson.js b/src/plugins/maps_legacy/public/map/convert_to_geojson.js similarity index 100% rename from src/legacy/ui/public/vis/map/convert_to_geojson.js rename to src/plugins/maps_legacy/public/map/convert_to_geojson.js diff --git a/src/legacy/ui/public/vis/map/decode_geo_hash.test.ts b/src/plugins/maps_legacy/public/map/decode_geo_hash.test.ts similarity index 100% rename from src/legacy/ui/public/vis/map/decode_geo_hash.test.ts rename to src/plugins/maps_legacy/public/map/decode_geo_hash.test.ts diff --git a/src/legacy/ui/public/vis/map/decode_geo_hash.ts b/src/plugins/maps_legacy/public/map/decode_geo_hash.ts similarity index 79% rename from src/legacy/ui/public/vis/map/decode_geo_hash.ts rename to src/plugins/maps_legacy/public/map/decode_geo_hash.ts index 3f8430b8628d79..8c39ada03a46b4 100644 --- a/src/legacy/ui/public/vis/map/decode_geo_hash.ts +++ b/src/plugins/maps_legacy/public/map/decode_geo_hash.ts @@ -17,11 +17,8 @@ * under the License. */ -import chrome from 'ui/chrome'; import _ from 'lodash'; -const config = chrome.getUiSettingsClient(); - interface DecodedGeoHash { latitude: number[]; longitude: number[]; @@ -74,6 +71,10 @@ function refineInterval(interval: number[], cd: number, mask: number) { } } +export function geohashColumns(precision: number): number { + return geohashCells(precision, 0); +} + /** * Get the number of geohash cells for a given precision * @@ -90,51 +91,6 @@ function geohashCells(precision: number, axis: number) { return cells; } -/** - * Get the number of geohash columns (world-wide) for a given precision - * @param precision the geohash precision - * @returns {number} the number of columns - */ -export function geohashColumns(precision: number): number { - return geohashCells(precision, 0); -} - -const defaultPrecision = 2; -const maxPrecision = parseInt(config.get('visualization:tileMap:maxPrecision'), 10) || 12; -/** - * Map Leaflet zoom levels to geohash precision levels. - * The size of a geohash column-width on the map should be at least `minGeohashPixels` pixels wide. - */ -export const zoomPrecision: any = {}; -const minGeohashPixels = 16; - -for (let zoom = 0; zoom <= 21; zoom += 1) { - const worldPixels = 256 * Math.pow(2, zoom); - zoomPrecision[zoom] = 1; - for (let precision = 2; precision <= maxPrecision; precision += 1) { - const columns = geohashColumns(precision); - if (worldPixels / columns >= minGeohashPixels) { - zoomPrecision[zoom] = precision; - } else { - break; - } - } -} - -export function getPrecision(val: string) { - let precision = parseInt(val, 10); - - if (Number.isNaN(precision)) { - precision = defaultPrecision; - } - - if (precision > maxPrecision) { - return maxPrecision; - } - - return precision; -} - interface GeoBoundingBoxCoordinate { lat: number; lon: number; diff --git a/src/legacy/ui/public/vis/map/grid_dimensions.js b/src/plugins/maps_legacy/public/map/grid_dimensions.js similarity index 100% rename from src/legacy/ui/public/vis/map/grid_dimensions.js rename to src/plugins/maps_legacy/public/map/grid_dimensions.js diff --git a/src/legacy/ui/public/vis/map/kibana_map.js b/src/plugins/maps_legacy/public/map/kibana_map.js similarity index 96% rename from src/legacy/ui/public/vis/map/kibana_map.js rename to src/plugins/maps_legacy/public/map/kibana_map.js index bc581b1a8fbaf8..1c4d0882cb7da4 100644 --- a/src/legacy/ui/public/vis/map/kibana_map.js +++ b/src/plugins/maps_legacy/public/map/kibana_map.js @@ -24,7 +24,7 @@ import $ from 'jquery'; import _ from 'lodash'; import { zoomToPrecision } from './zoom_to_precision'; import { i18n } from '@kbn/i18n'; -import { ORIGIN } from '../../../../core_plugins/tile_map/common/origin'; +import { ORIGIN } from '../common/origin'; function makeFitControl(fitContainer, kibanaMap) { const FitControl = L.Control.extend({ @@ -39,7 +39,7 @@ function makeFitControl(fitContainer, kibanaMap) { onAdd: function(leafletMap) { this._leafletMap = leafletMap; const fitDatBoundsLabel = i18n.translate( - 'common.ui.vis.kibanaMap.leaflet.fitDataBoundsAriaLabel', + 'maps_legacy.kibanaMap.leaflet.fitDataBoundsAriaLabel', { defaultMessage: 'Fit Data Bounds' } ); $(this._fitContainer) @@ -101,7 +101,7 @@ function makeLegendControl(container, kibanaMap, position) { * Serves as simple abstraction for leaflet as well. */ export class KibanaMap extends EventEmitter { - constructor(containerNode, options) { + constructor(containerNode, options, services) { super(); this._containerNode = containerNode; this._leafletBaseLayer = null; @@ -116,6 +116,7 @@ export class KibanaMap extends EventEmitter { this._layers = []; this._listeners = []; this._showTooltip = false; + this.toastService = services ? services.toastService : null; const leafletOptions = { minZoom: options.minZoom, @@ -482,15 +483,21 @@ export class KibanaMap extends EventEmitter { } _addMaxZoomMessage = layer => { - const zoomWarningMsg = createZoomWarningMsg(this.getZoomLevel, this.getMaxZoomLevel); + if (this.toastService) { + const zoomWarningMsg = createZoomWarningMsg( + this.toastService, + this.getZoomLevel, + this.getMaxZoomLevel + ); - this._leafletMap.on('zoomend', zoomWarningMsg); - this._containerNode.setAttribute('data-test-subj', 'zoomWarningEnabled'); + this._leafletMap.on('zoomend', zoomWarningMsg); + this._containerNode.setAttribute('data-test-subj', 'zoomWarningEnabled'); - layer.on('remove', () => { - this._leafletMap.off('zoomend', zoomWarningMsg); - this._containerNode.removeAttribute('data-test-subj'); - }); + layer.on('remove', () => { + this._leafletMap.off('zoomend', zoomWarningMsg); + this._containerNode.removeAttribute('data-test-subj'); + }); + } }; setLegendPosition(position) { diff --git a/src/legacy/ui/public/vis/map/kibana_map_layer.js b/src/plugins/maps_legacy/public/map/kibana_map_layer.js similarity index 100% rename from src/legacy/ui/public/vis/map/kibana_map_layer.js rename to src/plugins/maps_legacy/public/map/kibana_map_layer.js diff --git a/src/legacy/ui/public/vis/map/map_messages.js b/src/plugins/maps_legacy/public/map/map_messages.js similarity index 93% rename from src/legacy/ui/public/vis/map/map_messages.js rename to src/plugins/maps_legacy/public/map/map_messages.js index 211796d7349580..7422fa71280fb3 100644 --- a/src/legacy/ui/public/vis/map/map_messages.js +++ b/src/plugins/maps_legacy/public/map/map_messages.js @@ -17,11 +17,10 @@ * under the License. */ -import { toastNotifications } from 'ui/notify'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiSpacer, EuiButtonEmpty } from '@elastic/eui'; -import { toMountPoint } from '../../../../../plugins/kibana_react/public'; +import { toMountPoint } from '../../../kibana_react/public'; export const createZoomWarningMsg = (function() { let disableZoomMsg = false; @@ -40,7 +39,7 @@ export const createZoomWarningMsg = (function() {

= minGeohashPixels) { + zoomPrecision[zoom] = precision; + } else { + break; + } + } + } + return zoomPrecision; +} + +export function getPrecision(val: string) { + let precision = parseInt(val, 10); + const maxPrecision = getMaxPrecision(); + + if (Number.isNaN(precision)) { + precision = DEFAULT_PRECISION; + } + + if (precision > maxPrecision) { + return maxPrecision; + } + + return precision; +} diff --git a/src/legacy/ui/public/vis/map/service_settings.d.ts b/src/plugins/maps_legacy/public/map/service_settings.d.ts similarity index 97% rename from src/legacy/ui/public/vis/map/service_settings.d.ts rename to src/plugins/maps_legacy/public/map/service_settings.d.ts index 6766000861e47c..e265accaeb8fd0 100644 --- a/src/legacy/ui/public/vis/map/service_settings.d.ts +++ b/src/plugins/maps_legacy/public/map/service_settings.d.ts @@ -44,7 +44,7 @@ export interface VectorLayer extends FileLayer { isEMS: boolean; } -export interface ServiceSettings { +export interface IServiceSettings { getEMSHotLink(layer: FileLayer): Promise; getTMSServices(): Promise; getFileLayers(): Promise; diff --git a/src/plugins/maps_legacy/public/map/service_settings.js b/src/plugins/maps_legacy/public/map/service_settings.js new file mode 100644 index 00000000000000..11c853d39e1072 --- /dev/null +++ b/src/plugins/maps_legacy/public/map/service_settings.js @@ -0,0 +1,254 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import _ from 'lodash'; +import MarkdownIt from 'markdown-it'; +import { EMSClient } from '@elastic/ems-client'; +import { i18n } from '@kbn/i18n'; +import { getInjectedVarFunc } from '../kibana_services'; +import { ORIGIN } from '../common/origin'; + +const TMS_IN_YML_ID = 'TMS in config/kibana.yml'; + +export class ServiceSettings { + constructor() { + const getInjectedVar = getInjectedVarFunc(); + this.mapConfig = getInjectedVar('mapConfig'); + this.tilemapsConfig = getInjectedVar('tilemapsConfig'); + const kbnVersion = getInjectedVar('version'); + + this._showZoomMessage = true; + this._emsClient = new EMSClient({ + language: i18n.getLocale(), + appVersion: kbnVersion, + appName: 'kibana', + fileApiUrl: this.mapConfig.emsFileApiUrl, + tileApiUrl: this.mapConfig.emsTileApiUrl, + landingPageUrl: this.mapConfig.emsLandingPageUrl, + // Wrap to avoid errors passing window fetch + fetchFunction: function(...args) { + return fetch(...args); + }, + }); + this.getTMSOptions(); + } + + getTMSOptions() { + const markdownIt = new MarkdownIt({ + html: false, + linkify: true, + }); + + // TMS attribution + const attributionFromConfig = _.escape( + markdownIt.render(this.tilemapsConfig.deprecated.config.options.attribution || '') + ); + // TMS Options + this.tmsOptionsFromConfig = _.assign({}, this.tilemapsConfig.deprecated.config.options, { + attribution: attributionFromConfig, + }); + } + + shouldShowZoomMessage({ origin }) { + return origin === ORIGIN.EMS && this._showZoomMessage; + } + + disableZoomMessage() { + this._showZoomMessage = false; + } + + __debugStubManifestCalls(manifestRetrieval) { + const oldGetManifest = this._emsClient.getManifest; + this._emsClient.getManifest = manifestRetrieval; + return { + removeStub: () => { + delete this._emsClient.getManifest; + //not strictly necessary since this is prototype method + if (this._emsClient.getManifest !== oldGetManifest) { + this._emsClient.getManifest = oldGetManifest; + } + }, + }; + } + + async getFileLayers() { + if (!this.mapConfig.includeElasticMapsService) { + return []; + } + + const fileLayers = await this._emsClient.getFileLayers(); + return fileLayers.map(fileLayer => { + //backfill to older settings + const format = fileLayer.getDefaultFormatType(); + const meta = fileLayer.getDefaultFormatMeta(); + + return { + name: fileLayer.getDisplayName(), + origin: fileLayer.getOrigin(), + id: fileLayer.getId(), + created_at: fileLayer.getCreatedAt(), + attribution: fileLayer.getHTMLAttribution(), + fields: fileLayer.getFieldsInLanguage(), + format: format, //legacy: format and meta are split up + meta: meta, //legacy, format and meta are split up + }; + }); + } + + /** + * Returns all the services published by EMS (if configures) + * It also includes the service configured in tilemap (override) + */ + async getTMSServices() { + let allServices = []; + if (this.tilemapsConfig.deprecated.isOverridden) { + //use tilemap.* settings from yml + const tmsService = _.cloneDeep(this.tmsOptionsFromConfig); + tmsService.id = TMS_IN_YML_ID; + tmsService.origin = ORIGIN.KIBANA_YML; + allServices.push(tmsService); + } + + if (this.mapConfig.includeElasticMapsService) { + const servicesFromManifest = await this._emsClient.getTMSServices(); + const strippedServiceFromManifest = await Promise.all( + servicesFromManifest + .filter(tmsService => tmsService.getId() === this.mapConfig.emsTileLayerId.bright) + .map(async tmsService => { + //shim for compatibility + return { + origin: tmsService.getOrigin(), + id: tmsService.getId(), + minZoom: await tmsService.getMinZoom(), + maxZoom: await tmsService.getMaxZoom(), + attribution: tmsService.getHTMLAttribution(), + }; + }) + ); + allServices = allServices.concat(strippedServiceFromManifest); + } + + return allServices; + } + + /** + * Add optional query-parameters to all requests + * + * @param additionalQueryParams + */ + addQueryParams(additionalQueryParams) { + this._emsClient.addQueryParams(additionalQueryParams); + } + + async getEMSHotLink(fileLayerConfig) { + const fileLayers = await this._emsClient.getFileLayers(); + const layer = fileLayers.find(fileLayer => { + const hasIdByName = fileLayer.hasId(fileLayerConfig.name); //legacy + const hasIdById = fileLayer.hasId(fileLayerConfig.id); + return hasIdByName || hasIdById; + }); + return layer ? layer.getEMSHotLink() : null; + } + + async _getAttributesForEMSTMSLayer(isDesaturated, isDarkMode) { + const tmsServices = await this._emsClient.getTMSServices(); + const emsTileLayerId = this.mapConfig.emsTileLayerId; + let serviceId; + if (isDarkMode) { + serviceId = emsTileLayerId.dark; + } else { + if (isDesaturated) { + serviceId = emsTileLayerId.desaturated; + } else { + serviceId = emsTileLayerId.bright; + } + } + const tmsService = tmsServices.find(service => { + return service.getId() === serviceId; + }); + return { + url: await tmsService.getUrlTemplate(), + minZoom: await tmsService.getMinZoom(), + maxZoom: await tmsService.getMaxZoom(), + attribution: await tmsService.getHTMLAttribution(), + origin: ORIGIN.EMS, + }; + } + + async getAttributesForTMSLayer(tmsServiceConfig, isDesaturated, isDarkMode) { + if (tmsServiceConfig.origin === ORIGIN.EMS) { + return this._getAttributesForEMSTMSLayer(isDesaturated, isDarkMode); + } else if (tmsServiceConfig.origin === ORIGIN.KIBANA_YML) { + const config = this.tilemapsConfig.deprecated.config; + const attrs = _.pick(config, ['url', 'minzoom', 'maxzoom', 'attribution']); + return { ...attrs, ...{ origin: ORIGIN.KIBANA_YML } }; + } else { + //this is an older config. need to resolve this dynamically. + if (tmsServiceConfig.id === TMS_IN_YML_ID) { + const config = this.tilemapsConfig.deprecated.config; + const attrs = _.pick(config, ['url', 'minzoom', 'maxzoom', 'attribution']); + return { ...attrs, ...{ origin: ORIGIN.KIBANA_YML } }; + } else { + //assume ems + return this._getAttributesForEMSTMSLayer(isDesaturated, isDarkMode); + } + } + } + + async _getFileUrlFromEMS(fileLayerConfig) { + const fileLayers = await this._emsClient.getFileLayers(); + const layer = fileLayers.find(fileLayer => { + const hasIdByName = fileLayer.hasId(fileLayerConfig.name); //legacy + const hasIdById = fileLayer.hasId(fileLayerConfig.id); + return hasIdByName || hasIdById; + }); + + if (layer) { + return layer.getDefaultFormatUrl(); + } else { + throw new Error(`File ${fileLayerConfig.name} not recognized`); + } + } + + async getUrlForRegionLayer(fileLayerConfig) { + let url; + if (fileLayerConfig.origin === ORIGIN.EMS) { + url = this._getFileUrlFromEMS(fileLayerConfig); + } else if (fileLayerConfig.layerId && fileLayerConfig.layerId.startsWith(`${ORIGIN.EMS}.`)) { + //fallback for older saved objects + url = this._getFileUrlFromEMS(fileLayerConfig); + } else if ( + fileLayerConfig.layerId && + fileLayerConfig.layerId.startsWith(`${ORIGIN.KIBANA_YML}.`) + ) { + //fallback for older saved objects + url = fileLayerConfig.url; + } else { + //generic fallback + url = fileLayerConfig.url; + } + return url; + } + + async getJsonForRegionLayer(fileLayerConfig) { + const url = await this.getUrlForRegionLayer(fileLayerConfig); + const response = await fetch(url); + return await response.json(); + } +} diff --git a/src/legacy/ui/public/vis/map/zoom_to_precision.ts b/src/plugins/maps_legacy/public/map/zoom_to_precision.ts similarity index 100% rename from src/legacy/ui/public/vis/map/zoom_to_precision.ts rename to src/plugins/maps_legacy/public/map/zoom_to_precision.ts diff --git a/src/plugins/maps_legacy/public/plugin.ts b/src/plugins/maps_legacy/public/plugin.ts new file mode 100644 index 00000000000000..751be65e1dbf6e --- /dev/null +++ b/src/plugins/maps_legacy/public/plugin.ts @@ -0,0 +1,57 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// @ts-ignore +import { CoreSetup, CoreStart, Plugin } from 'kibana/public'; +// @ts-ignore +import { setToasts, setUiSettings, setInjectedVarFunc } from './kibana_services'; +// @ts-ignore +import { ServiceSettings } from './map/service_settings'; +// @ts-ignore +import { getPrecision, getZoomPrecision } from './map/precision'; +import { MapsLegacyPluginSetup, MapsLegacyPluginStart } from './index'; + +/** + * These are the interfaces with your public contracts. You should export these + * for other plugins to use in _their_ `SetupDeps`/`StartDeps` interfaces. + * @public + */ + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface MapsLegacySetupDependencies {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface MapsLegacyStartDependencies {} + +export class MapsLegacyPlugin implements Plugin { + constructor() {} + + public setup(core: CoreSetup, plugins: MapsLegacySetupDependencies) { + setToasts(core.notifications.toasts); + setUiSettings(core.uiSettings); + setInjectedVarFunc(core.injectedMetadata.getInjectedVar); + + return { + serviceSettings: new ServiceSettings(), + getZoomPrecision, + getPrecision, + }; + } + + public start(core: CoreStart, plugins: MapsLegacyStartDependencies) {} +} diff --git a/x-pack/legacy/plugins/tilemap/public/vis_type_enhancers/update_tilemap_settings.js b/x-pack/legacy/plugins/tilemap/public/vis_type_enhancers/update_tilemap_settings.js index 45764016f0311f..294bc31e3893e9 100644 --- a/x-pack/legacy/plugins/tilemap/public/vis_type_enhancers/update_tilemap_settings.js +++ b/x-pack/legacy/plugins/tilemap/public/vis_type_enhancers/update_tilemap_settings.js @@ -4,20 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import uiRoutes from 'ui/routes'; import { xpackInfo } from 'plugins/xpack_main/services/xpack_info'; -import 'ui/vis/map/service_settings'; +import { npSetup } from 'ui/new_platform'; -uiRoutes.addSetupWork(function($injector, serviceSettings) { - const tileMapPluginInfo = xpackInfo.get('features.tilemap'); +const tileMapPluginInfo = xpackInfo.get('features.tilemap'); - if (!tileMapPluginInfo) { - return; - } - - if (!tileMapPluginInfo.license.active || !tileMapPluginInfo.license.valid) { - return; - } +if (tileMapPluginInfo && (tileMapPluginInfo.license.active || tileMapPluginInfo.license.valid)) { + const { serviceSettings } = npSetup.plugins.mapsLegacy; serviceSettings.addQueryParams({ license: tileMapPluginInfo.license.uid }); serviceSettings.disableZoomMessage(); -}); +} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 3cebde793a085b..a8574971426f5c 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -319,8 +319,6 @@ "common.ui.stateManagement.unableToStoreHistoryInSessionErrorMessage": "セッションがいっぱいで安全に削除できるアイテムが見つからないため、Kibana は履歴アイテムを保存できません。\n\nこれは大抵新規タブに移動することで解決されますが、より大きな問題が原因である可能性もあります。このメッセージが定期的に表示される場合は、{gitHubIssuesUrl} で問題を報告してください。", "common.ui.url.replacementFailedErrorMessage": "置換に失敗、未解決の表現式: {expr}", "common.ui.url.savedObjectIsMissingNotificationMessage": "保存されたオブジェクトがありません", - "common.ui.vis.kibanaMap.leaflet.fitDataBoundsAriaLabel": "データバウンドを合わせる", - "common.ui.vis.kibanaMap.zoomWarning": "ズームレベルが最大に達しました。完全にズームインするには、Elasticsearch と Kibana の {defaultDistribution} にアップグレードしてください。{ems} でより多くのズームレベルが利用できます。または、独自のマップサーバーを構成できます。詳細は { wms } または { configSettings} をご覧ください。", "console.autocomplete.addMethodMetaText": "メソド", "console.consoleDisplayName": "コンソール", "console.consoleMenu.copyAsCurlMessage": "リクエストが URL としてコピーされました", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 1daf66117e948c..df5cccf1a9b97d 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -319,8 +319,6 @@ "common.ui.stateManagement.unableToStoreHistoryInSessionErrorMessage": "Kibana 无法将历史记录项存储在您的会话中,因为其已满,并且似乎没有任何可安全删除的项。\n\n通常可通过移至新的标签页来解决此问题,但这会导致更大的问题。如果您有规律地看到此消息,请在 {gitHubIssuesUrl} 提交问题。", "common.ui.url.replacementFailedErrorMessage": "替换失败,未解析的表达式:{expr}", "common.ui.url.savedObjectIsMissingNotificationMessage": "已保存对象缺失", - "common.ui.vis.kibanaMap.leaflet.fitDataBoundsAriaLabel": "适应数据边界", - "common.ui.vis.kibanaMap.zoomWarning": "已达到缩放级别最大数目。要一直放大,请升级到 Elasticsearch 和 Kibana 的 {defaultDistribution}。您可以通过 {ems} 免费使用其他缩放级别。或者,您可以配置自己的地图服务器。请前往 { wms } 或 { configSettings} 以获取详细信息。", "console.autocomplete.addMethodMetaText": "方法", "console.consoleDisplayName": "控制台", "console.consoleMenu.copyAsCurlMessage": "请求已复制为 cURL", From 5bc233f3c733323834b669cc7ef4be809d12ddc6 Mon Sep 17 00:00:00 2001 From: Ahmad Bamieh Date: Mon, 13 Apr 2020 23:45:13 +0300 Subject: [PATCH 27/35] [Telemetry] force staging urls in tests (#63356) * specify telemetry url configs * opt out by default except where we are testing telemetry --- test/common/config.js | 4 ++++ x-pack/test/api_integration/config.js | 2 ++ x-pack/test/functional/config.js | 1 - x-pack/test/functional/config_security_basic.js | 1 - 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/test/common/config.js b/test/common/config.js index faf8cef0271709..ca80dfb01012f2 100644 --- a/test/common/config.js +++ b/test/common/config.js @@ -56,6 +56,10 @@ export default function() { `--elasticsearch.password=${kibanaServerTestUser.password}`, `--home.disableWelcomeScreen=true`, '--telemetry.banner=false', + '--telemetry.optIn=false', + // These are *very* important to have them pointing to staging + '--telemetry.url=https://telemetry-staging.elastic.co/xpack/v2/send', + '--telemetry.optInStatusUrl=https://telemetry-staging.elastic.co/opt_in_status/v2/send', `--server.maxPayloadBytes=1679958`, // newsfeed mock service `--plugin-path=${path.join(__dirname, 'fixtures', 'plugins', 'newsfeed')}`, diff --git a/x-pack/test/api_integration/config.js b/x-pack/test/api_integration/config.js index b62368bf2d6083..0eac7c58044e65 100644 --- a/x-pack/test/api_integration/config.js +++ b/x-pack/test/api_integration/config.js @@ -27,6 +27,8 @@ export async function getApiIntegrationConfig({ readConfigFile }) { '--xpack.security.session.idleTimeout=3600000', // 1 hour '--optimize.enabled=false', '--xpack.endpoint.enabled=true', + '--telemetry.optIn=true', + '--xpack.endpoint.enabled=true', '--xpack.ingestManager.enabled=true', '--xpack.ingestManager.fleet.enabled=true', '--xpack.endpoint.alertResultListDefaultDateRange.from=2018-01-10T00:00:00.000Z', diff --git a/x-pack/test/functional/config.js b/x-pack/test/functional/config.js index bc9a67da731ccb..f26110513a9b33 100644 --- a/x-pack/test/functional/config.js +++ b/x-pack/test/functional/config.js @@ -85,7 +85,6 @@ export default async function({ readConfigFile }) { '--stats.maximumWaitTimeForAllCollectorsInS=1', '--xpack.security.encryptionKey="wuGNaIhoMpk5sO4UBxgr3NyW1sFcLgIf"', // server restarts should not invalidate active sessions '--xpack.encryptedSavedObjects.encryptionKey="DkdXazszSCYexXqz4YktBGHCRkV6hyNK"', - '--telemetry.banner=false', '--timelion.ui.enabled=true', ], }, diff --git a/x-pack/test/functional/config_security_basic.js b/x-pack/test/functional/config_security_basic.js index 12d94e922a97c7..2bb59796b55179 100644 --- a/x-pack/test/functional/config_security_basic.js +++ b/x-pack/test/functional/config_security_basic.js @@ -42,7 +42,6 @@ export default async function({ readConfigFile }) { ...kibanaCommonConfig.get('kbnTestServer.serverArgs'), '--server.uuid=5b2de169-2785-441b-ae8c-186a1936b17d', '--xpack.security.encryptionKey="wuGNaIhoMpk5sO4UBxgr3NyW1sFcLgIf"', // server restarts should not invalidate active sessions - '--telemetry.banner=false', ], }, uiSettings: { From 500b069efd2e344147169163983c4535b21fed8f Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Mon, 13 Apr 2020 17:41:22 -0400 Subject: [PATCH 28/35] [Alerting] set correct parameter for unauthented email action (#63086) PR https://github.com/elastic/kibana/pull/60839 added support for unauthenticated emails, but didn't actually do enough to make it work. This PR completes that support, and adds some tests. You can do manual testing now with [maildev](http://maildev.github.io/maildev/). --- .../server/builtin_action_types/email.test.ts | 107 ++++++++++- .../server/builtin_action_types/email.ts | 11 +- .../lib/send_email.test.ts | 175 ++++++++++++++++++ .../builtin_action_types/lib/send_email.ts | 22 ++- 4 files changed, 299 insertions(+), 16 deletions(-) create mode 100644 x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts diff --git a/x-pack/plugins/actions/server/builtin_action_types/email.test.ts b/x-pack/plugins/actions/server/builtin_action_types/email.test.ts index 469df4fd86e2ce..658f8f3fd8cf9c 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/email.test.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/email.test.ts @@ -255,7 +255,14 @@ describe('execute()', () => { services, }; sendEmailMock.mockReset(); - await actionType.executor(executorOptions); + const result = await actionType.executor(executorOptions); + expect(result).toMatchInlineSnapshot(` + Object { + "actionId": "some-id", + "data": undefined, + "status": "ok", + } + `); expect(sendEmailMock.mock.calls[0][1]).toMatchInlineSnapshot(` Object { "content": Object { @@ -282,4 +289,102 @@ describe('execute()', () => { } `); }); + + test('parameters are as expected with no auth', async () => { + const config: ActionTypeConfigType = { + service: null, + host: 'a host', + port: 42, + secure: true, + from: 'bob@example.com', + }; + const secrets: ActionTypeSecretsType = { + user: null, + password: null, + }; + const params: ActionParamsType = { + to: ['jim@example.com'], + cc: ['james@example.com'], + bcc: ['jimmy@example.com'], + subject: 'the subject', + message: 'a message to you', + }; + + const actionId = 'some-id'; + const executorOptions: ActionTypeExecutorOptions = { + actionId, + config, + params, + secrets, + services, + }; + sendEmailMock.mockReset(); + await actionType.executor(executorOptions); + expect(sendEmailMock.mock.calls[0][1]).toMatchInlineSnapshot(` + Object { + "content": Object { + "message": "a message to you", + "subject": "the subject", + }, + "routing": Object { + "bcc": Array [ + "jimmy@example.com", + ], + "cc": Array [ + "james@example.com", + ], + "from": "bob@example.com", + "to": Array [ + "jim@example.com", + ], + }, + "transport": Object { + "host": "a host", + "port": 42, + "secure": true, + }, + } + `); + }); + + test('returns expected result when an error is thrown', async () => { + const config: ActionTypeConfigType = { + service: null, + host: 'a host', + port: 42, + secure: true, + from: 'bob@example.com', + }; + const secrets: ActionTypeSecretsType = { + user: null, + password: null, + }; + const params: ActionParamsType = { + to: ['jim@example.com'], + cc: ['james@example.com'], + bcc: ['jimmy@example.com'], + subject: 'the subject', + message: 'a message to you', + }; + + const actionId = 'some-id'; + const executorOptions: ActionTypeExecutorOptions = { + actionId, + config, + params, + secrets, + services, + }; + sendEmailMock.mockReset(); + sendEmailMock.mockRejectedValue(new Error('wops')); + const result = await actionType.executor(executorOptions); + expect(result).toMatchInlineSnapshot(` + Object { + "actionId": "some-id", + "message": "error sending email", + "serviceMessage": "wops", + "status": "error", + } + `); + }); }); diff --git a/x-pack/plugins/actions/server/builtin_action_types/email.ts b/x-pack/plugins/actions/server/builtin_action_types/email.ts index 7992920fdfcb4e..ca8d089ad2946c 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/email.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/email.ts @@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import nodemailerGetService from 'nodemailer/lib/well-known'; -import { sendEmail, JSON_TRANSPORT_SERVICE } from './lib/send_email'; +import { sendEmail, JSON_TRANSPORT_SERVICE, SendEmailOptions, Transport } from './lib/send_email'; import { portSchema } from './lib/schemas'; import { Logger } from '../../../../../src/core/server'; import { ActionType, ActionTypeExecutorOptions, ActionTypeExecutorResult } from '../types'; @@ -143,7 +143,7 @@ async function executor( const secrets = execOptions.secrets as ActionTypeSecretsType; const params = execOptions.params as ActionParamsType; - const transport: any = {}; + const transport: Transport = {}; if (secrets.user != null) { transport.user = secrets.user; @@ -155,12 +155,13 @@ async function executor( if (config.service !== null) { transport.service = config.service; } else { - transport.host = config.host; - transport.port = config.port; + // already validated service or host/port is not null ... + transport.host = config.host!; + transport.port = config.port!; transport.secure = getSecureValue(config.secure, config.port); } - const sendEmailOptions = { + const sendEmailOptions: SendEmailOptions = { transport, routing: { from: config.from, diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts b/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts new file mode 100644 index 00000000000000..42160dc2fc22bc --- /dev/null +++ b/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.test.ts @@ -0,0 +1,175 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +jest.mock('nodemailer', () => ({ + createTransport: jest.fn(), +})); + +import { Logger } from '../../../../../../src/core/server'; +import { sendEmail } from './send_email'; +import { loggingServiceMock } from '../../../../../../src/core/server/mocks'; +import nodemailer from 'nodemailer'; + +const createTransportMock = nodemailer.createTransport as jest.Mock; +const sendMailMockResult = { result: 'does not matter' }; +const sendMailMock = jest.fn(); + +const mockLogger = loggingServiceMock.create().get() as jest.Mocked; + +describe('send_email module', () => { + beforeEach(() => { + jest.resetAllMocks(); + createTransportMock.mockReturnValue({ sendMail: sendMailMock }); + sendMailMock.mockResolvedValue(sendMailMockResult); + }); + + test('handles authenticated email using service', async () => { + const sendEmailOptions = getSendEmailOptions(); + const result = await sendEmail(mockLogger, sendEmailOptions); + expect(result).toBe(sendMailMockResult); + expect(createTransportMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "auth": Object { + "pass": "changeme", + "user": "elastic", + }, + "service": "whatever", + }, + ] + `); + expect(sendMailMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "bcc": Array [], + "cc": Array [ + "bob@example.com", + "robert@example.com", + ], + "from": "fred@example.com", + "html": "

a message

+ ", + "subject": "a subject", + "text": "a message", + "to": Array [ + "jim@example.com", + ], + }, + ] + `); + }); + + test('handles unauthenticated email using not secure host/port', async () => { + const sendEmailOptions = getSendEmailOptions(); + delete sendEmailOptions.transport.service; + delete sendEmailOptions.transport.user; + delete sendEmailOptions.transport.password; + sendEmailOptions.transport.host = 'example.com'; + sendEmailOptions.transport.port = 1025; + const result = await sendEmail(mockLogger, sendEmailOptions); + expect(result).toBe(sendMailMockResult); + expect(createTransportMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "host": "example.com", + "port": 1025, + "secure": false, + "tls": Object { + "rejectUnauthorized": false, + }, + }, + ] + `); + expect(sendMailMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "bcc": Array [], + "cc": Array [ + "bob@example.com", + "robert@example.com", + ], + "from": "fred@example.com", + "html": "

a message

+ ", + "subject": "a subject", + "text": "a message", + "to": Array [ + "jim@example.com", + ], + }, + ] + `); + }); + + test('handles unauthenticated email using secure host/port', async () => { + const sendEmailOptions = getSendEmailOptions(); + delete sendEmailOptions.transport.service; + delete sendEmailOptions.transport.user; + delete sendEmailOptions.transport.password; + sendEmailOptions.transport.host = 'example.com'; + sendEmailOptions.transport.port = 1025; + sendEmailOptions.transport.secure = true; + const result = await sendEmail(mockLogger, sendEmailOptions); + expect(result).toBe(sendMailMockResult); + expect(createTransportMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "host": "example.com", + "port": 1025, + "secure": true, + }, + ] + `); + expect(sendMailMock.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "bcc": Array [], + "cc": Array [ + "bob@example.com", + "robert@example.com", + ], + "from": "fred@example.com", + "html": "

a message

+ ", + "subject": "a subject", + "text": "a message", + "to": Array [ + "jim@example.com", + ], + }, + ] + `); + }); + + test('passes nodemailer exceptions to caller', async () => { + const sendEmailOptions = getSendEmailOptions(); + + sendMailMock.mockReset(); + sendMailMock.mockRejectedValue(new Error('wops')); + + await expect(sendEmail(mockLogger, sendEmailOptions)).rejects.toThrow('wops'); + }); +}); + +function getSendEmailOptions(): any { + return { + content: { + message: 'a message', + subject: 'a subject', + }, + routing: { + from: 'fred@example.com', + to: ['jim@example.com'], + cc: ['bob@example.com', 'robert@example.com'], + bcc: [], + }, + transport: { + service: 'whatever', + user: 'elastic', + password: 'changeme', + }, + }; +} diff --git a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts b/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts index 47d7aff8022ce6..ffbf7485a8b0b9 100644 --- a/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts +++ b/x-pack/plugins/actions/server/builtin_action_types/lib/send_email.ts @@ -14,30 +14,30 @@ import { Logger } from '../../../../../../src/core/server'; // an email "service" which doesn't actually send, just returns what it would send export const JSON_TRANSPORT_SERVICE = '__json'; -interface SendEmailOptions { +export interface SendEmailOptions { transport: Transport; routing: Routing; content: Content; } // config validation ensures either service is set or host/port are set -interface Transport { - user: string; - password: string; +export interface Transport { + user?: string; + password?: string; service?: string; // see: https://nodemailer.com/smtp/well-known/ host?: string; port?: number; secure?: boolean; // see: https://nodemailer.com/smtp/#tls-options } -interface Routing { +export interface Routing { from: string; to: string[]; cc: string[]; bcc: string[]; } -interface Content { +export interface Content { subject: string; message: string; } @@ -49,12 +49,14 @@ export async function sendEmail(logger: Logger, options: SendEmailOptions): Prom const { from, to, cc, bcc } = routing; const { subject, message } = content; - const transportConfig: Record = { - auth: { + const transportConfig: Record = {}; + + if (user != null && password != null) { + transportConfig.auth = { user, pass: password, - }, - }; + }; + } if (service === JSON_TRANSPORT_SERVICE) { transportConfig.jsonTransport = true; From 3623875175720d867e1c37bb10e20d4e4aacb1d9 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 13 Apr 2020 15:53:07 -0600 Subject: [PATCH 29/35] [Maps] fix bug where toggling Scaling type does not re-fetch data (#63326) * [Maps] fix bug where toggling Scaling type does not re-fetch data * reset to empty array instead of deleting * move setting of layer type to action creator instead of side effect of UPDATE_SOURCE_PROP * review feedback --- .../maps/public/actions/map_actions.js | 38 +++++++++++++++++-- x-pack/plugins/maps/public/reducers/map.js | 13 +------ 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/x-pack/legacy/plugins/maps/public/actions/map_actions.js b/x-pack/legacy/plugins/maps/public/actions/map_actions.js index aa55cf0808ef21..7bfbf5761c5b8c 100644 --- a/x-pack/legacy/plugins/maps/public/actions/map_actions.js +++ b/x-pack/legacy/plugins/maps/public/actions/map_actions.js @@ -125,9 +125,21 @@ async function syncDataForAllLayers(dispatch, getState, dataFilters) { export function cancelAllInFlightRequests() { return (dispatch, getState) => { getLayerList(getState()).forEach(layer => { - layer.getInFlightRequestTokens().forEach(requestToken => { - dispatch(cancelRequest(requestToken)); - }); + dispatch(clearDataRequests(layer)); + }); + }; +} + +function clearDataRequests(layer) { + return dispatch => { + layer.getInFlightRequestTokens().forEach(requestToken => { + dispatch(cancelRequest(requestToken)); + }); + dispatch({ + type: UPDATE_LAYER_PROP, + id: layer.getId(), + propName: '__dataRequests', + newValue: [], }); }; } @@ -663,13 +675,31 @@ export function updateSourceProp(layerId, propName, value, newLayerType) { layerId, propName, value, - newLayerType, }); + if (newLayerType) { + dispatch(updateLayerType(layerId, newLayerType)); + } await dispatch(clearMissingStyleProperties(layerId)); dispatch(syncDataForLayer(layerId)); }; } +function updateLayerType(layerId, newLayerType) { + return (dispatch, getState) => { + const layer = getLayerById(layerId, getState()); + if (!layer || layer.getType() === newLayerType) { + return; + } + dispatch(clearDataRequests(layer)); + dispatch({ + type: UPDATE_LAYER_PROP, + id: layerId, + propName: 'type', + newValue: newLayerType, + }); + }; +} + export function syncDataForLayer(layerId) { return async (dispatch, getState) => { const targetLayer = getLayerById(layerId, getState()); diff --git a/x-pack/plugins/maps/public/reducers/map.js b/x-pack/plugins/maps/public/reducers/map.js index 1e20df89c8fad0..7e07569b44b830 100644 --- a/x-pack/plugins/maps/public/reducers/map.js +++ b/x-pack/plugins/maps/public/reducers/map.js @@ -74,7 +74,7 @@ const updateLayerInList = (state, layerId, attribute, newValue) => { return { ...state, layerList: updatedList }; }; -const updateLayerSourceDescriptorProp = (state, layerId, propName, value, newLayerType) => { +const updateLayerSourceDescriptorProp = (state, layerId, propName, value) => { const { layerList } = state; const layerIdx = getLayerIndex(layerList, layerId); const updatedLayer = { @@ -84,9 +84,6 @@ const updateLayerSourceDescriptorProp = (state, layerId, propName, value, newLay [propName]: value, }, }; - if (newLayerType) { - updatedLayer.type = newLayerType; - } const updatedList = [ ...layerList.slice(0, layerIdx), updatedLayer, @@ -261,13 +258,7 @@ export function map(state = INITIAL_STATE, action) { case UPDATE_LAYER_PROP: return updateLayerInList(state, action.id, action.propName, action.newValue); case UPDATE_SOURCE_PROP: - return updateLayerSourceDescriptorProp( - state, - action.layerId, - action.propName, - action.value, - action.newLayerType - ); + return updateLayerSourceDescriptorProp(state, action.layerId, action.propName, action.value); case SET_JOINS: const layerDescriptor = state.layerList.find( descriptor => descriptor.id === action.layer.getId() From b54388746dedfadd8f5432f9005c063271afc129 Mon Sep 17 00:00:00 2001 From: The SpaceCake Project Date: Mon, 13 Apr 2020 18:42:10 -0400 Subject: [PATCH 30/35] investigation notes field (documentation / metadata) (#63386) * notes field added text to the "investigation notes" field in md which the field supports. * Revert "notes field" This reverts commit dae6ffc683150b9c471f3591073427ae62949a6e. * Revert "Revert "notes field"" This reverts commit f9de4bfc920217740fde316d3462cba409afa654. * Update linux_anomalous_network_activity.json * text change change to "Signals from this rule indicate" --- .../prepackaged_rules/linux_anomalous_network_activity.json | 3 ++- .../prepackaged_rules/linux_anomalous_process_all_hosts.json | 3 ++- .../rules/prepackaged_rules/linux_anomalous_user_name.json | 3 ++- .../rules/prepackaged_rules/rare_process_by_host_linux.json | 3 ++- .../rules/prepackaged_rules/rare_process_by_host_windows.json | 3 ++- .../prepackaged_rules/windows_anomalous_network_activity.json | 3 ++- .../prepackaged_rules/windows_anomalous_process_all_hosts.json | 3 ++- .../rules/prepackaged_rules/windows_anomalous_user_name.json | 3 ++- .../windows_rare_user_type10_remote_login.json | 3 ++- 9 files changed, 18 insertions(+), 9 deletions(-) diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_network_activity.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_network_activity.json index fe248a6c1e23ea..41f38173dba33b 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_network_activity.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_network_activity.json @@ -20,5 +20,6 @@ "ML" ], "type": "machine_learning", + "note": "### Investigating Unusual Network Activity ###\nSignals from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected? \n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_process_all_hosts.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_process_all_hosts.json index d15c4fc7943782..103171bcdfe501 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_process_all_hosts.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_process_all_hosts.json @@ -20,5 +20,6 @@ "ML" ], "type": "machine_learning", + "note": "### Investigating an Unusual Linux Process ###\nSignals from this rule indicate the presence of a Linux process that is rare and unusual for all of the monitored Linux hosts for which Auditbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_user_name.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_user_name.json index 2f33948b0a93e4..6642bb5d73fbdd 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_user_name.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/linux_anomalous_user_name.json @@ -20,5 +20,6 @@ "ML" ], "type": "machine_learning", + "note": "### Investigating an Unusual Linux User ###\nSignals from this rule indicate activity for a Linux user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to troubleshooting or debugging activity by a developer or site reliability engineer?\n- Examine the history of user activity. If this user manifested only very recently, it might be a service account for a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_linux.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_linux.json index f071677ae8d330..8ae1b84aaf1997 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_linux.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_linux.json @@ -20,5 +20,6 @@ "ML" ], "type": "machine_learning", + "note": "### Investigating an Unusual Linux Process ###\nSignals from this rule indicate the presence of a Linux process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_windows.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_windows.json index 5e0050c6c25ec9..879cee388f5ddf 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_windows.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/rare_process_by_host_windows.json @@ -20,5 +20,6 @@ "Windows" ], "type": "machine_learning", + "note": "### Investigating an Unusual Windows Process ###\nSignals from this rule indicate the presence of a Windows process that is rare and unusual for the host it ran on. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package. \n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_network_activity.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_network_activity.json index ca18fe95b1fc1a..1092bcb20bcc35 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_network_activity.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_network_activity.json @@ -20,5 +20,6 @@ "Windows" ], "type": "machine_learning", + "note": "### Investigating Unusual Network Activity ###\nSignals from this rule indicate the presence of network activity from a Windows process for which network activity is very unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses, protocol and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected? \n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_process_all_hosts.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_process_all_hosts.json index 1229c4a52b97d8..f9adfeb830618a 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_process_all_hosts.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_process_all_hosts.json @@ -20,5 +20,6 @@ "Windows" ], "type": "machine_learning", + "note": "### Investigating an Unusual Windows Process ###\nSignals from this rule indicate the presence of a Windows process that is rare and unusual for all of the Windows hosts for which Winlogbeat data is available. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host?\n- Examine the history of execution. If this process manifested only very recently, it might be part of a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process metadata like the values of the Company, Description and Product fields which may indicate whether the program is associated with an expected software vendor or package. \n- Examine arguments and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.\n- If you have file hash values in the event data, and you suspect malware, you can optionally run a search for the file hash to see if the file is identified as malware by anti-malware tools. ", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_user_name.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_user_name.json index 703dc1a1dc6338..a0c6ff5c938f1c 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_user_name.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_anomalous_user_name.json @@ -20,5 +20,6 @@ "Windows" ], "type": "machine_learning", + "note": "### Investigating an Unusual Windows User ###\nSignals from this rule indicate activity for a Windows user name that is rare and unusual. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is this program part of an expected workflow for the user who ran this program on this host? Could this be related to occasional troubleshooting or support activity?\n- Examine the history of user activity. If this user manifested only very recently, it might be a service account for a new software package. If it has a consistent cadence - for example if it runs monthly or quarterly - it might be part of a monthly or quarterly business process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks that the user is performing.\n- Consider the same for the parent process. If the parent process is a legitimate system utility or service, this could be related to software updates or system management. If the parent process is something user-facing like an Office application, this process could be more suspicious.", "version": 1 -} \ No newline at end of file +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_rare_user_type10_remote_login.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_rare_user_type10_remote_login.json index 946cdb95b8e702..7318364c3aac27 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_rare_user_type10_remote_login.json +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/rules/prepackaged_rules/windows_rare_user_type10_remote_login.json @@ -20,5 +20,6 @@ "Windows" ], "type": "machine_learning", + "note": "### Investigating an Unusual Windows User ###\nSignals from this rule indicate activity for a rare and unusual Windows RDP (remote desktop) user. Here are some possible avenues of investigation:\n- Consider the user as identified by the username field. Is the user part of a group who normally logs into Windows hosts using RDP (remote desktop protocol)? Is this logon activity part of an expected workflow for the user? \n- Consider the source of the login. If the source is remote, could this be related to occasional troubleshooting or support activity by a vendor or an employee working remotely?", "version": 1 -} \ No newline at end of file +} From 5bc539c6db8c1f735876e0f16adb7bbd5d4b41eb Mon Sep 17 00:00:00 2001 From: Gil Raphaelli Date: Mon, 13 Apr 2020 22:06:09 -0400 Subject: [PATCH 31/35] update in-app links to metricbeat configuration docs (#63295) --- .../flyout/__snapshots__/flyout.test.js.snap | 24 +++++++++---------- .../apm/enable_metricbeat_instructions.js | 6 ++--- .../beats/enable_metricbeat_instructions.js | 2 +- .../kibana/enable_metricbeat_instructions.js | 2 +- .../enable_metricbeat_instructions.js | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/__snapshots__/flyout.test.js.snap b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/__snapshots__/flyout.test.js.snap index eb1c65c6a696da..4a7537166bd8af 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/__snapshots__/flyout.test.js.snap +++ b/x-pack/legacy/plugins/monitoring/public/components/metricbeat_migration/flyout/__snapshots__/flyout.test.js.snap @@ -161,7 +161,7 @@ exports[`Flyout apm part two should show instructions to migrate to metricbeat 1 "children":

Date: Tue, 14 Apr 2020 02:05:06 -0400 Subject: [PATCH 32/35] [Endpoint] Update cli mapping to match endpoint package (#63372) * Update cli mapping to match endpoint package --- x-pack/plugins/endpoint/scripts/alert_mapping.json | 3 ++- x-pack/plugins/endpoint/scripts/event_mapping.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/endpoint/scripts/alert_mapping.json b/x-pack/plugins/endpoint/scripts/alert_mapping.json index a21e48b4bc95fc..2e0041d0af9867 100644 --- a/x-pack/plugins/endpoint/scripts/alert_mapping.json +++ b/x-pack/plugins/endpoint/scripts/alert_mapping.json @@ -394,7 +394,8 @@ "type": "nested" }, "file_extension": { - "type": "long" + "ignore_above": 1024, + "type": "keyword" }, "project_file": { "properties": { diff --git a/x-pack/plugins/endpoint/scripts/event_mapping.json b/x-pack/plugins/endpoint/scripts/event_mapping.json index 59d1ed17852b16..f410edc7abe5ef 100644 --- a/x-pack/plugins/endpoint/scripts/event_mapping.json +++ b/x-pack/plugins/endpoint/scripts/event_mapping.json @@ -386,7 +386,8 @@ "type": "nested" }, "file_extension": { - "type": "long" + "ignore_above": 1024, + "type": "keyword" }, "project_file": { "properties": { From f4abaabaee04ed78cb38f32defed37ac969834a5 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Tue, 14 Apr 2020 08:47:23 +0200 Subject: [PATCH 33/35] Escape single quotes surrounded by double quotes (#63229) Co-authored-by: Elastic Machine --- .../models/sense_editor/__tests__/editor_input1.txt | 6 ++++++ .../sense_editor/__tests__/sense_editor.test.js | 12 ++++++++++++ .../application/models/sense_editor/sense_editor.ts | 5 +++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/console/public/application/models/sense_editor/__tests__/editor_input1.txt b/src/plugins/console/public/application/models/sense_editor/__tests__/editor_input1.txt index f9a4bcb85034d1..398a0fdeab61f1 100644 --- a/src/plugins/console/public/application/models/sense_editor/__tests__/editor_input1.txt +++ b/src/plugins/console/public/application/models/sense_editor/__tests__/editor_input1.txt @@ -25,3 +25,9 @@ GET index_1/type1/1/_source?_source_include=f DELETE index_2 + +POST /_sql?format=txt +{ + "query": "SELECT prenom FROM claude_index WHERE prenom = 'claude' ", + "fetch_size": 1 +} diff --git a/src/plugins/console/public/application/models/sense_editor/__tests__/sense_editor.test.js b/src/plugins/console/public/application/models/sense_editor/__tests__/sense_editor.test.js index 6afc03df13b4cd..34b4cad7fbb6bb 100644 --- a/src/plugins/console/public/application/models/sense_editor/__tests__/sense_editor.test.js +++ b/src/plugins/console/public/application/models/sense_editor/__tests__/sense_editor.test.js @@ -470,6 +470,18 @@ curl -XGET "http://localhost:9200/_stats?level=shards" curl -XPUT "http://localhost:9200/index_1/type1/1" -H 'Content-Type: application/json' -d' { "f": 1 +}'`.trim() + ); + + multiReqCopyAsCurlTest( + 'with single quotes', + editorInput1, + { start: { lineNumber: 29 }, end: { lineNumber: 33 } }, + ` +curl -XPOST "http://localhost:9200/_sql?format=txt" -H 'Content-Type: application/json' -d' +{ + "query": "SELECT prenom FROM claude_index WHERE prenom = '\\''claude'\\'' ", + "fetch_size": 1 }'`.trim() ); }); diff --git a/src/plugins/console/public/application/models/sense_editor/sense_editor.ts b/src/plugins/console/public/application/models/sense_editor/sense_editor.ts index 9bcd3a68721968..d326543bbe00bb 100644 --- a/src/plugins/console/public/application/models/sense_editor/sense_editor.ts +++ b/src/plugins/console/public/application/models/sense_editor/sense_editor.ts @@ -484,8 +484,9 @@ export class SenseEditor { if (esData && esData.length) { ret += " -H 'Content-Type: application/json' -d'\n"; const dataAsString = collapseLiteralStrings(esData.join('\n')); - // since Sense doesn't allow single quote json string any single qoute is within a string. - ret += dataAsString.replace(/'/g, '\\"'); + + // We escape single quoted strings that that are wrapped in single quoted strings + ret += dataAsString.replace(/'/g, "'\\''"); if (esData.length > 1) { ret += '\n'; } // end with a new line From f44d951300169f7fefeb621e5642f42131dae9fc Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Tue, 14 Apr 2020 09:11:03 +0200 Subject: [PATCH 34/35] document code splitting for client code (#62593) * add lazy loading section for client bundles * add Pierres suggestion --- src/core/MIGRATION.md | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/core/MIGRATION.md b/src/core/MIGRATION.md index 5d7b467052029e..368d1f47e9c3fa 100644 --- a/src/core/MIGRATION.md +++ b/src/core/MIGRATION.md @@ -24,6 +24,7 @@ - [7. Switch to new platform services](#7-switch-to-new-platform-services) - [8. Migrate to the new plugin system](#8-migrate-to-the-new-plugin-system) - [Bonus: Tips for complex migration scenarios](#bonus-tips-for-complex-migration-scenarios) + - [Keep Kibana fast](#keep-kibana-fast) - [Frequently asked questions](#frequently-asked-questions) - [Is migrating a plugin an all-or-nothing thing?](#is-migrating-a-plugin-an-all-or-nothing-thing) - [Do plugins need to be converted to TypeScript?](#do-plugins-need-to-be-converted-to-typescript) @@ -933,6 +934,66 @@ For a few plugins, some of these steps (such as angular removal) could be a mont One convention that is useful for this is creating a dedicated `public/np_ready` directory to house the code that is ready to migrate, and gradually move more and more code into it until the rest of your plugin is essentially empty. At that point, you'll be able to copy your `index.ts`, `plugin.ts`, and the contents of `./np_ready` over into your plugin in the new platform, leaving your legacy shim behind. This carries the added benefit of providing a way for us to introduce helpful tooling in the future, such as [custom eslint rules](https://github.com/elastic/kibana/pull/40537), which could be run against that specific directory to ensure your code is ready to migrate. +## Keep Kibana fast +**tl;dr**: Load as much code lazily as possible. +Everyone loves snappy applications with responsive UI and hates spinners. Users deserve the best user experiences regardless of whether they run Kibana locally or in the cloud, regardless of their hardware & environment. +There are 2 main aspects of the perceived speed of an application: loading time and responsiveness to user actions. +New platform loads and bootstraps **all** the plugins whenever a user lands on any page. It means that adding every new application affects overall **loading performance** in the new platform, as plugin code is loaded **eagerly** to initialize the plugin and provide plugin API to dependent plugins. +However, it's usually not necessary that the whole plugin code should be loaded and initialized at once. The plugin could keep on loading code covering API functionality on Kibana bootstrap but load UI related code lazily on-demand, when an application page or management section is mounted. +Always prefer to require UI root components lazily when possible (such as in mount handlers). Even if their size may seem negligible, they are likely using some heavy-weight libraries that will also be removed from the initial plugin bundle, therefore, reducing its size by a significant amount. + +```typescript +import { Plugin, CoreSetup, AppMountParameters } from 'src/core/public'; +export class MyPlugin implements Plugin { + setup(core: CoreSetup, plugins: SetupDeps){ + core.application.register({ + id: 'app', + title: 'My app', + async mount(params: AppMountParameters) { + const { mountApp } = await import('./app/mount_app'); + return mountApp(await core.getStartServices(), params); + }, + }); + plugins.management.sections.getSection('another').registerApp({ + id: 'app', + title: 'My app', + order: 1, + async mount(params) { + const { mountManagementSection } = await import('./app/mount_management_section'); + return mountManagementSection(coreSetup, params); + }, + }) + return { + doSomething(){} + } + } +} +``` + +#### How to understand how big the bundle size of my plugin is? +New platform plugins are distributed as a pre-built with `@kbn/optimizer` package artifacts. It allows us to get rid of the shipping of `optimizer` in the distributable version of Kibana. +Every NP plugin artifact contains all plugin dependencies required to run the plugin, except some stateful dependencies shared across plugin bundles via `@kbn/ui-shared-deps`. +It means that NP plugin artifacts tend to have a bigger size than the legacy platform version. +To understand the current size of your plugin artifact, run `@kbn/optimizer` as +```bash +node scripts/build_kibana_platform_plugins.js --dist --no-examples +``` +and check the output in the `target` sub-folder of your plugin folder +```bash +ls -lh plugins/my_plugin/target/public/ +# output +# an async chunk loaded on demand +... 262K 0.plugin.js +# eagerly loaded chunk +... 50K my_plugin.plugin.js +``` +you might see at least one js bundle - `my_plugin.plugin.js`. This is the only artifact loaded by the platform during bootstrap in the browser. The rule of thumb is to keep its size as small as possible. +Other lazily loaded parts of your plugin present in the same folder as separate chunks under `{number}.plugin.js` names. +If you want to investigate what your plugin bundle consists of you need to run `@kbn/optimizer` with `--profile` flag to get generated [webpack stats file](https://webpack.js.org/api/stats/). +Many OSS tools are allowing you to analyze generated stats file +- [an official tool](http://webpack.github.io/analyse/#modules) from webpack authors +- [webpack-visualizer](https://chrisbateman.github.io/webpack-visualizer/) + ## Frequently asked questions ### Is migrating a plugin an all-or-nothing thing? From 1f732ad29ac7f386d9255d016f80c51367abd685 Mon Sep 17 00:00:00 2001 From: Gidi Meir Morris Date: Tue, 14 Apr 2020 10:57:46 +0100 Subject: [PATCH 35/35] [Event Log] Adds namespace into save objects (#62974) Adds a namespace attribute to the saved object object within the Event Log so that each Saved Object can have its own. This change also removes the existing kibana.namespace field. As Event Log is not yet in use, this does not include a migration. --- .../plugins/actions/server/lib/action_executor.ts | 9 ++++----- .../task_runner/create_execution_handler.test.ts | 1 - .../task_runner/create_execution_handler.ts | 7 ++++--- .../server/task_runner/task_runner.test.ts | 15 ++++++++------- .../alerting/server/task_runner/task_runner.ts | 5 ++--- x-pack/plugins/event_log/README.md | 1 - x-pack/plugins/event_log/generated/mappings.json | 6 +----- x-pack/plugins/event_log/generated/schemas.ts | 3 +-- x-pack/plugins/event_log/scripts/mappings.js | 12 +++--------- .../server/routes/_mock_handler_arguments.ts | 2 +- .../event_log/public_api_integration.ts | 2 +- 11 files changed, 25 insertions(+), 38 deletions(-) diff --git a/x-pack/plugins/actions/server/lib/action_executor.ts b/x-pack/plugins/actions/server/lib/action_executor.ts index af0353247d99f1..ba8bb79170c63b 100644 --- a/x-pack/plugins/actions/server/lib/action_executor.ts +++ b/x-pack/plugins/actions/server/lib/action_executor.ts @@ -75,7 +75,8 @@ export class ActionExecutor { } = this.actionExecutorContext!; const services = getServices(request); - const namespace = spaces && spaces.getSpaceId(request); + const spaceId = spaces && spaces.getSpaceId(request); + const namespace = spaceId && spaceId !== 'default' ? { namespace: spaceId } : {}; // Ensure user can read the action before processing const { @@ -91,9 +92,7 @@ export class ActionExecutor { } = await encryptedSavedObjectsPlugin.getDecryptedAsInternalUser( 'action', actionId, - { - namespace: namespace === 'default' ? undefined : namespace, - } + namespace ); const actionType = actionTypeRegistry.get(actionTypeId); @@ -112,7 +111,7 @@ export class ActionExecutor { const actionLabel = `${actionTypeId}:${actionId}: ${name}`; const event: IEvent = { event: { action: EVENT_LOG_ACTIONS.execute }, - kibana: { namespace, saved_objects: [{ type: 'action', id: actionId }] }, + kibana: { saved_objects: [{ type: 'action', id: actionId, ...namespace }] }, }; eventLogger.startTiming(event); diff --git a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.test.ts b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.test.ts index 8d037a1ecee913..756080baba6266 100644 --- a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.test.ts @@ -91,7 +91,6 @@ test('calls actionsPlugin.execute per selected action', async () => { "alerting": Object { "instance_id": "2", }, - "namespace": "default", "saved_objects": Array [ Object { "id": "1", diff --git a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts index de06c8bbb374a8..72f9e70905dc28 100644 --- a/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts +++ b/x-pack/plugins/alerting/server/task_runner/create_execution_handler.ts @@ -87,16 +87,17 @@ export function createExecutionHandler({ apiKey, }); + const namespace = spaceId === 'default' ? {} : { namespace: spaceId }; + const event: IEvent = { event: { action: EVENT_LOG_ACTIONS.executeAction }, kibana: { alerting: { instance_id: alertInstanceId, }, - namespace: spaceId, saved_objects: [ - { type: 'alert', id: alertId }, - { type: 'action', id: action.id }, + { type: 'alert', id: alertId, ...namespace }, + { type: 'action', id: action.id, ...namespace }, ], }, }; diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index 520f8d5c99b16d..4e6d959f0ce602 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -169,10 +169,10 @@ describe('Task Runner', () => { "action": "execute", }, "kibana": Object { - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], @@ -229,10 +229,10 @@ describe('Task Runner', () => { "action": "execute", }, "kibana": Object { - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], @@ -249,10 +249,10 @@ describe('Task Runner', () => { "alerting": Object { "instance_id": "1", }, - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], @@ -269,14 +269,15 @@ describe('Task Runner', () => { "alerting": Object { "instance_id": "1", }, - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, Object { "id": "1", + "namespace": undefined, "type": "action", }, ], @@ -344,10 +345,10 @@ describe('Task Runner', () => { "action": "execute", }, "kibana": Object { - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], @@ -364,10 +365,10 @@ describe('Task Runner', () => { "alerting": Object { "instance_id": "2", }, - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], @@ -560,10 +561,10 @@ describe('Task Runner', () => { "action": "execute", }, "kibana": Object { - "namespace": undefined, "saved_objects": Array [ Object { "id": "1", + "namespace": undefined, "type": "alert", }, ], diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.ts index 2ba56396279ea2..190cdc184930ce 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.ts @@ -173,7 +173,7 @@ export class TaskRunner { const alertLabel = `${this.alertType.id}:${alertId}: '${name}'`; const event: IEvent = { event: { action: EVENT_LOG_ACTIONS.execute }, - kibana: { namespace, saved_objects: [{ type: 'alert', id: alertId }] }, + kibana: { saved_objects: [{ type: 'alert', id: alertId, namespace }] }, }; eventLogger.startTiming(event); @@ -378,11 +378,10 @@ function generateNewAndResolvedInstanceEvents(params: GenerateNewAndResolvedInst action, }, kibana: { - namespace: params.namespace, alerting: { instance_id: id, }, - saved_objects: [{ type: 'alert', id: params.alertId }], + saved_objects: [{ type: 'alert', id: params.alertId, namespace: params.namespace }], }, message, }; diff --git a/x-pack/plugins/event_log/README.md b/x-pack/plugins/event_log/README.md index 027bbc694801f6..38364033cb70be 100644 --- a/x-pack/plugins/event_log/README.md +++ b/x-pack/plugins/event_log/README.md @@ -125,7 +125,6 @@ Here's the event written to the event log index: "duration": 1000000 }, "kibana": { - "namespace": "default", "saved_objects": [ { "type": "action", diff --git a/x-pack/plugins/event_log/generated/mappings.json b/x-pack/plugins/event_log/generated/mappings.json index ab1b4096d17f2c..9c1dff60f9727a 100644 --- a/x-pack/plugins/event_log/generated/mappings.json +++ b/x-pack/plugins/event_log/generated/mappings.json @@ -72,10 +72,6 @@ "type": "keyword", "ignore_above": 1024 }, - "namespace": { - "type": "keyword", - "ignore_above": 1024 - }, "alerting": { "properties": { "instance_id": { @@ -86,7 +82,7 @@ }, "saved_objects": { "properties": { - "store": { + "namespace": { "type": "keyword", "ignore_above": 1024 }, diff --git a/x-pack/plugins/event_log/generated/schemas.ts b/x-pack/plugins/event_log/generated/schemas.ts index b731093b33b06e..5e93f320c009f2 100644 --- a/x-pack/plugins/event_log/generated/schemas.ts +++ b/x-pack/plugins/event_log/generated/schemas.ts @@ -56,7 +56,6 @@ export const EventSchema = schema.maybe( kibana: schema.maybe( schema.object({ server_uuid: ecsString(), - namespace: ecsString(), alerting: schema.maybe( schema.object({ instance_id: ecsString(), @@ -65,7 +64,7 @@ export const EventSchema = schema.maybe( saved_objects: schema.maybe( schema.arrayOf( schema.object({ - store: ecsString(), + namespace: ecsString(), id: ecsString(), type: ecsString(), }) diff --git a/x-pack/plugins/event_log/scripts/mappings.js b/x-pack/plugins/event_log/scripts/mappings.js index 9e721b06ec3351..de3c9d631fbca6 100644 --- a/x-pack/plugins/event_log/scripts/mappings.js +++ b/x-pack/plugins/event_log/scripts/mappings.js @@ -20,17 +20,12 @@ exports.EcsKibanaExtensionsMappings = { }, }, }, - // relevant kibana space - namespace: { - type: 'keyword', - ignore_above: 1024, - }, // array of saved object references, for "linking" via search saved_objects: { type: 'nested', properties: { - // 'kibana' for typical saved object, 'task_manager' for TM, etc - store: { + // relevant kibana space + namespace: { type: 'keyword', ignore_above: 1024, }, @@ -61,9 +56,8 @@ exports.EcsEventLogProperties = [ 'error.message', 'user.name', 'kibana.server_uuid', - 'kibana.namespace', 'kibana.alerting.instance_id', - 'kibana.saved_objects.store', + 'kibana.saved_objects.namespace', 'kibana.saved_objects.id', 'kibana.saved_objects.name', 'kibana.saved_objects.type', diff --git a/x-pack/plugins/event_log/server/routes/_mock_handler_arguments.ts b/x-pack/plugins/event_log/server/routes/_mock_handler_arguments.ts index 6640683bf6005e..19933649277aa3 100644 --- a/x-pack/plugins/event_log/server/routes/_mock_handler_arguments.ts +++ b/x-pack/plugins/event_log/server/routes/_mock_handler_arguments.ts @@ -50,9 +50,9 @@ export function fakeEvent(overrides = {}) { duration: 1000000, }, kibana: { - namespace: 'default', saved_objects: [ { + namespace: 'default', type: 'action', id: '968f1b82-0414-4a10-becc-56b6473e4a29', }, diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts index c440971225d78f..d664357c3ba126 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts @@ -220,9 +220,9 @@ export default function({ getService }: FtrProviderContext) { duration: 1000000, }, kibana: { - namespace: 'default', saved_objects: [ { + namespace: 'default', type: 'event_log_test', id, },

Agx76FP9;`RP8p>K-?oo3n9pJ#u0OjUSlXV|w=RBOyYslxmK1NZ6afR{ z3WG)lXe@N$?ULXqOQo>@Jiym)u~jrj#!sN}s?h)8_Glo+ucpS&MAi2hjWJz&!;Ria zB|*AbO2m3(*Q0z^Nk;(zisoKH1o_tu!*?bDyfzx_-)+H)5kdc;I`n82ZNNe(l|$&C zfidHl`rIA^l!ZiG;{%8%d8>MobEz7gKUToO_F62{Vrz{}qLFY}Ef1?Gt;0~o@PfvL z_uLRvzP)60-k*`F)6e{3y~fvcPrfI7kc$@QDN`*5OMn=({S^}iK)g+RTmkw zvexuT1_Z(@P?7_^vS%)ta4ju2u6%Mqyt6gy(Ydghjc}_yghSZKGm`(wgDm{(25z}~ zdQG)y-_sgoJq)9khU|`|Z;b8vSYD)+%LkbAl(J!hD_9buOKXb``?eV|)EVHdm@eV_ zbF+1mGvKO?rcMBK%($|Dcza)Cc(!c^B@9?Lj)YGdUtQSm?}v?RHp1^N^vmE^4~^}@ zYWsyU8(|mAwB-4kMnYqh|HT9a==Sd&(Qy#YyDkJh&)RNib8y;jSlERC)~GZd9=_RT zs(Y;}C*p3deJP&*%*g=R=$L*@>*h4NvFB^15=-}9zn@KPj##!E`=N_>ev7}rP9kf5 zWrRnNn7*?bQ>GL9;JO-RsPx?XCDzUd0@>dqrX?3@G~yvO&+o%!Yrp+he$~AeU{-fq zA-KD|Dx9DWDgeZ*pyZkE(O~P9vzRyt_4}g%3DgcN?YfTw zcKNReS>u0VZu5r#T%*T#EX}*3*|~zepR%qEc-L t@YYzZ@LJHYo(PFyG&&7$X@ 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/ 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%0Ajk^cTBDf5MIV^*xGnX-IyK;!to& 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%0A-u)(+JN=&jSQVuGgHz2})5-77DS$to$x%-)x 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�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%0DH-hF}t}(70MP^-9;d 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%0D%&VtwN{!(}%v>Y78`( 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

kBOwEJO4SY`G-@*33&gHmg)HqT z^$fxs9+ra*Qe{$+3bJPMJW}>9Vb#&X2#r zzF_QIuw<3l<2X!7`?MGbNlSqmR7dJrC`jrs;q3?`3R!{ioOaI>s-`;FQf+nU=sxC{ zX`{AKmc*Q8?C7EDALWb|83mQc6H+kRedu&}<%Jot#U6({V+>&|px;}gK7!-+ABNbT z=$B~M4YZKdP5lI_qJ4C)^o7ZZI!gb5{k%xd^iAp?w(U^3FSTQy55LovSVS4Aoy1c` za>3rFPM0?EOd*UA5(Vev)QO`_Y4VdV7KM3>SDQRIWu)xj+f{R_(IW<{Ui7sE%jE0f z)IBPKFv>}(c4<-X=zo|)5K4l%8#Vz&Zzu;0p#-{j>0ooV)oa$9lQ?mWbhR(J1cg7d zV;Fp>E2w$yke#qap)0_V@4$?Di46F-(ZkK5UN{FSBWdh_Ow4#U%xtN$l_fb}+6x;5 zUc52ch-J)27*kFuoB@hJw{DM8Kl^xr1ofUfckh_f4pP`j)vxuk)1o@TytieGtT1cF zcvJp?u$i1_k~Z#Y9z`h}g&Sdc3PhiQ|vt5EjWuM~!lI$u-xf?qtbK+(TvC+qVlKMSy_#<}=8{@xLA z1j>j2&9871EMrC`pT@!~#84JlP{4s4$Y#IzA}FN!M9KKU{glLj$+daDtysq5&GvthmV*#FPn7OjP_@L@`ED8#D)zT*kbur?I>p< z1Apdo+Tez*LSn4N&L%89B%0IO@ytey=QRgIwed-%1XfsVMH35*J+*n|qt6zKz#!$} z)f>zo$7V(n#GUn8_(MgO(8sA#t`;i$i!{Gu_W^s3%nPuqqPY*`X+o%e`PEYSbIu6+ zAsQQ=FUSf43csV+GF?6o{H)kn5LDk5aem9TJyN^g5=JY$4>oB@2|JiExl3o%WUq_l zv)ndM5^^-M15poHCA){s3)xu>!|#6YrINBO^gDBJ?6^+ta?D3Hcm5I!Maz9hiA6LP zMnC>+zWJ;NiCl$!TumEU7)Kk*cLk9cat?KlF_6T(3nCSY^4PfP=Ii(!AlX48W`Q2X zOvc#AmM5eMzW2L#^F;{RV)Y(hYqW_0{{pIrJQw`M!(+UHB16mr-~ z)eAzm1$+3L$+9=Fw&!?2oF(;!~!Mi33KEhrw++tQhUoa zl9(Ov=pS$+bQ;h6y6j@+D%g_kw7AIvZ`{WiKQGhwsoD+aGB;p>yF=SnTBA4|7ARaB z^%J{_1z-HNXU?A09A%^Iu$>~MWt;yc)9a=>uAagePaZeKHfA&TVZ%??E>gnQb0)E| zfW_oFUoNrxMsb^vPRTw2>Mv_8kiH;jFI>7t_2jNX$%=%j8|vO|vk`cr&CksHOc_OMKZKV{R^XxB zM(7bC0JRPJD9S}2K;J>aZ*)i`*H0A+n+sYqQQsTP+I#h&cfL5x%`E>MwWi$=AGffb}QzH;ke9v>@B!|34+N$@~RNZJi(y z+AguN`iRC~`tyVGuQ2~0EL3UwB#189AcTd2c*(fOcPfHX(YC<1C8gw=+D+|r_wIe+ zORa67(%e+{1(A-vf&>wS2npc4W&6G`bIRy2ed_oMApj-Hl3b$4caZKERI~U(TlgkU*Z_5qlUA2Za#7tURO2a8t#`azO?iJ2V<)OcUm`dM-m<4uYgdgKO5g(Sw z|3rPgum9rd+yzC6_;Rt0@4e)gpe%G5nn)P+9~MqjPD`dP2uD`2Wp+{E-cs3?Qk7CI)vxfncDu z*P;q)JuvwhV3_1G(4o-6E?^9}!To!h6FFI7hJ~>K+RahFUVRy^9gQJup&Vq4)0wf; zg8VQt`}OUWvMj*DvFsMdDZt>0!O5-|x1=4~EGZaeWq_nRu}1 zNN3K#g@FoAES6v>4d~w|?9@U44E`zO<$#Y3z~qT>iW3A!ZMQD%ZBoY$l|-H4IVm40 zDh$x1kb#CUSu8xIV)K$86N`}|reHu2PVBbsiwP%^smY0Y0fC3|_V2^)+UsV3aXiEf z?7dZ3T-&xT8VK(0u7wlarEr229y~yBch^w3OMqa(Ex5aTa0m{;-Q7>Eeb!!U&VAQ+ z?tQy2=c&FSHAe4!H0w?NhSx#B7ne2|5JPvNBBJ2+kO^ytvIZqnzd&h{NlJakb>2f^ z-etP+EnM6ufo!LnDF?IITH#mXk;ZeA!n%ajJM+`8lHNUkBH`XPFS`MSA{zh#3Ui!s z7(DxK5_r*0lTWVmwXuS830K=92=hJp9Vu>En1!*3iG*uCdEWEm1Mkcx-#XuJ+)RHdH@qM>`NyIkojiJilagJ@jT%6G09Yscl^d#uzkQR38x-_5hbDz=s939$`}I; z^YEQ7>bZ<(y1{vUB~Yx-ZQ<9V?Gu#OojT4ijlLLCjAa zA1JnV3VmPtJKu8V%B4|N4u(*8o%u?A6sp*B5AqHKo6tufKJpfKZV7&k2TBA*B0(XP z<7Itpx0CDXJ-`JCdrYXTZ^SE&ldN=S%5Hrm2}<8K?JKu0@=jY(rW66VPAe&UKhGlN z!W^{1eaSWayzc+T&9X4vf$Ik{O5^B`&V;#6A(##J%(0V#VWZ2Aa*qnHLtKJO9Ngxz zowi`HLa(Y0Ght%HJn|_`dY3ATK?f7c)(5q4KWmNkqFHfxc;^2mRc3Fyyp0=g=BJkx zoClq7WD$S8G*T@qnwF93f=V{Kz8&HyJ88~&I<+VH0yE%S6hr!xIqgq|52}drT+mur z&WqyjtUV0cCD2)x{_HqtyX9)gGpPfWB0Uy}iB0}RMvc}6`^(BARPQO)fLhhI0UDFe!rgoW1ku7U!xf1Y#AkQiaiqcPo^H9q zY;+y^+)#?iEiQ)y9d}Dt-{bVF_A;$hMCLq8I`S&bc((&Y!rkJFGN-QRhYwj&5buvA#S{erf;o_RZ1f33KYDWBadv{H^boArMD<4hz$ zvB0h*{^y-8Fp9rP%{`D#iL;ne#YnQaHzan4oq z+Q!*i%8*ZsTs(A!kvzY3V_=ZiC)?F}ZfE%g~B^zutnDR~Q%D*KuWDc|_y9VK5!phoFX&W92xKjpKwQz&@Q ztr&83I4G~YZHFTQ$F=!+t39i+9f&ya0)4zNsPECw^D8eJFE1Iu2Tmf z`2$^|mcU9iB^>H;k*7h$94-*j1%V&lhvFEBW+p^`K>xavtxCU3xqwthj7Q6A*lcV& zh?hS*QIn3dha1!4az(g{l1Lvl*`tO&*Jv~LHG&@2Tu1g0nHWJjmc*>`SG~nozIO*R zCAnZV^>fKYzesqCsV1e#Vo3=zbymPiySW!4Cw z%7vW!*Je3L)Rs;EfjU)GWr5F-=E(ARtBxqR8)`39)N(I2 zh`)wQK&mV%E30!{v_-EJZ2i5mI_{kvpdvwL;#A+3IoFQ3sriU?G4Fy48PB-19IAs zr?$@Hx1`Ts|7@{+iPYoKEhI8$4OY45D^(?)O2B3-xz#@#t_CiH2XuKU3STw5`t4icA&u>TUd%v1&Q6 zS@LKm&^5pa+;2zU3(NNc_;7h=;arBKuZF#}*zS?py6G`-yJMd3lo8E#Dwp_*de*RI zXMYgiE`ilyR|pOyVwo0pmURGXV{eW*+D2KhaDVjCiPsNc<7A^3{W(Q9uc+&m$_54t zAL|{i(`U1>(|(*4Jsr}@V*EgF%_>MRw;pXJv!HX2tfE~cQZp%=ig6sEan!iTLJn* zQp(N~5-M4U@~#hU{ck3-^eyiY3K{)&I$YGHKVq29RM~otrcg7eNTyE|Z*jsh=lzBs zjZu+ZKR?P0Nygddw){Gaq7Kd?E=46lC$mAia%Fy%Ptra}?@H&utZ6jm$w`xfu0|nS zCpRS#H4A=bTyk+fbGWxT#Y$&Voj5Q#9|WTDxjwdysj1Z?&(>sR^AF30c}wkjpMMTK zzOm-{{eex4+anV}x;Sr5Q}jI|`(B{lqQ%H&d;RIar|2^%s?inL zGWEAh8{sH#HbrQ`=fs~M#e;PqIFJu=7i@VMF=sF~=as^2^>dZM)V^qVV(6G!{3$%> zQ%*Ze<#+~(lWW(MQv``}p6B>^9Cg~ZuANk$#iVJLV6H&FvE>uBT-pbfIWAD;>3etl zjTKEEh`^Tf9{i>~fU?%>)dgxp2Axq>hK4Ep+KQnU^Q6sWwtmF$8k!V9f1sS9_n8Zd1M(qkW(7V#M$^06?62FMx_afK~m<5v07=Q+q&hx8d6&#pD z3KjJhrZ2vdW;ASJ<#CQ~WvFOmlWN2U*hj%pi8gql0RtrX8a6)JY4;ZU64lEhDFPf# zm3r+;eT8~gykeIozh13|b!@Xrv*XJ#SDi~`x`a0;fT)*79zS^6KG|xgfB7={dGJRV zOf!+HY2>byZ{vNh6ITZ?0BB^lk&t|upchunV#M@atYv6ZmL4HgbBd%^b(#!q**BgdIt#F$_-*%fDxFfZ5 zt#iG7>UpHthwq#&r>W*hF>yEW@)2>l;B7p7MG2}F zGan5YHcX;WOiF4gR@;r0Lrp}ayX1raSQZx~5zyBol1K#C=rZm}Qu{nLHKX#uf*qlD zUymdZId}W-wrB>*^rSf*fR6Hr*6$F-DEv=$L*Yj(CI3CM!=ML`RqtP1LGFAbDzgX zv4U!g5UQS(`-tt!dc-sl1k3Q+gjbXM8Ht}-tq33P?w5?wrc$;FKuA~u&z>?zD%|9g zgS^tLR2c4aa#HH2KW&?pKg0V^QVcu_6^cxLUYNg>(k1oX?56z?(U^uwmfLQsrbgCJ zIh8!u73EjL9`ul(m);u8_l`|K^N%B<*t-zYmd)3nw)>a}fS2sqfB3em7h}31aLA?- z*iz9Fb^0E8iun>Zr8pg%>}GY!ai^PhgxaehHjU3N$@hy*7X#=_jl4KgtHmBqPUau}8&nV|*gR-K3=!H*;9>!^*6;UCxpM0%omf^B>d!mEWJh3A;| zP<{uw2uVHkb#4itq>EF=H}%sIA5zl3Zq(KKy%Y_KH;lR`JwF^4||A9KhHDtwgZn?@)f zAa}#~0(DxztVB^Uibg-sVWFqs>YIhi!+O(Jcu0F+^ild4qXgfW?U494d}-!qWs|EZ z_b&+!D2ed?3nEbxB?A_Z5AlUxuxx^q-hjqAAb(hiCVBb{J)uJmmZ|iIrb{ zhp(d8rTZ~-k#(s}1{d=b99=F$+arBps@gbq4E%w-48A99jwy_=UwGi0ku7;fD+6UE*#~a5C1bU7f4>z<*mh zfU*QIVSq_h-=o>X^fmhhTn&+YLr}rfMIshj-BfU~votI*S6K&htmE3MSBvaS2{Eqv zq#vE5P@wMCeb?JGO-sqyA0WSzeCu{LtH7-cohhQ5e;Cwueq#FTKFXD zycB%i-zG)XnStPcm)Ph+jtEwHtdvGw6iUnUw69>$EV|?eS{&0Rbo-S2U{|&*^tPm! zmJ*Wcz(-)e@4C!aS2Z;8(Z;&63;Xt&tf1$9J+_1OdSriqP{=(?ZBuO%<5;0b^_Tko z&Yj3}4<5b$!*6<`D;z4|d|BRuZ}usvLU<6YTTio*ZXdP@ppW&qlC3krxL$n#lA84M zLrrOPHMcdOPctz@mBhxJu`C`{X;Fn_WIhPn>TrfW_5*h!z<$>>u^`D~<7Kfhp-p~- zRa;eSq)+;fXHLghVKA!dk4>U7si5XEb3H{jGv9a*6`qrytNX>tgL@3#Y8Mm1#6BFYdJy0_7`)x8Ffyp zJVwbN8jTBJEbG#7@mMP}9<~{?>O)jYpaX?X#TUOCAkt6rac!(eH+%BeSpOGlwSymI zdDr2}1g_RSP0uf)?d4t$S`mqJ<>(g0RV)D0+F=AkmMb}|Jr49tE~BWqv>U4ApO}8g z-zwBdai$DRe~nwwY^tNPWXLayAz{vzd#pyKaL;+iNG-zuq*OAs<{b9HjP|=3Cu#Mw zjn4*I;LguKen?_^ngZn zM!^>2JEwcjkYQ1eAo*DGdT3m?4O+7AQdJh7$5oUKG!(Nw&*I_-et;8*)eE|!V zL<=fxTyIE8Ocj5SEELmk8>H+BL%SLhjRMTY8P$1uBkD zT7`pU2Rz%O%kS9SmH|EV_4(ir60_szp+51jnq|ToD(eFmHWfK<2l+hk{AGE&^l86# zERlV8yv_CD5=gBat|J$kXTy0^T@FhdqGKP!hA`uH^U`2WLOu5-ABfYC%jbblOQ_3` zDk3@Er>Ph2iD@`gOiZg0|CGvGXWbJn5mu8j358TZ558sP=}9eHN{G8i78}ZfkhUVs zz&E_PKLI#=l*@DjR)Q<9IUOioU-Bw-YCn+h`7l4vi9Rn4FzuRrmh}x>S=8LR!5Nde zNR$lcf34-DDP6&|zfTX8yvG zc$4KZl}dd#{WwI%P)8!-Ct&mR;GK%J!7Zii;Wi+-$VlZ-yu@L@^*|dNc+u8%{r#AZ zSk(A4h#v0x$i#%|h0JZx@Oe&I5i$EU$!n=er9FKb%%UPc=az z0^zJ+k*GaYpEOhD1HL7T>vzqD11dbI97^Kj#?R{woQ5jOvvA4gYRULeh&(JgkC9^- z%G-fdL=j{6r4+4xv`&Lh*{mRcD95-lUT&MQ@)VwxXz`m*cZ!>h6LW(*Ojw9Ka9f`9 zGoNmVsn#~~0Cw3bd`IXfe)}m4Nh_?% zn^>!#&N{41KV92i^f`u$JUNml-Rn10K}zKH)4@#_GT|*la7(UK*jXaZBF|&7Z;J!; zSu)%=w8aQ9#Qf|wOAW0<1S122J>%I};osRe$$bPSE@OxM7A9G?y+bC0H#tv)6S;s} z(6>YlOZ3io;6~AB)jQT!oxALU3#*|nG9sBu0`WKzS~o$>Ji=N}?9K_`{G9!^ROT0( z$U~gLD$DD|v_zJ(JS*!fQ%+xY??9uTGh658J@H-Qz+>~9+YcEeo5PsJTreEg;>m6g z*Myt_Nwh|?KfZ(3B=-^)Ufw=I{b2Uwa8z1DO=Tq)c!ZhSuU1JoU7&yQZ5fu;9))T^ z^cnpwVI0r@y)RifC0IwQ(3LLHE6pyRTZ2%0a<@_l(cGWoLs`>vn0Un3ua0mg?5k*t zo0qb$(WE?)wB;kvcwY$ykRmTl<$^IbD%-+4C=y`{FAYMkn(=aWMiM#7zfN&;ltfNd zuP138X-P3N+cVmE6eH+;`oqL>!1<8Hm`kFP#jIJRQx)Skv0YC!irr~&xd2+J4bRqE zyX&*wt*lYgcKGP3RC=~)YMz^TkeZ4(pwKk3Oy55`_@q#g?xSStr^K)*&#$IeNAs+f zp?a*vY+>F~{6gc%bmY5vJbLZ7*~M-|mx1fnf6RuraB70rr^@eAg&MbMeuoMttA-i3 z6+v_1lenG->NWJlwxWU9JPs8}+n*U2Vio*~?7mnPo!f9~q60QIF+{)rX3ic{?V*i$ zRv?w&uNGo3=yc4;6mgd37_t84IS5p#J5TaKRnK3@F_bW6ht_5Y+Zp!k7gd{}E;+ov zJ6IbW%|1*qLsw@v~j z^WzfZM<&*0o>IswFP^_N+Oe77EaFWXqj=0%yqB^om|LEkHyGtHBje@XA8mBNs5<}_ z_SkE{!)+nYsSB=G0s93fJy4)-bk5kuRaa8Zl@-a!R;O`xK_=DECVdc(eTx!V*QZ_@ zInTz;WaSGKo)dka36FJ^L-II$cUvau9&>|4jZM)OKU-EQ(+UhD4T-Y^ag&$JSz-V1 zU^>C(Al_ZprJE{QTnR`#_R%V7Rp*O&S~(;&OFbOyfS2d(engR8+QH%{DovF$xz?(M zt~;q)ogk$bPj(%Jpd$CZa5Ag79rN(L6HiK!AjL=E7B4#QJJPCt zKb|zuEh98CkQup|d3*ys5)1je2@Vo&5D%rxxnNCG)Fa)X_)jobyE0|)Wj!E^k%WFD zX>lLy?>Mpcf<#-Yh-QV4@!3hYo-s8g_cdnSF&v`?5WPs=h&mZx{ zs`gL&nUpnT6SVr93wrTKsmRsr(ejwc(X;I}G)sEo2B9x`ipQKK++kzxyA{9Mjr@0F!F%(W(O%Y20~Yl%hJzuIM-FD zH9KXnf6rj^{c{cliF~LetV*^LPBu1P78_k%r8nkJmcBwWmlQoKEt3l5ciOtu`>{Vj z%Vn21|5~jMr6Atiio(L=qS)r1yiXgqm+%KBy#uPu_~i+ZXqY~F&bm=_91pLX+r~c1 zt{OpL-OBQgB$D#p6yqwfPAEpca@XU}${53AZH9XnvP_9IlkvdbzTa5l54Fw|^fwrp z<&_E>so5tl-j#BtY!T&I$r5%SPdWnCNStJL6g5e9PAR(Xv{trbh`e&;2$%=smCbhJ zxGl+%KGY;(%tzKGhUp|Ukzc|d8PuRxArrRdN-h`pMUl|JUg%VxxkfD_2%zhRL~Fa9 zwW!Q`dEXsdrGIBLoTH;&b(eTppioZiN>xl?t-DMGE#G1{#FDH(C8{m1tXH4+G#C!wvyxQZ z3HOyJjik@IBkp-a#%vo;J0ZPcKrbh~J6KiApB3C_dRF@kS`wl4WAQ&jNP-JwJY3m# z7v_h?jp>TeutyAUE)HGy@y|3GEbt%G5XXTOK zh?o8`{16CWktZESlZa;31~}1#m1ZNhW)s$D{*NOu>)Lw84XMAA-Yhq-aQ{s|H15k&ArH(k<;Pg`-qr zHE8*Qe5)79lX_4Oa+5-Y{!MbPp}D+6WRnrlCB>JjP}!S%`8F$rbW>7-Efc~(Rk0K9 zaz%s9NQBR7Fe`NW4X@Rjup`aRjn$gJQa1B4A?bICOdThVv35ZDG0a+>GjK}mHD}_> zmag1Qd(9{;KZ4Na6wW5{f@!;md`U1c$OZ_go-WN6wG$PWj2Ma6Q}=`n}JjjKM%9g+%eHS=LoTn|3U zpg3P`^vkO5XnSEn8Z@7)T%B70=js;{pD`k!)nZ%1Uo$M=n&Qe87higaywzX=GIw6s zh?zRQW&Y>}c4=2f$1j(&nP9oOYY&OOtM(WksnY#IMJE#)OEMEcC*816nMZ5;Nw?MF zAHkad>OTm4&@o+&_)u<6l-yAg*S9CS4Ig*SJH3vFHvdIX~b{}r3_T4q{U>xA8Iin|Sn2#~YPEYR4LQR=|!?{IN&zxnsrIRIQ z2ns5*SxsTnuSjI3l=WkgsAm0>W=R4gBm+nX!yPISkxD}{>=lfmN-G#3C=iz4+*Njn zolOdu5h6bykNYju9rFc{GM1?T2u1u?Jv4DC;b9RG*pfBK@FMc8-+33#2mXZ8EHq~L z`3Zr^7N`>B&BPkda`-Wx!>e#7@-jF~P1iqvI)#0tU|S1;d5Y?bW{2rOWg$5RT+*jRwobgfOhOIit^=>)W@rP z;-n9tXtNKCBkJPyxb==e(s)n=gDs=|(}ux<*vfwVG)DGl0tKyfU-YyHXVL-{Y-5dn z`#qK#889e5qE%GZ6#!2OPT;H9l$Y?kxcvey3HEP7dm$+mq!FP%Ex=;c6xRm&Nf1^F zy%3jz#@wn zncwqKfNj?}>z9bwOg`IupL|9CN->s|X&u8DrA@5T`k!jL19^Dj~J4GR1pGGot?6I_ahjI?6(q zkU2YfPr%Kt81m%EmG_*(lYeoXd+O_H9M#bMrn1DkRI4Y(Eo$1_)`OW2C+O;F*73KdScNyn0jzRF00bO zB7L3_g?w7sG3Y5R>5KN|wex@T5tPiI17HBbVtJkJp0eNDSe4OLOqJWqx46!?uvtGP zus4-Iw!L7hCw5|q{XE^E@sGyg(GLetMMp~Qb?Y=R6yK{Mt^)fu9Ix92Jk9b&oZHeh z{Z3Drejf|f`NgsC7W9U->~7a_>^}@E0|Y=)a>f3MRp&Jj!SPS|@n2NojX_~E^oaUh z?L_c1%$+ZMOfYs4TL}5fI8()s#}m(Ae)NC6U0ncLqmNl8{Z}G2XahkEi{E$mC;xK% zt4U);kv%+gUxi4~r|*sS>v-agr7YW&cUlQtXN_B@FRcHbGX)`(&HG60%GJ_4ocAx? zUqf@gBZv)A&L?HKt_rx)Sgr~^a6zhulaK=;m5;$!s*P<0UhanZweYHBQZ1b=Kxwi2 ze>BTlEb`eK{%`&LPc?o|NA0k^e{sJ4dTVa9x+|O`*V~e#JTY#xJ?TePkB%PPf4Th+ z!TFc@e+de}4&V?Uj%DD6J|Bq_y!xLv{QdTS9UWjcgM(Du9^@!H<^#2o)L#_q-Pa)`aI#M4m`vbPm1PN+t zz6W2JNc)s~fU+P8JR~~3A%uwADtOOK35}(uR-)djgT6MG?AKR#^xhiWvfc+|e2J$9 zTj1U}De%S1m5K4m{)@=n=_)cZekB4vn?BlC_*+!lOP$cexiVks(Z_sb*FTf-Rc@;T z4#)Q;>^}Pe>=vIpL1kuR^!iar^McN|dL9tOmY%QhlrG1UzaNX1>a7ce8aO)Ie0HoB zYTXU_e6~F-mg#s=2xmJvShqa?E+%}&5cr_>t^MBldH#DN^&gi2V$1;i#aXT^8qisX9=xtXUL;k_Grs)q#(gE>fDd%lLC#V;^KGYd?a=& zO_ng-X4;ApW8b-v{K|guqW3-W`###-_qSdF8*j_iJA931&$~C|umURdTgluGTOe@} zysR{iB}B30hc03Jzb-_FG(_ZIa|fNJxc#>w^jFIM_eupq>?7_}LHE;xvlvVUM!NZ$ zJ=Ipt^2su9bG4!p-A1<|yDZ#NU*semic&r7X3L9djg79Ht&N+MY{Y0{?xdQjM6Ddk zk(qMc#*;LO?|~K6NcpsMeA2+<=I>hV{6zB4uuj^#63R=(f1dI`RT;zpA`TFnE7gb! zQ!PK7CpRnW7$VM-K|_RK>PfJ~2O=nIY$38eY7I~a{t_dA)TAf{Clfb-wI>uNP013~ z8MnUo@5sq=zm}Hj8Ac+gID(n_?KRZRDa}aK3Cd2q(L+-VQw_HLa-Yg{z}^*RhhkIi z1x>S!x09!<0^sl5rJ?_@Fx+gfqEhiX7pY}p!DGvAp)sV(A+4po%8XNHI`vkV5J!V_ zlh=)v#d=5iV=z7O_b4w_sTb;v&3$@^W8$yc&_@u{0eZ6Ws`*j>?-%~3LS2`KIsLc; zo>aR#TSphiV&}HfM0dqKE#it?%J5c`Cupm|i6MfgAq}IUE%3fOO}|8ffgT5ki8tkJ zA4$kUj2}OOg-&I$<^sOUiSlLDowy*>J2=l0%@Z9ej@h`}=pNu|vu&kM1*Ow_#Da7| zsz?ytW%LkCa9j%uEDh_BFs5;_72+4b<))CVa9e0t55#(5B`QV1jZf#b*CC)i6)ban zpXtquVGy?0RSy!8PX_Hbmp^T1b(OYMbXTVZqrE>8j2%H>3Yk<)s?4=Onc{?fpQWKO z_f?16+6;#(!nvuj=O)K3ylL=5E}4OrMJaJlLr9i$V#p1&E3}?x%x6;Jt$WY5*z+yI zTt9FEsBj|dilI~ZO~y9x=quYivtk5}SyPInH>146ho9>9-2_xf1oTC%?%0e5EBH5Y zmvQu_+iS%$Nzq$&tE!?u1V$aNq2_LU_mob`W29`;1bjd4IZatrXL6k=GX6HMRRweuT zaHUd13~kNI<@`9yyPtmZn1Nx|Ki8WyZmJ9{mh$6Amh|~>=_*vv0rnlI;SJ(L+)G$H z!^4(@5F5hU1GhPl%kUp23j`T_^icFrlGMe%4x(o4!7oqfy31o49gr^6T(Eh)R-+Ik z7#;G-Tu;u`k56&wGgPL!y9p}mZkJzjC!lH%=SoA-POdmk$t}@&)yKC+Oi~=$e%=}s zDcR2LFdu#V&SQyXRVpGSNfBnR+i+SVf-=1VY1AN*H~{V~of;(JcVi~ubC}JNLcf^{ zHZRkjODUXI$9-G+%a$Y1iSm!8X7it`MACmLmw&l;|E+5w8b^-8;q|$n-M+hq-F(d$ zljaZ)1N&R09==YUg&Fc5-Wr`;0hIv{-nHn9PlqgXdR+k9T$aoraJR|zN-34g&m)!3 zPkl(GDQmm#t!v}_VFhgTvP)V>g_Swl^Ca4NC3pWyT-#IC{XR;)s~Lm;mRtyH?cv-R zlf9IYWZ@4Gh9XH6?clESc{y9oQo;&Y98@fXp(FC>V&LKS$cIdPeJW!ZtfR`8rfnJ& z2G0^@;rwt}U*&jpdp@;?+*>;{AgfrUb3ft#5UVOK?nxI9UrNjTTU5{&n95~TSCZ0q zhA0H_!(!sG>gQR@d&(l;V@OftgBp&gNM8=feR!{rmPf-BKf9bhgU?Sxoq_Ews_RqL zt~V_jeNik(z1e9||BVGu=AyVA6>buWL;22j=FB;GnG7>A_v+7a!1C88bX+`3F9Mz~ zVitgDMIjZmAsx||{$-=kA%u6>B`wVQ9lvD}D}DCTf-lGO_6S5f^Y1XQV>0;&*Sy@_ z_-KIh5-<4Rn5`v9=|6%#4&xzsuPF3XUl4EDt}~4C%#UjjL8}lFMFvpwy%vt??2{hlZ=!DD*Q#oOzyaSCyrtEiIaWsv8e>3w8S2DPmB3`5ehPy;is9Gamr@~t34lE z?h2{6Oo7lXKb$rVB_`I7;rXm4A%)UT>!teV)i}%e$OKm4Lfu2EGGQnl;J_ z`@f)fqM3x=@p2#rr>hl>hddysfPLa+J!a=60sm-P{n$?F&eSuR#cp*^5f9B)Vq1w$ z?qAIe2{xSGkz)qffeqVlREn7tN@^h$H-dgT{zX5>(TGp(btqAVwqI^4Py-66kO#=@yO+y)p7uH)*k`|~{%)F*kRXnKpm?X>?xlZX zZtiimGBSY}OtZhxrzc>d!I1AsCY1u0xKGIaoXc@q7FO$wTF30fagF zeL=g`o@9En3VfyI|3?$0DgiDVLv+6x+XQ z!zA*+1a8|=f7FTYzp(UwHzuikTKofHt?t-DH!%KL>0<%zOY`F*0n&uiSnmj zJLONE+9_GOIEn=9Qc+0%15|5Xo5a$OiY3`AiMeoA^!$bAK!mb>s&C8&H5__Lm-0d< z@grjyZ1^Fos#PWBV2>VD*Mr$^1b$x0q(FqL->uo;yg}tYWzHU`zKF0UthbAyDU*$C zzlRD)m*{9Nr=#DbY6ipOc4o-;qnZ`y+5Xk+>iCv{lM)RCZl1O|avts&S>&!evnphHm%9gvf_e!gN>mS?-y#%!ANM)vwE zpI(a#t)mWuoY-DI&COPJI}6p2Ts$)w0A`+rI-y>5u~d#9d<3Y^d5`>6=e z6tJbM8!xeY!4T`2co->HW5O;|qSj1XI?D>wsRT)^&#kh&YPe@9@Ih}b%u2EV`B^e? z(>sJ@%<7e@1Nfpzc*KJ1zPZ``L@0f`=}Eat36c7!MZ8GOD>KnyO|Lc>*r!%$aB`mR zE`r;9U=e?WwRxb`>C1MET@q~_&vvK?ICWqHv>qn`f5-a2E<4;T)l=;iJwneFE1fJC zD+wW_NV@S;aL5Ve&^a5xWVX2C=qLvB%=&ckW+};fhMZYN=Fd>ImXrtuwvvJ4KN3YQ z)QFuphc7W~+z^$CIIKdwc+vJKALNKTlrTW6NgCvgqhd1@gsP``D7Tju+^$QPioXx$ zx01Q0yx`K>CU+L4(GFQ(= zlkGp)JH)oox>l^)fh#3`_B&hCztPw2oyN7!ok22CdDCfkllau^mKRU$>8JRetKl{N z7A4TCT2=t#hC-xJUM40B;iD88kPvka(2aAcvzMxa9^3`lu!LdMQ~aEA-H(;4m*UHS z;C#(B4@4h^-ifAJ2mb*04~YU;^jmxufvkRSH`=AV6Nooa7KRc}>US+znKlArWKL$~=ruK+Y;=nsDS?V9|A{%2 z9Yc8@$IWUrgvF?PGr2H<^9v}O{V0t=IyVr|3%p5Dow#?}7^yOQ!2@rUlA9@I>&5lQ z=zI4XvBViRdr?3CiQenoSLv0^@c7(^Gb{Tl&nU7SONvsfAw48+E2ZF-5%FzrzZ$#H zESL(jl&u&Im3Vf(2SXf#LUIa-Ns7m+O&z4T1;WVKpNf{cgGWTz$)uwKJP-Qc4d!@i ze#1nesQZx`M1-8vk4C~r15Tpsp;IZXyk0J?*X`-1F6!k}lMZ3P9$YXMW#n6#hqOxU z4U!ryXmb|JDOUn3Q3;AmT2Lkobv|~N;rX4Ubb5-~BqoeNp#G8$mD$uZ#TmdbmRmn@ zLMRBuK|y>Mo6c%Ie*%4@1E3J!C(KPq=?TzH56WbZp=)bLOHJ=v?O|`)uWXZ4o1mhX}6UT_qci#B!!B{KseljTbN5-t zmz;E>*%au+Dyb5)_%Mpdo5r_4Q&o;L4eXy_h}0V+K5|P|K+01de@VsHfPMvaVHIqt zuJBh}{>GvNKQ)z_%MP(ud8)HWsq>dRsL->-N=FlcmmnrOHaP#Q#oJ&^HsXW=Iq^U= zq0vp2gZo^mX05rJ*mMMxRB9!!VY;dI^UeB;q`Z3Qdq!@Pf}R=q8$ul|RLq3j>m9Ag zUV*uC2^l3Yq-F|(uGrQrT*1UvqK`zDXI4?xHeE_DFC(5xDM_Yfe$ZFVWiU22e~4EK zI{)n+{cRVWC7Apq+*_x`*!AAx7CPQ~obh`7mEG_9Tx?w?w;gz{3n~426ORm1W@ zCkJ+!j5csM-3k4_7|30i0C;Hg34L~sZcLWvSb`N@%Cy2oV<(}}3##{GFptsd9yOB1 za!R2EK{dX6YYvKxY%?+_D79JXngC|3?Qe)%GV&)|9pE{E;y4h*Ey>eQco`J;9<#tZ zl9x|!@4eRJaTIbJI=CXT1OM*FNhd`aR^>$HTptw;zTtt-%i_h}|Rr1OA zBqtY9ohEuzyv1UbJUBeB(%K}&mWW~~Oj>#B5HytK#Dj{?|xV0x0UFu%`88 zRRT)MDN;N_HyrcPOA87V6MPqLZxEuotR zl&Fp(+l;e$1F@ubFxmSgvecvnAxZSEX}XN>bK)UcO;ibT>;<_Hm^AtB-ETv}EI|K~ z2~ZZ`f=mNvND0FmB+JN+JaXSfy^r`%T=HEDE60k}T>G;7X)v#0rsbDZkIaJS#92Iq z$PmU~NDS7lC(}8g7iNI+bou~Q@AdxgDfLh^+LEow5QJ8+jwbi&8E(A%)OdC+l2N+)la0p!Q!K0=UF2m17?N{8qkyDBqn?N+&mZ>c_}I5$G%yF4$DG@j z@F+yatK^{lFxvzAB3Lx}8Bo#wFyc%l_-zF**ZQ&SZ=Qd#MGOz2GN$DRzi)p#|CjLM zzm#Tj$h-W2L>&kF=}(lMI8-INDN0fmune$NA7gN|L2a^1MJ})15`z-46{M02`}$$e z*rbtIa(8xAs$l_v0*HH(h|}+oR{;|wLLPkx+*9^#w@FT8KcIZeQ7}Fs74UIxO`*@* zuS^Q-vvcPeNjw(OXt^9tvPKbp0O%$6D2sa~X(jEjU^?nFSQH+)Gf)gl4(^7L0K>S{ zrR-Kauvx?2;n2!5Kz8$3X~y|O)S1Zf?tBA1z;H9k;=(JPF8El0_^G%h94pceg%Cz| z;*0_KW2@7S7lA-=Bg2zeOBg*hTJcKUCj_=&r}2W(a0i2=yXymIJR;lYg&aI+CaO0{ zPcB?f^UZrq>0JQGFWirLBe_bpnQ9LbTUZ}bD}JIWT4t0`jHg8y4Bm{Dd)_x36420) z0R>b3#LcP5bxMTa2}TiLJ6Wo)o>ccSRE6%9b%fQUti$c*_Bwwg#nNmXN0Oj_Ha1)~ zr9j6VL2<$}YNSw&2f^nWtYbceT8j%sCi)*!y!5&Qh`BLTkZ_9yd#DnVlIOUtPp7n- z^w8tf5pZ#Z(;+Std8s4y{q-X6Q~)>qkX*24oqbshJzD{vs8Zi zns93fPr38Mr$d~JB8&!cen1w09!a6jF)Rq9PhkInmOhN-{nMQap^m)be%R@S)g`6r zqtD*BFJ?H=(Q6AX)mxl4G8p#w$GO!!uHAXexd2;6t_!eKPRIo4Fa68`)d0E_JAEhvk$?-wBF2bXCN!N!~biLfJ& z%|e|9qugk3P4ZDb(wrDft5HtgW3B8kqrimW-^D*88I;z$QV#`TnZL#^{)5-Pm;we= zL3yp%034}<1SEL0)I|gU+tUMMf{`T7H{Wp_B!63ECbHlrBvL8R0QLLPgMR=mDx^^l z<$d?u_y(cfsi-ve=km%JN=QW97@5`f0ZBSb);XjcV!jOFVyOV&bGSK~cPunAWpN*N zJe4%HEtYjIRFHz}WS6WGhwCY^APN`<{A#M}LuX4V+N8dv#QQy=-x zd?G8QWeArV{38IGax3cer4E6=-s(5b)OJJ3Sl~dZ*J=_#`Ju ziNF(Qei+W>szd`nm9 zelU(w|6#ZPa4P7~2MiQ<4no199m!w;N-IS&t3@=sdV?8`LFAw$@x`#mcO3 zJ`ubNmOyfMy>6OSXVtGgH(S(>meeV=r$NT?-wemF?O7DSpTRay`f5Rgu2fgl|N0qG?a0TJmU(t8s~2%UrydX?TwLKW$R zPAH+gIq(18d%WkKbD#U^eclh}OPT7UTn~edj-n%jobXKdL=#Har!7 z4xgd1`*FQ>DQX)s0)I@FDykk{$z?p;b*@2v%jt{c4fDrnpu>GC{Ad#IIaT2+X&3M2 z8Gt+9+u!IZH2{ZkXy8Yqcmg0zy&s^<$k1{K3yc_+A1*&m$^GgaVpsj zAr|#=f|#@u4oNHebK{5l9IQ=$${)(8{5up@x#-g#=P4dnOa%Ukq5C(o7!-EqK?J$F znUN3Ebro!;|FW;l%BU1N%i2ee{B8n+P#*7G^7seQ;4P)7axhY_?BzL2)eVQpme7X% zr}wi)2Og}BR^Vs;w`Ur~{1o8_LS z@szjLaBfAL1Syi$w&Xi0ybPYIA=>Gb8o#i-o30o=7S;Ws8bmGr+Qcdh+&3KBWh3m{XHOqsbI^=ytlXeYXfdNLE_>EB(Aw%l5i1{f9el<-}~h4(IbCh z$Rno=4~@stZx{OKew(WaojF#irQl}|zsjGjbSWv*HPVh=@v@Ln!>;_-0a>DsKYr@^ z!&mMwq)lgt4y&|sYk$fys3Q1toJzv>&Sq=7O}d@-?@R^@+z)lXmBadSz2%LyiJ#Sv z>GEc~AEr05MN*U|g*R=AiRO_`LStPm%0Jecgj#Mtx&6WNda5tYa<$TWwf54np~X(8 z_(0~hch5gfCG~WQ&m|H83$Skfl+*)a#coW1b>eoTs za>Gyv&=Hv6WUqsmzu6+%jPPiDk-7?!Ao+m5X@a zk1rk$NS;G?Xhp@i0(rNzAS=Up#a1H)f(2LkYeWay@+bgJ2$|1@T+~)w!@HYWa(0!` z;HMmdf=>OcUu_vbRCO~Z-qtnyDFt*w!oP}JC;)UK&M5@n>K?EIrwwb$NYOk3pQSb2 z>uVLxZBUtL^EzSulCebxLQi;jZUD8XatLZbX9e0QjK8|Gc_q}-EZo<0QwkXUBR$S! zK6Xp~0q*JC#e%)i8I=!ck8NiVY1K)zMc(mp>$=7#4*pBkiMI2aKnD?Tr}(~V37T1{ zlv`kr=J*{q{Nf@77B-XTFdBd!%@DbkViY<>fLm?@mb4NO9wMbD1#f}{j&@k5h+ zB6Dd3!j4Y%B#SrG@t&T#y7UHdb2xzxr!-=FNslM2;HH4+=2&WbT)>0Y@LPsn&ET=J zsbW5Lzc+CKHOXGi!D|6oQn8TY_w)NAu3`UDqm7mem(El_l_bdiQ`vr3J5tGqhK!G& zPt%TVBrNF>TFamB8$*(Tfpc-Gae04dd1(Jlg^g$}12}fpCt`5$s~t#xd;o*7-Y!6l z7|?5K9?YXp3|h4z0b$95Ed63F%0i@2FJeUe=NBa1tK{7rTg#`mKBdlG?GbzTsl`_v zU-GzNhI-qc#aN5(nf#m!cAMs@ad)rud(+Y-oQH<3Rd&sHCEeD6*xFL-xm71iVp|_6 zMa0A~mfBd^YAf=PseH3qn@Nb{-=?Kg2h!rTa|@NFq>|ZMsmLSmEi5mnX@Q~V58aAd zM>C!@1!~YrJ+m15K}PWJIcfj!<|TS9N)&h|sPv6kid$M(Ppy!CnW&}bZV71}!Vn`` zC-fYR*<6%R(wWaa-f4FROxIQ1^i3vjE7P$xvFikK9wzp^1S8wH0B%tU!VV7*6rD#E zC4O4=U>WmmMI17}hU1bWZ5QXIPEQG2;+)Tuf}7h7(KAp?vc_hfbcd#3jJ7igv!p$r7G~*ES}tV3LI7J6;;OM3?+kQhLcMC8 zltdy=0l9hk)BufH;daeWk6u7~M8%(Hf|}18-V$R-h~KSR&51&UVrjYPKtY^RcuB|C zY5C5upPSi!%a$i&=D%B%4_q59%jzFt)}6nr$iJDJb$g%J{$^Xda%(pJLdr2fY+z*8 zjhBZ*eDH55z$FG(|KOSO#zk|0Tu}o#kvgd`Lrx{6=Gt!Cc{UJwz0~`tcIs(?=?tyB zhk$?(j#n69ae8cf`kk;QCh#zGrv3)Cc;3daEQD99p#Av^irb;|v(&P-4<9^$!_~ro zLxZ>uy%G@eLrXYc5<>fxykhX7$x%hc!#Mk+H4VTXTpDc9T073>_C*WewT3)wtR@%0 z@U`z>D;-=yVei%3&o?SW3(gi?miW?xDs3LbB&u#~KOoJ!%)r-k{O z?^d2rQ#{~G{4tY|B8gHuYJd>57b^}rA&R>4TjzX zs(ElxeIZkehhYyI|&wTjk}q%nD}$Fb(Lnf z2`A#V{XlZPdu^srZx9y=4sNrPvArdp{F9Qp>}yWtmjpLZ0Z(O*#7$wZ{aw%HrCX~c zFmNBY-x(dz)3A^K=AN8Nr`{36eMwrs=A-tyUS;9Sl&HSK2*cUtD+?EAkTK|529NG& z-ejv>ik0e_r(;S8`C|-58fc+yL31Gl+$z}trsoC#hWpj84>ee)3~`}~o8t(~5uO3w?q?n;(qM98xl3!evKW08^sXb8@f<5$jC~V_iAC|&hvNq{ebrSDH z2n_dna;d2dac(f#lN?!!QJ8;m;~T-Me-iLmK*Wd({4Xa+6PthLZ0eFi5!0WzK$1Pf z%$);EnB~KxcQ}4(fOU~?8n&I)p?*6qvu}2m!*K~{>#}Sis2ZXmQ~t&Ej%aRmR-+n0 zAv7*uf_(K>?fA_P{P)-g5UQPYK+c1?mRqYs66DZRpGGOy`l&sL5IGgInp27fK@nMf zT9?*lBb7S+6;6eheAk5Ck+Y^2dB7$^<}8c4Lwu8_r|h|Zj2>GG(kpw;iC#b6$cBF{ zZluaFZXuERwC-*SKz<=k{Q+nZ1$RiMN{jM#WwP6IHhG@be$6?P@N-I&#hmW0sWbHf z%q9In5XINAI?pHlu2(=d=hEo+oO_Cc+Ed}Le^MXSbnT9S&2k~^^HCnm$8-EBlLZ^b zPZV-)u$&Y`*C?U@j}GmD0&l~GHg-(pHQ)cNh78T8fM(g$*&VGjJ(MRyYJP|$-F3%mg+afE_U<7 zvv-S@rrKrwq6k=tJ`YO4?@bpskT2dw3=vEJ)V^z2pI=jgO&$#Mdl%RvVzyEm5tY4H zSD+ZL2S9?$1S|^(4Z%2k+=AhkO-nPRGMO)Uk^p%pxi;o93hti`zWnqc;z5qY;4)V< z`AA12lvxy1WS!=QD{b32(+j6n^gW{*?rX@bu3KcSMw1w1y={KFQwOT#WM&d~9OvAr zdT^;R=}K04sP=+h>AM=*oXQwOoD#&4v@0~f{cSJr^#O~C^S%XZfYgo2wN!<{wu`on zeh1rwd`diI7Kg>Qx$OH(cO(O%&mhZ=wZ;HGg6L+ zm^_71N~?}>lK9x@S`#{T;{@iitynM`4XyH>qPMtN7aUSeq+Z%~!$OwhS0}4%QO&`0 z7if!YYUi-2l&OYODS)F7^LH2>^K$Zv3r=TiNB2&T@51IQVjfanmmQvF|CgfI?Ob?x za%+5tV8Zo(i16Q>^lvDU)$weBj$M=<^f+Em-IGWje$nWY)bXZUwBBR3Wom3v(ga2E z9j)fC;Djv653s7VA|?CI;$ptl7RLNOAqhfoHduiA$hCvPwt24cw9a#9|7{r!;wm_S zKl@qE)!B8kTv0ys-+eyzt29}XAawr_eLAT0cHhwF@_61;?_UwGtQE6U<7+>&dUJ>b9HC@ z8d7&710p>haHcwTD2-gGze6okeTY44H9(M&A*;7T<>IBl8*}MS8FXi8%w^mr&lbko3g)1ep3{tGn1`B_%WO`JUW`W-9sg<4~0-VSLP|; zm*VsCb0^k_bxHLW)5cnxa2-T}j(Ip&=Gx-VEGEtR<-WJ?)>6RU(a z_xsl$$e{v{JZ>n9#X|bh43eCZ*73#hJ zvU<3Zul4SUNDix`4$lok*8@Sa{NmNGYZWU6RqfY9gp6!ELYvb65j(vbyF_!Q()uwQ zyYIh%@GmH*ZjNI*O3kL+#!s)=5zC)oSfs?eT6mVs>|#K-UVyKp%Ty)UTO4c)g&6EM zpgf}^B^U%gefs(+aVr^TOFE(z>g5)Lm-NtU*3uM{tq(4N7ykg-X%*<3qB&iQZSb`9 zEJvP()T|Ru3p~;A>Gt^;XRHHnwRr++l>)pstZfJXputzw>$T#*Qf4Kb7Yu*%BMS5} zulO6ssI!NAqo1_Pq+JQ^V)*(=z;0xAJ8j#eD|&%QP)S4nfIhRt!GdiHg*0!(_9ZXQ z%Ri#RlL4A$EF(R+EvX^N039H;lb)LWc!|^gwbW28+tXAw z_7)ubdM(!_v};FcX{j<}5S(yLcg53X;@fr*&_8x$HKxa=B&bq|c+@&&BCPMN^dttY zr&ngIOT($~%JsYR8o)FGy+$c56A@+*2bV1|noy|1&#(Blb465m8rnj4?)s~UPZuf; zy%U0t(SN9QH)AdsHenp*E(xD-K_4G&TAVW}nEx>Z`^L}5*H242W$}3|=VhozAG4di zBF*L|L=2iF;f#-G+cGpE`Fk9KIK;{A^>fRueD32)0aXKE566S8@!%@!fq8AeVYNv; zF6F(BhKgoFg<-We@bfUJy+U=sF|4Cec5ea}<15LVbFK>jTV0A-eg4+Z6YnBqndArUqu+|O@Ht#A8=SZ9zGDfY9T2<{yGL2_=6~Lkx zsR2A7@hLz)bl9*=wnq-+LdjBpP)oG9C&@cvO#3|7*1D`^xI6V;2zlbY#zu}3iYt!Z zSK)%ds@)xGvKbaMvm{0^o?JH>pi1lUt)-U5ZEa+#(W9qE%gAuZlg~>Z$!dhIT?g9i zh~!%>7gCQGP0shESZyzKUl!Wqlv?-f;gPz%5_bzV*5h3v;yU5?`b3QV@#7Y{&LpM} z$2NnWpAo5(jvvY2LY5PFWKwvk<7B4bp6)frmSxp@!+mhE*@c~zVzrdLxnRZavi>cY z=l;jotTRag?=eAN$RS~gk4A(nb}A$oOMf2r8VHZJ(*`3op=2qpUNHu+A==q&Z7~#? zb4)i5@wU3uBn9t^f43plD~VW(hZ9fWLmjJHo>~Q(PV6kz@asR%=Eu0K7F{%$l{~?d zTl;YLOnies`)aCPV3^UfZX@QgQ|h@e#ZqMKpR2`f$Z+A2#HGQp0ox^tPhBxf&01UW z@2+EhAFyxucTO=%>$O33(tjGnp1m;n@a*Y%cLPt8-Y`UU#{Elmu5a$LiHyzXQYsrs z`J7|KJMWBM1}e#;6Ku+z8zS6UvlZ~kVayU~6gQKk$e5`~gMp2Dzw>dt*%i$qHVGc5 zhMF3}ca3bMRFqmJaH)A=3ob%WQS@Nx_Aq=)#xeLlwS}hE(CAa9@Nk?>#nT*XelKHN z2cU)qi>A>g#r?qefkxi#9rDe1tSB)_@{o&6!F)`DVtm}S@uI)s58t3Wq(!}2bII`3 zbKjS_v_n&bT)|pkBhuz5nyj3lvk7GI&Zl}wIY6Mfa-uk`=GbQM2kpM^y>77PI3QOH z2s*Lx)Gdq7c4_vm-{!32+X{G^rXGTG%QeTy*)9UATKiDNOhO4uC9#gZX@Dn zrz*Ve1!-SzTN`;AhEEzf7R7c7_(_kcmig#Zvqghiyu3 zLP%rrZKQtH_xars2F(NW^~v+~yN=;)cC;&iwjsgAwWT6Be3`Xr_N)N4xQwichN9|0 zwr(r!I5mak0|Z1JzUChia@GG1ouT7gV%vBtkS9xhr4pfSruW3whDKq#w=)%9g26zu z*LJBu#ja|q^)2gho3o$RsvtnS&FQvwT18q+te{uq%t|_}iHp;T>(xR^k*U99zmp1V z2oc2|Lnx+BmoK9D?PpZ152qL7hshh;QbMdJq*gXGJI2IgO4(SUpPS3 z*m}Om$O}g>s8kuic7YmNV-PKn$SLN)!YQiTEe-1y$^sr+99&XIj0iEOcWCLn^Y?`` z!?kWmEH5+qDi|txc>+Z`aU*V4qSQ#&T|^W`k*itJ5|tzYUx1-2y_uNX(_hSXg_a?h z8jEl<<37DZ%WMsXgznOE`A*&N;w4&GBmiok9(t;(^R-69 z`NlMB$z?5mUi%$?9$YY|IU~wKz5W*rWY)uJqbO#7{-f~bx4AbOMF&K{r+!{?a@sUM z<(1^s+U~yQlRP68+nt}!n)kEb_j^nI3%ON<_vW5+^VR`@ zi{-RXnmoAmgX%q^>nr1OAn<3@%yiTKi0l*-F-IvXO8mo2Jx9R@fw5TY&^G52Ij`D> z%vV2Yo_@mIIxdl;eSyKpvBU&qUB9UsyS9OXdUZ)S&H-H~J7;K9<8Lwt_Sw1Rkd*$l z%O~*Nux?h%**!I1P7Fr3@dcAt%ArVYpIyz$!ri;np@|~=q&;sZt*3|NJZHvi_ry#^ zMuuMLTB0q(RL7*$o`xx@UwL}*chP3?K0mYAUn_g(?!T`68z|A2J;y9Q`r8?RYKlc- zHdO%2+*xF}xU0Qv;1~WE7QS$HUfZd+)RKe{9s^Bd?;WBc1>Ehm@Sp>|ogL>N$l?K- z*pt&HV}{70%YXhd*7tP>WMNE_Z>c4=zUnbJ=_Fwp-8#}KwUJbMSKJV(H`qITouyy| zCe--q)eeo0yS6dSzeni*S9-&Fmh+4fTjRUC(GyZfPaJ!Xth6z)+M%^lCu5b=cV-y2*vcaJ1C`-(4#Jz&e!PC(NUMq z3cJ*QHt`>o*jAGm2lQkj?X^Gt$A9=4-~oLpAxxQZk)<$yZEf04!Tw9uw@e*2aqOnNShsY)8GFc!u;3L|3@9tWFWiH@E3hv zXZGmHGsl*TjrF)5Z0w z+B6Jr5BQuBg(U2EDOCybAheG4J?<7&BHZqDw(+ z(ou47c}GczD#L~2Rt0R2OzUex@e)EgK~HqCs3&4>{Z8p4nBLjP z$f?ZP^=0NlemHkzEX}RXgk(n_?}x*vr%xM8_BxPh$W{`J=axkJ}O91cNGTb$1%qOcYx5uy`bHF4{~%=JQ28(hn|5U&-vH^jHAH5N_DIxWdos$6(Mp+znP# z4k;OPdmEkjguqM!p~a#TRuYxkM}$|3%7t;2la~j4Dto1rHfum-9qERs%f)TqUln6^ znl6KgP8-C!_169J+Z_=|oRScU+R!1b)6t8_VsBm2V^eCIc3PT*?hqA5>Ru>#)gC%2 zg(U3PZ=kHbkVo+c@g2ADM- z!(C<3sGndMYp#OlMlZK0SIq>av%Vg{V$DcrrLU?gW$(g$yV4spLAeB=;sWheav$+t z`)e7BGog_{9_LEr#kwB~tIRm4mstF7~EWsg;ZC(Y4q zUd>12tk14X)YCg*usaI5!z-m#1@TZTI$9ltA5E$4-S?eP3#O4>5pz6zoob6_J>O+v zHZECF9hDkVG3SmI_iu=`bFW)gv#~eh1Uo38js3oha}PaNjp9Qq0l-SY2r}MmjN6$QA}&{PN&nU)3$Z~+SK=!Tr6p?g~FCFEi?|M-BS!2>82mERy9i2psiHth~M!F z0HO$biECZc{DNE)bj$h+U7feLD;6VqP6m_+N6DOA>a5E(33S*#ja}4&V=z1gN?lxcXU%{ErHU%kA;ia~{_optkPRt-xZzhGsMigS`x$!|aM4e3}5GBep zNk9$d?z|%9cqQ4MPLaoqc4^baY3~LygU5cdgOta#lLu>P4a^S$g?Rbv-8E;jm5J`G zvnA-5(Ugf=$m`LxlB%AXohJE`NiY$lw7)Uwj&sHgaRblN;Tf|xn!2=aA{u(=i7C8a zvB@{O2$DA`a;=w2yvGf!zEN;+IVH-$ExrO;f4rzLb<)m%y zz*s}5q1#RllgMZeK;x;F{u7Kh5LByBzr*$EtF8Bb8m;s8@(Unw{Hr<^SoeSZcm8*tViSIOACT{Ifukajn z*viXdm8egEtDRA~ZafUXV3bTu~8u@jX~n$Le&h zNP{qz5Cq-z#Y{6W4{V;ybpTP)3kZ9;=nR%{ChOvdWGTasb_CI^o<~N?haS&q6HmMx za`FAU2UcArptR%w!uO}Lx4^miRc3DZpt$;)cq~|q#6)h4-i28r){r636niVaT`sDq z8Od7@@!Ud<5l+2Kqj=O7I}sBvTNX3gxFU}e%cHcr+;*}w2>!M#gVoP61!tjw!{YNJ zSu%zckB+CcqsOX+xmC%s`m6@V`z%Pw{^qc~QXFkFy;k~}-lnlGR69Y%+pcpN4zoTU z4~g*GQUC-fB&_zFm=s9VfS3dMt;5zvUIL$q7FF;)IXwz3!Mm)3t+^KF!Y(Ac)8>eN z>+Lo4IQ@jwNj8#)r|#6b>|I35$eLryT&TuiG3McUjpu*$Y_T;Y|GES!`a@9jPuPoT zynvDD3r`j?H=NLcpu4qc>42+o$if$3t)L-67c2l6Hl{Uf!?Hi=1)JY~>fCzxC4zrd zLuW>;=MLId(!1T9bHi@sqrSgtF}I{-<3;j|_})HIoEpw#Y7A_)y`_#1cHt?CTYyiy za%IX;2y_;nB_>!Xk9m}-941*&ScC1p!Iu(?oVJUhyAAp)OH1hMKr8xA#bOrgf>L^l zM31+2ACa1$*_4dp^?=D^ZaI@w@Go5~#~Y~z)z3!q!2m1ij@$@8=Dq1u&OXfg6hSW{ zY<4Yb4E5S4%70rEDch<&8wF7Stv)4-Wz>mHo+2R= zq~;Y*yWD}`jDp|mONJ{Gn;PZt*?KEAjJLv8C11G5!OKl#0^`LVTJj36?f7PMK+Md? zASK_PhXv?hm_{mP+z7mTJm~vTP}JOWWHmN_<=u*SLR3n=g4`y`V{J$Jp%;_I%I!lZ z&y$6DKBl1VO$uO$x>=G=l5KMSL@4~~PoAN$uV}2Kq;oH`=rDu@97*~Qo9vRj5|-i4 z`a{`N9BsQM{#6vfgT;<@L-XL^l80hR+qHC2{hJU`6{sZC&~+mR8k=OPO_xoED!FL` zA1;&N!BxXMx9fPraMTt}qwF?@cP?PYcL{yWyS`!EMEJU?I`N!*hfD%*is+ud_G>jKH=iv;8@G97o?Yk)FG|YdtGnp@#2>- z*5@e+)3?0axbQ0u_#NdvX7^dQ5jUQ~s?lm%9}FV5@h0oKMseRWpqVHZXz9;Z0uF76 zEU_SHf%-aMg8*U!;y+ap!-fSpp_+*eOe2p9w=Gy|8?-o%uG8ZujtO(NYlSEE4~d&K z?!>Z$d5%wfD9UJZX8W7g2cx0ew8^^0V-(&mscl<-z7V;AD;U-}?ZIDJ6}*x#qaiODT6ci^ zF(%@DC}eX~gEytH^~5H-Y&WH7L|H)j(wT!q9twzQ4&`W!CdU#rpki`6;;cUX5gc0XXNgohnpkjzU79~dwBHVW8F8`AnJfenL%ub(!Z6)P{p zdKG33_78kn&3DQmhQAi*B7d>9(=KX7o3AG!*~&cf6b}S42M3mf>kA88DhhVxKC~WA zn;s@F;3}H(m{JGQFw_8QA`I(=$_@{0Pm6HLsbRN8cZW(4XY_uJQSq_ zGz4?KT`LFaZe{A|DUcvovX@}?^m~sYhr6lls3er6znT{RKlcKda8=;VfpoV^6T8Cm zO2#0Hx9G_^_3-2>%*DqET&r@t9a?EfSOLf7wKC(fsrZb#n7PuimitQ1jqQZXXH(Bp z2msMJ_G&$!C(57T=2NV04EGIL7#`F!BQ(sA0{*ErTbn~Dqh@YJ)m;{r35p;IRK_?b z%eWOe0^~%=>3GU}Nv}jEtjqh5!17q3MDlb8IFD?FuNjgG*>quFeGe7`vGI1b74`$JS%TjA3a5P&*l%%>vYmN=2AZR-8fZPmPf0l6e+67}JCtOy( zJe^^g+E*aUSko>vFOt>>NN|Uq27ZhX`RZ0A3OwN8S}&Z^mmHXcP5AzH=etls?e=no zb8C8H>UFg^&hGu&VKS87)L>Vpsf%XrvW5$MT0WaAu@6U^3seH7bq&i+W@1Tg77=i4 zAw|zRRu%~w2_lCGRC z4r^Vh6hd%9(LDu^3#)AP#Ytk`&R5Twuco*=QSo3T`Pqa`wldcxTEToBb<4dTWzyJ3 z2BEa+X z(74J9T7-NRSQ21}D0^Ji#K`|s_bY=%?dePu>YY~0ZNyXD=D%5`Z#*=|Q>+7%fs}ti z?D;4fq~_HO#Ea6ls|Dv!DsJUHvM3c**eNnBbNn`uccyn{OL=8^mEMg@*37MV;0B(V z>;v7SOd42zgS@GqP+1GaavgnEC3c5OFD6-zx}Y#JuU%w>>wUx`6#nftGkj5-^+yIp zz3Y|C&HF+^EzvnnI_}aTP{^XzO6C&Tdyiy+F0{K;ezmsIRa*;M3C-RX2CO?$Ow2>+Okj@q+By}^tM_|FSsRNOa#}ZA^aAtq z%H0({dHr-UeBl>b3B&A@dy3fJ?Q8-3a`ji@u8!^AyW($+@wA;qJGWu`%>$@C(@3n7 z8@GjH&hzjg6aky2;LmXL=i-{$8#ajRrAOfUP(MhvV=;UpUQZO6QQhhe?8{X036~f$ z81Bm!DN919Y`uT+0P~}Qwdbl?7F$@&ZNa_8M*8`R5aY6zpo9lkXSU5Aw1O}!*6VQ& zLw2%zfT{b`$*y(j>A9q%j0Hg&RxxELXHZI5t%guGgL_^Evh}*aUT<8H5Wu!Kom+6S zm|w#e@-h+`g&bDDa)p*gO*QBKC7E5_nufb(PI#>e_~-U<&5r&PjZo4W%piwBy4PWp z@Ryo>y=GS|!ce2}klJ9+2`0n!jg`m@0(ADp8$b#pQ?6ynL!d$>)b3lB^7S7miVCeEPnh%fG z9P;qk7vxkE6G;HtiYcSVfKfb^RNtktGG~YIT0@!7V|`!j>FZiHA1u`aCfip(1IYQE zNHfDMrQRAuOy&oj)5Vahl3P*}irLGRc@rJa%XZ_)13X>^^kPJ{D%Y%P<>-Iy$c+{< z63cA&!u;2G?-%2)sG9nk2dQ_{L+83=Abz$;lyq zqHj{GCx(~MG=nLlv5);d!8vM=(v|CjsmK_%Za}@{;cVeA?bFq1>L(kctRI5-Twy;G z^ngot#vYxq@0;3i?lc+lzW2A-T6k|%&y=@@QtXLWA^O9<3Smij6Q&MyKZH0P?NZE} z=GZH$6&u8f-_LpOXygBs-}RHcSqQh$7f#*?N{yi{4oQu>>=nC<2-%^x;`-_tXXK;K zNpM}!;C?Ew!DtzlYvc{wiW8d3+;l1yf?+;>}#0O;xL+`vbWpRmJ7EPw)JW~cj z>KS)+0aZC4JDZ+vQd96pe#G^1d>YOP5>Kj>9Qb0)UXd9Q6<~4O>)ZOt^94Qj*&vh` zNb9q;{P%&vE|ubz{CZY>+RJASI)mruu?3I2i%*}8TCq<-n`Ld2G1}x`EMfnV7 zb6K87N5{A)JhD>GnnPkE_&P&V1!-_jA#2xIC{=>9~{uV9t3XdZHge??b`g zX841sF332~{hrB23UM&M5#R+qq1C^G!(U6&*KcjKKbX|dQSu2nb+#zt(VC0&Necwp zd{i;{NSRYM{N;XF+CS`eF)vJDh^iz_UGg?iFe z9}b4g5&HZVXX#4vMa&J;uX%Mkq3}cfHlds!4_FL)ByaT11|7ILzfcB(M5zcHgiY^QipLos)qVhTiTy){4UwIzL{8_7IFG9(+0oDAt<5iRtL}AYO1HPr;q3AH!`8xXB`v{>fB;7L*4?Iu7R~J zp_Pp@Jr5c|sd1dGj!vN{1VgQE0y-L^X_nb^dt2dYb44Rh?)=TnvBbQWu;o{NyN)W= zwHCqHn_9)uUI}sZw%gT7v9g6I!<$UfDeC-@WskP;qNJQ9L0bKn-fVp7sRFHx3~Cyo zDXoo9Iuwgn3$ac3g5|=q!0&Mo&74X#jgj}ddYCzjT=$*|1&xI`KrCe6({qnpG-m7| zSBO`vk6CimebVYatrev;G4Hw6<5&@)Pm!|)Zi9L|~fI22263D>+S))|O_Ls$y; z3X;rpDS~8V)1_?@<`&pJR20njJHWN$ddDk83hYOjPd!Y=8x<4)OLr;VtT!PaGd#Fh zB9H+ooBzh!gKJ4-!-#Eb@~_79cXn)pj^gFHivtGzjZ_sJhwQ3l)yu1kl<610FPyv8 z=isv9>@;1Bi=YjN+AYnth+1EnIf~m(&eS^K!%=7Ls8EC9-t>)#{N|U@^!0+& zlN;}QH%i{D1)m7nZAEZkByfEG#>I|_)G?^B6f{9cer6QbEKJDh=qonog07W?94tkD z5oO2|>Dj3lZCqa=R!}Nxs#!!g0GZ?AHjAZU$x@2iqtK(AoR!iSQFw|w&AQ4E46RwX z)^?yZNPr&)K)&Irh#F@8P$z+Sa4GDIA( zo=~rKYtq=XID%YC>*eXW#8i{usCLWUs2L@9;BIza<&c+KX|sLLtuqQ?MR?jI!q09B zMoqE8wjx(tHZz$Ofdx@gAgTRU_|^lQugKW_m0P9{u&;p?MR9?IP`n^vkZZ0U7BTxt zzjnbT3TJ4IDEi`-8=WGCl2$U;3Ys%x8&#ne(9!MMDBCKZCnJV&&eGTtt?CWXy|h4ULtG#`ZZ0^cO@lN)@&SeoqplR)7eH?*3D*HsGgcKRnN zh&{YoINvXtTx~2?j3PA^@UKqW{dc&asvYI$od~@I3Qtt$$u=ch^w&&>Acnw76$J`) zNBHxdrK$KIYEb_Pzn4L)>tC7EQeFwYo^U&rse z&2t%j$H7xE62JP+U!qLH=;L7bJd$;D1fDL+;uZPU-!#nQ||?8Z*HDx16nDp zn!wNOAhqFskO$Qi#^a^-=I=V0B#u$KJ^?8o8G>soMeye$xl~B##5%hOgzQvlMs{cRpVKEo*FNO$hyHKr7k0s7sKE(8CxGQtbJR zH27+<3)kN%?_Rk@VY>@I3~%oU8S6=LHB0uFS&Cks`Ih$#=BORo{P5wJc-igX0YYx1 z=Kc65-vz)MboN|>=d8QFcyO)XF0A!H36!$~92a0q$4x>J((gyT5XB6#qJ^E$A^ zx&}QNZy!?aBAXm4{sdHM8tv)jnc!)qjg&aD&uwOJTA6%IqNq&~s?Fa*3xL@BAg;j% zWDlScHJU$QVN@KEG2O2Ye8P9UliDAlK&{tRST)jF{8K)Jw0Z|GIZ@H(wbdX`>CZQI)SFIv^XTP8^Vfb|9$S=)ssZtfm0Y^zsx-U z?jqjTfjCkL3at#4_)~HFx|)LLt)t>0k_kq~6uzBZDn&$FL*w--$g@vdC%X=L+EK<~ zXzEdZxrDr8o0z#A9-ScRt5CeeFkDs5Y2m%X*=DSTZ7g&oFP1hDh>>QnnxE6tbN@oi zIk?I1uP?-<8WDHB;EjBUVA-CY%--iDwMUP%(gLr9(lfZuX84dEEN>1~{?gU1RJOo{&08t* zBW&=?k)~8VDPRJ7lw-s50OH`5e$_f53*|aI%E>QW5dXFsQsDd?C+=O@1pyIodyYI3 z9s~Jsg)UN1j7)0Sa`?o_NF$L)X~^sFVvk-D z!Qd%xYsWL)y`}lfv|-}0C9iytng)%TU%{{+LkhU`ASH)gEW53)rHi2iyL+zi&NJn` zChfJVhQq^)t3&u9_-oC#AnHL9=i2S2gESz`>^Rk~7AzH!d+%{pnVUthab2aQAE-Lt zV&gPXd~RjLov1ls>7bh+2yn0S+BXfsLYv8W>c^d}NYfaFs9u0ahcQS*?rsW)EULlS zP?fQe<$Lzak%xk8_4$bjX3QrHl9;5Cn8~Up20b89{#!WL>NeJgp+jD!klx;M*rIX$ ziX?Wc+?D7DqXT&n_J{2v90HH-)Kc{P3Js@?NpYG%-fi5kNf!T{+8`yEfjE1!3xn{B zMV`sqo4jOzhfLKL+|J)WPxMKk3`WTFlNdkTJNa=-4nH;#x_l+8SIQUOu*0>JuG;bu zVS(k9tZK^#J=KVUemqY-Dafe^jjq`QjbKMuBrLs8eK~VoRUgR{DJ_pnU5QDI3!@XH zXUJhC?snE_L*1 zWfqyUI<4W!=F9-fsHQMoeMV0o{d~s(=L|!LgEF z+Q1U|(y5b0J;e@yjdykKcpeb{?dH3pbOGWEVA(-CdCb@pz@x5R*%>r@Z;w&TU;FT2 zJw?~HIh+M`x{1j*D!Hn%H+p!WYd&!4j2kdF#?dpr{rK>za;&7gAa%ab9NC68@jw0?8#`8s^B>F+ua3%b!J_*6AE>q~ie08Vv?a*|L0BjvD zPDFc)LIOsz#!^1+cDQ5Gt=$@>dyJpTEw>+iFrtSSmejoMD+ za=wCGiAgotnF*L$@TriPa4uIh%VDe0xJ>esQXT|>9z@0f~ zL?M9Y81EZ5D`LJQ(zD^c6at*SFCo#q#V4WvM6^=V|65uXPLG6V(yDtZi5LAi1rC-1 zqvIm(Xg-ox3SybKyQ~J)h$(X+=!9Z91vxH!&3*Txi1Ww3*Ao0|fA65t`SX542-bmq zjQ~F;iTK(|aM~p%O-THFkAhYVJg`+V=ZT68G=Y+mO4lBuUYLYl3}R-c*a~{VgrE2( z{)zUMsZRUNR)*>nN$1G0H7~@#Qiq?NNxvS7e#JIu8d&{l%Mw%gf7UFC~&S zo?)ZmO2`a7({-PWkR8*G-U{GSB7>fL9=t*d# zjAGo%MoBj(O31JyxSS+g0o3kt{PK2gijoZ?uvn9g%P^((swdS%2X0BG<^5Wg)cS6#Xd3EEB^cI=#wZ81J?4W1WSYaut zC{usS$+wL!n3>>wKkL5;ki7)2)A+fiwl8dIffvF*z1C;@u`ZRJ8SJ?8J~TYoz`>Q5 zU(&fC|Ax2E8%0y1@YVoAXqR(zRyXAVaA31R+$j7L6eBI($J5dP9`Sq2yu4MXn?4+- zd2|_OFfaEj3REM-?iqCAf3+~;KfvQO6Z=LtF(nr>`$^=@Uj!Dv)c+6qt>FginVZQx z{C{rof4BYrD$!JuV$$9~-T$oWKU(yExA<(3QcV3VIy!&tkY5nWziR&1wGWSaM)%(a>aQ%)ALRG9f%@A({TC1W zx7+?N!uc2SxWxK5g8JW(;NJ-97p3`62>ZJb{|2-F8AJS;=>9fPe;cU(0-gVkEB=dc zeu0SpKaDHw(hBPSTE8PH5=9(Z++i?$XIx42*RPgEMMXj;Eg|ygxn?z=Yv>XSo~L*F ze*AdHIOMj?QsLt5T}w$trRyP$>AW#{Bolk>SLiqSnZ$tzH??;EZi9a<(R{1ZB@-9- zn3j}l4Po7QdU$jc{_*3-meuvM39+%UXbH>N1)$;78%gh-rw9ZB9X`Hy7gTH-$oBAh z{lFF||#6YHut1uqLq)L>U@NXt)Aeovwf3 z+{%O=Qxcw}@%VUepq&w?V?y>9mf7F7>TmZJsydL3`UqS=9q)Pj(e? z;-KTOrZ)v3&-;glJT*jw1_v20WFIaGFXE8A2>iu8PvWv>x(i9FW4Z0#M`j^mA*!nf z&Xe4J_Y+>vBfYyK0|VtPDJiiy(YF(7E*#xlb~)UR+JhL#$>*i6fvq>?I#mM$;nB+O zkb?8J$$sWm^Q_x%Jq+d6kr_M=udf)&G#V41j)0xiRGPS zCMJeX3$cL=)!ujEGOFqM6>mVt^-K%cA0mBVG^(J3&3MS-ayoFI%=9>Lf!sTJe!0V& z3DGyW=wiN4owYn~-Y?{OHDcB3zVp1K$l~inJVi+f_a_fiq;9TO@7m9<5|)$Xmg~ZV z)u)H&8!h0)DWk~`A1>|=J^MG9)eB&fW_0emvRdoIG+$P^EEP8t^KhkZB%Xn!2Z3&e_YimAvWFgwzUaaJMZsjfEGY{I0+vvzG2C#XT8D4 zBWQHoucXeL`}BQ#8&p=zXqbWW3@y?G*)fN^!&Q)-ebV!?zf~{8;vD569$fBmQ&n6V zO8~M>8f>yW<89^NxhO&sAg=}1p55{tt?IFn0s#9rri~N_MX#RP+Sys$-(I&*7~N<9 zva_Rcb@hZ;f9(^ql3TicI8El{;%@w1TG2{Ow>vzBL(9gdqWB7n5W%)-|spGz`d`+aXfmywba(7lMl?r;DbXGwFUIDmZkt4e31*oC~^;i+z=?vMIi& zY)%Jrk|zsw>E*DSfq&zNwg70hQcEoO^4Gf9-x{+Ni-}LbqhA_FwXH^;&mi80u*W!dK89gOf>}+f_(QKOX zy`8V?>$wxt`CR!(o*bjRkBE@w$O~n;pIaOr82Ea1O6^&a0n?9C&&D;aBRq=3JFTLnGF6sUVy4z;rm8Nb@=PW%K2Ni1Zs* zYW_9e&5XHM;#6cGAB#AbwZ3AlZMs}|kV=k$3~;-anqohF`eGHxv0ta4peV1bZg@eA zk1waM>5)yMW{d9H(vVR$KK(Vuq3OaBpg!p^UNNbjg_SY!nxDVZAK;$%GX7wEys98W ztpY@98lRZ?h+j4fI<*uPm3=tl{dWT1b#eMebMD2@pFdUs9EKumWW~jc%3Sj^TUuJ! zwG|tr_4IOFJhsdvvn2VWF80|GChPRaENtygqtlYYK5|o4n}R`LKD3|e>0iO~{QT(cjnYLi& z3Bkr&SQI&LIP7c~L>eJj6e108*lc}58?;|P{N?|0ZQ=-QZ?lD;F)!-6pM5vlT4+w| zgpm^$r}eyZU;K@_yi%x>!Bq$ zBt$q|NnlhcP=?^KTFb|LwN_1E{8>!Xxw?w2`4Sa}XwfN+Ry}y-GF1aOZh|+@Sq-rR z(RfAPV7*gqaz^GbpL>jl{I#yuv4>qn$HW&mB}GlO=@W8|6w);R zv@lA^M7_HkG%8(eJiH*NDKC`?)`uQ^es$cF748@46(~uWoXOunIDlrWZ8lXV(&DdS z?=~Ow=p7~|=GTvtrfZ)zv%Okdwq~nQS5|omYbPey_7+<)G-@q+W*v5yx0h*$^;EdK z7q;f=gS7tnAQ3qM!r*h8(k`vK35uBNYPsQSX6vKcqEh4Bho&_TK(s5lwT^C(mE^ zDrJtDD)pqEaVvLfom3g@a!^P>8rr;t^zrego;|CyLbGuZ8|g{KWzr1ice_lbiBb;X zSq;y@f0f-@Jw3N`S|fAImYzqJ?YY9|d5g#nvN;p-6Lfv@{k!;yI`@m7MDM&j5vqaQ z@*JiUzHPhwavaVg^H0(mHI`kaYJ%TSC%gUIhPXG)^-EgA`V$#BCw+(zgG%?$mEi^2 z6_zE23xiq$_X^h5M5Z&o5^8iA_drKKC&+1S%Ghj?wJt6%FF%fY9MqbnlPmJkQRI~A zhmii1M;St&+^i+pG{ub&g}){ES7G&rEBx#ohz9Hvt5B*tzC7+OBz?epxLj&h5T*up zZyVgl%8wqA<8Nvw83He9=>jf1)?WPHO25eWCl^p#AOU;zO~v zV+F8gOoF~)&ksYeD~h!+%|Jzy{W%1KsLd}*z^~GGV(0vPC;(3@oKyRO8l6-i+^oD6 zd3UO;v_g|~&UqZ*d|zKEHT{-Yks_GY>7MWQbW&xY!RxwzzV2*H^4nB%cMTE+#YwH` zgXzXO>8oi~Ga8W|)p}DLlDY?hs=dAvYBDvtDfjb9`%=}K>~8!U-C5u^KA-bfhKEO& z3vMbI>+-~n%Xd!NJ=dFA8b)gS&ja2CT)EEHUJXMIm6%gs={3z^ybn~mx-Pd#GfdR7 znWVs4bGb>ui~j0nc76lOXgp{kjS@Kd>fZ!s=3fKk868LwTl+>fx z=NwDx>hS3)UT_!=Y!QHG1?yxo%iRv{QC-h>)QIawrw$7h1$sb(y933t0@v~Wxokq~ z`XrlcYfIy@g-i2J7MqKOi!aW$!C+6-piB0zHC_+GP50dz&ZiM7#AUgx!`xPU+Ah~F z_J<(AP4b2Ki|vpeQdV#{KKmoBMu&G&;Q+MhoAce{Z&*=NyqR~t2mDB4i1}X$V6&Bq zaL-TZ%U7yZbZT^}yYFNR-2+dDd8dHA<5MKm|FDADWiaqU4$@pf|FV|<|RT-Lu-DT_u{1V|e5IGTvzaDcp*UBUUIO19`0ZPZl5-Om94(T~ zEhcsz(a+75+#{>aehCm`Cj->zORF~{9r@~bM=5#Fyxa$2ezn}EI*Ys8^{n=dR8AL{ znG1^&$n>=;@CX_%aQ7e5auqv&DQE(pXwacK>$%gGX_3qiF|yx!YEsOj2C=r^eF^(i zu&85=6rZYRHSkQyp{g3jF6Pt}?~@rfF3$LKBn*m`K*BOV9XYNWac^;Y5d(wuNsA(2Gic19U+RjQ;pKaDVLBNXmzPrN)h00eauNjE?#I%=^V9cl zgCZ4t3Y&)Xc3jHUn`iyK=J;+Y8L)M0rZ}`37$_+}&`BAr#6=0d0&LtL<{(KUQliyr z+8!em^~D7vkxsxw({Bvw1Una<*q?t;NwsK=e>zz(s9_G+r#rEp%BWqPs~Rq|ds1y= z+`A7FocF1>GbE$nn*~OP?c!T7pyn&YD8osJ_qTOW(vKJ&U5m}s4)JaBL_V4~k1M=- z^a07wKC>uzeI+VK#8nwU&S^_>!$(O;YGG7R?#Fa&GdZ-AjT27dwL;tUu#C4dL-K5y ztou6{jEab93~qMIx-C;)n*AQP#(sv(L?k!_MC5HCU&#Fv3;dLB2G~d549E+=HL)^` zFI-^9(T%sF$rQxj)9us&y9gg{Faps?mFZ!We3@HrAI&JxQVLSz;DtA9bl{pe?+$vU zo|;kmprd7|jyGMSe$^fQc>1-p^o=@(!#96qJn@pxWHgD$#5 z5)!X1l1g6<o9Fhwz5t2{sOnPf1zR zn@BM3O$xUeQ^y;)nAFUWdb`b)93%@Iw;k}*@xYX_yn4d>tgNbG0mb60bZX%|qJa!f z*;$_bcg~+mO>#ca0g7EOiG#@$kd52CJyl!W5hv*QS+M|fcdv{N;GW>vS?q$a;~q5v zDb*n(G&4Fn;m`TiBk93>Nwc7mh{7Ob=lRPc#k%W)+yqY`V5SR;s*QQ%g3rYn*!@MG zoJF}9tG=N@Z+k5NYB)%7L|xt6B)DrdZ}VbGH1k!MFPsOZ9IpRvS)=l73|gE;Wb%dm z!}SstGE2ZpSkVKkUP|qPt75U}b#4TZiSU*6i?X^C0{82#hp)Q#M94_z9f)}0@9O;{ zHU?72+iR;&>^JpK95}O+fU>9Nxq796)E?5tSE5-_ACccUL`3!6UCxJD&NsYJ({5e# z;1r>Ixb5^$J!`^c(EL=aWkOgPNHzc9cG$w;Q~Z_O5OZZlvH7|;rc-*C zJwyIwLQ|&a1~)_eV)GIVGu9f9+sTKqKJ)aZNb(A+MbD;dQ0rF@h@;&Aboy&XI;4D~ z{;QR&GC$YhueNuI4Nn(li_Hu6=!_N$Vt@VDPhenO{P@#4?u$3GNLn{RVaNT);H1Bw`K~iOC&Ayo>FR1|!)BOdezaUia6n_^UGWixgsyQxk?mNk zmtd(*)to=xNu?soX%MMYK$y^ zqI;^3#f1BvYOP^I5mDZ9UO*VGUZIlQOtl;Htw;0v9LhkHW%&n-RP)#zbjtlsk4r&s zBvNOgNai+#(gvr)&?teMw;fE9YxSn&kui1WiD}1$U`v+e=(N0M(5ft72wtWaI_!Q& zg-It}5iox7Q;mh4h(=KF@<{AM4tCL5m5{F}Ug{1{?)%7BAH3OMCT8iMrg2(z z1(A9(lz*4li<#2ac7{rrz^pI!1vta0B_xJ?m<`ai zvce;Ao?*>;{|x!zt$$DoopJ>7>{dl2mt7q@(B*)Aj#W#2XZtW$S*%Y?@*AM`?s+by ze}1bK&o)n$*ZuR9lo_g9yEG;0hPw-m(JE1l)5fWHa1wqqU>B`r8 zhBj#2ND08#mnLB9iw6aXg)Nu zss+A^Yx{1M4vY=0nc%scvy-|K6`>g&1DOkXX&i~b=)5J@S|gy;FvS%|j#-3fxes8vYE(4jE(=bXH+r7$ z&&z<6NjIOMjj$>+EaQL80;taa#M&w}M9=qf0>K-I5}6s-Ld8atm-8wkG*ogBa7U_s zMB*&S3Z43mDd+ZDck=oGx%2IK+7bOh z7QoJnR{g1IZH(8+HQV4?D^lA^3q5*bua*3yY(-7#Dtd>psi4+Y!R|JkMiNbeb ziQnzw4GvB*{$a+l3t;GBCeN10|MBTBQBRu*V&5`d`(rc(<1|{pZ50DK;xIpiZAkD? zvj{kbOgq-M)nBCe6!)3m*k^`0>$_^>sWM_9v64qzWTD{fYxB-PX|Xs*y_p%c0_e;u zZ4wS~H^87q4H;LSUy;&h;TRN?egnY(af8pSLtOCWqFE6Er+BF#Ju_vC=pDWsF&RF8 zY7#dDGBUD@G`5?TAb&bws1&aWdHynrS*1Fwi5a7;tgPLAb&}{?f3R}-tW;EUQQ=Bw z3O>sYgMVNE2%m?B=4p$kz~m_#5jInT!Cs-aH;l<5NX8H+WhP;)d(TN))Mbf@EG-fm z+$V-|EEAh)dLhT4Mej&m#MQVeHUfe66cp3y$~YTFFDbZG)f3T*m&?G{*Vpnf{h zmLKoZvU*ghwkZ{NO`&@Hmd*xcTl?(y`DUB7*}zDc`+jwPJ|A-%DRQ7ly4WKbCE~A!Tcsv5+!@%8^szyIE8rAf=b@9|L zGmcBQ&MRd&q1KL)2x`7g5vi|Rwna}Saz#0dA{D%FKJN$<&Dq#Euq5~a=_Cff8|GN# zXlkmrE54DsfPI0cY&?=@6Q^a{Z3*9Fx3B!Ap=8p4?X7{}_Py3#q#Aw0L>bL06^_H4 z=6+N~g&S}&Zr-EOJv6ZE_VzX#mJT8w)hVjsHJMBop;e=lGE1LeVm|)tbT%Y7_{(x} z|LhI$-Girx6wDXX^&LXA=>1s(w>#soiU3sH{^6#b^~i%g@!oh-k!Mu59~o6zBP%LK zK&pq$kQ$Tog8o>n%a!HUdo+1@dG^(_mvH#*XCEGb1_2>&!td!i37QNC|C-ps`@tjRy_~!a#_iV(iK%)2; z%Mugrg7W$4Iwt4q^`zn?PWw$Kl@L>7Yo=dOcN;B(?t_QAR2e30qn+ z%>qpnsl`45+)ANmB7NSR82JP$st6VM!jkKHI%`*bB4dzXaV}xoQ=R_VwEKu6Q3A%tD3`N_GI2@9y;>riw^}LQC}LGPf-{wnjWaa zP%-)12ZkQK1n36TAXjy0=Z|GtoF&V1nGG0^e=O||wKZ>0>11+(yM^CDaFxiL9n>ot z%N>_rR31xZT2vZkK_$2jN=iyHA-`PoYNebE!jv{^WYlody|~4p8Lq8{g?M(eZ4F1W zzF*m|)sCxiXqKWc>)w0G$%)ZAkm48ga7b1ZIsvQ3eSLMB;nfa}MpEobxZl%b4UC;m zO}&+PkA8oW)R<481mT%%U~uvnlE}-*tg&1Dr|M1M=)!y{L*D$C3jRANE%a`SCKGvO zxJo4jxsgOB8DJF-)k20m9TONqpk-=4`&cBgN-KTHn7v{*@l`&mvdz~Zzo4{gfaMDMH=NREmgBd1^q8+w9~rYt#2 zwe!(r%Kkeg*3zmSkW%?Bm-rzz^*HrrMer4l-yS^*^o$I0Mt-yyg@Eog5~K$-po4$N4Fr= zVQRZyh5NNF7EE7X-}?Xr@vAm8em6(aMFEe2yOr1#*WrRU#iySP43pOr3|zM6 z8}XQ0Z*9|Ux}$e2fR(a?FQm>t@9;_{GIYjLN)GCy5ufi)5fZ;7Kc1N|p=z?3cZjPn z=*P9+1p(ei=ec?tw&YF*m!fb$1I({(PH?!4n&BZ>4|4Mbl77sD9Ojk0l{X?vj`SIG zjgjc1qfI=bYP7H!A-az!&6A` zNN21cynzmhLlB4}v)D9%{}Bd>lD?)W2Ah(iob|N7S!ige6lKQMP{v5JhDudKO>Y{n zQznA9K)n9r#3l778_cS7RO=r)*~9BTcA-e6oCsD~LPm7Y;uD=X7p(nmNzNSXxi;8A zS{(v7I5?P$l>uSE0L@RIoHOXeg3$AmS@`%g(xR32mF>`-+ERYS=v-)srkoK1Xvofe zzkd9)^zlPi+lpwG4iAH-r&X^IMRW3iPb~QO*J`kH$l8;wN8dU4B2*8{cj6)s3VxHk9AZ?LOa+gwkFp0)h-&|DPO6%OVc^&?rJ32cDQe4FnQavD8$6ZN_OW6pX z6Ys#*7SLh9g7;T(YCS0OGvh#u-H4-CVEh)?9MzhSINC1f?8XU{Xe(R05nlpDMp#^~N5VUT>g)@P1A?|6!h?@wsigb1#&7@xQO{Ey6)De_l1ImV{~ zdH?wIk22R!yDUTOL&EQ>JBE|Alu^6rEelrtWVA+R?o87i!Mo`Hgn$PN&CYnKXKHGy z6ePfgvMBXH!d+j_wYgVC@nnUOEM)L%J&Aj|*{B>ruOlYCu68IoOZE<>L>UlZ1a_o4 zvfCzQYNy2X9Les~a$1afzUYNP47uLS>_*fdX4QKHxUhXmRRT~F(N|F>VZl)?RhHOU zI@k!sp;uWBB(w~SveLlDOL)Oc-9zLgqF?>ZKv;O+`g^|064*p1^=RA@xlXD{srU^V zAr)B;xdNjJCx^vs=!Kp<)zh`!Y!M}F%hpxqt0}P6%l<~R0?*@ogdh${v-)RTFB1Ye zzTX-2tB5t$p^M25ew$_yvEE4OEQaT_+qexC&2)ZlvBv&^f~-=T-)*_$7%zEhLRRoD z+yQg?AG%M~Ke#)JaC7Tb@umslOACw34Z`viyRlHg+IdfEXuYJ(yqxg>n)QTX z&eFAeGCQ{W8F|%AiN6xfumqHQ$u3lAvC?w8W7c%Fa*BB$5^F)JMOj`>YIH||Q(gly zCNlIDEVH~?CADhn!eV+oSuFp}S+3(lT$ zSik6C-EWS2!M(x3JFmJbWXd!y54h~s@ENqZh7r&bnRP<=k=>+($QT*n!8Mj|bs=KN zgLPmu1A6k@1a;4Qml}lEHOWWAh^tiDqQfL3xEiwyTMKRn-_ERBMf7Y!W-cKSj#< z(SHvK`OpI%36^$Q>)}q!?JUU%wFO4b+l`8<_we72z*E8Gd!1Z| zAQGh*c7)w9KOX$eWt;?GnQE0IKq+1QQM|$DFHf$<_nmY*{80y)fVM*soSIR4r3~)J z0f2RoFJjnJLM*e{_(=iu-HO1uN9aVss7yETh8}{%KJCxAXePfvlkkj9%}o^Eis9km z4Dw&zN}LEhA$X0snQnmEKGXem#Jt?iY%V@tDX*X)B}n;;w1@(<#5+>s4pMG_R!;gV z$FOYH6R-wv4h{~I`L<0J19kzmi|;zh0LJ?Z1cG7?lz`7lN~#o-5tUL~5*b6>RzyQY z0#bBTh-v%RNWT^lY2*~474K9M_kRMoUw|7|jF5}Vb7;GZlEYh^kv5;ZwUrg$$HMEYRB7oZV2-v-{Ducb>wY=g?8F`>eu9X5G`L!>ks;ww0(~UB>BH-7aO!XkS5+ zbdCl&p>t~+50g{eE=k!Ebb!*M{bRG+VMR4B0-2ib8^kfi2y{W?LjKD1E=N9Y)>AqM zY^MdD_eDxv&jYuTjqSp}2Ps4+WqeHBCdE-8eou|YYOz=Wo)i3Pg@?W;S*&RB{<2)r zQ-%%%kWP5frRQSLW}5?OK~HmuUV0aMJt`N=?hqQ*88KEo&^ZqeRqH%<@LVL183T#e z-m@Za;4>YM9KfKrn&1#LJGNkYuuEF+;&Nh?A2Sa2=}N0mY~ zAkQyyV4PNn7^b2!+{db~ENJg63Qx6@7-!JTG%@I?y^ga|!`g0cWC#9W^aO{FmX`e# zgL0p>R&)>QCf);}gKbrTpF--Ig0s9*^+4j~uG@c97!}*8czFp0?~jO;gsB0+`hw@t zPotGRP|#2lriQ?VqwVlDn-l6*9h6DSAPvio-e=^{Jl61P)$o1L}U`Lrui%iFK=H9@(5n2!6uogr***{Eek^s-pk{Pj8)t8tGu|#{q5}# zK?#j2$FazRdOYp+nn5$`Ug4xBqf8H26-@zo_4}^g#PomKBT+cOnpa2UJ!wuZJ6F_i zGlp&Am?P29*)!B*FupkWTN6c!5xJu;0&8B4Ild)Ph{*SVJiUTIK9uL`rN+l&7m3AE z>eu!10G?4Yrn0%~O4rxBynatNHqN@np=GEdLHH8P(_s1j{iBo9Q|ZS&ot;?i?d=5~ z(--@^#cvoBsG7!eL@40k;Q@MsHzwQLy|FLC11ZmX78gl#a&k6Q(TTWTkl}08y?Myz zU@9YT%6l1hAgS?Uo4Y!;Mxu<;Fw2t7 zxReyVj`s~R;RsRo?)1|+WG}U-`N_5D#)vrDlXa2xjS3X92ZT*?UephTO>(s8u01(DLOK81^TdmGCBz#&2kCca_L(QQd0k*fUri41a)m>WJFSta$a_nJUc2&PH(g!t+XWzJE7p$g1K*BNgS4q>@$nel+lDfM z#T&Pxat!ccp@ET>?TAqPLand7y3XUrvHMWix4tkcUV^y2tE7Xfb~3l+eB(NPdU1Tr z{-Nruc}m`}FIv$5DT{w$AsQhcMddaD?GYtv`D`DYl-U{!u#(7qfz26j znzB$~3mRdSj0YIRsnf%dWF6j!z!%A$5qzfs;ajMPa^f{>MVn8Q6cYF2Ab7>QATA<9 ziP^{VvYSA_44OyF4dRjCR900Dt{i*qEU_f%XEVsoZZAM^PaC%sALgG0#KHf!O1lj- zqs2ZHVkZAfhVy^DY@ia^ z?(Ask|MKYn`O+g_p|_zytZDz@h5p8*|M_9*>QL4ddb&DW{|?3cM~rK%3UzLQ9(D1* zwK4zcHW|h?m}o^oem<`MiXdzZZ7_130-6&4FEsxbVG40|VS03 zm)rj<{e-GnZ6KcA?*-o{j$BS%Ig(tIPIhRhUggi974m>P0ZlYi6GD^6leOKnyse*C z9{2Upc_%uV7Vg<~z!&~lWtw+M80y@-*7s5GKlE$K`q}Tq$@&DL(k@g^Ng+_V_55X? zVPL66>20(?na84f&pq~jZFQCoq@_BOy?{v&^B72I)gQxCp@N!wuD-S`yv{ zfX9=_?&|IeOMp#j&xQWhYqOTSyBm-Vu zPwja{ceieDsLY7W>hCUihFwc9_oKu~!Lrpo6^Ux6W{V(gOMc4%3lDwnS&(||#p{gn zxVuAXk=@y>#yi*Z`Pv9e$haqQhFxh7h^GcX=vWJ?sHqT?ff!s|diCD}j`wOuAw1mb zh8hZ&vSyH3Fi30sn8?gc%hYS}c=o(p-@buM^!sq?dL;}b_Kr=~`GD0))%Nh_N_1@%WimBU! z#iWFY&|h$oT2^S$GOE|D{C-il1Q)Uawr_!|YX+t0Kl2>FxQtX)q1Nqf^2M_W(i(WP zkDBOz+MZVVY|QQFh+mAiLzK7$IXUrwsOG590VW}TnnCL^gtPt^-1Pyyf||Btk;_W6 zEbu~wV^v-HzcH_ECN$ZLHxtZmC#YG4%W=bs1yChiQi8iNTvI}tSVPkHa;=d-m4adC zevR}a`{MH+HTeMv=w)YmmRPtMS~~CKDsaeW_V1SE*HqjeYVEW7%(xxz<@@WUQ z%hLz@Vhz!$}b`qMU|VnG)Z zz@NiM{MSqUh7LkLSQKq#s??7YJO6TGM{ZC@bJOfQm-%1$LTY*Fs^fx(wG@A$**`AP zP>pjC70rEc@CX7|{=`(q0zSC6nM!vpW^5WqAsmY(0d7A5^1n3g!)@jayu>N$6&_C6$2o+HU`3s$qk6--!HnjwlyI7R{ zHov9hB4e8jeQR1Y{EuH2QbYkBaTefux=LS5EUEr{t3s$)_HJill05yL6aGuOy%kZu zGGr(UF#e6%VIFy3(fzw2_@AIhNFM?C7X9zIVaflG^)JVDi2T+#n!~9Z`*h)6ng03o z!e_?IR#NP;QHO0Zrwyw`Y#XFl$2_k^$PpqjQYANrp+wIM_Kx8*-- ztNYuB&>~EmZAM{w8u^ax~6NJbSRAIk76VnX% z@qkp(?0{MrGup#?CMG81$xv~?#&!OZ_75FvQ$v_bUl(#F`rWf&5Q&i4F4uXRb+>j- zz?bSad6)?a=Q=$6pt_#fg&4HWKkXhX>K3@u$}7xx!;kNNK4Yh_pq!$>@X?qonq?WLa-~~e`nB^udYsb_#co4}N~UcGbwJQ>)1E{)Uj!BG>@x}) z3du5JV=*bHN#7X0FVI}8Zl&0CW==>DeM&?WJ~ATb?CQ$(1h&4ft2s9IHAP_|IX^i( z;x!@-Bco4HA+@`Q`_k@i5IXV8Y&@nYBJLGu(R9fl>M=w%l5Qn6=-yp;Qv@yK>Fv)} zPeZq(K^r_+j7NmNy>$|D39xIaZRmsC=ZF-ENlU-e(~EIWd@S4($@0b8cXe|3EmLg4 zn0eKsbV3wv&eQ(*#viedk1GN`Ofgbm)$dFg?B-K0M})%dNJVCQ99-Ow7kfG^`rQn5 z^^G|SbPzVS^>xy2Mz3^#o7Ev`Cqbbmu%x~v&=my*rNZSDw^Y6Qkr~MHo2*?T8KVt9 zj}vL=DEXsYyG^ce0&XIHSNkNES+1^t*1(~Z{y+Gg4uTuJ?w%MJfv$3YrV4|(`HZI} z>o_3>;=ZF29J-@R2g9xJ{jLPZVxba8$CH~_@D_;8+H}+UK5AqTsS}Eq8&QG z|6*Ois}Ya8Obh9?^*hU!&XGuMA$l5`SM6CUI&N5kL${B7$h1aSc%Iz3-oZY9u6A{a zv~vp>x7<8_UDBv`M~ZL-$h)I6RNx z!2xJ{CIHVJ+(pi;Ux-|REomT#f&7(gH$EdF!UF8{a(#&a8xJS*taBn-R!!|WW*laP z%Q$Y4cdI7PH4! zwf5t#wrszlgIqQ;VsWccnN#ZhV&yJT(ZTx%=qVDEXr3(=gS898{7ygwTfW_Ueb>q3 z_=Kb!ea&!p-UTgC5%;He?+|gBwF5UZy^zJfZ$o?4-0efd-c6NhJ;lfOJ_FjHZD)7` zz>Z|poEYT84bM+EZwZakS+L8>${a4$?3@LDcp@nF_~NN=dO*y%cpsVhk+u1nW3*_y zYa15xGqHgCW6gQZr`Yx^4fY{HNx)5e5U#H4&W-0GHH5oe!1$B0Oyi#77#^nG}k^MUm9!|-Qee)`gJ z?DsdkItmJ=biUh*@(T+K(mbAuMC3hObZsyr@~HooAN&ad{;*8xa!XqQy&K$h&}jUt z!Ko$CY!l5((2MV?jsNk{WhV=dPs)bP9w zX{x+{VVjfmR4#he3hN(kD2A-tU8h zU4xv9J|aci&g=O`BZace;|g`O9j-i{+S(+EOj?$XNzw9(;fJ5n z8CR^$tFzU=6&+FhvhIIe`Xtimwiqph>u^jx9bWMNV4dJ~6d4{Ktt*?4{IGQ!=()Fl z-jU+z=DFU-UVx}7Z^QBk;~)y!>Fn=}{9sH8hxV|AO*Ds&A$SV|-Io(OqH6_hXJCwt zjok}c_4pyJ*0``9f~MVH;wrq`jw>p_jSY;DvNxO&(;d{Y6e5RAeQ#Y!+d3qYIaA=$A$^sIpNOUVTI;DnCRnKEyeww1kX;5?hngyq3N?D6kJs-M%)T10rhFT8gTvaerP<7mdVM z-fRNgZ3o=(T{p3sfrbqeGa>%StMbs?y9L-$_u(F1Ol;aOG6RzHZDD>%iD?29uq%>45rn-kk8EO=y>TYfm#zC{gfrR%^TKZkOv2Ipt#&M zI8##F6Bc@$<{sEd2o5Po&iU$*uK8Gk3_71cEB zysUHB%1?N*O=s0*k@uaLM zQPMj>^zpQH0!wAnfzukCeJ)!X?_%`d3PCd_yw z^Me63vx}cCwpJ39iAKT_S-oy?gne3qL&HR&Z7S=Z)ii>9NSdEc)#{L%&jQupgj%MX z40vzO!BH2OFhAX`3`O>#=-^SNedSQyM$x3Z{pTogX0G9D2NGNcRp{2)3$k~!Gi#fq ziN$QuLXrrH_QBuYVKK46CcO(wTJei&>0ZpL>p?ItMICE6fVOxX?>kkEl&CnFY(D=4 zCv?$M2AT1C@hl9FIi`lApHeK|{0%RnZ3S=JqKYr$vTCzogwlRmxc@w|^G*Gf^-waa zRCK;%6M}c~qj8(cN;}G{D&cN5DxZ{QvEkk~kqF+4uWR4IojwJO7~ zWdbOcdiknN#aF>VwaSp#@nG8Iz$|U-=tvF=rc%)JZjaS&BTC`Ux*GW~FE1}wD6