[Fleet + Integrations UI] Integrations UI Cleanup (#104641)
* Remove Beta wording from Fleet messaging in ingestion tutorials * Rename fleet feature registration to include integrations * Pluralize + sentence case assets and expand dashboards by default * Update global search from packages -> integrations * Expand auth settings by default in package policy add agent flyout * Update wording for various fleet modules * Fix i18n * Fix unit test * Fix failing tests
This commit is contained in:
parent
e3b6c1f9c7
commit
7907b6ad45
|
@ -22,20 +22,20 @@ export const DisplayedAssets: ServiceNameToAssetTypes = {
|
||||||
export type DisplayedAssetType = ElasticsearchAssetType | KibanaAssetType | 'view';
|
export type DisplayedAssetType = ElasticsearchAssetType | KibanaAssetType | 'view';
|
||||||
|
|
||||||
export const AssetTitleMap: Record<DisplayedAssetType, string> = {
|
export const AssetTitleMap: Record<DisplayedAssetType, string> = {
|
||||||
dashboard: 'Dashboard',
|
dashboard: 'Dashboards',
|
||||||
ilm_policy: 'ILM Policy',
|
ilm_policy: 'ILM policies',
|
||||||
ingest_pipeline: 'Ingest Pipeline',
|
ingest_pipeline: 'Ingest pipelines',
|
||||||
transform: 'Transform',
|
transform: 'Transforms',
|
||||||
index_pattern: 'Index Pattern',
|
index_pattern: 'Index patterns',
|
||||||
index_template: 'Index Template',
|
index_template: 'Index templates',
|
||||||
component_template: 'Component Template',
|
component_template: 'Component templates',
|
||||||
search: 'Saved Search',
|
search: 'Saved searches',
|
||||||
visualization: 'Visualization',
|
visualization: 'Visualizations',
|
||||||
map: 'Map',
|
map: 'Maps',
|
||||||
data_stream_ilm_policy: 'Data Stream ILM Policy',
|
data_stream_ilm_policy: 'Data stream ILM policies',
|
||||||
lens: 'Lens',
|
lens: 'Lens',
|
||||||
security_rule: 'Security Rule',
|
security_rule: 'Security rules',
|
||||||
ml_module: 'ML Module',
|
ml_module: 'ML modules',
|
||||||
view: 'Views',
|
view: 'Views',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ import { AssetTitleMap } from '../../../constants';
|
||||||
|
|
||||||
import { getHrefToObjectInKibanaApp, useStartServices } from '../../../../../hooks';
|
import { getHrefToObjectInKibanaApp, useStartServices } from '../../../../../hooks';
|
||||||
|
|
||||||
|
import { KibanaAssetType } from '../../../../../types';
|
||||||
|
|
||||||
import type { AllowedAssetType, AssetSavedObject } from './types';
|
import type { AllowedAssetType, AssetSavedObject } from './types';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
@ -33,8 +35,12 @@ interface Props {
|
||||||
|
|
||||||
export const AssetsAccordion: FunctionComponent<Props> = ({ savedObjects, type }) => {
|
export const AssetsAccordion: FunctionComponent<Props> = ({ savedObjects, type }) => {
|
||||||
const { http } = useStartServices();
|
const { http } = useStartServices();
|
||||||
|
|
||||||
|
const isDashboard = type === KibanaAssetType.dashboard;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<EuiAccordion
|
<EuiAccordion
|
||||||
|
initialIsOpen={isDashboard}
|
||||||
buttonContent={
|
buttonContent={
|
||||||
<EuiFlexGroup justifyContent="center" alignItems="center" gutterSize="s" responsive={false}>
|
<EuiFlexGroup justifyContent="center" alignItems="center" gutterSize="s" responsive={false}>
|
||||||
<EuiFlexItem grow={false}>
|
<EuiFlexItem grow={false}>
|
||||||
|
|
|
@ -22,12 +22,14 @@ import {
|
||||||
interface Props {
|
interface Props {
|
||||||
agentPolicyId?: string;
|
agentPolicyId?: string;
|
||||||
selectedApiKeyId?: string;
|
selectedApiKeyId?: string;
|
||||||
|
initialAuthenticationSettingsOpen?: boolean;
|
||||||
onKeyChange: (key?: string) => void;
|
onKeyChange: (key?: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const AdvancedAgentAuthenticationSettings: FunctionComponent<Props> = ({
|
export const AdvancedAgentAuthenticationSettings: FunctionComponent<Props> = ({
|
||||||
agentPolicyId,
|
agentPolicyId,
|
||||||
selectedApiKeyId,
|
selectedApiKeyId,
|
||||||
|
initialAuthenticationSettingsOpen = false,
|
||||||
onKeyChange,
|
onKeyChange,
|
||||||
}) => {
|
}) => {
|
||||||
const { notifications } = useStartServices();
|
const { notifications } = useStartServices();
|
||||||
|
@ -35,7 +37,9 @@ export const AdvancedAgentAuthenticationSettings: FunctionComponent<Props> = ({
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
const [isLoadingEnrollmentKey, setIsLoadingEnrollmentKey] = useState(false);
|
const [isLoadingEnrollmentKey, setIsLoadingEnrollmentKey] = useState(false);
|
||||||
const [isAuthenticationSettingsOpen, setIsAuthenticationSettingsOpen] = useState<boolean>(false);
|
const [isAuthenticationSettingsOpen, setIsAuthenticationSettingsOpen] = useState<boolean>(
|
||||||
|
initialAuthenticationSettingsOpen
|
||||||
|
);
|
||||||
|
|
||||||
const onCreateEnrollmentTokenClick = async () => {
|
const onCreateEnrollmentTokenClick = async () => {
|
||||||
setIsLoadingEnrollmentKey(true);
|
setIsLoadingEnrollmentKey(true);
|
||||||
|
|
|
@ -137,14 +137,14 @@ export const AgentEnrollmentKeySelectionStep = ({
|
||||||
}) => {
|
}) => {
|
||||||
return {
|
return {
|
||||||
title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigurePolicyAuthenticationTitle', {
|
title: i18n.translate('xpack.fleet.agentEnrollment.stepConfigurePolicyAuthenticationTitle', {
|
||||||
defaultMessage: 'Configure agent authentication',
|
defaultMessage: 'Select enrollment token',
|
||||||
}),
|
}),
|
||||||
children: (
|
children: (
|
||||||
<>
|
<>
|
||||||
<EuiText>
|
<EuiText>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.agentEnrollment.agentAuthenticationSettings"
|
id="xpack.fleet.agentEnrollment.agentAuthenticationSettings"
|
||||||
defaultMessage="{agentPolicyName} has been selected. Configure agent authentication based on the available policy options."
|
defaultMessage="{agentPolicyName} has been selected. Select which enrollment token to use when enrolling agents."
|
||||||
values={{
|
values={{
|
||||||
agentPolicyName: <strong>{agentPolicy.name}</strong>,
|
agentPolicyName: <strong>{agentPolicy.name}</strong>,
|
||||||
}}
|
}}
|
||||||
|
@ -154,6 +154,7 @@ export const AgentEnrollmentKeySelectionStep = ({
|
||||||
<AdvancedAgentAuthenticationSettings
|
<AdvancedAgentAuthenticationSettings
|
||||||
agentPolicyId={agentPolicy.id}
|
agentPolicyId={agentPolicy.id}
|
||||||
selectedApiKeyId={selectedApiKeyId}
|
selectedApiKeyId={selectedApiKeyId}
|
||||||
|
initialAuthenticationSettingsOpen
|
||||||
onKeyChange={setSelectedAPIKeyId}
|
onKeyChange={setSelectedAPIKeyId}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -33,10 +33,10 @@ const TutorialDirectoryHeaderLink: TutorialDirectoryHeaderLinkComponent = memo((
|
||||||
|
|
||||||
return hasIngestManager && noticeState.settingsDataLoaded && noticeState.hasSeenNotice ? (
|
return hasIngestManager && noticeState.settingsDataLoaded && noticeState.hasSeenNotice ? (
|
||||||
<RedirectAppLinks application={application}>
|
<RedirectAppLinks application={application}>
|
||||||
<EuiButtonEmpty size="s" iconType="link" flush="right" href={getHref('overview')}>
|
<EuiButtonEmpty size="s" iconType="link" flush="right" href={getHref('integrations')}>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.fleetAppButtonText"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.fleetAppButtonText"
|
||||||
defaultMessage="Try Fleet Beta"
|
defaultMessage="Try Integrations"
|
||||||
/>
|
/>
|
||||||
</EuiButtonEmpty>
|
</EuiButtonEmpty>
|
||||||
</RedirectAppLinks>
|
</RedirectAppLinks>
|
||||||
|
|
|
@ -71,13 +71,13 @@ const TutorialDirectoryNotice: TutorialDirectoryNoticeComponent = memo(() => {
|
||||||
title={
|
title={
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeTitle"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeTitle"
|
||||||
defaultMessage="{newPrefix} Elastic Agent and Fleet Beta"
|
defaultMessage="{newPrefix} Elastic Agent integrations"
|
||||||
values={{
|
values={{
|
||||||
newPrefix: (
|
newPrefix: (
|
||||||
<strong>
|
<strong>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeTitle.newPrefix"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeTitle.newPrefix"
|
||||||
defaultMessage="New:"
|
defaultMessage="Now generally available:"
|
||||||
/>
|
/>
|
||||||
</strong>
|
</strong>
|
||||||
),
|
),
|
||||||
|
@ -88,12 +88,16 @@ const TutorialDirectoryNotice: TutorialDirectoryNoticeComponent = memo(() => {
|
||||||
<p>
|
<p>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeText"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeText"
|
||||||
defaultMessage="The Elastic Agent provides a simple, unified way to add monitoring for logs, metrics, and other types of data to your hosts.
|
defaultMessage="Elastic Agent integrations provide a simple, unified way to add monitoring for logs, metrics, and other types of data to your hosts.
|
||||||
You no longer need to install multiple Beats and other agents, which makes it easier and faster to deploy policies across your infrastructure.
|
You no longer need to install multiple Beats, which makes it easier and faster to deploy policies across your infrastructure.
|
||||||
For more information, read our {blogPostLink}."
|
For more information, read our {blogPostLink}."
|
||||||
values={{
|
values={{
|
||||||
blogPostLink: (
|
blogPostLink: (
|
||||||
<EuiLink href="https://ela.st/ingest-manager-announcement" external target="_blank">
|
<EuiLink
|
||||||
|
href="https://ela.st/elastic-agent-ga-announcement"
|
||||||
|
external
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeText.blogPostLink"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.noticeText.blogPostLink"
|
||||||
defaultMessage="announcement blog post"
|
defaultMessage="announcement blog post"
|
||||||
|
@ -107,10 +111,10 @@ const TutorialDirectoryNotice: TutorialDirectoryNoticeComponent = memo(() => {
|
||||||
<FlexItemButtonWrapper grow={false}>
|
<FlexItemButtonWrapper grow={false}>
|
||||||
<div>
|
<div>
|
||||||
<RedirectAppLinks application={application}>
|
<RedirectAppLinks application={application}>
|
||||||
<EuiButton size="s" href={getHref('overview')}>
|
<EuiButton size="s" href={getHref('integrations')}>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialDirectory.fleetAppButtonText"
|
id="xpack.fleet.homeIntegration.tutorialDirectory.fleetAppButtonText"
|
||||||
defaultMessage="Try Fleet Beta"
|
defaultMessage="Try Integrations"
|
||||||
/>
|
/>
|
||||||
</EuiButton>
|
</EuiButton>
|
||||||
</RedirectAppLinks>
|
</RedirectAppLinks>
|
||||||
|
|
|
@ -31,8 +31,8 @@ const TutorialModuleNotice: TutorialModuleNoticeComponent = memo(({ moduleName }
|
||||||
<p>
|
<p>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialModule.noticeText"
|
id="xpack.fleet.homeIntegration.tutorialModule.noticeText"
|
||||||
defaultMessage="{notePrefix} a newer version of this module is {availableAsIntegrationLink} in Fleet Beta.
|
defaultMessage="{notePrefix} a newer version of this module is {availableAsIntegrationLink}.
|
||||||
To learn more about agent policies and the new Elastic Agent, read our {blogPostLink}."
|
To learn more about integrations and the new Elastic Agent, read our {blogPostLink}."
|
||||||
values={{
|
values={{
|
||||||
notePrefix: (
|
notePrefix: (
|
||||||
<strong>
|
<strong>
|
||||||
|
@ -50,13 +50,13 @@ const TutorialModuleNotice: TutorialModuleNoticeComponent = memo(({ moduleName }
|
||||||
>
|
>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id="xpack.fleet.homeIntegration.tutorialModule.noticeText.integrationLink"
|
id="xpack.fleet.homeIntegration.tutorialModule.noticeText.integrationLink"
|
||||||
defaultMessage="available as an Integration"
|
defaultMessage="available as an Elastic Agent integration"
|
||||||
/>
|
/>
|
||||||
</EuiLink>
|
</EuiLink>
|
||||||
),
|
),
|
||||||
blogPostLink: (
|
blogPostLink: (
|
||||||
<EuiLink
|
<EuiLink
|
||||||
href="https://ela.st/ingest-manager-announcement"
|
href="https://ela.st/elastic-agent-ga-announcement"
|
||||||
external
|
external
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
|
|
|
@ -32,7 +32,7 @@ import type { CheckPermissionsResponse, PostIngestSetupResponse } from '../commo
|
||||||
|
|
||||||
import type { FleetConfigType } from '../common/types';
|
import type { FleetConfigType } from '../common/types';
|
||||||
|
|
||||||
import { CUSTOM_LOGS_INTEGRATION_NAME, FLEET_BASE_PATH } from './constants';
|
import { CUSTOM_LOGS_INTEGRATION_NAME, INTEGRATIONS_BASE_PATH } from './constants';
|
||||||
import { licenseService } from './hooks';
|
import { licenseService } from './hooks';
|
||||||
import { setHttpClient } from './hooks/use_request';
|
import { setHttpClient } from './hooks/use_request';
|
||||||
import { createPackageSearchProvider } from './search_provider';
|
import { createPackageSearchProvider } from './search_provider';
|
||||||
|
@ -183,14 +183,14 @@ export class FleetPlugin implements Plugin<FleetSetup, FleetStart, FleetSetupDep
|
||||||
deps.home.featureCatalogue.register({
|
deps.home.featureCatalogue.register({
|
||||||
id: 'fleet',
|
id: 'fleet',
|
||||||
title: i18n.translate('xpack.fleet.featureCatalogueTitle', {
|
title: i18n.translate('xpack.fleet.featureCatalogueTitle', {
|
||||||
defaultMessage: 'Add Elastic Agent',
|
defaultMessage: 'Add Elastic Agent integrations',
|
||||||
}),
|
}),
|
||||||
description: i18n.translate('xpack.fleet.featureCatalogueDescription', {
|
description: i18n.translate('xpack.fleet.featureCatalogueDescription', {
|
||||||
defaultMessage: 'Add and manage your fleet of Elastic Agents and integrations.',
|
defaultMessage: 'Add and manage integrations with Elastic Agent',
|
||||||
}),
|
}),
|
||||||
icon: 'indexManagementApp',
|
icon: 'indexManagementApp',
|
||||||
showOnHomePage: true,
|
showOnHomePage: true,
|
||||||
path: FLEET_BASE_PATH,
|
path: INTEGRATIONS_BASE_PATH,
|
||||||
category: FeatureCatalogueCategory.DATA,
|
category: FeatureCatalogueCategory.DATA,
|
||||||
order: 510,
|
order: 510,
|
||||||
});
|
});
|
||||||
|
|
|
@ -90,7 +90,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test-test',
|
id: 'test-test',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test',
|
title: 'test',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test-test/overview',
|
path: 'undefined#/detail/test-test/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
@ -100,7 +100,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test1-test1',
|
id: 'test1-test1',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test1',
|
title: 'test1',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test1-test1/overview',
|
path: 'undefined#/detail/test1-test1/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
@ -173,7 +173,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test-test',
|
id: 'test-test',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test',
|
title: 'test',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test-test/overview',
|
path: 'undefined#/detail/test-test/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
@ -209,7 +209,7 @@ describe('Package search provider', () => {
|
||||||
expect(sendGetPackages).toHaveBeenCalledTimes(0);
|
expect(sendGetPackages).toHaveBeenCalledTimes(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('with packages tag, with no search term', () => {
|
test('with integration tag, with no search term', () => {
|
||||||
getTestScheduler().run(({ hot, expectObservable }) => {
|
getTestScheduler().run(({ hot, expectObservable }) => {
|
||||||
mockSendGetPackages.mockReturnValue(
|
mockSendGetPackages.mockReturnValue(
|
||||||
hot('--(a|)', { a: { data: { response: testResponse } } })
|
hot('--(a|)', { a: { data: { response: testResponse } } })
|
||||||
|
@ -220,7 +220,7 @@ describe('Package search provider', () => {
|
||||||
const packageSearchProvider = createPackageSearchProvider(setupMock);
|
const packageSearchProvider = createPackageSearchProvider(setupMock);
|
||||||
expectObservable(
|
expectObservable(
|
||||||
packageSearchProvider.find(
|
packageSearchProvider.find(
|
||||||
{ types: ['package'] },
|
{ types: ['integration'] },
|
||||||
{ aborted$: NEVER, maxResults: 100, preference: '' }
|
{ aborted$: NEVER, maxResults: 100, preference: '' }
|
||||||
)
|
)
|
||||||
).toBe('--(a|)', {
|
).toBe('--(a|)', {
|
||||||
|
@ -229,7 +229,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test-test',
|
id: 'test-test',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test',
|
title: 'test',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test-test/overview',
|
path: 'undefined#/detail/test-test/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
@ -239,7 +239,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test1-test1',
|
id: 'test1-test1',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test1',
|
title: 'test1',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test1-test1/overview',
|
path: 'undefined#/detail/test1-test1/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
@ -252,7 +252,7 @@ describe('Package search provider', () => {
|
||||||
expect(sendGetPackages).toHaveBeenCalledTimes(1);
|
expect(sendGetPackages).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('with packages tag, with search term', () => {
|
test('with integration tag, with search term', () => {
|
||||||
getTestScheduler().run(({ hot, expectObservable }) => {
|
getTestScheduler().run(({ hot, expectObservable }) => {
|
||||||
mockSendGetPackages.mockReturnValue(
|
mockSendGetPackages.mockReturnValue(
|
||||||
hot('--(a|)', { a: { data: { response: testResponse } } })
|
hot('--(a|)', { a: { data: { response: testResponse } } })
|
||||||
|
@ -263,7 +263,7 @@ describe('Package search provider', () => {
|
||||||
const packageSearchProvider = createPackageSearchProvider(setupMock);
|
const packageSearchProvider = createPackageSearchProvider(setupMock);
|
||||||
expectObservable(
|
expectObservable(
|
||||||
packageSearchProvider.find(
|
packageSearchProvider.find(
|
||||||
{ term: 'test1', types: ['package'] },
|
{ term: 'test1', types: ['integration'] },
|
||||||
{ aborted$: NEVER, maxResults: 100, preference: '' }
|
{ aborted$: NEVER, maxResults: 100, preference: '' }
|
||||||
)
|
)
|
||||||
).toBe('--(a|)', {
|
).toBe('--(a|)', {
|
||||||
|
@ -272,7 +272,7 @@ describe('Package search provider', () => {
|
||||||
id: 'test1-test1',
|
id: 'test1-test1',
|
||||||
score: 80,
|
score: 80,
|
||||||
title: 'test1',
|
title: 'test1',
|
||||||
type: 'package',
|
type: 'integration',
|
||||||
url: {
|
url: {
|
||||||
path: 'undefined#/detail/test1-test1/overview',
|
path: 'undefined#/detail/test1-test1/overview',
|
||||||
prependBasePath: false,
|
prependBasePath: false,
|
||||||
|
|
|
@ -21,7 +21,7 @@ import { sendGetPackages } from './hooks';
|
||||||
import type { GetPackagesResponse } from './types';
|
import type { GetPackagesResponse } from './types';
|
||||||
import { pagePathGetters } from './constants';
|
import { pagePathGetters } from './constants';
|
||||||
|
|
||||||
const packageType = 'package';
|
const packageType = 'integration';
|
||||||
|
|
||||||
const createPackages$ = () =>
|
const createPackages$ = () =>
|
||||||
from(sendGetPackages()).pipe(
|
from(sendGetPackages()).pipe(
|
||||||
|
@ -70,7 +70,7 @@ export const createPackageSearchProvider = (core: CoreSetup): GlobalSearchResult
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: 'packages',
|
id: 'integrations',
|
||||||
getSearchableTypes: () => [packageType],
|
getSearchableTypes: () => [packageType],
|
||||||
find: ({ term, types }, { maxResults, aborted$ }) => {
|
find: ({ term, types }, { maxResults, aborted$ }) => {
|
||||||
if (types?.includes(packageType) === false) {
|
if (types?.includes(packageType) === false) {
|
||||||
|
|
|
@ -218,7 +218,7 @@ export class FleetPlugin
|
||||||
if (deps.features) {
|
if (deps.features) {
|
||||||
deps.features.registerKibanaFeature({
|
deps.features.registerKibanaFeature({
|
||||||
id: PLUGIN_ID,
|
id: PLUGIN_ID,
|
||||||
name: 'Fleet',
|
name: 'Fleet and Integrations',
|
||||||
category: DEFAULT_APP_CATEGORIES.management,
|
category: DEFAULT_APP_CATEGORIES.management,
|
||||||
app: [PLUGIN_ID, INTEGRATIONS_PLUGIN_ID, 'kibana'],
|
app: [PLUGIN_ID, INTEGRATIONS_PLUGIN_ID, 'kibana'],
|
||||||
catalogue: ['fleet'],
|
catalogue: ['fleet'],
|
||||||
|
|
|
@ -6340,11 +6340,6 @@
|
||||||
"xpack.canvas.functions.repeatImage.args.maxHelpText": "画像が繰り返される最高回数です。",
|
"xpack.canvas.functions.repeatImage.args.maxHelpText": "画像が繰り返される最高回数です。",
|
||||||
"xpack.canvas.functions.repeatImage.args.sizeHelpText": "画像の高さまたは幅のピクセル単位での最高値です。画像が縦長の場合、この関数は高さを制限します。",
|
"xpack.canvas.functions.repeatImage.args.sizeHelpText": "画像の高さまたは幅のピクセル単位での最高値です。画像が縦長の場合、この関数は高さを制限します。",
|
||||||
"xpack.canvas.functions.repeatImageHelpText": "繰り返し画像エレメントを構成します。",
|
"xpack.canvas.functions.repeatImageHelpText": "繰り返し画像エレメントを構成します。",
|
||||||
"expressionRevealImage.functions.revealImage.args.emptyImageHelpText": "表示される背景画像です。画像アセットは「{BASE64}」データ {URL} として提供するか、部分式で渡します。",
|
|
||||||
"expressionRevealImage.functions.revealImage.args.imageHelpText": "表示する画像です。画像アセットは{BASE64}データ{URL}として提供するか、部分式で渡します。",
|
|
||||||
"expressionRevealImage.functions.revealImage.args.originHelpText": "画像で埋め始める位置です。たとえば、{list}、または {end}です。",
|
|
||||||
"expressionRevealImage.functions.revealImage.invalidPercentErrorMessage": "無効な値:「{percent}」。パーセンテージは 0 と 1 の間でなければなりません ",
|
|
||||||
"expressionRevealImage.functions.revealImageHelpText": "画像表示エレメントを構成します。",
|
|
||||||
"xpack.canvas.functions.replace.args.flagsHelpText": "フラグを指定します。{url}を参照してください。",
|
"xpack.canvas.functions.replace.args.flagsHelpText": "フラグを指定します。{url}を参照してください。",
|
||||||
"xpack.canvas.functions.replace.args.patternHelpText": "{JS} 正規表現のテキストまたはパターンです。例:{example}。ここではキャプチャグループを使用できます。",
|
"xpack.canvas.functions.replace.args.patternHelpText": "{JS} 正規表現のテキストまたはパターンです。例:{example}。ここではキャプチャグループを使用できます。",
|
||||||
"xpack.canvas.functions.replace.args.replacementHelpText": "文字列の一致する部分の代わりです。キャプチャグループはノードによってアクセス可能です。例:{example}。",
|
"xpack.canvas.functions.replace.args.replacementHelpText": "文字列の一致する部分の代わりです。キャプチャグループはノードによってアクセス可能です。例:{example}。",
|
||||||
|
@ -6543,8 +6538,6 @@
|
||||||
"xpack.canvas.renderer.progress.helpDescription": "エレメントのパーセンテージを示す進捗インジケーターをレンダリングします",
|
"xpack.canvas.renderer.progress.helpDescription": "エレメントのパーセンテージを示す進捗インジケーターをレンダリングします",
|
||||||
"xpack.canvas.renderer.repeatImage.displayName": "画像の繰り返し",
|
"xpack.canvas.renderer.repeatImage.displayName": "画像の繰り返し",
|
||||||
"xpack.canvas.renderer.repeatImage.helpDescription": "画像を指定回数繰り返し表示します",
|
"xpack.canvas.renderer.repeatImage.helpDescription": "画像を指定回数繰り返し表示します",
|
||||||
"expressionRevealImage.renderer.revealImage.displayName": "画像の部分表示",
|
|
||||||
"expressionRevealImage.renderer.revealImage.helpDescription": "カスタムゲージスタイルチャートを作成するため、画像のパーセンテージを表示します",
|
|
||||||
"xpack.canvas.renderer.shape.displayName": "形状",
|
"xpack.canvas.renderer.shape.displayName": "形状",
|
||||||
"xpack.canvas.renderer.shape.helpDescription": "基本的な図形をレンダリングします",
|
"xpack.canvas.renderer.shape.helpDescription": "基本的な図形をレンダリングします",
|
||||||
"xpack.canvas.renderer.table.displayName": "データテーブル",
|
"xpack.canvas.renderer.table.displayName": "データテーブル",
|
||||||
|
@ -7014,6 +7007,13 @@
|
||||||
"xpack.canvas.workpadTemplates.table.descriptionColumnTitle": "説明",
|
"xpack.canvas.workpadTemplates.table.descriptionColumnTitle": "説明",
|
||||||
"xpack.canvas.workpadTemplates.table.nameColumnTitle": "テンプレート名",
|
"xpack.canvas.workpadTemplates.table.nameColumnTitle": "テンプレート名",
|
||||||
"xpack.canvas.workpadTemplates.table.tagsColumnTitle": "タグ",
|
"xpack.canvas.workpadTemplates.table.tagsColumnTitle": "タグ",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.emptyImageHelpText": "表示される背景画像です。画像アセットは「{BASE64}」データ {URL} として提供するか、部分式で渡します。",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.imageHelpText": "表示する画像です。画像アセットは{BASE64}データ{URL}として提供するか、部分式で渡します。",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.originHelpText": "画像で埋め始める位置です。たとえば、{list}、または {end}です。",
|
||||||
|
"expressionRevealImage.functions.revealImage.invalidPercentErrorMessage": "無効な値:「{percent}」。パーセンテージは 0 と 1 の間でなければなりません ",
|
||||||
|
"expressionRevealImage.functions.revealImageHelpText": "画像表示エレメントを構成します。",
|
||||||
|
"expressionRevealImage.renderer.revealImage.displayName": "画像の部分表示",
|
||||||
|
"expressionRevealImage.renderer.revealImage.helpDescription": "カスタムゲージスタイルチャートを作成するため、画像のパーセンテージを表示します",
|
||||||
"xpack.cases.connectors.cases.externalIncidentAdded": " ({date}に{user}が追加) ",
|
"xpack.cases.connectors.cases.externalIncidentAdded": " ({date}に{user}が追加) ",
|
||||||
"xpack.cases.connectors.cases.externalIncidentCreated": " ({date}に{user}が作成) ",
|
"xpack.cases.connectors.cases.externalIncidentCreated": " ({date}に{user}が作成) ",
|
||||||
"xpack.cases.connectors.cases.externalIncidentDefault": " ({date}に{user}が作成) ",
|
"xpack.cases.connectors.cases.externalIncidentDefault": " ({date}に{user}が作成) ",
|
||||||
|
|
|
@ -6385,11 +6385,6 @@
|
||||||
"xpack.canvas.functions.replace.args.replacementHelpText": "字符串匹配部分的替代。捕获组可以通过其索引进行访问。例如,{example}。",
|
"xpack.canvas.functions.replace.args.replacementHelpText": "字符串匹配部分的替代。捕获组可以通过其索引进行访问。例如,{example}。",
|
||||||
"xpack.canvas.functions.rounddate.args.formatHelpText": "用于存储桶存储的 {MOMENTJS} 格式。例如,{example} 四舍五入到月份。请参见 {url}。",
|
"xpack.canvas.functions.rounddate.args.formatHelpText": "用于存储桶存储的 {MOMENTJS} 格式。例如,{example} 四舍五入到月份。请参见 {url}。",
|
||||||
"xpack.canvas.functions.replaceImageHelpText": "使用正则表达式替换字符串的各部分。",
|
"xpack.canvas.functions.replaceImageHelpText": "使用正则表达式替换字符串的各部分。",
|
||||||
"expressionRevealImage.functions.revealImage.args.emptyImageHelpText": "要显示的可选背景图像。以 `{BASE64}` 数据 {URL} 的形式提供图像资产或传入子表达式。",
|
|
||||||
"expressionRevealImage.functions.revealImage.args.imageHelpText": "要显示的图像。以 {BASE64} 数据 {URL} 的形式提供图像资产或传入子表达式。",
|
|
||||||
"expressionRevealImage.functions.revealImage.args.originHelpText": "要开始图像填充的位置。例如 {list} 或 {end}。",
|
|
||||||
"expressionRevealImage.functions.revealImage.invalidPercentErrorMessage": "无效值:“{percent}”。百分比必须介于 0 和 1 之间",
|
|
||||||
"expressionRevealImage.functions.revealImageHelpText": "配置图像显示元素。",
|
|
||||||
"xpack.canvas.functions.rounddateHelpText": "使用 {MOMENTJS} 格式字符串舍入自 Epoch 起毫秒数,并返回自 Epoch 起毫秒数。",
|
"xpack.canvas.functions.rounddateHelpText": "使用 {MOMENTJS} 格式字符串舍入自 Epoch 起毫秒数,并返回自 Epoch 起毫秒数。",
|
||||||
"xpack.canvas.functions.rowCountHelpText": "返回行数。与 {plyFn} 搭配使用,可获取唯一列值的计数或唯一列值的组合。",
|
"xpack.canvas.functions.rowCountHelpText": "返回行数。与 {plyFn} 搭配使用,可获取唯一列值的计数或唯一列值的组合。",
|
||||||
"xpack.canvas.functions.savedLens.args.idHelpText": "已保存 Lens 可视化对象的 ID",
|
"xpack.canvas.functions.savedLens.args.idHelpText": "已保存 Lens 可视化对象的 ID",
|
||||||
|
@ -6583,8 +6578,6 @@
|
||||||
"xpack.canvas.renderer.progress.helpDescription": "呈现显示元素百分比的进度指示",
|
"xpack.canvas.renderer.progress.helpDescription": "呈现显示元素百分比的进度指示",
|
||||||
"xpack.canvas.renderer.repeatImage.displayName": "图像重复",
|
"xpack.canvas.renderer.repeatImage.displayName": "图像重复",
|
||||||
"xpack.canvas.renderer.repeatImage.helpDescription": "重复图像给定次数",
|
"xpack.canvas.renderer.repeatImage.helpDescription": "重复图像给定次数",
|
||||||
"expressionRevealImage.renderer.revealImage.displayName": "图像显示",
|
|
||||||
"expressionRevealImage.renderer.revealImage.helpDescription": "显示一定百分比的图像,以制作定制的仪表样式图表",
|
|
||||||
"xpack.canvas.renderer.shape.displayName": "形状",
|
"xpack.canvas.renderer.shape.displayName": "形状",
|
||||||
"xpack.canvas.renderer.shape.helpDescription": "呈现基本形状",
|
"xpack.canvas.renderer.shape.helpDescription": "呈现基本形状",
|
||||||
"xpack.canvas.renderer.table.displayName": "数据表",
|
"xpack.canvas.renderer.table.displayName": "数据表",
|
||||||
|
@ -7062,6 +7055,13 @@
|
||||||
"xpack.canvas.workpadTemplates.table.descriptionColumnTitle": "描述",
|
"xpack.canvas.workpadTemplates.table.descriptionColumnTitle": "描述",
|
||||||
"xpack.canvas.workpadTemplates.table.nameColumnTitle": "模板名称",
|
"xpack.canvas.workpadTemplates.table.nameColumnTitle": "模板名称",
|
||||||
"xpack.canvas.workpadTemplates.table.tagsColumnTitle": "标签",
|
"xpack.canvas.workpadTemplates.table.tagsColumnTitle": "标签",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.emptyImageHelpText": "要显示的可选背景图像。以 `{BASE64}` 数据 {URL} 的形式提供图像资产或传入子表达式。",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.imageHelpText": "要显示的图像。以 {BASE64} 数据 {URL} 的形式提供图像资产或传入子表达式。",
|
||||||
|
"expressionRevealImage.functions.revealImage.args.originHelpText": "要开始图像填充的位置。例如 {list} 或 {end}。",
|
||||||
|
"expressionRevealImage.functions.revealImage.invalidPercentErrorMessage": "无效值:“{percent}”。百分比必须介于 0 和 1 之间",
|
||||||
|
"expressionRevealImage.functions.revealImageHelpText": "配置图像显示元素。",
|
||||||
|
"expressionRevealImage.renderer.revealImage.displayName": "图像显示",
|
||||||
|
"expressionRevealImage.renderer.revealImage.helpDescription": "显示一定百分比的图像,以制作定制的仪表样式图表",
|
||||||
"xpack.cases.connectors.cases.externalIncidentAdded": " (由 {user} 于 {date}添加) ",
|
"xpack.cases.connectors.cases.externalIncidentAdded": " (由 {user} 于 {date}添加) ",
|
||||||
"xpack.cases.connectors.cases.externalIncidentCreated": " (由 {user} 于 {date}创建) ",
|
"xpack.cases.connectors.cases.externalIncidentCreated": " (由 {user} 于 {date}创建) ",
|
||||||
"xpack.cases.connectors.cases.externalIncidentDefault": " (由 {user} 于 {date}创建) ",
|
"xpack.cases.connectors.cases.externalIncidentDefault": " (由 {user} 于 {date}创建) ",
|
||||||
|
|
Loading…
Reference in a new issue