-
Notifications
You must be signed in to change notification settings - Fork 8.5k
Drilldown demo 2 #64300
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
Merged
Merged
Drilldown demo 2 #64300
Changes from all commits
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
c68a846
chore: 🤖 add example of Discover drilldown to sample plugin
streamich 9659d34
fix: 🐛 show drilldowns with higher "order" first
streamich 5ada60f
feat: 🎸 add createStartServicesGetter() to /public kibana_util
streamich aa103a1
feat: 🎸 load index patterns in Discover drilldown
streamich 4adecf0
feat: 🎸 add toggle for index pattern selection
streamich f8006ae
feat: 🎸 add spacer to separate unrelated config fields
streamich c894caa
fix: 🐛 correctly configre setup core
streamich ab3deb7
feat: 🎸 navigate to correct index pattern
streamich 8f72315
chore: 🤖 fix type check errors
streamich fd96937
fix: 🐛 make index pattern select full width
streamich b20fd1e
fix: 🐛 add getHref support
streamich 418cab9
feat: 🎸 add example plugin ability to X-Pack
streamich fcd796a
chore: 🤖 catch up with master
streamich 0f6cee2
refactor: 💡 move Discover drilldown example to X-Pack
streamich 7f5b00e
feat: 🎸 add dashboard-to-url drilldown example
streamich c337006
feat: 🎸 add new tab support for URL drilldown
streamich 2860aa6
feat: 🎸 add "hello world" drilldown example
streamich b6e8e51
docs: ✏️ add README
streamich ddd9eb4
feat: 🎸 add getHref support
streamich 7b1a88e
Merge branch 'drilldowns' into drilldown-demo-2
elasticmachine 73c12d4
chore: 🤖 cleanup after moving examples to X-Pack
streamich 66a680b
Merge branch 'drilldowns' into drilldown-demo-2
elasticmachine 84faa0e
docs: ✏️ add to README.md info on how to find drilldowns
streamich 076f2d7
Merge branch 'drilldowns' into drilldown-demo-2
elasticmachine 1e2435b
Merge branch 'drilldowns' into drilldown-demo-2
elasticmachine File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,36 @@ | ||
| ## Ui actions enhanced examples | ||
| # Ui actions enhanced examples | ||
|
|
||
| To run this example, use the command `yarn start --run-examples`. | ||
| To run this example plugin, use the command `yarn start --run-examples`. | ||
|
|
||
|
|
||
| ## Drilldown examples | ||
|
|
||
| This plugin holds few examples on how to add drilldown types to dashboard. | ||
|
|
||
| To play with drilldowns, open any dashboard, click "Edit" to put it in *edit mode*. | ||
| Now when opening context menu of dashboard panels you should see "Create drilldown" option. | ||
|
|
||
|  | ||
|
|
||
| Once you click "Create drilldown" you should be able to see drilldowns added by | ||
| this sample plugin. | ||
|
|
||
|  | ||
|
|
||
|
|
||
| ### `dashboard_hello_world_drilldown` | ||
|
|
||
| `dashboard_hello_world_drilldown` is the most basic "hello world" example showing | ||
| how a drilldown can be built, all in one file. | ||
|
|
||
| ### `dashboard_to_url_drilldown` | ||
|
|
||
| `dashboard_to_url_drilldown` is a good starting point for build a drilldown | ||
| that navigates somewhere externally. | ||
|
|
||
| One can see how middle-click or Ctrl + click behavior could be supported using | ||
| `getHref` field. | ||
|
|
||
| ### `dashboard_to_discover_drilldown` | ||
|
|
||
| `dashboard_to_discover_drilldown` shows how a real-world drilldown could look like. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
...s/ui_actions_enhanced_examples/public/dashboard_hello_world_drilldown/README.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| This folder contains a one-file example of the most basic drilldown implementation. |
62 changes: 62 additions & 0 deletions
62
...ck/examples/ui_actions_enhanced_examples/public/dashboard_hello_world_drilldown/index.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| /* | ||
| * 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 React from 'react'; | ||
| import { EuiFormRow, EuiFieldText } from '@elastic/eui'; | ||
| import { reactToUiComponent } from '../../../../../src/plugins/kibana_react/public'; | ||
| import { DrilldownDefinition as Drilldown } from '../../../../plugins/drilldowns/public'; | ||
| import { | ||
| EmbeddableContext, | ||
| RangeSelectTriggerContext, | ||
| ValueClickTriggerContext, | ||
| } from '../../../../../src/plugins/embeddable/public'; | ||
| import { UiActionsCollectConfigProps } from '../../../../../src/plugins/ui_actions/public'; | ||
|
|
||
| export type ActionContext = RangeSelectTriggerContext | ValueClickTriggerContext; | ||
|
|
||
| export interface Config { | ||
| name: string; | ||
| } | ||
|
|
||
| const SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN = 'SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN'; | ||
|
|
||
| export class DashboardHelloWorldDrilldown | ||
| implements Drilldown<Config, EmbeddableContext, ActionContext> { | ||
| public readonly id = SAMPLE_DASHBOARD_HELLO_WORLD_DRILLDOWN; | ||
|
|
||
| public readonly order = 6; | ||
|
|
||
| public readonly getDisplayName = () => 'Say hello drilldown'; | ||
|
|
||
| public readonly euiIcon = 'cheer'; | ||
|
|
||
| private readonly ReactCollectConfig: React.FC<UiActionsCollectConfigProps<Config>> = ({ | ||
| config, | ||
| onConfig, | ||
| }) => ( | ||
| <EuiFormRow label="Enter your name" fullWidth> | ||
| <EuiFieldText | ||
| fullWidth | ||
| value={config.name} | ||
| onChange={event => onConfig({ ...config, name: event.target.value })} | ||
| /> | ||
| </EuiFormRow> | ||
| ); | ||
|
|
||
| public readonly CollectConfig = reactToUiComponent(this.ReactCollectConfig); | ||
|
|
||
| public readonly createConfig = () => ({ | ||
| name: '', | ||
| }); | ||
|
|
||
| public readonly isConfigValid = (config: Config): config is Config => { | ||
| return !!config.name; | ||
| }; | ||
|
|
||
| public readonly execute = async (config: Config, context: ActionContext) => { | ||
| alert(`Hello, ${config.name}`); | ||
| }; | ||
| } |
71 changes: 71 additions & 0 deletions
71
...ons_enhanced_examples/public/dashboard_to_discover_drilldown/collect_config_container.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| /* | ||
| * 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 React, { useState, useEffect } from 'react'; | ||
| import useMountedState from 'react-use/lib/useMountedState'; | ||
| import { CollectConfigProps } from './types'; | ||
| import { DiscoverDrilldownConfig, IndexPatternItem } from './components/discover_drilldown_config'; | ||
| import { Params } from './drilldown'; | ||
|
|
||
| export interface CollectConfigContainerProps extends CollectConfigProps { | ||
| params: Params; | ||
| } | ||
|
|
||
| export const CollectConfigContainer: React.FC<CollectConfigContainerProps> = ({ | ||
| config, | ||
| onConfig, | ||
| params: { start }, | ||
| }) => { | ||
| const isMounted = useMountedState(); | ||
| const [indexPatterns, setIndexPatterns] = useState<IndexPatternItem[]>([]); | ||
|
|
||
| useEffect(() => { | ||
| (async () => { | ||
| const indexPatternSavedObjects = await start().plugins.data.indexPatterns.getCache(); | ||
| if (!isMounted()) return; | ||
| setIndexPatterns( | ||
| indexPatternSavedObjects | ||
| ? indexPatternSavedObjects.map(indexPattern => ({ | ||
| id: indexPattern.id, | ||
| title: indexPattern.attributes.title, | ||
| })) | ||
| : [] | ||
| ); | ||
| })(); | ||
| }, [isMounted, start]); | ||
|
|
||
| return ( | ||
| <DiscoverDrilldownConfig | ||
| activeIndexPatternId={config.indexPatternId} | ||
| indexPatterns={indexPatterns} | ||
| onIndexPatternSelect={indexPatternId => { | ||
| onConfig({ ...config, indexPatternId }); | ||
| }} | ||
| customIndexPattern={config.customIndexPattern} | ||
| onCustomIndexPatternToggle={() => | ||
| onConfig({ | ||
| ...config, | ||
| customIndexPattern: !config.customIndexPattern, | ||
| indexPatternId: undefined, | ||
| }) | ||
| } | ||
| carryFiltersAndQuery={config.carryFiltersAndQuery} | ||
| onCarryFiltersAndQueryToggle={() => | ||
| onConfig({ | ||
| ...config, | ||
| carryFiltersAndQuery: !config.carryFiltersAndQuery, | ||
| }) | ||
| } | ||
| carryTimeRange={config.carryTimeRange} | ||
| onCarryTimeRangeToggle={() => | ||
| onConfig({ | ||
| ...config, | ||
| carryTimeRange: !config.carryTimeRange, | ||
| }) | ||
| } | ||
| /> | ||
| ); | ||
| }; |
92 changes: 92 additions & 0 deletions
92
..._to_discover_drilldown/components/discover_drilldown_config/discover_drilldown_config.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,92 @@ | ||
| /* | ||
| * 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 React from 'react'; | ||
| import { EuiFormRow, EuiSelect, EuiSwitch, EuiSpacer } from '@elastic/eui'; | ||
| import { txtChooseDestinationIndexPattern } from './i18n'; | ||
|
|
||
| export interface IndexPatternItem { | ||
| id: string; | ||
| title: string; | ||
| } | ||
|
|
||
| export interface DiscoverDrilldownConfigProps { | ||
| activeIndexPatternId?: string; | ||
| indexPatterns: IndexPatternItem[]; | ||
| onIndexPatternSelect: (indexPatternId: string) => void; | ||
| customIndexPattern?: boolean; | ||
| onCustomIndexPatternToggle?: () => void; | ||
| carryFiltersAndQuery?: boolean; | ||
| onCarryFiltersAndQueryToggle?: () => void; | ||
| carryTimeRange?: boolean; | ||
| onCarryTimeRangeToggle?: () => void; | ||
| } | ||
|
|
||
| export const DiscoverDrilldownConfig: React.FC<DiscoverDrilldownConfigProps> = ({ | ||
| activeIndexPatternId, | ||
| indexPatterns, | ||
| onIndexPatternSelect, | ||
| customIndexPattern, | ||
| onCustomIndexPatternToggle, | ||
| carryFiltersAndQuery, | ||
| onCarryFiltersAndQueryToggle, | ||
| carryTimeRange, | ||
| onCarryTimeRangeToggle, | ||
| }) => { | ||
| return ( | ||
| <> | ||
| {!!onCustomIndexPatternToggle && ( | ||
| <> | ||
| <EuiFormRow hasChildLabel={false}> | ||
| <EuiSwitch | ||
| name="customIndexPattern" | ||
| label="Use custom index pattern" | ||
| checked={!!customIndexPattern} | ||
| onChange={onCustomIndexPatternToggle} | ||
| /> | ||
| </EuiFormRow> | ||
| {!!customIndexPattern && ( | ||
| <EuiFormRow fullWidth label={txtChooseDestinationIndexPattern}> | ||
| <EuiSelect | ||
| name="selectDashboard" | ||
| hasNoInitialSelection={true} | ||
| fullWidth | ||
| options={[ | ||
| { id: '', text: 'Pick one...' }, | ||
| ...indexPatterns.map(({ id, title }) => ({ value: id, text: title })), | ||
| ]} | ||
| value={activeIndexPatternId || ''} | ||
| onChange={e => onIndexPatternSelect(e.target.value)} | ||
| /> | ||
| </EuiFormRow> | ||
| )} | ||
| <EuiSpacer size="xl" /> | ||
| </> | ||
| )} | ||
|
|
||
| {!!onCarryFiltersAndQueryToggle && ( | ||
| <EuiFormRow hasChildLabel={false}> | ||
| <EuiSwitch | ||
| name="carryFiltersAndQuery" | ||
| label="Carry over filters and query" | ||
| checked={!!carryFiltersAndQuery} | ||
| onChange={onCarryFiltersAndQueryToggle} | ||
| /> | ||
| </EuiFormRow> | ||
| )} | ||
| {!!onCarryTimeRangeToggle && ( | ||
| <EuiFormRow hasChildLabel={false}> | ||
| <EuiSwitch | ||
| name="carryTimeRange" | ||
| label="Carry over time range" | ||
| checked={!!carryTimeRange} | ||
| onChange={onCarryTimeRangeToggle} | ||
| /> | ||
| </EuiFormRow> | ||
| )} | ||
| </> | ||
| ); | ||
| }; |
14 changes: 14 additions & 0 deletions
14
...mples/public/dashboard_to_discover_drilldown/components/discover_drilldown_config/i18n.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 { i18n } from '@kbn/i18n'; | ||
|
|
||
| export const txtChooseDestinationIndexPattern = i18n.translate( | ||
| 'xpack.uiActionsEnhanced.components.DiscoverDrilldownConfig.chooseIndexPattern', | ||
| { | ||
| defaultMessage: 'Choose destination index pattern', | ||
| } | ||
| ); |
7 changes: 7 additions & 0 deletions
7
...ples/public/dashboard_to_discover_drilldown/components/discover_drilldown_config/index.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| /* | ||
| * 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. | ||
| */ | ||
|
|
||
| export * from './discover_drilldown_config'; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.