Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[UnifiedDocViewer] Move Discover doc viewer into plugin/package #162847

Merged
merged 80 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
7a2a503
Move doc viewer into plugin/package
lukasolson Jul 31, 2023
a07ca98
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Jul 31, 2023
b8b65c2
[CI] Auto-commit changed files from 'node scripts/generate codeowners'
kibanamachine Jul 31, 2023
1f4fbc1
[CI] Auto-commit changed files from 'node scripts/build_plugin_list_d…
kibanamachine Jul 31, 2023
5275b6b
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 2, 2023
372d724
Fix build errors
lukasolson Aug 2, 2023
de505d2
Merge remote-tracking branch 'origin/pkg/unified-doc-viewer' into pkg…
lukasolson Aug 2, 2023
9b49d8c
Update limits.yml
lukasolson Aug 2, 2023
17c4a78
Fix 18n
lukasolson Aug 3, 2023
93f5bcf
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 3, 2023
e603b88
Fix tests
lukasolson Aug 3, 2023
a4f5c41
[CI] Auto-commit changed files from 'node scripts/eslint --no-cache -…
kibanamachine Aug 3, 2023
cf5682f
Fix translations
lukasolson Aug 3, 2023
8065393
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 3, 2023
f04eac9
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 3, 2023
46fb835
Fix another translation
lukasolson Aug 3, 2023
b5a87cb
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 4, 2023
95d5424
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 4, 2023
764b3ae
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 8, 2023
34911d8
Add examples app
lukasolson Aug 8, 2023
b81d2fd
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 8, 2023
dce729e
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Aug 8, 2023
257287c
[CI] Auto-commit changed files from 'node scripts/generate codeowners'
kibanamachine Aug 8, 2023
f535894
Fix build issues with examples plugin
lukasolson Aug 9, 2023
1a1a523
Merge remote-tracking branch 'origin/pkg/unified-doc-viewer' into pkg…
lukasolson Aug 9, 2023
5b2bdd4
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 9, 2023
b954057
Bundle size improvements
lukasolson Aug 10, 2023
70384dd
Move fieldname component to package
lukasolson Aug 12, 2023
3b18b3c
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Aug 12, 2023
e24da75
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 14, 2023
e2a454e
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 14, 2023
69e609d
Fix build errors
lukasolson Aug 14, 2023
688c91c
Fix build
lukasolson Aug 14, 2023
90f0b77
Build issues
lukasolson Aug 14, 2023
8e3fea6
Fix build issues
lukasolson Aug 14, 2023
badf0e4
Fix more build issues
lukasolson Aug 14, 2023
24a9930
Move translation namespace
lukasolson Aug 14, 2023
bc620b0
Fix translation
lukasolson Aug 14, 2023
8c5b0dd
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 15, 2023
0ff1dcb
Merge branch 'main' into pkg/unified-doc-viewer
kibanamachine Aug 16, 2023
b540828
Merge branch 'main' into pkg/unified-doc-viewer
shahzad31 Aug 16, 2023
77ec259
Merge branch 'main' into pkg/unified-doc-viewer
shahzad31 Aug 16, 2023
1af8b59
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 16, 2023
33e7c44
Bundle size improvements
lukasolson Aug 16, 2023
21ba039
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 16, 2023
d2cbce9
Update snapshot
lukasolson Aug 16, 2023
d3dc5f7
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 17, 2023
8ea96b4
Actual bundle size improvements
lukasolson Aug 18, 2023
ff75f32
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Aug 18, 2023
c4b9392
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 21, 2023
38b6fda
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 21, 2023
4fa4a04
Export props type
lukasolson Aug 21, 2023
8139387
Update Jest snapshot
lukasolson Aug 21, 2023
9cd6ed7
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 21, 2023
05bd2c3
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 23, 2023
649380f
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 23, 2023
948fcb8
Use withSuspense
lukasolson Aug 23, 2023
76e0ac8
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 24, 2023
0823096
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 25, 2023
5209511
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 25, 2023
921af0e
Add unified doc viewer wrapper
lukasolson Aug 25, 2023
8ba0429
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Aug 25, 2023
e7432d8
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 28, 2023
04ed272
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 28, 2023
98ca7c0
Fix getServices
lukasolson Aug 28, 2023
3f548d6
Inject services into component
lukasolson Aug 28, 2023
694cece
Remove react dependency
lukasolson Aug 28, 2023
f9b141e
create mocks & fix tests
lukasolson Aug 29, 2023
9c3cd88
[CI] Auto-commit changed files from 'node scripts/lint_ts_projects --…
kibanamachine Aug 29, 2023
c0d2fe6
Move get/set to start
lukasolson Aug 29, 2023
ed1bd61
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 29, 2023
3c99e94
Page load size improvements
lukasolson Aug 29, 2023
48341b4
Remove deferred spinner
lukasolson Aug 29, 2023
47b67f7
Dedup DocProps and remove referrer
lukasolson Aug 29, 2023
f84929d
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 30, 2023
5335161
Remove unifiedDocViewer from discover services & remove DocViewer pro…
lukasolson Aug 30, 2023
5659b3a
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 30, 2023
e23a04f
Matthias feedback
lukasolson Aug 31, 2023
0de986a
Merge branch 'pkg/unified-doc-viewer' of github.com:lukasolson/kibana…
lukasolson Aug 31, 2023
ebfad2e
Merge branch 'main' into pkg/unified-doc-viewer
lukasolson Aug 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,9 @@ test/plugin_functional/plugins/ui_settings_plugin @elastic/kibana-core
packages/kbn-ui-shared-deps-npm @elastic/kibana-operations
packages/kbn-ui-shared-deps-src @elastic/kibana-operations
packages/kbn-ui-theme @elastic/kibana-operations
packages/kbn-unified-doc-viewer @elastic/kibana-data-discovery
examples/unified_doc_viewer @elastic/kibana-core
src/plugins/unified_doc_viewer @elastic/kibana-data-discovery
packages/kbn-unified-field-list @elastic/kibana-data-discovery
examples/unified_field_list_examples @elastic/kibana-data-discovery
src/plugins/unified_histogram @elastic/kibana-data-discovery
Expand Down
1 change: 1 addition & 0 deletions .i18nrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
"visTypeXy": "src/plugins/vis_types/xy",
"visualizations": "src/plugins/visualizations",
"visualizationUiComponents": "packages/kbn-visualization-ui-components",
"unifiedDocViewer": ["src/plugins/unified_doc_viewer", "packages/kbn-unified-doc-viewer"],
"unifiedSearch": "src/plugins/unified_search",
"unifiedFieldList": "packages/kbn-unified-field-list",
"unifiedHistogram": "src/plugins/unified_histogram"
Expand Down
4 changes: 4 additions & 0 deletions docs/developer/plugin-list.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,10 @@ In general this plugin provides:
|Registers commercially licensed generic actions like per panel time range and contains some code that supports drilldown work.


