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

[Lens] Share link feature #148829

Merged
merged 17 commits into from
Jan 18, 2023
Merged

[Lens] Share link feature #148829

merged 17 commits into from
Jan 18, 2023

Conversation

dej611
Copy link
Contributor

@dej611 dej611 commented Jan 12, 2023

Summary

Fixes #75316

  • Lens
    • Refactored Top nav actions code to be more modular
    • Created new Locator object for Lens
      • Enabled server side to make Short URL work with it
      • Added unit tests for it
    • Extended getEditPath to support filters and refreshInterval
    • Extended mounting code in Lens to handle a new type of incoming context
  • Add new Share action
    • Added new objectTypeTitle prop to have custom titles on Share popover
    • Replaced the Download CSV action and move it as menu item
      • Refactor code into share item provider + (lazy) panel content
      • Add debug flag to make CSV download testable
      • Add functional tests for CSV download
    • Add Permalink action
      • Integrate Permalink with Short URL service
        • Tweaked Permalink action to work with SO custom URL
        • Tweaked Permalink action to handle disabled state
        • Updated unit tests with new features
        • Added (basic) caching logic to avoid too many snapshot duplicate Short URLs
  • New share function test suite created
    • Extended browser service with a new method to have a blank tab in browser
    • New helper functions in Lens to test Share feature

Screenshot 2023-01-11 at 12 58 30

Screenshot 2023-01-11 at 12 58 36

Screenshot 2023-01-11 at 12 58 40

Screenshot 2023-01-11 at 12 58 46

Screenshot 2023-01-11 at 12 59 03

Notes

Short URL requirement

This feature strictly requires the ShortURL service to be enabled to work, otherwise the permalink feature is disabled for snapshot sharing. This requirement is not clearly stated in the Share menu (yet) like other app do as the Sharing flow had to be customised in Lens due to some other technical challenges.
Would it be ok to workout a UI improvement as follow up?

Context tech debt

The way the locator works as injecting the shared state into the context produced a discrete amount of branching, due to inconsistency of the context type coming from different sources (Discover, Agg-based/TSVB, Lens itself...). Perhaps it's worth discussing having a refactoring of the context type here?

Missing locator service

Due to the way the sharing logic works in Lens the locator has not been exported from the plugin functions. I thought to add a custom function for it, but perhaps we could investigate a bit better whether this is needed and eventually its implementation in a follow up task.

How is the snapshot URL generated?

sequenceDiagram
    actor User
    User->>Share Snapshot URL: click
    Share Snapshot URL->> Lens ShortUrlService: Lens state
    Lens ShortUrlService->> Lens ShortUrlService: Check cache based on state
    Lens ShortUrlService->> ShortUrlService: Generate a Short URL
    ShortUrlService->> Lens ShortUrlService: new Short URL
    Lens ShortUrlService->> Application `getUrlForApp`: Build absolute URL
    Application `getUrlForApp`->> Lens ShortUrlService: final URL
    Lens ShortUrlService->>Share Snapshot URL: final URL
    Share Snapshot URL->>User: final URL copied in clipboard
Loading

Checklist

Delete any items that are not applicable to this PR.

Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release.

When forming the risk matrix, consider some of the following examples and how they may potentially impact the change:

Risk Probability Severity Mitigation/Notes
Multiple Spaces—unexpected behavior in non-default Kibana Space. Low High Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces.
Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. High Low Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure.
Code should gracefully handle cases when feature X or plugin Y are disabled. Medium High Unit tests will verify that any feature flag or plugin combination still results in our service operational.
See more potential risk examples

For maintainers

@dej611 dej611 added Team:Visualizations Visualization editors, elastic-charts and infrastructure Feature:Lens release_note:feature Makes this part of the condensed release notes v8.7.0 labels Jan 12, 2023
@dej611 dej611 requested review from a team as code owners January 12, 2023 17:02
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-visualizations @elastic/kibana-visualizations-external (Team:Visualizations)

@dej611 dej611 mentioned this pull request Jan 12, 2023
29 tasks
Copy link
Contributor

@bhavyarm bhavyarm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I looked over the functional test. It covers pretty much everything I would test for share menu.

Copy link
Contributor

@stratoula stratoula left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love it!

