diff --git a/config/serverless.oblt.logs_essentials.yml b/config/serverless.oblt.logs_essentials.yml index 35abf909523b0..e9f358a34ce97 100644 --- a/config/serverless.oblt.logs_essentials.yml +++ b/config/serverless.oblt.logs_essentials.yml @@ -10,6 +10,7 @@ xpack.apm.enabled: false xpack.legacy_uptime.enabled: false xpack.ux.enabled: false xpack.uptime.enabled: false +xpack.exploratoryView.enabled: false xpack.fleet.internal.registry.excludePackages: [ # Oblt integrations diff --git a/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc index e229b40c698c9..a90abbfe752ab 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc @@ -9,10 +9,10 @@ "plugin": { "id": "exploratoryView", "browser": true, - "server": false, + "server": true, "configPath": [ "xpack", - "exploratory_view" + "exploratoryView" ], "requiredPlugins": [ "alerting", @@ -52,4 +52,4 @@ "common" ] } -} \ No newline at end of file +} diff --git a/x-pack/solutions/observability/plugins/exploratory_view/server/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/server/index.ts new file mode 100644 index 0000000000000..142cef72ee8b9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/server/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { type PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { schema } from '@kbn/config-schema'; + +export const plugin = async (initializerContext: PluginInitializerContext) => { + const { Plugin } = await import('./plugin'); + return new Plugin(); +}; + +export const config: PluginConfigDescriptor = { + schema: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }), +}; diff --git a/x-pack/solutions/observability/plugins/exploratory_view/server/plugin.ts b/x-pack/solutions/observability/plugins/exploratory_view/server/plugin.ts new file mode 100644 index 0000000000000..525136df3fbce --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/server/plugin.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { CoreStart, CoreSetup, Plugin as PluginType } from '@kbn/core/server'; + +export class Plugin implements PluginType { + constructor() {} + + public setup(core: CoreSetup, plugins: {}) { + return {}; + } + + public start(coreStart: CoreStart, pluginsStart: {}) {} + + public stop() {} +} diff --git a/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json index cfe8deebbcc50..f0df3b1385d0c 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json +++ b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "outDir": "target/types" }, - "include": ["common/**/*", "public/**/*", "public/**/*.json", "../../../../../typings/**/*"], + "include": ["common/**/*", "public/**/*", "server/**/*", "public/**/*.json", "../../../../../typings/**/*"], "kbn_references": [ "@kbn/core", "@kbn/data-plugin", @@ -44,7 +44,8 @@ "@kbn/react-kibana-mount", "@kbn/core-analytics-browser", "@kbn/expressions-plugin", - "@kbn/ebt-tools" + "@kbn/ebt-tools", + "@kbn/config-schema" ], "exclude": ["target/**/*"] } diff --git a/x-pack/solutions/observability/plugins/observability/kibana.jsonc b/x-pack/solutions/observability/plugins/observability/kibana.jsonc index 494e2a77b7b65..7039ea5b3b5f4 100644 --- a/x-pack/solutions/observability/plugins/observability/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/observability/kibana.jsonc @@ -28,7 +28,6 @@ "fieldFormats", "uiActions", "presentationUtil", - "exploratoryView", "features", "files", "inspector", @@ -50,6 +49,7 @@ ], "optionalPlugins": [ "discover", + "exploratoryView", "home", "usageCollection", "cloud", diff --git a/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx index 56751cdcb6937..6eca5b4d17e01 100644 --- a/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx @@ -29,8 +29,6 @@ export function UXSection({ bucketSize }: Props) { const { forceUpdate, hasDataMap } = useHasData(); const { services } = useKibana(); - const { ExploratoryViewEmbeddable } = services.exploratoryView; - const { relativeStart, relativeEnd, absoluteStart, absoluteEnd, lastUpdated } = useDatePickerContext(); const uxHasDataResponse = hasDataMap.ux; @@ -79,9 +77,10 @@ export function UXSection({ bucketSize }: Props) { ] ); - if (!uxHasDataResponse?.hasData) { + if (!uxHasDataResponse?.hasData || !services.exploratoryView) { return null; } + const ExploratoryViewEmbeddable = services.exploratoryView.ExploratoryViewEmbeddable; const isLoading = status === FETCH_STATUS.LOADING; diff --git a/x-pack/solutions/observability/plugins/observability/public/plugin.ts b/x-pack/solutions/observability/plugins/observability/public/plugin.ts index 5ef2bc717498f..77843233799ab 100644 --- a/x-pack/solutions/observability/plugins/observability/public/plugin.ts +++ b/x-pack/solutions/observability/plugins/observability/public/plugin.ts @@ -144,7 +144,7 @@ export interface ObservabilityPublicPluginsStart { dataViewEditor: DataViewEditorStart; discover: DiscoverStart; embeddable: EmbeddableStart; - exploratoryView: ExploratoryViewPublicStart; + exploratoryView?: ExploratoryViewPublicStart; fieldFormats: FieldFormatsStart; guidedOnboarding?: GuidedOnboardingPluginStart; lens: LensPublicStart;