|{kib-repo}blob/{branch}/src/plugins/unified_doc_viewer/README.md[unifiedDocViewer]
|This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer).


|{kib-repo}blob/{branch}/src/plugins/unified_histogram/README.md[unifiedHistogram]
|Unified Histogram is a UX Building Block including a layout with a resizable histogram and a main display.
It manages its own state and data fetching, and can easily be dropped into pages with minimal setup.
Expand Down
3 changes: 3 additions & 0 deletions examples/unified_doc_viewer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## Unified Doc Viewer

An example plugin showing usage of the unified doc viewer plugin (plugins/unified_doc_viewer) and package (@kbn/unified-doc-viewer).
16 changes: 16 additions & 0 deletions examples/unified_doc_viewer/kibana.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"type": "plugin",
"id": "@kbn/unified-doc-viewer-examples",
"owner": "@elastic/kibana-core",
"description": "Examples showing usage of the unified doc viewer.",
"plugin": {
"id": "unifiedDocViewerExamples",
"server": false,
"browser": true,
"requiredPlugins": [
"data",
"developerExamples",
"unifiedDocViewer"
]
}
}
72 changes: 72 additions & 0 deletions examples/unified_doc_viewer/public/application.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

import React, { useEffect, useState } from 'react';
import ReactDOM from 'react-dom';
import type { AppMountParameters, CoreStart } from '@kbn/core/public';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import type { DataView } from '@kbn/data-views-plugin/common';
import { UnifiedDocViewer } from '@kbn/unified-doc-viewer-plugin/public';
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { StartDeps } from './plugin';

export const renderApp = (
core: CoreStart,
{ data }: StartDeps,
{ element }: AppMountParameters
) => {
ReactDOM.render(<UnifiedDocViewerExamplesApp data={data} />, element);

return () => {
ReactDOM.unmountComponentAtNode(element);
};
};

function UnifiedDocViewerExamplesApp({ data }: { data: DataPublicPluginStart }) {
const [dataView, setDataView] = useState<DataView | null>();
const [hit, setHit] = useState<DataTableRecord | null>();

useEffect(() => {
data.dataViews.getDefault().then((defaultDataView) => setDataView(defaultDataView));
}, [data]);

useEffect(() => {
const setDefaultHit = async () => {
if (!dataView?.id) return;
const response = await data.search
.search({
params: {
index: dataView?.getIndexPattern(),
body: {
fields: ['*'],
_source: false,
},
},
})
.toPromise();
const docs = response?.rawResponse?.hits?.hits ?? [];
if (docs.length > 0) {
const record = buildDataTableRecord(docs[0], dataView);
setHit(record);
}
};

setDefaultHit();
}, [data, dataView]);

return (
<>
{dataView?.id && hit ? (
<UnifiedDocViewer hit={hit} dataView={dataView} />
) : (
'Loading... (make sure you have a default data view and at least one matching document)'
)}
</>
);
}
12 changes: 12 additions & 0 deletions examples/unified_doc_viewer/public/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { UnifiedDocViewerExamplesPlugin } from './plugin';