@dej611 I feel that now we are adding more clicks to download the csv, is it needed the extra menu?

image

@dej611
Copy link
Contributor Author

dej611 commented Jan 13, 2023

I love it!

@dej611 I feel that now we are adding more clicks to download the csv, is it needed the extra menu?

I see what you mean.
The nested menu comes from the ShareMenu component which triggers that nested layout structure if there is more than 1 action available. Maybe we could propose some changes upstream as a follow up? I'm just worried to get this PR stuck on upstream changes (already made) right now.

@KOTungseth KOTungseth added the ui-copy Review of UI copy with docs team is recommended label Jan 13, 2023
@stratoula
Copy link
Contributor

@dej611 I found one bug. I have shared a link and I save the visualization. I see a blank screen
image
If I reload, the visualization is depicted correctly.

Also if I share a visualization, copy and paste my url to another tab the time is not the same (defaults to 15 min). Shouldn't it carried over too?

Also sharing a Lens visualization with an adhoc dataview doesn't work. It fails (dataview not found). Can we make it work?

@dej611
Copy link
Contributor Author

dej611 commented Jan 16, 2023

@dej611 I found one bug. I have shared a link and I save the visualization. I see a blank screen image If I reload, the visualization is depicted correctly.

Can you recall the configuration of the original chart?

Also if I share a visualization, copy and paste my url to another tab the time is not the same (defaults to 15 min). Shouldn't it carried over too?

It should.

Also sharing a Lens visualization with an adhoc dataview doesn't work. It fails (dataview not found). Can we make it work?

It has to work. I might have broken it accidentally, as I've tested it previously. Will fix it, thanks for checking

@stratoula
Copy link
Contributor

Can you recall the configuration of the original chart?

@dej611 I just created a XY chart by dragging and dropping the records, then I shared the url, open in new tab and save it to Library (not dashboard, it works)

private getSnapshotUrl = (forSavedObject?: boolean) => {
let url = '';
if (forSavedObject && this.props.shareableUrlForSavedObject) {
url = this.props.shareableUrlForSavedObject;
Copy link
Contributor

@majagrubic majagrubic Jan 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: how about setting shareableUrlForSavedObject to default value of '', and then this whole line can be simplified to: url = this.props.shareableUrlForSavedObject? Or even better:
const url = this.props.shareableUrlForSavedObject ?? (this.props.shareableUrl) || window.location.href)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand exactly what you propose.
Given a default value of '' for shareableUrlForSavedObject, and this line changing to:

const url = this.props.shareableUrlForSavedObject ?? (this.props.shareableUrl) || window.location.href)

Then any snapshot url would depend on shareableUrlForSavedObject, which is not what I need. The shareableUrlForSavedObject should be used only when the forSavedObject flag is on, not every time a snapshot URL is asked.

Copy link
Contributor

@majagrubic majagrubic Jan 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah fair, I thought forSavedObject was always set to true, because other lines were collapsed 😬

@dej611
Copy link
Contributor Author

dej611 commented Jan 16, 2023

@stratoula ad hoc dataviews are now working and text-based sources too.
I've added also functional tests for both to detect in case I forget again to commit code 😅

@stratoula
Copy link
Contributor

@dej611 are the tests flaky or there is a bug here?

@dej611
Copy link
Contributor Author

dej611 commented Jan 17, 2023

@stratoula managed to reproduce your bug on save and pushed a fix to it.
The functional tests have been updated and now they should work, just waiting for the text-based ones which are working locally for me but I saw on CI there are some issues.

@dej611
Copy link
Contributor Author

dej611 commented Jan 17, 2023

lens_shareThisLensVisualization_8 7

Since this is the Lens UI, we can remove Lens and simplify to:

Share the visualization

Done ✅

lens_savedObject_8 7

Instead of Can't share as saved object until the lens_visualization has been saved., how about:

To share as a saved object, save the visualization.

❌ This requires a change in the Share plugin and will have a wider impact than just in Lens. :(

Permalink -> Get link

❌ Also this one requires a Share plugin change.

CSV Download -> Export to CSV

Done ✅

@dej611
Copy link
Contributor Author

dej611 commented Jan 17, 2023

@KOTungseth I can prepare a follow up with your suggestions for the Share menu if that's ok for you.

Copy link
Contributor

@drewdaemon drewdaemon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested—works great! 🥳

formatFactoryFn: () => FormatFactory;
}

