Skip to content

Commit

Permalink
[Dashboard Navigation] GA Links Panel (#178999)
Browse files Browse the repository at this point in the history
Closes #172075
Closes #178396

## Summary

In order to move the links panel into general availability, this PR does
four main things:
1. It changes the default of the "Save to library" toggle in the flyout
from `true` to `false` - this is in response to some early telemetry,
which suggests that link panels **not** saved to the library are more
common.

    | Before | After |
    |--------|--------|
| ![Screenshot 2024-03-20 at 9 38
41 AM](https://github.com/elastic/kibana/assets/8698078/af42e570-98c2-4cbb-852f-0a34a7dd779b)
| ![Screenshot 2024-03-20 at 9 36
10 AM](https://github.com/elastic/kibana/assets/8698078/2943e3fe-c3ce-4b23-a8cf-bba990995457)
|

2. It fixes a styling issue in Serverless where the height of the
secondary edit/add link flyout was incorrect.

    | Before | After |
    |--------|--------|
|
![image](https://github.com/elastic/kibana/assets/8698078/0d32bda7-a5bc-4655-80ac-bffab6fce61a)
|
![image](https://github.com/elastic/kibana/assets/8698078/78f32642-550b-475f-bbf1-12a38189592e)
|

3. It removes the lab setting for the links panel. The removal of this
setting is **not** a breaking change - it is completely safe to remove
this setting **regardless** of the previous value. Telemetry tracking
for this setting is also no longer required.

    | Before | After |
    |--------|--------|
| ![Screenshot 2024-03-19 at 3 00
39 PM](https://github.com/elastic/kibana/assets/8698078/e9d5c19e-9ebd-4561-8391-4bb7e6f915d9)
|
![image](https://github.com/elastic/kibana/assets/8698078/1325c0d0-349f-4dc9-897a-41049efb4670)
|


4. It removes any reference to "Technical preview" or "Experimental"
    
    | Before | After |
    |--------|--------|
| ![Screenshot 2024-03-19 at 2 55
20 PM](https://github.com/elastic/kibana/assets/8698078/2a246688-78b1-4376-9218-8b6b2a87dfed)
|
![image](https://github.com/elastic/kibana/assets/8698078/20bf7b6c-ef85-4ede-851d-035fd9f53bbd)
|
| ![Screenshot 2024-03-19 at 2 56
14 PM](https://github.com/elastic/kibana/assets/8698078/c9fe5224-56d8-4d04-8b3c-f7c8b5433115)
| ![Screenshot 2024-03-19 at 2 58
27 PM](https://github.com/elastic/kibana/assets/8698078/a2dfcb4d-2d42-40d0-a7d4-616587e69044)
|


### Checklist

- [x] [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
- [x] 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))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)


### 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)
  • Loading branch information
Heenawter authored Mar 25, 2024
1 parent 80d831b commit b9ab67a
Show file tree
Hide file tree
Showing 13 changed files with 13 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -515,10 +515,6 @@ export const stackManagementSchema: MakeSchemaFrom<UsageStats> = {
type: 'boolean',
_meta: { description: 'Non-default value of setting.' },
},
'labs:dashboard:linksPanel': {
type: 'boolean',
_meta: { description: 'Non-default value of setting.' },
},
'discover:showFieldStatistics': {
type: 'boolean',
_meta: { description: 'Non-default value of setting.' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,6 @@ export interface UsageStats {
'labs:canvas:useDataService': boolean;
'labs:presentation:timeToPresent': boolean;
'labs:dashboard:enable_ui': boolean;
'labs:dashboard:linksPanel': boolean;
'labs:dashboard:deferBelowFold': boolean;
'discover:rowHeightOption': number;
hideAnnouncements: boolean;
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/links/public/_mixins.scss
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
}

@mixin euiFlyout {
@include kibanaFullBodyHeight();
height: calc(100vh - var(--euiFixedHeadersOffset, 0));
position: fixed;
display: flex;
inline-size: 50vw;
Expand Down
17 changes: 1 addition & 16 deletions src/plugins/links/public/components/editor/links_editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import useMountedState from 'react-use/lib/useMountedState';

import {
EuiBadge,
EuiButton,
EuiButtonEmpty,
EuiButtonGroup,
Expand All @@ -28,7 +27,6 @@ import {
EuiFormRow,
EuiSwitch,
EuiTitle,
EuiToolTip,
} from '@elastic/eui';
import { DashboardContainer } from '@kbn/dashboard-plugin/public/dashboard_container';

Expand Down Expand Up @@ -91,7 +89,7 @@ const LinksEditor = ({
);
const [isSaving, setIsSaving] = useState(false);
const [orderedLinks, setOrderedLinks] = useState<Link[]>([]);
const [saveByReference, setSaveByReference] = useState(!initialLinks ? true : isByReference);
const [saveByReference, setSaveByReference] = useState(!initialLinks ? false : isByReference);

const isEditingExisting = initialLinks || isByReference;

Expand Down Expand Up @@ -173,19 +171,6 @@ const LinksEditor = ({
</h2>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiToolTip content={LinksStrings.editor.panelEditor.getTechnicalPreviewTooltip()}>
{/* The EuiBadge needs an empty title to prevent the default tooltip */}
<EuiBadge
color="hollow"
tabIndex={0}
title=""
aria-label={LinksStrings.editor.panelEditor.getTechnicalPreviewTooltip()}
>
{LinksStrings.editor.panelEditor.getTechnicalPreviewLabel()}
</EuiBadge>
</EuiToolTip>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlyoutHeader>
<EuiFlyoutBody>
Expand Down
9 changes: 0 additions & 9 deletions src/plugins/links/public/components/links_strings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,6 @@ export const LinksStrings = {
defaultMessage: 'Close',
}),
panelEditor: {
getTechnicalPreviewTooltip: () =>
i18n.translate('links.panelEditor.technicalPreviewTooltip', {
defaultMessage:
'This functionality is in technical preview and may be changed or removed completely in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.',
}),
getTechnicalPreviewLabel: () =>
i18n.translate('links.panelEditor.technicalPreviewLabel', {
defaultMessage: 'Technical preview',
}),
getLinksTitle: () =>
i18n.translate('links.panelEditor.linksTitle', {
defaultMessage: 'Links',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,7 @@ import { LinksAttributes } from '../../common/content_management';
import { extract, inject } from '../../common/embeddable';
import { LinksStrings } from '../components/links_strings';
import { getLinksAttributeService } from '../services/attribute_service';
import {
coreServices,
presentationUtil,
untilPluginStartServicesReady,
} from '../services/kibana_services';
import { coreServices, untilPluginStartServicesReady } from '../services/kibana_services';
import type { LinksEmbeddable } from './links_embeddable';
import { LinksByReferenceInput, LinksEditorFlyoutReturn, LinksInput } from './types';

Expand Down Expand Up @@ -89,7 +85,7 @@ export class LinksFactoryDefinition
}

public canCreateNew() {
return presentationUtil.labsService.isProjectEnabled('labs:dashboard:linksPanel');
return true;
}

public getDefaultInput(): Partial<LinksInput> {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/links/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export class LinksPlugin
title: APP_NAME,
icon: APP_ICON,
description: LinksStrings.getDescription(),
stage: 'experimental',
stage: 'production',
appExtensions: {
visualizations: {
docTypes: [CONTENT_ID],
Expand All @@ -98,7 +98,7 @@ export class LinksPlugin
updatedAt,
icon: APP_ICON,
typeTitle: APP_NAME,
stage: 'experimental',
stage: 'production',
savedObjectType: type,
};
},
Expand Down
27 changes: 1 addition & 26 deletions src/plugins/presentation_util/common/labs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,12 @@ import { i18n } from '@kbn/i18n';

export const LABS_PROJECT_PREFIX = 'labs:';
export const DEFER_BELOW_FOLD = `${LABS_PROJECT_PREFIX}dashboard:deferBelowFold` as const;
export const DASHBOARD_LINKS_PANEL = `${LABS_PROJECT_PREFIX}dashboard:linksPanel` as const;
export const BY_VALUE_EMBEDDABLE = `${LABS_PROJECT_PREFIX}canvas:byValueEmbeddable` as const;

export const projectIDs = [DEFER_BELOW_FOLD, BY_VALUE_EMBEDDABLE, DASHBOARD_LINKS_PANEL] as const;
export const projectIDs = [DEFER_BELOW_FOLD, BY_VALUE_EMBEDDABLE] as const;
export const environmentNames = ['kibana', 'browser', 'session'] as const;
export const solutionNames = ['canvas', 'dashboard', 'presentation'] as const;

const technicalPreviewLabel = i18n.translate(
'presentationUtil.advancedSettings.technicalPreviewLabel',
{
defaultMessage: 'technical preview',
}
);

/**
* This is a list of active Labs Projects for the Presentation Team. It is the "source of truth" for all projects
* provided to users of our solutions in Kibana.
Expand All @@ -43,23 +35,6 @@ export const projects: { [ID in ProjectID]: ProjectConfig & { id: ID } } = {
}),
solutions: ['dashboard'],
},
[DASHBOARD_LINKS_PANEL]: {
id: DASHBOARD_LINKS_PANEL,
isActive: true,
isDisplayed: true,
environments: ['kibana', 'browser', 'session'],
name: i18n.translate('presentationUtil.labs.enableLinksPanelProjectName', {
defaultMessage: 'Enable links panel',
}),
description: i18n.translate('presentationUtil.labs.enableLinksPanelProjectDescription', {
defaultMessage:
'{technicalPreviewLabel} Enables the links panel for dashboard, which allows dashboard authors to easily link dashboards together.',
values: {
technicalPreviewLabel: `<em>[${technicalPreviewLabel}]</em>`,
},
}),
solutions: ['dashboard'],
},
[BY_VALUE_EMBEDDABLE]: {
id: BY_VALUE_EMBEDDABLE,
isActive: true,
Expand Down
6 changes: 0 additions & 6 deletions src/plugins/telemetry/schema/oss_plugins.json
Original file line number Diff line number Diff line change
Expand Up @@ -10218,12 +10218,6 @@
"description": "Non-default value of setting."
}
},
"labs:dashboard:linksPanel": {
"type": "boolean",
"_meta": {
"description": "Non-default value of setting."
}
},
"discover:showFieldStatistics": {
"type": "boolean",
"_meta": {
Expand Down
11 changes: 0 additions & 11 deletions test/functional/page_objects/dashboard_page_links.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,6 @@ export class DashboardPageLinks extends FtrService {
private readonly testSubjects = this.ctx.getService('testSubjects');
private readonly comboBox = this.ctx.getService('comboBox');

private readonly header = this.ctx.getPageObject('header');
private readonly settings = this.ctx.getPageObject('settings');

public async toggleLinksLab(value?: boolean) {
this.log.debug(`toggle the links lab setting to ${value}`);
await this.header.clickStackManagement();
await this.settings.clickKibanaSettings();

await this.settings.toggleAdvancedSettingCheckbox('labs:dashboard:linksPanel', value);
}

/* -----------------------------------------------------------
Links panel
----------------------------------------------------------- */
Expand Down
5 changes: 0 additions & 5 deletions x-pack/plugins/translations/translations/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -4915,8 +4915,6 @@
"links.panelEditor.saveButtonLabel": "Enregistrer",
"links.panelEditor.saveToLibrarySwitchLabel": "Enregistrer dans la bibliothèque",
"links.panelEditor.saveToLibrarySwitchTooltip": "Enregistrer ce panneau de liens dans la bibliothèque afin de pouvoir l'ajouter facilement à d'autres tableaux de bord.",
"links.panelEditor.technicalPreviewLabel": "Version d'évaluation technique",
"links.panelEditor.technicalPreviewTooltip": "Cette fonctionnalité est en version d'évaluation technique et pourra être modifiée ou retirée complètement dans une future version. Elastic s'efforcera de corriger tout problème, mais les fonctionnalités des versions d'évaluation technique ne sont pas soumises aux SLA de support des fonctionnalités officielles en disponibilité générale.",
"links.panelEditor.titleInputLabel": "Titre",
"links.saveDuplicateRejectedDescription": "La confirmation d'enregistrement avec un doublon de titre a été rejetée.",
"links.visTypeAlias.title": "Liens",
Expand Down Expand Up @@ -5277,8 +5275,6 @@
"presentationUtil.labs.components.disabledStatusMessage": "Par défaut : {status}",
"presentationUtil.labs.components.enabledStatusMessage": "Par défaut : {status}",
"presentationUtil.labs.components.noProjectsinSolutionMessage": "Aucun atelier actuellement dans {solutionName}.",
"presentationUtil.labs.enableLinksPanelProjectDescription": "{technicalPreviewLabel} Active le panneau de liens pour le tableau de bord, ce qui permet aux auteurs de tableaux de bord de les associer facilement entre eux.",
"presentationUtil.advancedSettings.technicalPreviewLabel": "version d'évaluation technique",
"presentationUtil.dashboardDrilldownConfig.components.openInNewTab": "Ouvrir le tableau de bord dans un nouvel onglet",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentDateRange": "Utiliser la plage de dates du tableau de bord d'origine",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentFiltersLabel": "Utiliser les filtres et la requête du tableau de bord d'origine",
Expand Down Expand Up @@ -5307,7 +5303,6 @@
"presentationUtil.labs.enableByValueEmbeddableName": "Éléments d'incorporation By-Value",
"presentationUtil.labs.enableDeferBelowFoldProjectDescription": "Les panneaux sous \"le pli\" (la zone masquée en dessous de la fenêtre accessible en faisant défiler), ne se chargeront pas immédiatement, mais seulement lorsqu'ils entreront dans la fenêtre d'affichage.",
"presentationUtil.labs.enableDeferBelowFoldProjectName": "Différer le chargement des panneaux sous \"le pli\"",
"presentationUtil.labs.enableLinksPanelProjectName": "Activer le panneau de liens",
"presentationUtil.saveModalDashboard.addToDashboardLabel": "Ajouter au tableau de bord",
"presentationUtil.saveModalDashboard.dashboardInfoTooltip": "Les éléments ajoutés à la bibliothèque Visualize sont disponibles pour tous les tableaux de bord. Les modifications apportées à un élément de bibliothèque sont répercutées partout où il est utilisé.",
"presentationUtil.saveModalDashboard.existingDashboardOptionLabel": "Existant",
Expand Down
17 changes: 6 additions & 11 deletions x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -4909,8 +4909,6 @@
"links.panelEditor.saveButtonLabel": "保存",
"links.panelEditor.saveToLibrarySwitchLabel": "ライブラリに保存",
"links.panelEditor.saveToLibrarySwitchTooltip": "このリンクパネルをライブラリに保存すると、他のダッシュボードに簡単に追加できます。",
"links.panelEditor.technicalPreviewLabel": "テクニカルプレビュー",
"links.panelEditor.technicalPreviewTooltip": "この機能はテクニカルプレビュー中であり、将来のリリースでは変更されたり完全に削除されたりする場合があります。Elasticはすべての問題の修正に努めますが、テクニカルプレビュー中の機能には正式なGA機能のサポートSLAが適用されません。",
"links.panelEditor.titleInputLabel": "タイトル",
"links.saveDuplicateRejectedDescription": "重複ファイルの保存確認が拒否されました",
"links.visTypeAlias.title": "リンク",
Expand Down Expand Up @@ -5264,14 +5262,12 @@
"presentationUtil.expressionInput.argReferenceAliasesDetail": "{BOLD_MD_TOKEN}エイリアス{BOLD_MD_TOKEN}: {aliases}",
"presentationUtil.expressionInput.argReferenceDefaultDetail": "{BOLD_MD_TOKEN}Default{BOLD_MD_TOKEN}: {defaultVal}",
"presentationUtil.expressionInput.argReferenceRequiredDetail": "{BOLD_MD_TOKEN}必須{BOLD_MD_TOKEN}:{required}",
"presentationUtil.expressionInput.argReferenceTypesDetail": "{BOLD_MD_TOKEN}タイプ{BOLD_MD_TOKEN}: {types}",
"presentationUtil.expressionInput.functionReferenceAccepts": "{BOLD_MD_TOKEN}承諾{BOLD_MD_TOKEN}:{acceptTypes}",
"presentationUtil.expressionInput.functionReferenceReturns": "{BOLD_MD_TOKEN}返す{BOLD_MD_TOKEN}:{returnType}",
"presentationUtil.labs.components.disabledStatusMessage": "デフォルト: {status}",
"presentationUtil.labs.components.enabledStatusMessage": "デフォルト: {status}",
"presentationUtil.labs.components.noProjectsinSolutionMessage": "現在{solutionName}にはラボがありません。",
"presentationUtil.labs.enableLinksPanelProjectDescription": "{technicalPreviewLabel} ダッシュボードのリンクパネルを有効にすると、ダッシュボードの作成者がダッシュボードを簡単にリンクできるようになります。",
"presentationUtil.advancedSettings.technicalPreviewLabel": "テクニカルプレビュー",
"presentationUtil.expressionInput.argReferenceTypesDetail": "{BOLD_MD_TOKEN}タイプ{BOLD_MD_TOKEN}:{types}",
"presentationUtil.expressionInput.functionReferenceAccepts": "{BOLD_MD_TOKEN}受け入れ{BOLD_MD_TOKEN}:{acceptTypes}",
"presentationUtil.expressionInput.functionReferenceReturns": "{BOLD_MD_TOKEN}{BOLD_MD_TOKEN}を返します:{returnType}",
"presentationUtil.labs.components.disabledStatusMessage": "デフォルト:{status}",
"presentationUtil.labs.components.enabledStatusMessage": "デフォルト:{status}",
"presentationUtil.labs.components.noProjectsinSolutionMessage": "現在{solutionName}にラボはありません。",
"presentationUtil.dashboardDrilldownConfig.components.openInNewTab": "新しいタブでダッシュボードを開く",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentDateRange": "元のダッシュボードから日付範囲を使用",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentFiltersLabel": "元のダッシュボードからフィルターとクエリを使用",
Expand Down Expand Up @@ -5300,7 +5296,6 @@
"presentationUtil.labs.enableByValueEmbeddableName": "By-Value埋め込み可能オブジェクト",
"presentationUtil.labs.enableDeferBelowFoldProjectDescription": "「区切り」の下のすべてのパネル(ウィンドウ下部の下にある非表示の領域)はすぐに読み込まれません。ビューポートを入力するときにのみ読み込まれます",
"presentationUtil.labs.enableDeferBelowFoldProjectName": "「区切り」の下のパネルの読み込みを延期",
"presentationUtil.labs.enableLinksPanelProjectName": "リンクパネルを編集",
"presentationUtil.saveModalDashboard.addToDashboardLabel": "ダッシュボードに追加",
"presentationUtil.saveModalDashboard.dashboardInfoTooltip": "Visualizeライブラリに追加された項目はすべてのダッシュボードで使用できます。ライブラリ項目の編集は、使用されるすべての場所に表示されます。",
"presentationUtil.saveModalDashboard.existingDashboardOptionLabel": "既存",
Expand Down
5 changes: 0 additions & 5 deletions x-pack/plugins/translations/translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -4918,8 +4918,6 @@
"links.panelEditor.saveButtonLabel": "保存",
"links.panelEditor.saveToLibrarySwitchLabel": "保存到库",
"links.panelEditor.saveToLibrarySwitchTooltip": "将此链接面板保存到库中,以便将其轻松添加到其他仪表板。",
"links.panelEditor.technicalPreviewLabel": "技术预览",
"links.panelEditor.technicalPreviewTooltip": "此功能处于技术预览状态,在未来版本中可能会更改或完全移除。Elastic 将努力修复任何问题,但处于技术预览状态的功能不受正式 GA 功能支持 SLA 的约束。",
"links.panelEditor.titleInputLabel": "标题",
"links.saveDuplicateRejectedDescription": "已拒绝使用重复标题保存确认",
"links.visTypeAlias.title": "链接",
Expand Down Expand Up @@ -5281,8 +5279,6 @@
"presentationUtil.labs.components.disabledStatusMessage": "默认:{status}",
"presentationUtil.labs.components.enabledStatusMessage": "默认:{status}",
"presentationUtil.labs.components.noProjectsinSolutionMessage": "{solutionName} 中当前没有实验。",
"presentationUtil.labs.enableLinksPanelProjectDescription": "{technicalPreviewLabel} 为仪表板启用链接面板,以便仪表板作者将仪表板轻松链接到一起。",
"presentationUtil.advancedSettings.technicalPreviewLabel": "技术预览",
"presentationUtil.dashboardDrilldownConfig.components.openInNewTab": "在新选项卡中打开仪表板",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentDateRange": "使用源仪表板的日期范围",
"presentationUtil.dashboardDrilldownConfig.components.useCurrentFiltersLabel": "使用源仪表板的筛选和查询",
Expand Down Expand Up @@ -5311,7 +5307,6 @@
"presentationUtil.labs.enableByValueEmbeddableName": "按值嵌入",
"presentationUtil.labs.enableDeferBelowFoldProjectDescription": "“折叠”下的任何面板即可通过滚动访问的窗口底部隐藏的区域,将不会立即加载,而仅在进入视区时加载",
"presentationUtil.labs.enableDeferBelowFoldProjectName": "推迟加载“折叠”下的面板",
"presentationUtil.labs.enableLinksPanelProjectName": "启用链接面板",
"presentationUtil.saveModalDashboard.addToDashboardLabel": "添加到仪表板",
"presentationUtil.saveModalDashboard.dashboardInfoTooltip": "添加到 Visualize 库的项目可用于所有仪表板。对库项目的编辑将显示在使用位置。",
"presentationUtil.saveModalDashboard.existingDashboardOptionLabel": "现有",
Expand Down

0 comments on commit b9ab67a

Please sign in to comment.