Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
dd77671
[Security Solution] New Add Data Page
Aug 16, 2021
7922134
Fix url
Aug 16, 2021
57c8667
Fixed double button click on cards and default urls
Aug 16, 2021
c29c673
Update copy
Aug 16, 2021
b6f22aa
Put the description with agent not beats 🤦‍♀️
Aug 16, 2021
566b111
Merge remote-tracking branch 'upstream/master' into security/new_add_…
Aug 16, 2021
c6243e4
Merge branch 'master' into security/new_add_data_screen
kibanamachine Aug 17, 2021
6b587c5
Merge branch 'master' into security/new_add_data_screen
cchaos Aug 25, 2021
99dd66a
Update src/plugins/kibana_react/public/page_template/no_data_page/no_…
cchaos Aug 26, 2021
5937a32
Merge branch 'master' into security/new_add_data_screen
kibanamachine Aug 30, 2021
b128771
[Security Solution] Fix tests for new data screen and update index check
kevinlog Sep 13, 2021
ded53c8
Merge pull request #32 from kevinlog/task/fix-tests-for-new-data-screen
cchaos Sep 13, 2021
6503edd
Merge branch 'master' into security/new_add_data_screen
kibanamachine Sep 13, 2021
d10b407
[Security Solution] Correct tests so that appropriate data is loaded …
kevinlog Sep 14, 2021
f000481
use endpoint loader over esarchiver
kevinlog Sep 15, 2021
b3b827c
update tests
kevinlog Sep 15, 2021
be141b9
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Sep 15, 2021
e798745
fix types
kevinlog Sep 15, 2021
545955b
Merge branch 'task/fix-tests-for-add-data-screen' of github.com:kevin…
kevinlog Sep 15, 2021
5474b72
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Sep 22, 2021
1e08ded
update path for Fleet
kevinlog Sep 22, 2021
10c2ba2
update path usage
kevinlog Sep 22, 2021
7e172a6
Undoing unintentional change to ElasticBeatsCard
cchaos Sep 22, 2021
ae18471
re-enable tests
kevinlog Sep 22, 2021
d6f4b3e
Merge branch 'task/fix-tests-for-add-data-screen' of github.com:kevin…
kevinlog Sep 22, 2021
c5a7194
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Sep 23, 2021
dc541c7
Merge branch 'master' of https://github.com/elastic/kibana into task/…
kevinlog Sep 27, 2021
6d0eb4e
address pr comments
kevinlog Sep 27, 2021
d2b2c1a
correct i18n
kevinlog Sep 28, 2021
71ef616
consolidate some translations
kevinlog Sep 28, 2021
f63620f
fix i18n
kevinlog Sep 28, 2021
89bbb93
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Sep 29, 2021
fdda9f2
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Sep 30, 2021
e6741bf
pass the rest of the props in to get dataTestSubj to get tests to pass
kevinlog Oct 1, 2021
0d27d45
PR comments
kevinlog Oct 1, 2021
13ce501
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Oct 4, 2021
34394f7
Merge branch 'master' of https://github.com/elastic/kibana into task/…
kevinlog Oct 4, 2021
d76cc52
fix endpoint list tests
kevinlog Oct 4, 2021
7dd1a6e
update test
kevinlog Oct 4, 2021
7de5044
remove downstream calls to 'indicesExist' since there is a higher lev…
kevinlog Oct 4, 2021
70dcec1
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Oct 4, 2021
572b5f2
fix types
kevinlog Oct 4, 2021
ae1aadf
Merge branch 'task/fix-tests-for-add-data-screen' of github.com:kevin…
kevinlog Oct 4, 2021
aeed2c3
fix tests
kevinlog Oct 5, 2021
74475f7
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Oct 5, 2021
f4f8f9b
Merge branch 'master' into task/fix-tests-for-add-data-screen
kibanamachine Oct 5, 2021
708a2c8
fix test
kevinlog Oct 5, 2021
2450e2b
refactor test
kevinlog Oct 5, 2021
27c39b7
replace downstream indices checks
kevinlog Oct 5, 2021
c2577cf
fix test to be backwards compatible
kevinlog Oct 5, 2021
67c1cc7
One day, I will type this test correctly and it will work
kevinlog Oct 5, 2021
5e55a1a
remove unneeded test for old empty page
kevinlog Oct 5, 2021
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
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ export const KibanaPageTemplate: FunctionComponent<KibanaPageTemplateProps> = ({
if (noDataConfig) {
return (
<EuiPageTemplate
data-test-subj={rest['data-test-subj']}
template={template}
className={classes}
pageSideBar={pageSideBar}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ import {
} from './bottom_bar';
import { useShowTimeline } from '../../../common/utils/timeline/use_show_timeline';
import { gutterTimeline } from '../../../common/lib/helpers';
import { useSourcererScope } from '../../../common/containers/sourcerer';
import { OverviewEmpty } from '../../../overview/components/overview_empty';
import { ENDPOINT_METADATA_INDEX } from '../../../../common/constants';
import { useFetchIndex } from '../../../common/containers/source';

/* eslint-disable react/display-name */
Copy link
Copy Markdown
Contributor

@FrankHassanabad FrankHassanabad Sep 27, 2021

Choose a reason for hiding this comment

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

fwiw, react/display-name was originally added because we weren't setting the react display name and we added a linter rule for it and disabled it as a fast way to get it into the codebase. However, this linter rule where possible should be removed. You don't have to do it here, but just mentioning it. Information is here: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/display-name.md

Basically it helps us debug React applications. (Again background info, you don't have to do anything in this PR).

...But with this enabled at the file level it makes it easy for devs to continue to create things without the name being set...


Expand Down Expand Up @@ -73,11 +77,16 @@ export const SecuritySolutionTemplateWrapper: React.FC<SecuritySolutionPageWrapp
const { show: isShowingTimelineOverlay } = useDeepEqualSelector((state) =>
getTimelineShowStatus(state, TimelineId.active)
);
const endpointMetadataIndex = useMemo<string[]>(() => {
return [ENDPOINT_METADATA_INDEX];
}, []);
const [, { indexExists: metadataIndexExists }] = useFetchIndex(endpointMetadataIndex, true);
const { indicesExist } = useSourcererScope();
const securityIndicesExist = indicesExist || metadataIndexExists;

/* StyledKibanaPageTemplate is a styled EuiPageTemplate. Security solution currently passes the header and page content as the children of StyledKibanaPageTemplate, as opposed to using the pageHeader prop, which may account for any style discrepancies, such as the bottom border not extending the full width of the page, between EuiPageTemplate and the security solution pages.
*/
// StyledKibanaPageTemplate is a styled EuiPageTemplate. Security solution currently passes the header and page content as the children of StyledKibanaPageTemplate, as opposed to using the pageHeader prop, which may account for any style discrepancies, such as the bottom border not extending the full width of the page, between EuiPageTemplate and the security solution pages.

return (
return securityIndicesExist ? (
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

if we're doing this check all the way up here, should we perhaps remove it from downstream?

Ex:
https://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/public/timelines/pages/timelines_page.tsx#L46
https://github.com/elastic/kibana/blob/master/x-pack/plugins/security_solution/public/hosts/pages/details/index.tsx#L123

These are just a few spots. Also, what about the rules page? currently, we will show it even if no index exists

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@stephmilovic I'm happy to remove the checks downstream, however note that this check does include one more index with the metadata index, so show/hiding this Add Data screen has one additional check. Thoughts? Should we still remove all downstream checks?

Also, what about the rules page? currently, we will show it even if no index exists

We also have a couple pages that displayed without having data such as Trusted Apps and Event Filters. The intention here is to have a consistent "Empty State" across all apps. Based on this conversation with @cchaos I think the UX/Design team is open to more granular "Empty State" views in apps in the next iteration.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Yep, the next step will the the in-page empty states. We're working our way through the user's journey. 😄

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ok, so if your check is indicesExist || metaIndicesExist and we will want to display the <OverviewEmpty /> page if indicesExist = false and metaIndicesExist = true vs your new Empty State page? That's not consistent right? Why not make it an && condition and we can get rid of the downstream checks and <OverviewEmpty />?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@stephmilovic yes, I see your point on things not being consistent. The condition should still be indicesExist || metaIndicesExist because our Endpoint management pages should be usable even if we only have Endpoint metadata. To keep things consistent, I did go ahead and removed the downstream checks.

You can see it in this commit : 7de5044

let me know if this looks OK

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@stephmilovic and I spoke offline.

We'd like the same empty state to still be available for the other pages in the event that we have metaIndicesExist = true and indicesExist = false . The new empty state replaces the old one, so that is how it's implemented with the downstream checks to indicesExist . I reverted the changes above to put those checks back.

Commit: 27c39b7

<StyledKibanaPageTemplate
$isTimelineBottomBarVisible={isTimelineBottomBarVisible}
$isShowingTimelineOverlay={isShowingTimelineOverlay}
Expand All @@ -98,5 +107,7 @@ export const SecuritySolutionTemplateWrapper: React.FC<SecuritySolutionPageWrapp
{children}
</EuiPanel>
</StyledKibanaPageTemplate>
) : (
<OverviewEmpty />
);
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,14 @@
import React, { useEffect } from 'react';
import { i18n } from '@kbn/i18n';
import { useKibana } from '../../lib/kibana';
import { SOLUTION_NAME } from '../../translations';

export const HelpMenu = React.memo(() => {
const { chrome, docLinks } = useKibana().services;

useEffect(() => {
chrome.setHelpExtension({
appName: i18n.translate('xpack.securitySolution.chrome.help.appName', {
defaultMessage: 'Security',
}),
appName: SOLUTION_NAME,
links: [
{
content: i18n.translate('xpack.securitySolution.chrome.helpMenu.documentation', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

import { i18n } from '@kbn/i18n';

export const EMPTY_TITLE = i18n.translate('xpack.securitySolution.pages.common.emptyTitle', {
defaultMessage: 'Welcome to Elastic Security. Let’s get you started.',
export const SOLUTION_NAME = i18n.translate('xpack.securitySolution.pages.common.solutionName', {
defaultMessage: 'Security',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: We have re-defined this same key several times:

Up to you if you want to consolidate the name into 1 area with this PR or add the same name again? I might be missing something but it looks like we have duplicated this same name for translations several times.

Screen Shot 2021-09-27 at 1 42 26 PM

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

good suggestion here, I consolidated some of the translations where I thought it made sense semantically, for instance any translation that was using "Security" as an app or solution name. In some other areas I left it alone because it seemed more in context with a specific feature.

71ef616

});

export const EMPTY_ACTION_ELASTIC_AGENT = i18n.translate(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,30 +41,17 @@ describe('OverviewEmpty', () => {
(useUserPrivileges as jest.Mock).mockReset();
});

test('render with correct actions ', () => {
expect(wrapper.find('[data-test-subj="empty-page"]').prop('actions')).toEqual({
beats: {
description:
'Lightweight Beats can send data from hundreds or thousands of machines and systems',
fill: false,
label: 'Add data with Beats',
url: '/app/home#/tutorial_directory/security',
},
elasticAgent: {
description:
'The Elastic Agent provides a simple, unified way to add monitoring to your hosts.',
fill: false,
label: 'Add data with Elastic Agent',
url: 'ingestUrl',
},
endpoint: {
description:
'Protect your hosts with threat prevention, detection, and deep security data visibility.',
fill: false,
label: 'Add Endpoint Security',
onClick: undefined,
url: `/integrations/endpoint-${endpointPackageVersion}/add-integration`,
it('render with correct actions ', () => {
expect(wrapper.find('[data-test-subj="empty-page"]').prop('noDataConfig')).toEqual({
actions: {
elasticAgent: {
description:
'Use Elastic Agent to collect security events and protect your endpoints from threats. Manage your agents in Fleet and add integrations with a single click.',
href: '/app/integrations/browse/security',
},
},
docsLink: 'https://www.elastic.co/guide/en/security/mocked-test-branch/index.html',
solution: 'Security',
});
});
});
Expand All @@ -78,15 +65,15 @@ describe('OverviewEmpty', () => {
wrapper = shallow(<OverviewEmpty />);
});

test('render with correct actions ', () => {
expect(wrapper.find('[data-test-subj="empty-page"]').prop('actions')).toEqual({
beats: {
description:
'Lightweight Beats can send data from hundreds or thousands of machines and systems',
fill: false,
label: 'Add data with Beats',
url: '/app/home#/tutorial_directory/security',
it('render with correct actions ', () => {
expect(wrapper.find('[data-test-subj="empty-page"]').prop('noDataConfig')).toEqual({
actions: {
beats: {
href: '/app/home#/tutorial_directory/security',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👍 Thanks for the tests

},
},
docsLink: 'https://www.elastic.co/guide/en/security/mocked-test-branch/index.html',
solution: 'Security',
});
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,105 +6,57 @@
*/

import React, { useMemo } from 'react';
import { omit } from 'lodash/fp';
import { createStructuredSelector } from 'reselect';

import { FormattedMessage } from '@kbn/i18n/react';
import { EuiLink } from '@elastic/eui';
import * as i18nCommon from '../../../common/translations';
import { EmptyPage, EmptyPageActionsProps } from '../../../common/components/empty_page';
import { i18n } from '@kbn/i18n';
import { useKibana } from '../../../common/lib/kibana';
import { ADD_DATA_PATH } from '../../../../common/constants';
import {
useEndpointSelector,
useIngestUrl,
} from '../../../management/pages/endpoint_hosts/view/hooks';
import { useNavigateToAppEventHandler } from '../../../common/hooks/endpoint/use_navigate_to_app_event_handler';
import { CreateStructuredSelector } from '../../../common/store';
import { endpointPackageVersion as useEndpointPackageVersion } from '../../../management/pages/endpoint_hosts/store/selectors';
import { pagePathGetters } from '../../../../../fleet/public';
import { SOLUTION_NAME } from '../../../../public/common/translations';
import { useUserPrivileges } from '../../../common/components/user_privileges';

import {
KibanaPageTemplate,
NoDataPageActionsProps,
} from '../../../../../../../src/plugins/kibana_react/public';

const OverviewEmptyComponent: React.FC = () => {
const { http, docLinks } = useKibana().services;
const basePath = http.basePath.get();
const selector = (createStructuredSelector as CreateStructuredSelector)({
endpointPackageVersion: useEndpointPackageVersion,
});
const { endpointPackageVersion } = useEndpointSelector(selector);
const { url: ingestUrl } = useIngestUrl('');

const endpointIntegrationUrlPath = endpointPackageVersion
? `/endpoint-${endpointPackageVersion}/add-integration`
: '';
const endpointIntegrationUrl = `/integrations${endpointIntegrationUrlPath}`;
const handleEndpointClick = useNavigateToAppEventHandler('fleet', {
path: endpointIntegrationUrl,
});
const canAccessFleet = useUserPrivileges().endpointPrivileges.canAccessFleet;
const integrationsPathComponents = pagePathGetters.integrations_all({ category: 'security' });
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@jen-huang

I'm using this to get the integrations + category link for use with this "Add Data" screen. The URL we're picking up is /app/integrations/browse/security

This navigates us to the Integrations page, however, it doesn't seem the security category is selected by default.

The result I see is that it navigates to the integrations page, but it drops the security category from the URL and defaults to the All category.

image

If I selected Security, I do see security get appended to the URL, but if I refresh the page with this URL, it's still not persisted.

Select "Security" -
image

After refresh, Security is dropped:
image

Is there a bug here? Should I be able to navigate to the Integrations page with a Category selected?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this is almost certainly a bug, you should definitely be able to browse to a specific category given the URL path. could you file a separate issue? thanks in advance!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks @jen-huang - I filed the above in this ticket: #112871

@cchaos note on the above - as it stands, this navigation won't sort the integrations by Security until the above bug is fixed. The navigation still works, but the user won't see the Security integrations sorted. We could merge this as is and it should work after the bug is fixed. Thoughts?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sounds good. Let's not block this PR because of the routing bug.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

FYI this bug was fixed so this should work now. let me know if you still encounter issues

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

thanks @jen-huang ! Just tested it and it works great!

image


const emptyPageActions: EmptyPageActionsProps = useMemo(
const agentAction: NoDataPageActionsProps = useMemo(
() => ({
elasticAgent: {
label: i18nCommon.EMPTY_ACTION_ELASTIC_AGENT,
url: ingestUrl,
description: i18nCommon.EMPTY_ACTION_ELASTIC_AGENT_DESCRIPTION,
fill: false,
},
beats: {
label: i18nCommon.EMPTY_ACTION_BEATS,
url: `${basePath}${ADD_DATA_PATH}`,
description: i18nCommon.EMPTY_ACTION_BEATS_DESCRIPTION,
fill: false,
},
endpoint: {
label: i18nCommon.EMPTY_ACTION_ENDPOINT,
url: endpointIntegrationUrl,
description: i18nCommon.EMPTY_ACTION_ENDPOINT_DESCRIPTION,
onClick: handleEndpointClick,
fill: false,
href: `${basePath}${integrationsPathComponents[0]}${integrationsPathComponents[1]}`,
description: i18n.translate(
'xpack.securitySolution.pages.emptyPage.beatsCard.description',
{
defaultMessage:
'Use Elastic Agent to collect security events and protect your endpoints from threats. Manage your agents in Fleet and add integrations with a single click.',
}
),
},
}),
[basePath, ingestUrl, endpointIntegrationUrl, handleEndpointClick]
[basePath, integrationsPathComponents]
);

const emptyPageIngestDisabledActions = useMemo(
() => omit(['elasticAgent', 'endpoint'], emptyPageActions),
[emptyPageActions]
const beatsAction: NoDataPageActionsProps = useMemo(
() => ({
beats: {
href: `${basePath}${ADD_DATA_PATH}`,
},
}),
[basePath]
);

return canAccessFleet === true ? (
<EmptyPage
actions={emptyPageActions}
data-test-subj="empty-page"
message={
<>
<FormattedMessage
id="xpack.securitySolution.emptyMessage"
defaultMessage="Elastic Security integrates the free and open Elastic SIEM with Endpoint Security to prevent, detect, and respond to threats. To begin, you’ll need to add security solution related data to the Elastic Stack. For additional information, you can view our "
/>
<EuiLink href={docLinks.links.siem.gettingStarted} target="_blank">
{i18nCommon.EMPTY_ACTION_SECONDARY}
</EuiLink>
</>
}
title={i18nCommon.EMPTY_TITLE}
/>
) : (
<EmptyPage
actions={emptyPageIngestDisabledActions}
return (
<KibanaPageTemplate
data-test-subj="empty-page"
message={
<>
<FormattedMessage
id="xpack.securitySolution.emptyMessage"
defaultMessage="Elastic Security integrates the free and open Elastic SIEM with Endpoint Security to prevent, detect, and respond to threats. To begin, you’ll need to add security solution related data to the Elastic Stack. For additional information, you can view our "
/>
<EuiLink href={docLinks.links.siem.gettingStarted} target="_blank">
{i18nCommon.EMPTY_ACTION_SECONDARY}
</EuiLink>
</>
}
title={i18nCommon.EMPTY_TITLE}
noDataConfig={{
solution: SOLUTION_NAME,
actions: canAccessFleet ? agentAction : beatsAction,
docsLink: docLinks.links.siem.gettingStarted,
}}
/>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,29 +299,6 @@ describe('Overview', () => {
);
expect(wrapper.find('[data-test-subj="empty-page"]').exists()).toBe(true);
});

it('does not show Endpoint get ready button when ingest is not enabled', () => {
const wrapper = mount(
<TestProviders>
<MemoryRouter>
<Overview />
</MemoryRouter>
</TestProviders>
);
expect(wrapper.find('[data-test-subj="empty-page-endpoint-action"]').exists()).toBe(false);
});

it('shows Endpoint get ready button when ingest is enabled', () => {
mockUseUserPrivileges.mockReturnValue(loadedUserPrivilegesState({ canAccessFleet: true }));
const wrapper = mount(
<TestProviders>
<MemoryRouter>
<Overview />
</MemoryRouter>
</TestProviders>
);
expect(wrapper.find('[data-test-subj="empty-page-endpoint-action"]').exists()).toBe(true);
});
});
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ export const NEWS_FEED_TITLE = i18n.translate(
}
);

export const PAGE_TITLE = i18n.translate('xpack.securitySolution.overview.pageTitle', {
defaultMessage: 'Security',
});

export const PAGE_SUBTITLE = i18n.translate('xpack.securitySolution.overview.pageSubtitle', {
defaultMessage: 'Security Information & Event Management with the Elastic Stack',
});
Expand Down
9 changes: 3 additions & 6 deletions x-pack/plugins/security_solution/public/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import {
import { Storage } from '../../../../src/plugins/kibana_utils/public';
import { initTelemetry } from './common/lib/telemetry';
import { KibanaServices } from './common/lib/kibana/services';
import { SOLUTION_NAME } from './common/translations';

import {
APP_ID,
Expand Down Expand Up @@ -104,7 +105,7 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
if (plugins.home) {
plugins.home.featureCatalogue.registerSolution({
id: APP_ID,
title: APP_NAME,
title: SOLUTION_NAME,
description: i18n.translate('xpack.securitySolution.featureCatalogueDescription', {
defaultMessage:
'Prevent, collect, detect, and respond to threats for unified protection across your infrastructure.',
Expand Down Expand Up @@ -134,7 +135,7 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S

core.application.register({
id: APP_ID,
title: APP_NAME,
title: SOLUTION_NAME,
appRoute: APP_PATH,
category: DEFAULT_APP_CATEGORIES.security,
navLinkStatus: AppNavLinkStatus.hidden,
Expand Down Expand Up @@ -433,7 +434,3 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
return this._store;
}
}

const APP_NAME = i18n.translate('xpack.securitySolution.security.title', {
defaultMessage: 'Security',
});
5 changes: 0 additions & 5 deletions x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -20736,7 +20736,6 @@
"xpack.securitySolution.certificate.fingerprint.serverCertLabel": "サーバー証明書",
"xpack.securitySolution.chart.dataAllValuesZerosTitle": "すべての値はゼロを返します",
"xpack.securitySolution.chart.dataNotAvailableTitle": "チャートデータが利用できません",
"xpack.securitySolution.chrome.help.appName": "セキュリティ",
"xpack.securitySolution.chrome.helpMenu.documentation": "セキュリティドキュメント",
"xpack.securitySolution.chrome.helpMenu.documentation.ecs": "ECSドキュメンテーション",
"xpack.securitySolution.clipboard.copied": "コピー完了",
Expand Down Expand Up @@ -21854,7 +21853,6 @@
"xpack.securitySolution.editDataProvider.valueLabel": "値",
"xpack.securitySolution.editDataProvider.valuePlaceholder": "値",
"xpack.securitySolution.effectedPolicySelect.viewPolicyLinkLabel": "ポリシーを表示",
"xpack.securitySolution.emptyMessage": "Elastic Securityは無料かつオープンのElastic SIEMに、Endpoint Securityを搭載。脅威の防御と検知、脅威への対応を支援します。開始するには、セキュリティソリューション関連データをElastic Stackに追加する必要があります。詳細については、以下をご覧ください ",
"xpack.securitySolution.emptyString.emptyStringDescription": "空の文字列",
"xpack.securitySolution.endpoint.actions.agentDetails": "エージェント詳細を表示",
"xpack.securitySolution.endpoint.actions.agentPolicy": "エージェントポリシーを表示",
Expand Down Expand Up @@ -22819,7 +22817,6 @@
"xpack.securitySolution.overview.packetBeatFlowTitle": "フロー",
"xpack.securitySolution.overview.packetbeatTLSTitle": "TLS",
"xpack.securitySolution.overview.pageSubtitle": "Elastic Stackによるセキュリティ情報とイベント管理",
"xpack.securitySolution.overview.pageTitle": "セキュリティ",
"xpack.securitySolution.overview.recentCasesSidebarTitle": "最近のケース",
"xpack.securitySolution.overview.recentTimelinesSidebarTitle": "最近のタイムライン",
"xpack.securitySolution.overview.showTopTooltip": "上位の{fieldName}を表示",
Expand All @@ -22843,7 +22840,6 @@
"xpack.securitySolution.pages.common.emptyActionEndpoint": "Endpoint Securityを追加",
"xpack.securitySolution.pages.common.emptyActionEndpointDescription": "脅威防御、検出、深いセキュリティデータの可視化を実現し、ホストを保護します。",
"xpack.securitySolution.pages.common.emptyActionSecondary": "入門ガイドを表示します。",
"xpack.securitySolution.pages.common.emptyTitle": "Elastic Securityへようこそ。始めましょう。",
"xpack.securitySolution.pages.fourohfour.pageNotFoundDescription": "ページが見つかりません",
"xpack.securitySolution.paginatedTable.rowsButtonLabel": "ページごとの行数",
"xpack.securitySolution.paginatedTable.showingSubtitle": "表示中",
Expand Down Expand Up @@ -22957,7 +22953,6 @@
"xpack.securitySolution.search.timeline.templates": "テンプレート",
"xpack.securitySolution.search.timelines": "タイムライン",
"xpack.securitySolution.search.ueba": "ユーザーとエンティティ",
"xpack.securitySolution.security.title": "セキュリティ",
"xpack.securitySolution.source.destination.packetsLabel": "パケット",
"xpack.securitySolution.stepDefineRule.previewQueryAriaLabel": "クエリプレビュータイムフレーム選択",
"xpack.securitySolution.stepDefineRule.previewQueryButton": "結果を表示",
Expand Down
Loading