export const downloadCsvShareProvider = ({
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export const downloadCsvShareProvider = ({
export const getDownloadCsvShareProvider = ({

!currentDatasource ||
!datasourceState ||
!activeVisualization ||
!Object.keys(indexPatterns).length
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a bug fix? Does it relate to the rest of the changes? (Just asking to understand)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bug fix which appears when a visualization started from a shared URL is saved, then the Lens editor would reload to change the URL using the SO id.
I suspect there's a race condition as activeData is available at that point but the dataViews cache has not been populated yet, but the editor is trying to load the Explore in Discover feature, and fails because of the lack of referenced dataView.

For now I've stopped the loading of the feature via this check, but perhaps it would be worth to either stop the editor reloading on SO saving or track down the race condition.

x-pack/plugins/lens/public/app_plugin/types.ts Outdated Show resolved Hide resolved
x-pack/plugins/lens/public/app_plugin/share_action.ts Outdated Show resolved Hide resolved
x-pack/plugins/lens/public/app_plugin/share_action.ts Outdated Show resolved Hide resolved
x-pack/plugins/lens/public/app_plugin/share_action.ts Outdated Show resolved Hide resolved
x-pack/plugins/lens/common/locator/locator.ts Show resolved Hide resolved
x-pack/plugins/lens/common/locator/locator.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@stratoula stratoula left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works great now Marco! The only thing missing is the timepicker, As long as I can share my Lens conf with the filters and search query I would also like to keep my timepicker selection.

Copy link
Contributor

@majagrubic majagrubic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shared-ux changes look good

Comment on lines +260 to +261
await browser.closeCurrentWindow();
await browser.switchToWindow(daashboardHandle);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a fix for a bug on the functional tests suite.

Sometimes the secondary tab with discover was kept open (didn't understand why...) and the following suites were carried on on that tab, leaving the first one open, and confusing other suite who usually have code like that to switch between two tabs:

const [currentLensTab, otherTabs] = await browser.getAllWindowHandles();

but because the first tab is no longer the current Lens instance, rather a stale dashboard page, then all checks fail.

Copy link
Contributor

@stratoula stratoula left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works great! I tested it Safari and Chrome with many scenarios and everything seems to be shared fine! LGTM! Great job Marco!

@kibana-ci
Copy link
Collaborator

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] x-pack/test/spaces_api_integration/security_and_spaces/config_basic.ts / spaces api with security copy to spaces user with no access from the default space single-namespace types "after each" hook for "should return 403 when copying to space without conflicts or references"

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
lens 887 892 +5

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
lens 599 602 +3
share 56 59 +3
total +6

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
lens 1.3MB 1.3MB +5.7KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
lens 30.5KB 33.9KB +3.4KB
share 50.8KB 51.3KB +429.0B
total +3.8KB
Unknown metric groups

API count

id before after diff
lens 695 698 +3
share 115 118 +3
total +6

async chunk count

id before after diff
lens 14 15 +1

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@dej611 dej611 merged commit f78bb91 into elastic:main Jan 18, 2023
@kibanamachine kibanamachine added the backport:skip This commit does not require backporting label Jan 18, 2023
wayneseymour pushed a commit to wayneseymour/kibana that referenced this pull request Jan 19, 2023
## Summary

Fixes elastic#75316

* Lens
  * [x] Refactored Top nav actions code to be more modular
  * [x] Created new Locator object for Lens 
    * [x] Enabled server side to make Short URL work with it
    * [x] Added unit tests for it
* [x] Extended `getEditPath` to support `filters` and `refreshInterval`
* [x] Extended mounting code in Lens to handle a new type of incoming
context
* [x] Add new Share action
* [x] Added new `objectTypeTitle` prop to have custom titles on Share
popover
  * [x] Replaced the `Download CSV` action and move it as menu item
    * [x] Refactor code into share item provider + (lazy) panel content
    * [x] Add debug flag to make CSV download testable
    * [x] Add functional tests for CSV download
  * [x] Add Permalink action
    * [x] Integrate Permalink with Short URL service
      * [x] Tweaked Permalink action to work with SO custom URL
      * [x] Tweaked Permalink action to handle disabled state
      * [x] Updated unit tests with new features
* [x] Added (basic) caching logic to avoid too many snapshot duplicate
Short URLs
* [x] New share function test suite created
* [x] Extended `browser` service with a new method to have a blank tab
in browser
  * [x] New helper functions in Lens to test Share feature
  
<img width="375" alt="Screenshot 2023-01-11 at 12 58 30"
src="https://user-images.githubusercontent.com/924948/211800819-60efe70a-9ebe-4bde-82e0-8fa264e8c4af.png">
<img width="427" alt="Screenshot 2023-01-11 at 12 58 36"
src="https://user-images.githubusercontent.com/924948/211800825-ae7b86d0-0e42-4227-a425-cdcd94ec78cb.png">
<img width="426" alt="Screenshot 2023-01-11 at 12 58 40"
src="https://user-images.githubusercontent.com/924948/211800827-73bfb773-b30e-495c-aa61-f5fd10f35d31.png">
<img width="428" alt="Screenshot 2023-01-11 at 12 58 46"
src="https://user-images.githubusercontent.com/924948/211800830-89539c37-7495-48f0-9de6-b7d6f15b7397.png">
<img width="427" alt="Screenshot 2023-01-11 at 12 59 03"
src="https://user-images.githubusercontent.com/924948/211800833-6f1843b9-ab22-49d9-adbd-8f5f588b52e7.png">

### Notes

#### Short URL requirement

This feature strictly requires the ShortURL service to be enabled to
work, otherwise the permalink feature is disabled for snapshot sharing.
This requirement is not clearly stated in the Share menu (yet) like
other app do as the Sharing flow had to be customised in Lens due to
some other technical challenges.
Would it be ok to workout a UI improvement as follow up?

#### Context tech debt

The way the locator works as injecting the shared state into the context
produced a discrete amount of branching, due to inconsistency of the
`context` type coming from different sources (Discover, Agg-based/TSVB,
Lens itself...). Perhaps it's worth discussing having a refactoring of
the context type here?

#### Missing locator service

Due to the way the sharing logic works in Lens the locator has not been
exported from the `plugin` functions. I thought to add a custom function
for it, but perhaps we could investigate a bit better whether this is
needed and eventually its implementation in a follow up task.

## How is the snapshot URL generated?

```mermaid
sequenceDiagram
    actor User
    User->>Share Snapshot URL: click
    Share Snapshot URL->> Lens ShortUrlService: Lens state
    Lens ShortUrlService->> Lens ShortUrlService: Check cache based on state
    Lens ShortUrlService->> ShortUrlService: Generate a Short URL
    ShortUrlService->> Lens ShortUrlService: new Short URL
    Lens ShortUrlService->> Application `getUrlForApp`: Build absolute URL
    Application `getUrlForApp`->> Lens ShortUrlService: final URL
    Lens ShortUrlService->>Share Snapshot URL: final URL
    Share Snapshot URL->>User: final URL copied in clipboard
```

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

Co-authored-by: Kaarina Tungseth <kaarina.tungseth@elastic.co>
Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
Co-authored-by: Andrew Tate <drewctate@gmail.com>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
dej611 added a commit that referenced this pull request Jan 26, 2023
## Summary

As reported in
#148829 (comment)
some of the labels in the Permalink share panel had to be updated.

@KOTungseth updated here copy. I'm a bit unsure to change `Permalink` to
`Get a link`: while the latter gets to the point directly, `Permalink`
had a precise meaning (in general). Not sure that was the original aim
of the plugin.

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
kqualters-elastic pushed a commit to kqualters-elastic/kibana that referenced this pull request Feb 6, 2023
## Summary

As reported in
elastic#148829 (comment)
some of the labels in the Permalink share panel had to be updated.

@KOTungseth updated here copy. I'm a bit unsure to change `Permalink` to
`Get a link`: while the latter gets to the point directly, `Permalink`
had a precise meaning (in general). Not sure that was the original aim
of the plugin.

### Checklist

Delete any items that are not applicable to this PR.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
- [ ] Any UI touched in this PR does not create any new axe failures
(run axe in browser:
[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),
[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This renders correctly on smaller devices using a responsive
layout. (You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [ ] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### Risk Matrix

Delete this section if it is not applicable to this PR.

Before closing this PR, invite QA, stakeholders, and other developers to
identify risks that should be tested prior to the change/feature
release.

When forming the risk matrix, consider some of the following examples
and how they may potentially impact the change:

| Risk | Probability | Severity | Mitigation/Notes |

|---------------------------|-------------|----------|-------------------------|
| Multiple Spaces&mdash;unexpected behavior in non-default Kibana Space.
| Low | High | Integration tests will verify that all features are still
supported in non-default Kibana Space and when user switches between
spaces. |
| Multiple nodes&mdash;Elasticsearch polling might have race conditions
when multiple Kibana nodes are polling for the same tasks. | High | Low
| Tasks are idempotent, so executing them multiple times will not result
in logical error, but will degrade performance. To test for this case we
add plenty of unit tests around this logic and document manual testing
procedure. |
| Code should gracefully handle cases when feature X or plugin Y are
disabled. | Medium | High | Unit tests will verify that any feature flag
or plugin combination still results in our service operational. |
| [See more potential risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) |


### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
KOTungseth added a commit that referenced this pull request Mar 1, 2023
## Summary

Adds the 8.7 docs for:

- #149388
- #148829
- Closes #144590
- Replaces #144551
kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Mar 1, 2023
## Summary

Adds the 8.7 docs for:

- elastic#149388
- elastic#148829
- Closes elastic#144590
- Replaces elastic#144551

(cherry picked from commit 3de0009)
kibanamachine added a commit that referenced this pull request Mar 1, 2023
# Backport

This will backport the following commits from `main` to `8.7`:
- [[DOCS] Adds Visualizations features for 8.7
(#151045)](#151045)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Kaarina
Tungseth","email":"kaarina.tungseth@elastic.co"},"sourceCommit":{"committedDate":"2023-03-01T20:28:19Z","message":"[DOCS]
Adds Visualizations features for 8.7 (#151045)\n\n## Summary\r\n\r\nAdds
the 8.7 docs for:\r\n\r\n- #149388\r\n- #148829\r\n- Closes #144590\r\n-
Replaces
#144551","sha":"3de0009dd184d031c08fe5b3c3a4e7f56352b510","branchLabelMapping":{"^v8.8.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Docs","Team:Visualizations","release_note:skip","v8.7.0","v8.8.0"],"number":151045,"url":"#151045
Adds Visualizations features for 8.7 (#151045)\n\n## Summary\r\n\r\nAdds
the 8.7 docs for:\r\n\r\n- #149388\r\n- #148829\r\n- Closes #144590\r\n-
Replaces
#144551","sha":"3de0009dd184d031c08fe5b3c3a4e7f56352b510"}},"sourceBranch":"main","suggestedTargetBranches":["8.7"],"targetPullRequestStates":[{"branch":"8.7","label":"v8.7.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.8.0","labelRegex":"^v8.8.0$","isSourceBranch":true,"state":"MERGED","url":"#151045
Adds Visualizations features for 8.7 (#151045)\n\n## Summary\r\n\r\nAdds
the 8.7 docs for:\r\n\r\n- #149388\r\n- #148829\r\n- Closes #144590\r\n-
Replaces #144551","sha":"3de0009dd184d031c08fe5b3c3a4e7f56352b510"}}]}]
BACKPORT-->

Co-authored-by: Kaarina Tungseth <kaarina.tungseth@elastic.co>
sloanelybutsurely pushed a commit to sloanelybutsurely/kibana that referenced this pull request Mar 8, 2023
bmorelli25 pushed a commit to bmorelli25/kibana that referenced this pull request Mar 10, 2023
nkhristinin pushed a commit that referenced this pull request Mar 22, 2023
## Summary

Adds the 8.7 docs for:

- #149388
- #148829
- Closes #144590
- Replaces #144551
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:skip This commit does not require backporting Feature:Lens release_note:feature Makes this part of the condensed release notes Team:Visualizations Visualization editors, elastic-charts and infrastructure ui-copy Review of UI copy with docs team is recommended v8.7.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Lens] Ability to share a visualization link from Lens
9 participants