[APM][ECO] removing Service group tour/updating eco welcome copy (#189400)

closes https://github.com/elastic/kibana/issues/188412

- [x] Removing service groups tour once and for all.
<img width="1273" alt="Screenshot 2024-07-29 at 15 23 12"
src="https://github.com/user-attachments/assets/a8c831d7-84d5-43e6-902d-79b9661c8c38">

- [x] Updating Entity inventory welcome copy 
<img width="680" alt="Screenshot 2024-07-29 at 13 57 19"
src="https://github.com/user-attachments/assets/c1e8a9dc-17c4-4482-9d5b-b0ef93a682bd">
This commit is contained in:
Cauê Marcondes 2024-07-30 20:40:33 +01:00 committed by GitHub
parent 934d0b1cbc
commit 7e0dab954b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 22 additions and 201 deletions

View file

@ -27,7 +27,6 @@ describe('Service inventory - header filters', () => {
specialServiceName,
})
);
cy.dismissServiceGroupsTour();
});
after(() => {

View file

@ -103,7 +103,6 @@ describe('Service inventory', () => {
it('when selecting a different time range and clicking the update button', () => {
cy.wait(mainAliasNames);
cy.getByTestSubj('apmServiceGroupsTourDismissButton').click();
cy.selectAbsoluteTimeRange(
moment(timeRange.rangeFrom).subtract(5, 'm').toISOString(),

View file

@ -55,7 +55,6 @@ describe('service map', () => {
it.skip('shows nodes in service map', () => {
cy.visitKibana(serviceMapHref);
cy.wait('@serviceMap');
cy.getByTestSubj('apmServiceGroupsTourDismissButton').click();
prepareCanvasForScreenshot();
@ -90,7 +89,6 @@ describe('service map', () => {
it('shows empty state', () => {
cy.visitKibana(serviceMapHref);
// we need to dismiss the service-group call out first
cy.getByTestSubj('apmServiceGroupsTourDismissButton').click();
cy.getByTestSubj('apmUnifiedSearchBar').type('_id : foo{enter}');
cy.contains('No services available');
// search bar is still visible

View file

@ -133,16 +133,6 @@ Cypress.Commands.add('updateAdvancedSettings', (settings: Record<string, unknown
});
});
Cypress.Commands.add('dismissServiceGroupsTour', () => {
window.localStorage.setItem(
'apm.serviceGroupsTour',
JSON.stringify({
createGroup: false,
editGroup: false,
})
);
});
Cypress.Commands.add('withHidden', (selector, callback) => {
cy.get(selector).invoke('attr', 'style', 'display: none');
callback();

View file

@ -22,7 +22,6 @@ declare namespace Cypress {
expectAPIsToHaveBeenCalledWith(params: { apisIntercepted: string[]; value: string }): void;
updateAdvancedSettings(settings: Record<string, unknown>): void;
getByTestSubj(selector: string): Chainable<JQuery<Element>>;
dismissServiceGroupsTour(): void;
withHidden(selector: string, callback: () => void): void;
}
}

View file

@ -7,39 +7,23 @@
import { EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { ServiceGroupsTour } from '../service_groups_tour';
import { useServiceGroupsTour } from '../use_service_groups_tour';
interface Props {
onClick: () => void;
}
export function EditButton({ onClick }: Props) {
const { tourEnabled, dismissTour } = useServiceGroupsTour('editGroup');
return (
<ServiceGroupsTour
tourEnabled={tourEnabled}
dismissTour={dismissTour}
title={i18n.translate('xpack.apm.serviceGroups.tour.editGroups.title', {
defaultMessage: 'Edit this service group',
})}
content={i18n.translate('xpack.apm.serviceGroups.tour.editGroups.content', {
defaultMessage:
'Use the edit option to change the name, query, or details of this service group.',
})}
<EuiButton
data-test-subj="apmEditButtonEditGroupButton"
iconType="pencil"
onClick={() => {
onClick();
}}
>
<EuiButton
data-test-subj="apmEditButtonEditGroupButton"
iconType="pencil"
onClick={() => {
dismissTour();
onClick();
}}
>
{i18n.translate('xpack.apm.serviceGroups.editGroupLabel', {
defaultMessage: 'Edit group',
})}
</EuiButton>
</ServiceGroupsTour>
{i18n.translate('xpack.apm.serviceGroups.editGroupLabel', {
defaultMessage: 'Edit group',
})}
</EuiButton>
);
}

View file

@ -8,8 +8,6 @@ import { EuiButtonGroup } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { useHistory } from 'react-router-dom';
import { ServiceGroupsTour } from './service_groups_tour';
import { useServiceGroupsTour } from './use_service_groups_tour';
const buttonGroupOptions = {
allServices: {
@ -40,32 +38,18 @@ export function ServiceGroupsButtonGroup({
selectedNavButton: SelectedNavButton;
}) {
const history = useHistory();
const { tourEnabled, dismissTour } = useServiceGroupsTour('createGroup');
return (
<ServiceGroupsTour
tourEnabled={tourEnabled}
dismissTour={dismissTour}
anchorPosition="leftUp"
title={i18n.translate('xpack.apm.serviceGroups.tour.createGroups.title', {
defaultMessage: 'Introducing service groups',
<EuiButtonGroup
color="primary"
options={[buttonGroupOptions.allServices.option, buttonGroupOptions.serviceGroups.option]}
idSelected={selectedNavButton as string}
onChange={(id) => {
const { pathname } = buttonGroupOptions[id as SelectedNavButton];
history.push({ pathname });
}}
legend={i18n.translate('xpack.apm.servicesGroups.buttonGroup.legend', {
defaultMessage: 'View all services or service groups',
})}
content={i18n.translate('xpack.apm.serviceGroups.tour.createGroups.content', {
defaultMessage:
'Group services together to build curated inventory views that remove noise and simplify investigations across services. Groups are Kibana space-specific and available for any users with appropriate access.',
})}
>
<EuiButtonGroup
color="primary"
options={[buttonGroupOptions.allServices.option, buttonGroupOptions.serviceGroups.option]}
idSelected={selectedNavButton as string}
onChange={(id) => {
const { pathname } = buttonGroupOptions[id as SelectedNavButton];
history.push({ pathname });
}}
legend={i18n.translate('xpack.apm.servicesGroups.buttonGroup.legend', {
defaultMessage: 'View all services or service groups',
})}
/>
</ServiceGroupsTour>
/>
);
}

View file

@ -1,84 +0,0 @@
/*
* 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 {
EuiButtonEmpty,
EuiSpacer,
EuiText,
EuiTourStep,
PopoverAnchorPosition,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import React from 'react';
import { ElasticDocsLink } from '../../shared/links/elastic_docs_link';
export type TourType = 'createGroup' | 'editGroup';
interface Props {
title: string;
content: string;
tourEnabled: boolean;
dismissTour: () => void;
anchorPosition?: PopoverAnchorPosition;
children: React.ReactElement;
}
export function ServiceGroupsTour({
tourEnabled,
dismissTour,
title,
content,
anchorPosition,
children,
}: Props) {
return (
<EuiTourStep
content={
<>
<EuiText size="s">{content}</EuiText>
<EuiSpacer />
<FormattedMessage
id="xpack.apm.serviceGroups.tour.content.link"
defaultMessage="Learn more in the {docsLink}."
values={{
docsLink: (
<ElasticDocsLink section="/kibana" path="/services.html" target="blank">
{i18n.translate('xpack.apm.serviceGroups.tour.content.link.docs', {
defaultMessage: 'docs',
})}
</ElasticDocsLink>
),
}}
/>
</>
}
isStepOpen={tourEnabled}
onFinish={() => {}}
maxWidth={300}
minWidth={300}
step={1}
stepsTotal={1}
title={title}
anchorPosition={anchorPosition}
footerAction={
<EuiButtonEmpty
data-test-subj="apmServiceGroupsTourDismissButton"
color="text"
size="xs"
onClick={dismissTour}
>
{i18n.translate('xpack.apm.serviceGroups.tour.dismiss', {
defaultMessage: 'Dismiss',
})}
</EuiButtonEmpty>
}
>
{children}
</EuiTourStep>
);
}

View file

@ -1,27 +0,0 @@
/*
* 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 { useLocalStorage } from '../../../hooks/use_local_storage';
import { TourType } from './service_groups_tour';
const INITIAL_STATE: Record<TourType, boolean> = {
createGroup: true,
editGroup: true,
};
export function useServiceGroupsTour(type: TourType) {
const [tourEnabled, setTourEnabled] = useLocalStorage('apm.serviceGroupsTour', INITIAL_STATE);
return {
tourEnabled: tourEnabled[type],
dismissTour: () =>
setTourEnabled({
...tourEnabled,
[type]: false,
}),
};
}

View file

@ -95,7 +95,7 @@ export function Welcome({
<p>
{i18n.translate('xpack.apm.welcome.body', {
defaultMessage:
'You can now see services detected from logs alongside services instrumented with APM our new service inventory so you can view all of your services in a single place.',
'You can now see services detected from logs alongside your APM-instrumented services in a single inventory so you can view all of your services in one place.',
})}
</p>
</EuiText>

View file

@ -10079,13 +10079,6 @@
"xpack.apm.serviceGroups.selectServicesList.nameColumnLabel": "Nom",
"xpack.apm.serviceGroups.selectServicesList.notFoundLabel": "Aucun service disponible dans les dernières 24 heures. Vous pouvez toujours créer le groupe et les services qui correspondent à votre requête.",
"xpack.apm.serviceGroups.sortLabel": "Trier",
"xpack.apm.serviceGroups.tour.content.link": "Découvrez plus d'informations dans le {docsLink}.",
"xpack.apm.serviceGroups.tour.content.link.docs": "documents",
"xpack.apm.serviceGroups.tour.createGroups.content": "Regroupez les services afin de créer des vues d'inventaire organisées qui éliminent le bruit et simplifient les enquêtes sur les services. Les groupes sont spécifiques à l'espace Kibana et sont disponibles pour tous les utilisateurs ayant un accès approprié.",
"xpack.apm.serviceGroups.tour.createGroups.title": "Présentation des groupes de services",
"xpack.apm.serviceGroups.tour.dismiss": "Rejeter",
"xpack.apm.serviceGroups.tour.editGroups.content": "Utilisez l'option de modification pour changer le nom, la requête ou les détails de ce groupe de services.",
"xpack.apm.serviceGroups.tour.editGroups.title": "Modifier ce groupe de services",
"xpack.apm.serviceHealthStatus.critical": "Critique",
"xpack.apm.serviceHealthStatus.healthy": "Intègre",
"xpack.apm.serviceHealthStatus.unknown": "Inconnu",

View file

@ -10042,13 +10042,6 @@
"xpack.apm.serviceGroups.selectServicesList.nameColumnLabel": "名前",
"xpack.apm.serviceGroups.selectServicesList.notFoundLabel": "過去24時間以内にサービスはありません。グループを作成できます。クエリと一致するサービスが追加されます。",
"xpack.apm.serviceGroups.sortLabel": "並べ替え",
"xpack.apm.serviceGroups.tour.content.link": "詳細は{docsLink}をご覧ください。",
"xpack.apm.serviceGroups.tour.content.link.docs": "ドキュメント",
"xpack.apm.serviceGroups.tour.createGroups.content": "サービスをグループ化し、イズを減らした編集済みのインベントリビューを作成し、サービス全体での調査を簡素化します。グループはKibanaスペース固有であり、適切なアクセス権のあるユーザーが使用できます。",
"xpack.apm.serviceGroups.tour.createGroups.title": "サービスグループの概要",
"xpack.apm.serviceGroups.tour.dismiss": "閉じる",
"xpack.apm.serviceGroups.tour.editGroups.content": "編集オプションを使用して、名前、クエリ、このサービスグループの詳細を変更します。",
"xpack.apm.serviceGroups.tour.editGroups.title": "このサービスグループを編集",
"xpack.apm.serviceHealthStatus.critical": "重大",
"xpack.apm.serviceHealthStatus.healthy": "正常",
"xpack.apm.serviceHealthStatus.unknown": "不明",

View file

@ -10095,13 +10095,6 @@
"xpack.apm.serviceGroups.selectServicesList.nameColumnLabel": "名称",
"xpack.apm.serviceGroups.selectServicesList.notFoundLabel": "过去 24 小时内没有服务可用。您仍然可以创建该组,并且会添加与您的查询匹配的服务。",
"xpack.apm.serviceGroups.sortLabel": "排序",
"xpack.apm.serviceGroups.tour.content.link": "在{docsLink}中了解详情。",
"xpack.apm.serviceGroups.tour.content.link.docs": "文档",
"xpack.apm.serviceGroups.tour.createGroups.content": "将服务组合在一起以构建策展库存视图,进而跨服务消除噪音并简化调查。组特定于 Kibana 工作区,并且可用于任何具有适当访问权限的用户。",
"xpack.apm.serviceGroups.tour.createGroups.title": "服务组简介",
"xpack.apm.serviceGroups.tour.dismiss": "关闭",
"xpack.apm.serviceGroups.tour.editGroups.content": "使用编辑选项更改此服务组的名称、查询或详情。",
"xpack.apm.serviceGroups.tour.editGroups.title": "编辑此服务组",
"xpack.apm.serviceHealthStatus.critical": "紧急",
"xpack.apm.serviceHealthStatus.healthy": "运行正常",
"xpack.apm.serviceHealthStatus.unknown": "未知",