Skip to content

Commit 105afbc

Browse files
[Component templates] Address feedback (#70912)
1 parent eac0f8d commit 105afbc

File tree

23 files changed

+254
-86
lines changed

23 files changed

+254
-86
lines changed

x-pack/plugins/index_management/common/lib/component_template_serialization.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ describe('Component template serialization', () => {
9292
},
9393
_kbnMeta: {
9494
usedBy: ['my_index_template'],
95+
isManaged: false,
9596
},
9697
});
9798
});
@@ -105,6 +106,7 @@ describe('Component template serialization', () => {
105106
version: 1,
106107
_kbnMeta: {
107108
usedBy: [],
109+
isManaged: false,
108110
},
109111
_meta: {
110112
serialization: {

x-pack/plugins/index_management/common/lib/component_template_serialization.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,26 @@ export function deserializeComponentTemplate(
6060
_meta,
6161
_kbnMeta: {
6262
usedBy: indexTemplatesToUsedBy[name] || [],
63+
isManaged: Boolean(_meta?.managed === true),
6364
},
6465
};
6566

6667
return deserializedComponentTemplate;
6768
}
6869

69-
export function deserializeComponenTemplateList(
70+
export function deserializeComponentTemplateList(
7071
componentTemplateEs: ComponentTemplateFromEs,
7172
indexTemplatesEs: TemplateFromEs[]
7273
) {
7374
const { name, component_template: componentTemplate } = componentTemplateEs;
74-
const { template } = componentTemplate;
75+
const { template, _meta } = componentTemplate;
7576

7677
const indexTemplatesToUsedBy = getIndexTemplatesToUsedBy(indexTemplatesEs);
7778

7879
const componentTemplateListItem: ComponentTemplateListItem = {
7980
name,
8081
usedBy: indexTemplatesToUsedBy[name] || [],
82+
isManaged: Boolean(_meta?.managed === true),
8183
hasSettings: hasEntries(template.settings),
8284
hasMappings: hasEntries(template.mappings),
8385
hasAliases: hasEntries(template.aliases),

x-pack/plugins/index_management/common/lib/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ export { getTemplateParameter } from './utils';
1919

2020
export {
2121
deserializeComponentTemplate,
22-
deserializeComponenTemplateList,
22+
deserializeComponentTemplateList,
2323
serializeComponentTemplate,
2424
} from './component_template_serialization';

x-pack/plugins/index_management/common/types/component_templates.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface ComponentTemplateDeserialized extends ComponentTemplateSerializ
2222
name: string;
2323
_kbnMeta: {
2424
usedBy: string[];
25+
isManaged: boolean;
2526
};
2627
}
2728

@@ -36,4 +37,5 @@ export interface ComponentTemplateListItem {
3637
hasMappings: boolean;
3738
hasAliases: boolean;
3839
hasSettings: boolean;
40+
isManaged: boolean;
3941
}

x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_create.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ describe('<ComponentTemplateCreate />', () => {
185185
},
186186
aliases: ALIASES,
187187
},
188-
_kbnMeta: { usedBy: [] },
188+
_kbnMeta: { usedBy: [], isManaged: false },
189189
};
190190

191191
expect(JSON.parse(JSON.parse(latestRequest.requestBody).body)).toEqual(expected);

x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_details.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ const COMPONENT_TEMPLATE: ComponentTemplateDeserialized = {
2626
},
2727
version: 1,
2828
_meta: { description: 'component template test' },
29-
_kbnMeta: { usedBy: ['template_1'] },
29+
_kbnMeta: { usedBy: ['template_1'], isManaged: false },
3030
};
3131

3232
const COMPONENT_TEMPLATE_ONLY_REQUIRED_FIELDS: ComponentTemplateDeserialized = {
3333
name: 'comp-base',
3434
template: {},
35-
_kbnMeta: { usedBy: [] },
35+
_kbnMeta: { usedBy: [], isManaged: false },
3636
};
3737

3838
describe('<ComponentTemplateDetails />', () => {

x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ describe('<ComponentTemplateEdit />', () => {
5252
template: {
5353
settings: { number_of_shards: 1 },
5454
},
55-
_kbnMeta: { usedBy: [] },
55+
_kbnMeta: { usedBy: [], isManaged: false },
5656
};
5757

5858
beforeEach(async () => {

x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_list.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ describe('<ComponentTemplateList />', () => {
4242
hasAliases: true,
4343
hasSettings: true,
4444
usedBy: [],
45+
isManaged: false,
4546
};
4647

4748
const componentTemplate2: ComponentTemplateListItem = {
@@ -50,6 +51,7 @@ describe('<ComponentTemplateList />', () => {
5051
hasAliases: true,
5152
hasSettings: true,
5253
usedBy: ['test_index_template_1'],
54+
isManaged: false,
5355
};
5456

5557
const componentTemplates = [componentTemplate1, componentTemplate2];

x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/setup_environment.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { HttpSetup } from 'kibana/public';
1212
import {
1313
notificationServiceMock,
1414
docLinksServiceMock,
15+
applicationServiceMock,
1516
} from '../../../../../../../../../../src/core/public/mocks';
1617

1718
import { ComponentTemplatesProvider } from '../../../component_templates_context';
@@ -28,6 +29,7 @@ const appDependencies = {
2829
docLinks: docLinksServiceMock.createStartContract(),
2930
toasts: notificationServiceMock.createSetupContract().toasts,
3031
setBreadcrumbs: () => {},
32+
getUrlForApp: applicationServiceMock.createStartContract().getUrlForApp,
3133
};
3234

3335
export const setupEnvironment = () => {

x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/component_template_details.tsx

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import React, { useState } from 'react';
88
import { FormattedMessage } from '@kbn/i18n/react';
9+
910
import {
1011
EuiFlyout,
1112
EuiFlyoutHeader,
@@ -17,6 +18,7 @@ import {
1718
EuiButtonEmpty,
1819
EuiSpacer,
1920
EuiCallOut,
21+
EuiBadge,
2022
} from '@elastic/eui';
2123

2224
import { SectionLoading, TabSettings, TabAliases, TabMappings } from '../shared_imports';
@@ -29,14 +31,15 @@ import { attemptToDecodeURI } from '../lib';
2931
interface Props {
3032
componentTemplateName: string;
3133
onClose: () => void;
32-
showFooter?: boolean;
3334
actions?: ManageAction[];
35+
showSummaryCallToAction?: boolean;
3436
}
3537

3638
export const ComponentTemplateDetailsFlyout: React.FunctionComponent<Props> = ({
3739
componentTemplateName,
3840
onClose,
3941
actions,
42+
showSummaryCallToAction,
4043
}) => {
4144
const { api } = useComponentTemplatesContext();
4245

@@ -81,7 +84,12 @@ export const ComponentTemplateDetailsFlyout: React.FunctionComponent<Props> = ({
8184
} = componentTemplateDetails;
8285

8386
const tabToComponentMap: Record<TabType, React.ReactNode> = {
84-
summary: <TabSummary componentTemplateDetails={componentTemplateDetails} />,
87+
summary: (
88+
<TabSummary
89+
componentTemplateDetails={componentTemplateDetails}
90+
showCallToAction={showSummaryCallToAction}
91+
/>
92+
),
8593
settings: <TabSettings settings={settings} />,
8694
mappings: <TabMappings mappings={mappings} />,
8795
aliases: <TabAliases aliases={aliases} />,
@@ -109,11 +117,27 @@ export const ComponentTemplateDetailsFlyout: React.FunctionComponent<Props> = ({
109117
maxWidth={500}
110118
>
111119
<EuiFlyoutHeader>
112-
<EuiTitle size="m">
113-
<h2 id="componentTemplateDetailsFlyoutTitle" data-test-subj="title">
114-
{decodedComponentTemplateName}
115-
</h2>
116-
</EuiTitle>
120+
<EuiFlexGroup alignItems="center" gutterSize="s">
121+
<EuiFlexItem grow={false}>
122+
<EuiTitle size="m">
123+
<h2 id="componentTemplateDetailsFlyoutTitle" data-test-subj="title">
124+
{decodedComponentTemplateName}
125+
</h2>
126+
</EuiTitle>
127+
</EuiFlexItem>
128+
129+
{componentTemplateDetails?._kbnMeta.isManaged ? (
130+
<EuiFlexItem grow={false}>
131+
{' '}
132+
<EuiBadge color="hollow">
133+
<FormattedMessage
134+
id="xpack.idxMgmt.componentTemplateDetails.managedBadgeLabel"
135+
defaultMessage="Managed"
136+
/>
137+
</EuiBadge>
138+
</EuiFlexItem>
139+
) : null}
140+
</EuiFlexGroup>
117141
</EuiFlyoutHeader>
118142

119143
<EuiFlyoutBody data-test-subj="content">{content}</EuiFlyoutBody>

0 commit comments

Comments
 (0)