export function plugin() {
return new UnifiedDocViewerExamplesPlugin();
}
49 changes: 49 additions & 0 deletions examples/unified_doc_viewer/public/plugin.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
import { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public';
import type { DataPublicPluginStart } from '@kbn/data-plugin/public';

export interface SetupDeps {
developerExamples: DeveloperExamplesSetup;
}

export interface StartDeps {
data: DataPublicPluginStart;
}

export class UnifiedDocViewerExamplesPlugin implements Plugin<void, void, SetupDeps, StartDeps> {
public setup(core: CoreSetup<StartDeps>, deps: SetupDeps) {
// Register an application into the side navigation menu
core.application.register({
id: 'unifiedDocViewer',
title: 'Unified Doc Viewer Examples',
async mount(params: AppMountParameters) {
// Load application bundle
const { renderApp } = await import('./application');
// Get start services as specified in kibana.json
const [coreStart, depsStart] = await core.getStartServices();
// Render the application
return renderApp(coreStart, depsStart, params);
},
});

// This section is only needed to get this example plugin to show up in our Developer Examples.
deps.developerExamples.register({
appId: 'unifiedDocViewer',
title: 'Unified Doc Viewer Examples',
description: 'Examples showcasing the unified doc viewer.',
});
}

public start(core: CoreStart) {
return {};
}

public stop() {}
}
24 changes: 24 additions & 0 deletions examples/unified_doc_viewer/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "target/types"
},
"include": [
"index.ts",
"common/**/*.ts",
"public/**/*.ts",
"public/**/*.tsx",
"../../typings/**/*"
],
"exclude": [
"target/**/*",
],
"kbn_references": [
"@kbn/core",
"@kbn/data-plugin",
"@kbn/data-views-plugin",
"@kbn/developer-examples-plugin",
"@kbn/discover-utils",
"@kbn/unified-doc-viewer-plugin",
]
}
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -742,6 +742,9 @@
"@kbn/ui-shared-deps-npm": "link:packages/kbn-ui-shared-deps-npm",
"@kbn/ui-shared-deps-src": "link:packages/kbn-ui-shared-deps-src",
"@kbn/ui-theme": "link:packages/kbn-ui-theme",
"@kbn/unified-doc-viewer": "link:packages/kbn-unified-doc-viewer",
"@kbn/unified-doc-viewer-examples": "link:examples/unified_doc_viewer",
"@kbn/unified-doc-viewer-plugin": "link:src/plugins/unified_doc_viewer",
"@kbn/unified-field-list": "link:packages/kbn-unified-field-list",
"@kbn/unified-field-list-examples-plugin": "link:examples/unified_field_list_examples",
"@kbn/unified-histogram-plugin": "link:src/plugins/unified_histogram",
Expand Down
4 changes: 4 additions & 0 deletions packages/kbn-discover-utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ export {
ENABLE_SQL,
FIELDS_LIMIT_SETTING,
HIDE_ANNOUNCEMENTS,
KNOWN_FIELD_TYPE_LIST,
KNOWN_FIELD_TYPES,
MAX_DOC_FIELDS_DISPLAYED,
MODIFY_COLUMNS_ON_SWITCH,
ROW_HEIGHT_OPTION,
Expand All @@ -34,8 +36,10 @@ export {
formatFieldValue,
formatHit,
getDocId,
getFieldTypeName,
getIgnoredReason,
getShouldShowFieldHandler,
isKnownFieldType,
isNestedFieldParent,
usePager,
} from './src';
2 changes: 1 addition & 1 deletion packages/kbn-discover-utils/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import type { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';

export type { IgnoredReason, ShouldShowFieldInTableHandler } from './utils';
export type { FieldTypeKnown, IgnoredReason, ShouldShowFieldInTableHandler } from './utils';

export interface EsHitRecord extends Omit<SearchHit, '_source'> {
_source?: Record<string, unknown>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
* Side Public License, v 1.
*/

import { FieldTypeKnown } from '../../types';
import type { DataViewField } from '@kbn/data-views-plugin/common';

export type FieldTypeKnown = Exclude<
DataViewField['timeSeriesMetric'] | DataViewField['type'],
undefined
>;

/**
* Field types for which name and description are defined
Expand Down
Loading