@rancher/shell 3.0.5-rc.3 → 3.0.5-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/icons/document.svg +3 -0
- package/assets/images/vendor/cognito.svg +1 -0
- package/assets/styles/app.scss +1 -0
- package/assets/styles/base/_basic.scss +10 -0
- package/assets/styles/base/_spacing.scss +29 -0
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/themes/_dark.scss +25 -0
- package/assets/styles/themes/_light.scss +65 -0
- package/assets/translations/en-us.yaml +322 -24
- package/assets/translations/zh-hans.yaml +8 -5
- package/components/Certificates.vue +5 -0
- package/components/FilterPanel.vue +156 -0
- package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
- package/components/IconOrSvg.vue +14 -35
- package/components/PromptRemove.vue +5 -1
- package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
- package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
- package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
- package/components/Resource/Detail/Card/Scaler.vue +89 -0
- package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
- package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
- package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
- package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
- package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
- package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
- package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
- package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
- package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
- package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
- package/components/Resource/Detail/Card/index.vue +56 -0
- package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
- package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Annotations/index.vue +26 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +281 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +111 -0
- package/components/Resource/Detail/Metadata/KeyValue.vue +130 -0
- package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
- package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Labels/index.vue +27 -0
- package/components/Resource/Detail/Metadata/Rectangle.vue +32 -0
- package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
- package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
- package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
- package/components/Resource/Detail/Metadata/composables.ts +29 -0
- package/components/Resource/Detail/Metadata/index.vue +66 -0
- package/components/Resource/Detail/Page.vue +22 -0
- package/components/Resource/Detail/PercentageBar.vue +40 -0
- package/components/Resource/Detail/ResourceRow.vue +119 -0
- package/components/Resource/Detail/SpacedRow.vue +14 -0
- package/components/Resource/Detail/StatusBar.vue +59 -0
- package/components/Resource/Detail/StatusRow.vue +61 -0
- package/components/Resource/Detail/TitleBar/Title.vue +13 -0
- package/components/Resource/Detail/TitleBar/Top.vue +14 -0
- package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
- package/components/Resource/Detail/TitleBar/composable.ts +31 -0
- package/components/Resource/Detail/TitleBar/index.vue +124 -0
- package/components/Resource/Detail/Top/index.vue +34 -0
- package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
- package/components/ResourceDetail/__tests__/index.test.ts +114 -0
- package/components/ResourceDetail/index.vue +64 -562
- package/components/ResourceDetail/legacy.vue +545 -0
- package/components/ResourceTable.vue +41 -7
- package/components/SlideInPanelManager.vue +76 -8
- package/components/SortableTable/index.vue +13 -2
- package/components/SortableTable/selection.js +21 -8
- package/components/StatusBadge.vue +6 -4
- package/components/SubtleLink.vue +25 -0
- package/components/Wizard.vue +12 -1
- package/components/YamlEditor.vue +1 -1
- package/components/__tests__/FilterPanel.test.ts +81 -0
- package/components/auth/AuthBanner.vue +2 -3
- package/components/auth/RoleDetailEdit.vue +45 -3
- package/components/auth/login/oidc.vue +6 -1
- package/components/fleet/FleetApplications.vue +181 -0
- package/components/fleet/FleetHelmOps.vue +115 -0
- package/components/fleet/FleetIntro.vue +58 -28
- package/components/fleet/FleetNoWorkspaces.vue +5 -1
- package/components/fleet/FleetOCIStorageSecret.vue +171 -0
- package/components/fleet/FleetRepos.vue +38 -76
- package/components/fleet/FleetResources.vue +50 -22
- package/components/fleet/FleetSummary.vue +26 -51
- package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
- package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
- package/components/fleet/dashboard/Empty.vue +73 -0
- package/components/fleet/dashboard/ResourceCard.vue +183 -0
- package/components/fleet/dashboard/ResourceCardSummary.vue +199 -0
- package/components/fleet/dashboard/ResourceDetails.vue +196 -0
- package/components/fleet/dashboard/ResourcePanel.vue +376 -0
- package/components/form/ArrayList.vue +6 -0
- package/components/form/SimpleSecretSelector.vue +8 -2
- package/components/form/ValueFromResource.vue +31 -19
- package/components/formatter/FleetApplicationClustersReady.vue +77 -0
- package/components/formatter/FleetApplicationSource.vue +71 -0
- package/components/formatter/FleetSummaryGraph.vue +7 -0
- package/components/nav/Header.vue +8 -7
- package/components/nav/TopLevelMenu.helper.ts +55 -34
- package/components/nav/TopLevelMenu.vue +11 -0
- package/components/nav/Type.vue +4 -1
- package/composables/useI18n.ts +12 -11
- package/config/labels-annotations.js +14 -11
- package/config/product/auth.js +1 -0
- package/config/product/fleet.js +70 -17
- package/config/query-params.js +3 -1
- package/config/roles.ts +1 -0
- package/config/router/routes.js +20 -2
- package/config/secret.ts +15 -0
- package/config/settings.ts +3 -2
- package/config/table-headers.js +52 -22
- package/config/types.js +2 -0
- package/core/plugin-helpers.ts +3 -2
- package/detail/fleet.cattle.io.cluster.vue +28 -15
- package/detail/fleet.cattle.io.gitrepo.vue +10 -1
- package/detail/fleet.cattle.io.helmop.vue +157 -0
- package/dialog/HelmOpForceUpdateDialog.vue +132 -0
- package/dialog/RedeployWorkloadDialog.vue +164 -0
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +56 -67
- package/edit/auth/oidc.vue +159 -93
- package/edit/fleet.cattle.io.gitrepo.vue +26 -33
- package/edit/fleet.cattle.io.helmop.vue +997 -0
- package/edit/management.cattle.io.fleetworkspace.vue +43 -10
- package/list/fleet.cattle.io.gitrepo.vue +1 -1
- package/list/fleet.cattle.io.helmop.vue +108 -0
- package/list/namespace.vue +5 -2
- package/mixins/auth-config.js +8 -1
- package/mixins/preset.js +100 -0
- package/mixins/resource-fetch-api-pagination.js +2 -0
- package/mixins/resource-fetch.js +1 -1
- package/mixins/resource-table-watch.js +45 -0
- package/models/__tests__/chart.test.ts +273 -0
- package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
- package/models/chart.js +144 -2
- package/models/fleet-application.js +385 -0
- package/models/fleet.cattle.io.bundle.js +9 -8
- package/models/fleet.cattle.io.gitrepo.js +41 -365
- package/models/fleet.cattle.io.helmop.js +228 -0
- package/models/management.cattle.io.authconfig.js +1 -0
- package/models/management.cattle.io.fleetworkspace.js +12 -0
- package/models/workload.js +14 -18
- package/package.json +2 -1
- package/pages/auth/verify.vue +13 -1
- package/pages/c/_cluster/apps/charts/AddRepoLink.vue +37 -0
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
- package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +54 -0
- package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
- package/pages/c/_cluster/apps/charts/index.vue +302 -484
- package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
- package/pages/c/_cluster/fleet/__tests__/index.test.ts +426 -0
- package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
- package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
- package/pages/c/_cluster/fleet/application/create.vue +340 -0
- package/pages/c/_cluster/fleet/application/index.vue +139 -0
- package/pages/c/_cluster/fleet/graph/config.js +277 -0
- package/pages/c/_cluster/fleet/index.vue +772 -330
- package/pages/explorer/resource/detail/configmap.vue +19 -0
- package/plugins/dashboard-store/actions.js +31 -9
- package/plugins/dashboard-store/getters.js +34 -21
- package/plugins/dashboard-store/mutations.js +51 -7
- package/plugins/dashboard-store/resource-class.js +14 -2
- package/plugins/steve/__tests__/subscribe.spec.ts +66 -1
- package/plugins/steve/actions.js +3 -0
- package/plugins/steve/steve-pagination-utils.ts +14 -13
- package/plugins/steve/subscribe.js +229 -42
- package/rancher-components/BadgeState/BadgeState.vue +3 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +2 -2
- package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +425 -0
- package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
- package/rancher-components/RcItemCard/index.ts +2 -0
- package/store/auth.js +1 -0
- package/store/catalog.js +62 -24
- package/store/index.js +33 -14
- package/store/slideInPanel.ts +6 -0
- package/store/type-map.js +1 -0
- package/types/fleet.d.ts +35 -0
- package/types/resources/settings.d.ts +19 -1
- package/types/shell/index.d.ts +339 -272
- package/types/store/dashboard-store.types.ts +17 -3
- package/types/store/pagination.types.ts +6 -1
- package/types/store/subscribe.types.ts +50 -0
- package/utils/auth.js +32 -3
- package/utils/fleet-types.ts +0 -0
- package/utils/fleet.ts +200 -1
- package/utils/pagination-utils.ts +26 -1
- package/utils/pagination-wrapper.ts +132 -50
- package/utils/settings.ts +4 -1
- package/utils/style.ts +39 -0
- package/utils/validators/formRules/__tests__/index.test.ts +36 -3
- package/utils/validators/formRules/index.ts +10 -3
- package/utils/window.js +11 -7
- package/components/__tests__/ApplicationCard.test.ts +0 -27
- package/components/cards/ApplicationCard.vue +0 -145
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
- package/config/secret.js +0 -14
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
- /package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +0 -0
|
@@ -96,8 +96,8 @@ describe('formRules', () => {
|
|
|
96
96
|
);
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
-
describe('
|
|
100
|
-
const message = JSON.stringify({ message: 'validation.git.
|
|
99
|
+
describe('urlRepository', () => {
|
|
100
|
+
const message = JSON.stringify({ message: 'validation.git.url' });
|
|
101
101
|
const testCases = [
|
|
102
102
|
// Valid HTTP(s)
|
|
103
103
|
['https://github.com/rancher/dashboard.git', undefined],
|
|
@@ -128,7 +128,40 @@ describe('formRules', () => {
|
|
|
128
128
|
it.each(testCases)(
|
|
129
129
|
'should return undefined or correct message based on the provided Git url: %p',
|
|
130
130
|
(url, expected) => {
|
|
131
|
-
const formRuleResult = formRules.
|
|
131
|
+
const formRuleResult = formRules.urlRepository(url);
|
|
132
|
+
|
|
133
|
+
expect(formRuleResult).toStrictEqual(expected);
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
describe('ociRegistry', () => {
|
|
139
|
+
const message = JSON.stringify({ message: 'validation.oci.url' });
|
|
140
|
+
const testCases = [
|
|
141
|
+
// Valid
|
|
142
|
+
['oci://bucket/object', undefined],
|
|
143
|
+
['oci://region.objectstorage.example.com/n', undefined],
|
|
144
|
+
['oci://a', undefined],
|
|
145
|
+
['oci://UPPERCASE/path', undefined],
|
|
146
|
+
|
|
147
|
+
// Invalid
|
|
148
|
+
['http://example.com/oci', message],
|
|
149
|
+
['https://oci.cloud.com', message],
|
|
150
|
+
['ftp://oci.server.net', message],
|
|
151
|
+
['/path/to/oci', message],
|
|
152
|
+
['oci:/missing/slash', message],
|
|
153
|
+
['oci:', message],
|
|
154
|
+
['oci://', message],
|
|
155
|
+
['oci://space between', message],
|
|
156
|
+
['oci://resource multiple spaces', message],
|
|
157
|
+
['', message],
|
|
158
|
+
[undefined, message],
|
|
159
|
+
];
|
|
160
|
+
|
|
161
|
+
it.each(testCases)(
|
|
162
|
+
'should return undefined or correct message based on the provided OCI url: %p',
|
|
163
|
+
(url, expected) => {
|
|
164
|
+
const formRuleResult = formRules.ociRegistry(url);
|
|
132
165
|
|
|
133
166
|
expect(formRuleResult).toStrictEqual(expected);
|
|
134
167
|
}
|
|
@@ -170,19 +170,25 @@ export default function(
|
|
|
170
170
|
|
|
171
171
|
const url: Validator = (val: string) => val && !isUrl(val) ? t('validation.setting.serverUrl.url') : undefined;
|
|
172
172
|
|
|
173
|
-
const
|
|
173
|
+
const urlRepository: Validator = (url: string) => {
|
|
174
174
|
const regexPart1 = /^((http|git|ssh|http(s)|file|\/?)|(git@[\w\.]+))(:(\/\/)?)/gm;
|
|
175
175
|
const regexPart2 = /^([\w\.@\:\/\-]+)([\d\/\w.-]+?)(.git){0,1}(\/)?$/gm;
|
|
176
176
|
|
|
177
177
|
if (url) {
|
|
178
178
|
const urlPart2 = url.replaceAll(regexPart1, '');
|
|
179
179
|
|
|
180
|
-
return !urlPart2 || url === urlPart2 || !regexPart2.test(urlPart2.replaceAll('%20', '')) ? t('validation.git.
|
|
180
|
+
return !urlPart2 || url === urlPart2 || !regexPart2.test(urlPart2.replaceAll('%20', '')) ? t('validation.git.url') : undefined;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
return undefined;
|
|
184
184
|
};
|
|
185
185
|
|
|
186
|
+
const ociRegistry: Validator = (url: string) => {
|
|
187
|
+
const regex = /^oci:\/\/\S+$/gm;
|
|
188
|
+
|
|
189
|
+
return !regex.test(url) ? t('validation.oci.url') : undefined;
|
|
190
|
+
};
|
|
191
|
+
|
|
186
192
|
const alphanumeric: Validator = (val: string) => val && !/^[a-zA-Z0-9]+$/.test(val) ? t('validation.alphanumeric', { key }) : undefined;
|
|
187
193
|
|
|
188
194
|
const interval: Validator = (val: string) => !/^\d+[hms]$/.test(val) ? t('validation.monitoring.route.interval', { key }) : undefined;
|
|
@@ -527,7 +533,7 @@ export default function(
|
|
|
527
533
|
dnsLabelRestricted,
|
|
528
534
|
externalName,
|
|
529
535
|
fileRequired,
|
|
530
|
-
|
|
536
|
+
urlRepository,
|
|
531
537
|
groupsAreValid,
|
|
532
538
|
hostname,
|
|
533
539
|
imageUrl,
|
|
@@ -542,6 +548,7 @@ export default function(
|
|
|
542
548
|
minLength,
|
|
543
549
|
minValue,
|
|
544
550
|
noUpperCase,
|
|
551
|
+
ociRegistry,
|
|
545
552
|
portNumber,
|
|
546
553
|
registryUrl,
|
|
547
554
|
required,
|
package/utils/window.js
CHANGED
|
@@ -28,7 +28,7 @@ export class Popup {
|
|
|
28
28
|
this.popup = null;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
open(url, name, opt) {
|
|
31
|
+
open(url, name, opt, doNotPollForClosure) {
|
|
32
32
|
this.onOpen();
|
|
33
33
|
this.popup = open(url, name, opt);
|
|
34
34
|
|
|
@@ -36,11 +36,15 @@ export class Popup {
|
|
|
36
36
|
throw new Error('Please disable your popup blocker for this site');
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
// In some cases, for example, if the origin policy does not allow, we will think the window has closed
|
|
40
|
+
// when it has not - we will see it as closed, because we don't have access
|
|
41
|
+
if (!doNotPollForClosure) {
|
|
42
|
+
const timer = setInterval(() => {
|
|
43
|
+
if (this.popup.closed) {
|
|
44
|
+
clearInterval(timer);
|
|
45
|
+
this.onClose();
|
|
46
|
+
}
|
|
47
|
+
}, 500);
|
|
48
|
+
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils';
|
|
2
|
-
import ApplicationCard from '@shell/components/cards/ApplicationCard.vue';
|
|
3
|
-
|
|
4
|
-
describe('component: ApplicationCard', () => {
|
|
5
|
-
const wrapper = mount(ApplicationCard, {
|
|
6
|
-
slots: {
|
|
7
|
-
cardIcon: '<i class="icon icon-fw icon-epinio"></i>',
|
|
8
|
-
'top-left': '<h1>Routes</h1> <ul><li> <a target="_blank" rel="noopener noreferrer nofollow"> route1 </a> </li> <li><a target="_blank" rel="noopener noreferrer nofollow"> route1 </a></li> </ul>',
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it.each([
|
|
13
|
-
'cardIcon',
|
|
14
|
-
'top-left',
|
|
15
|
-
'top-right',
|
|
16
|
-
'resourcesCount',
|
|
17
|
-
])('should have a populated %p slot', (slot) => {
|
|
18
|
-
const content = '<div>text</div>';
|
|
19
|
-
const ele = mount(ApplicationCard, { slots: { [slot]: content } });
|
|
20
|
-
|
|
21
|
-
expect(ele.find(`[data-testid="${ slot }-section"`).find('div').html()).toContain(content);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should have card-icon slot with an icon', () => {
|
|
25
|
-
expect(wrapper.find('[data-testid="cardIcon-section"]').find('i').classes()).toContain('icon-epinio');
|
|
26
|
-
});
|
|
27
|
-
});
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
export default {};
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<template>
|
|
6
|
-
<div class="application-card mt-20">
|
|
7
|
-
<div
|
|
8
|
-
class="application-card-icon"
|
|
9
|
-
data-testid="cardIcon-section"
|
|
10
|
-
>
|
|
11
|
-
<slot name="cardIcon" />
|
|
12
|
-
</div>
|
|
13
|
-
<div class="application-card-details">
|
|
14
|
-
<div class="application-card-details-top">
|
|
15
|
-
<div data-testid="top-left-section">
|
|
16
|
-
<slot name="top-left" />
|
|
17
|
-
</div>
|
|
18
|
-
<div data-testid="top-right-section">
|
|
19
|
-
<slot name="top-right" />
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
<div
|
|
23
|
-
class="application-card-details-bottom"
|
|
24
|
-
data-testid="resourcesCount-section"
|
|
25
|
-
>
|
|
26
|
-
<slot name="resourcesCount" />
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
</template>
|
|
31
|
-
|
|
32
|
-
<style lang='scss'>
|
|
33
|
-
.application-card {
|
|
34
|
-
display: flex;
|
|
35
|
-
flex-direction: row;
|
|
36
|
-
outline: 1px solid var(--border);
|
|
37
|
-
border-radius: var(--border-radius);
|
|
38
|
-
|
|
39
|
-
@media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
|
|
40
|
-
flex-direction: column;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
&-icon {
|
|
44
|
-
display: flex;
|
|
45
|
-
align-items: center;
|
|
46
|
-
justify-content: center;
|
|
47
|
-
padding: 20px;
|
|
48
|
-
|
|
49
|
-
i {
|
|
50
|
-
font-size: 60px;
|
|
51
|
-
opacity: 0.7;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
@media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
|
|
55
|
-
padding-bottom: 0;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
&-details {
|
|
60
|
-
display: flex;
|
|
61
|
-
flex-direction: column;
|
|
62
|
-
padding: 20px;
|
|
63
|
-
width: 100%;
|
|
64
|
-
flex: 1;
|
|
65
|
-
|
|
66
|
-
&-top, &-bottom {
|
|
67
|
-
display: flex;
|
|
68
|
-
flex-direction: row;
|
|
69
|
-
justify-content: space-between;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
&-top {
|
|
73
|
-
display: flex;
|
|
74
|
-
align-items: center;
|
|
75
|
-
padding: 20px 0;
|
|
76
|
-
border-bottom: 1px solid var(--border );
|
|
77
|
-
|
|
78
|
-
& > div {
|
|
79
|
-
display: flex;
|
|
80
|
-
flex-direction: column;
|
|
81
|
-
justify-content: center;
|
|
82
|
-
|
|
83
|
-
h1 {
|
|
84
|
-
margin: 0;
|
|
85
|
-
padding: 0;
|
|
86
|
-
font-size: $font-size-h2
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
ul {
|
|
90
|
-
margin: 0;
|
|
91
|
-
padding: 0;
|
|
92
|
-
display: flex;
|
|
93
|
-
flex-direction: row;
|
|
94
|
-
justify-content: space-between;
|
|
95
|
-
|
|
96
|
-
@media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
|
|
97
|
-
flex-direction: column;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
li {
|
|
101
|
-
list-style: none;
|
|
102
|
-
padding-right: 16px;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
& > div:nth-child(2) {
|
|
108
|
-
display: flex;
|
|
109
|
-
padding: 5px 0;
|
|
110
|
-
align-items: flex-end;
|
|
111
|
-
|
|
112
|
-
span {
|
|
113
|
-
padding: 5px 0;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
&-bottom {
|
|
119
|
-
display: grid;
|
|
120
|
-
grid-auto-columns: minmax(0, 1fr);
|
|
121
|
-
grid-auto-flow: column;
|
|
122
|
-
grid-gap: 10px;
|
|
123
|
-
padding: 30px 0 15px 0;
|
|
124
|
-
font-size: 18px;
|
|
125
|
-
font-weight: 300;
|
|
126
|
-
|
|
127
|
-
div {
|
|
128
|
-
display: flex;
|
|
129
|
-
place-content: center;
|
|
130
|
-
border-right: 1px solid var(--border);
|
|
131
|
-
padding-right: 10px;
|
|
132
|
-
|
|
133
|
-
&:last-child {
|
|
134
|
-
border-right: 0;
|
|
135
|
-
padding-right: 0%;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
@media only screen and (max-width: map-get($breakpoints, '--viewport-9')) {
|
|
141
|
-
padding-top: 0;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
</style>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// This is to mitigate an issue where the SVG icons being imported from the project weren't being rendered on Firefox
|
|
2
|
-
// To know more about this technique, check this doc: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs
|
|
3
|
-
export const getChartIcon = (type) => `<defs>
|
|
4
|
-
<!-- GIT REPO ICON -->
|
|
5
|
-
<svg id="git" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" style="enable-background:new 0 0 96 96" xml:space="preserve"><path class="st0" d="M92.138 43.888 52.018 3.77a5.918 5.918 0 0 0-8.369 0l-8.33 8.332L45.887 22.67a7.025 7.025 0 0 1 7.23 1.684 7.031 7.031 0 0 1 1.67 7.275l10.185 10.185a7.03 7.03 0 0 1 7.275 1.67 7.04 7.04 0 0 1 0 9.958 7.042 7.042 0 0 1-11.492-7.658l-9.5-9.499v24.997a7.09 7.09 0 0 1 1.861 1.331 7.042 7.042 0 1 1-7.65-1.537V35.849a7.04 7.04 0 0 1-3.822-9.234l-10.418-10.42-27.51 27.508a5.921 5.921 0 0 0 0 8.371l40.121 40.118a5.919 5.919 0 0 0 8.37 0l39.93-39.932a5.92 5.92 0 0 0 0-8.37z"/></svg>
|
|
6
|
-
<!-- GENERIC BUNDLE ICON -->
|
|
7
|
-
<svg id="bundle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="#FFF"><path d="M16 3.2C8.931 3.2 3.2 8.931 3.2 16S8.931 28.8 16 28.8 28.8 23.069 28.8 16 23.069 3.2 16 3.2zm0 22.4c-5.302 0-9.6-4.298-9.6-9.6s4.298-9.6 9.6-9.6 9.6 4.298 9.6 9.6a9.6 9.6 0 0 1-9.6 9.6z"/><path d="m24.086 16-6.232-1.348.917-1.424-1.424.917-1.348-6.232-1.348 6.232-1.424-.917.917 1.424L7.912 16l6.232 1.348-.917 1.424 1.424-.917 1.348 6.232 1.348-6.232 1.424.917-.917-1.424L24.086 16zM16 16.814a.814.814 0 1 1 0-1.628.814.814 0 0 1 0 1.628z"/></svg>
|
|
8
|
-
<!-- HELM BUNDLE ICON -->
|
|
9
|
-
<svg id="helm" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"><defs><style>.cls-1{fill:#fff}</style></defs><path class="cls-1" d="M136.53 121.135c-.573-.543-1.195-1.127-1.81-1.718-12.617-12.121-22.382-26.136-28.28-42.702-1.65-4.636-2.897-9.365-2.675-14.359.02-.473.02-.949.052-1.422.445-6.446 4.759-9.703 11.058-8.176a27.325 27.325 0 0 1 5.732 2.196c6.89 3.456 12.506 8.564 17.67 14.166A112.527 112.527 0 0 1 160 102.55a8.296 8.296 0 0 0 .39.86c.07.13.222.213.559.52a176.357 176.357 0 0 1 81.02-24.861c-.177-.876-.282-1.546-.448-2.2a112.494 112.494 0 0 1-2.653-36.957 84.075 84.075 0 0 1 4.445-21.764 31.326 31.326 0 0 1 5.476-10.17 15.687 15.687 0 0 1 3.164-2.822 7.026 7.026 0 0 1 8.032-.056 17.279 17.279 0 0 1 5.84 6.731 53.054 53.054 0 0 1 5.263 14.677 112.505 112.505 0 0 1 2.122 33.004 95.598 95.598 0 0 1-3.49 19.91c7.121 1.312 14.21 2.33 21.147 3.978a186.38 186.38 0 0 1 20.44 6.003 188.317 188.317 0 0 1 19.77 8.57c6.346 3.163 12.386 6.94 18.718 10.537.206-.433.505-.95.706-1.502a108.66 108.66 0 0 1 32.901-46.762 37.758 37.758 0 0 1 11.822-6.883 17.246 17.246 0 0 1 3.679-.845c6.264-.717 8.893 3.224 9.356 7.932a29.944 29.944 0 0 1-.774 10.354 87.906 87.906 0 0 1-10.73 24.688c-6.79 10.972-14.85 20.855-25.093 28.83-.302.236-.568.519-1.08.99a177.78 177.78 0 0 1 26.593 30.883 10.962 10.962 0 0 1-1.689.298c-10.595.015-21.19-.019-31.786.046a4.004 4.004 0 0 1-3.172-1.69 147.875 147.875 0 0 0-88.178-46.549 143.359 143.359 0 0 0-30.28-1.169 146.407 146.407 0 0 0-82.537 31.81 140.067 140.067 0 0 0-16.976 15.843 4.728 4.728 0 0 1-3.863 1.757c-10.121-.07-20.242-.035-30.363-.035h-2.152c.618-2.408 6.84-10.938 13.883-18.553 5.252-5.679 10.817-11.07 16.468-16.818ZM394.53 347.912a176.639 176.639 0 0 1-23.974 27.164l1.862 1.55a108.315 108.315 0 0 1 33.683 48.146 34.618 34.618 0 0 1 2.202 14.42 14.885 14.885 0 0 1-.748 3.692 7.208 7.208 0 0 1-8.157 5.023 22.233 22.233 0 0 1-6.763-2.006 51.232 51.232 0 0 1-9.182-5.815 107.592 107.592 0 0 1-32.936-46.707c-.187-.514-.392-1.02-.722-1.877a194.65 194.65 0 0 1-25.012 14.008 181.67 181.67 0 0 1-26.687 9.724 187.556 187.556 0 0 1-28.305 5.388c.168.84.265 1.51.438 2.16a109.172 109.172 0 0 1 2.97 36.442 80.804 80.804 0 0 1-4.422 22.478 78.25 78.25 0 0 1-4.165 8.744 13.39 13.39 0 0 1-2.339 2.971c-3.98 4.11-8.732 4.144-12.611-.074a27.28 27.28 0 0 1-3.907-5.617c-3.077-5.776-4.66-12.056-5.791-18.46a116.863 116.863 0 0 1-1.36-26.465 94.48 94.48 0 0 1 2.885-19.186c.14-.532.268-1.07.372-1.61.026-.137-.064-.297-.171-.738a176.121 176.121 0 0 1-80.969-24.994c-.41.91-.762 1.675-1.101 2.446a110.477 110.477 0 0 1-30.901 41.42 38.16 38.16 0 0 1-12.047 6.96 12.09 12.09 0 0 1-6.516.7 7.119 7.119 0 0 1-5.403-4.49c-1.416-3.424-1.165-6.985-.684-10.517a55.453 55.453 0 0 1 4.307-14.25 112.5 112.5 0 0 1 26.512-37.763c.459-.435.93-.857 1.38-1.3a3.76 3.76 0 0 0 .366-.655 178.905 178.905 0 0 1-28.47-31.317c.985-.08 1.644-.18 2.303-.18 10.514-.01 21.029.027 31.543-.044a4.706 4.706 0 0 1 3.703 1.626 146.946 146.946 0 0 0 39.403 28.885 139.947 139.947 0 0 0 49.704 14.774q70.68 6.87 121.6-42.854a7.646 7.646 0 0 1 5.992-2.444c9.802.121 19.605.05 29.408.05h2.534ZM350.736 197.762c2.787 0 5.47.189 8.115-.05 2.995-.271 5.139.8 7.323 2.813 12.613 11.622 25.357 23.1 38.059 34.627.638.58 1.29 1.144 2.11 1.87.764-.657 1.481-1.243 2.165-1.865q19.638-17.878 39.248-35.787a5.448 5.448 0 0 1 4.204-1.646c3.218.13 6.446.038 9.84.038V303.13c-1.722.504-24.875.604-27.638.061V249.83l-.537-.254-27.238 24.841-27.458-24.736-.524.192c-.023 4.454-.008 8.908-.01 13.362q-.005 6.64-.001 13.28v26.871h-27.428c-.514-1.773-.753-99.662-.23-105.623ZM97.634 197.882h27.264c.55 1.753.658 102.972.094 105.525H97.705c-.15-6.703-.048-13.384-.067-20.061-.018-6.623-.004-13.245-.004-20.04H63.847v39.741c-2.06.615-25.334.674-27.648.123V197.894h27.538v37.19c1.968.568 30.924.673 33.872.129.009-2.978.02-6.027.024-9.076q.007-4.744.001-9.487v-18.768ZM157.576 303.368V198.195c1.617-.53 61.545-.736 65.462-.205v22.414c-.879.063-1.786.184-2.693.185q-16.008.02-32.017.009h-2.968v17.433h33.347v23.192h-33.049c-.553 1.985-.705 15.817-.256 19.646.845.057 1.75.17 2.655.17q16.01.019 32.018.009h2.97v22.32ZM254.283 303.409c-.5-2.823-.4-103.602.097-105.518h27.162v77.765c1.172.06 2.092.149 3.011.15q16.128.014 32.256.006h2.908v27.597Z"/></svg>
|
|
10
|
-
<!-- RESOURCE DEPLOYMENT ICON -->
|
|
11
|
-
<svg id="deployment" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M24.01 20.027v2h-24v-2h4v-1a2.006 2.006 0 0 1-2-2v-10a2.006 2.006 0 0 1 2-2h1.996v2H4.01v10h16v-10h-2.004v-2h2.004a2.006 2.006 0 0 1 2 2l-.01 10a1.997 1.997 0 0 1-1.99 2v1Zm-9-6.012-3-3-3 3h2v2.01h2v-2.01Zm.995-7.991a4 4 0 1 1-4-4 4.001 4.001 0 0 1 4 4Zm-4.4 2.96v-.56a.802.802 0 0 1-.8-.8v-.4L9.06 5.479a2.958 2.958 0 0 0 2.545 3.505Zm2.658-1.007a2.977 2.977 0 0 0-1.068-4.704.797.797 0 0 1-.79.75h-.8v.8a.401.401 0 0 1-.4.4h-.8v.8h2.4a.401.401 0 0 1 .4.4v1.2h.4a.787.787 0 0 1 .658.354Z" fill="#fff"/></svg>
|
|
12
|
-
<!-- NODE ICON -->
|
|
13
|
-
<svg id="node" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g fill="#fff"><circle cx="12" cy="3" r="1"/><circle cx="20" cy="8" r="1"/><circle cx="20" cy="16" r="1"/><circle cx="4" cy="8" r="1"/><circle cx="4" cy="16" r="1"/><path d="M20 14v-4a1.992 1.992 0 0 1-1.481-3.333l-4.783-2.69a1.983 1.983 0 0 1-3.472 0l-4.783 2.69A1.992 1.992 0 0 1 4 10v4a1.992 1.992 0 0 1 1.481 3.333l4.783 2.69a1.991 1.991 0 0 1 1.236-.952v-5.142a2 2 0 1 1 1 0v5.142a1.991 1.991 0 0 1 1.236.953l4.783-2.69A1.992 1.992 0 0 1 20 14Z"/><circle cx="12" cy="21" r="1"/><circle cx="12" cy="12" r="1"/></g></svg>
|
|
14
|
-
<!-- RESOURCE OTHER ICON -->
|
|
15
|
-
<svg id="other" xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#FFF"><path d="M27.476 10.22H14.83l-1.558-3.115a1.327 1.327 0 0 0-1.184-.732H4.522c-.731 0-1.324.593-1.324 1.324v16.606c0 .731.593 1.324 1.324 1.324h22.953c.731 0 1.324-.593 1.324-1.324v-12.76c0-.731-.593-1.324-1.324-1.324z"/></svg>
|
|
16
|
-
</defs>
|
|
17
|
-
<use id="customIcon" href="#${ type }" fill="#fff" />`;
|
package/config/secret.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const SECRET_TYPES = {
|
|
2
|
-
OPAQUE: 'Opaque',
|
|
3
|
-
SERVICE_ACCT: 'kubernetes.io/service-account-token',
|
|
4
|
-
DOCKER_JSON: 'kubernetes.io/dockerconfigjson',
|
|
5
|
-
BASIC: 'kubernetes.io/basic-auth',
|
|
6
|
-
SSH: 'kubernetes.io/ssh-auth',
|
|
7
|
-
TLS: 'kubernetes.io/tls',
|
|
8
|
-
BOOTSTRAP: 'bootstrap.kubernetes.io/token',
|
|
9
|
-
ISTIO_TLS: 'istio.io/key-and-cert',
|
|
10
|
-
HELM_RELEASE: 'helm.sh/release.v1',
|
|
11
|
-
FLEET_CLUSTER: 'fleet.cattle.io/cluster-registration-values',
|
|
12
|
-
CLOUD_CREDENTIAL: 'provisioning.cattle.io/cloud-credential',
|
|
13
|
-
RKE_AUTH_CONFIG: 'rke.cattle.io/auth-config'
|
|
14
|
-
};
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { STATES } from '@shell/plugins/dashboard-store/resource-class';
|
|
2
|
-
import { FLEET } from '@shell/config/types';
|
|
3
|
-
|
|
4
|
-
// some default values
|
|
5
|
-
const defaultNodeRadius = 20;
|
|
6
|
-
const defaultNodePadding = 15;
|
|
7
|
-
const chartWidth = 800;
|
|
8
|
-
const chartHeight = 500;
|
|
9
|
-
const fdcStrength = -300;
|
|
10
|
-
const fdcDistanceMax = 500;
|
|
11
|
-
const fdcForceCollide = 80;
|
|
12
|
-
const fdcAlphaDecay = 0.05;
|
|
13
|
-
|
|
14
|
-
// setting up default sim params
|
|
15
|
-
// check documentation here: https://github.com/d3/d3-force#forceSimulation
|
|
16
|
-
const simulationParams = {
|
|
17
|
-
fdcStrength,
|
|
18
|
-
fdcDistanceMax,
|
|
19
|
-
fdcForceCollide,
|
|
20
|
-
fdcAlphaDecay
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Represents a config object for FDC type
|
|
25
|
-
* @param {Function} parseData - Parses the specific data for each chart. Format must be compliant with d3 data format
|
|
26
|
-
* @example data format => { parent: {..., children: [ {..., children: []} ] } }
|
|
27
|
-
* @param {Function} extendNodeClass - Extends the classes for each node so that the styling is correctly applied
|
|
28
|
-
* @param {Function} nodeDimensions - Sets the radius of the nodes according each data type
|
|
29
|
-
* @param {Function} infoDetails - Prepares the data to be displayed in the info box on the right-side of the ForceDirectedTreeChart component
|
|
30
|
-
*/
|
|
31
|
-
export const gitRepoGraphConfig = {
|
|
32
|
-
chartWidth,
|
|
33
|
-
chartHeight,
|
|
34
|
-
simulationParams,
|
|
35
|
-
/**
|
|
36
|
-
* data prop that is used to trigger the watcher in the component. Should follow format "data.xxxxxx"
|
|
37
|
-
*/
|
|
38
|
-
watcherProp: 'data.bundles',
|
|
39
|
-
/**
|
|
40
|
-
* Mandatory params for a child object in parseData (for statuses to work)
|
|
41
|
-
* @param {String} state
|
|
42
|
-
* @param {String} stateDisplay
|
|
43
|
-
* @param {String} stateColor
|
|
44
|
-
* @param {String} matchingId (this can be different than the actual ID, depends on the usecase)
|
|
45
|
-
*/
|
|
46
|
-
parseData: (data) => {
|
|
47
|
-
const bundles = data.bundles.map((bundle, i) => {
|
|
48
|
-
const bundleLowercaseState = bundle.state ? bundle.state.toLowerCase() : 'unknown';
|
|
49
|
-
const bundleStateColor = STATES[bundleLowercaseState].color;
|
|
50
|
-
|
|
51
|
-
const repoChild = {
|
|
52
|
-
id: bundle.id,
|
|
53
|
-
matchingId: bundle.id,
|
|
54
|
-
type: bundle.type,
|
|
55
|
-
state: bundle.state,
|
|
56
|
-
stateLabel: bundle.stateDisplay,
|
|
57
|
-
stateColor: bundleStateColor,
|
|
58
|
-
isBundle: true,
|
|
59
|
-
errorMsg: bundle.stateDescription,
|
|
60
|
-
detailLocation: bundle.detailLocation,
|
|
61
|
-
children: []
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const bds = data.bundleDeployments.filter((bd) => bundle.id === `${ bd.metadata?.labels?.['fleet.cattle.io/bundle-namespace'] }/${ bd.metadata?.labels?.['fleet.cattle.io/bundle-name'] }`);
|
|
65
|
-
|
|
66
|
-
bds.forEach((bd) => {
|
|
67
|
-
const bdLowercaseState = bd.state ? bd.state.toLowerCase() : 'unknown';
|
|
68
|
-
const bdStateColor = STATES[bdLowercaseState]?.color;
|
|
69
|
-
|
|
70
|
-
const cluster = data.clustersList.find((cluster) => {
|
|
71
|
-
const clusterString = `${ cluster.namespace }-${ cluster.name }`;
|
|
72
|
-
|
|
73
|
-
return bd.id.includes(clusterString);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
repoChild.children.push({
|
|
77
|
-
id: bd.id,
|
|
78
|
-
matchingId: bd.id,
|
|
79
|
-
type: bd.type,
|
|
80
|
-
clusterLabel: cluster ? cluster.namespacedName : undefined,
|
|
81
|
-
clusterDetailLocation: cluster ? cluster.detailLocation : undefined,
|
|
82
|
-
state: bd.state,
|
|
83
|
-
stateLabel: bd.stateDisplay,
|
|
84
|
-
stateColor: bdStateColor,
|
|
85
|
-
isBundleDeployment: true,
|
|
86
|
-
errorMsg: bd.stateDescription,
|
|
87
|
-
detailLocation: bd.detailLocation,
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
return repoChild;
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
const repoLowercaseState = data.state ? data.state.toLowerCase() : 'unknown';
|
|
95
|
-
const repoStateColor = STATES[repoLowercaseState].color;
|
|
96
|
-
|
|
97
|
-
const finalData = {
|
|
98
|
-
id: data.id,
|
|
99
|
-
matchingId: data.id,
|
|
100
|
-
type: data.type,
|
|
101
|
-
state: data.state,
|
|
102
|
-
stateLabel: data.stateDisplay,
|
|
103
|
-
stateColor: repoStateColor,
|
|
104
|
-
isRepo: true,
|
|
105
|
-
errorMsg: data.stateDescription,
|
|
106
|
-
detailLocation: data.detailLocation,
|
|
107
|
-
children: bundles
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
return finalData;
|
|
111
|
-
},
|
|
112
|
-
/**
|
|
113
|
-
* Used to add relevant classes to each main node instance
|
|
114
|
-
*/
|
|
115
|
-
extendNodeClass: ({ data }) => {
|
|
116
|
-
const classArray = [];
|
|
117
|
-
|
|
118
|
-
// node type
|
|
119
|
-
data?.isRepo ? classArray.push('repo') : data?.isBundle ? classArray.push('bundle') : classArray.push('bundle-deployment');
|
|
120
|
-
|
|
121
|
-
return classArray;
|
|
122
|
-
},
|
|
123
|
-
/**
|
|
124
|
-
* Used to add the correct icon to each node
|
|
125
|
-
*/
|
|
126
|
-
fetchNodeIcon: ({ data }) => {
|
|
127
|
-
if (data?.isRepo) {
|
|
128
|
-
return 'git';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if ( data?.isBundle) {
|
|
132
|
-
if (data?.id.indexOf('helm') !== -1) {
|
|
133
|
-
return 'helm';
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return 'bundle';
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (data?.isBundleDeployment) {
|
|
140
|
-
return 'node';
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
/**
|
|
144
|
-
* Used to set node dimensions
|
|
145
|
-
*/
|
|
146
|
-
nodeDimensions: ({ data }) => {
|
|
147
|
-
if (data?.isRepo) {
|
|
148
|
-
const radius = defaultNodeRadius * 3;
|
|
149
|
-
const padding = defaultNodePadding * 2.5;
|
|
150
|
-
|
|
151
|
-
return {
|
|
152
|
-
radius,
|
|
153
|
-
size: (radius * 2) - padding,
|
|
154
|
-
position: -(((radius * 2) - padding) / 2)
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
if (data?.isBundle) {
|
|
158
|
-
const radius = defaultNodeRadius * 2;
|
|
159
|
-
const padding = defaultNodePadding;
|
|
160
|
-
|
|
161
|
-
if (data?.id.indexOf('helm') !== -1) {
|
|
162
|
-
return {
|
|
163
|
-
radius,
|
|
164
|
-
size: (radius * 1.5) - padding,
|
|
165
|
-
position: -(((radius * 1.5) - padding) / 2)
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return {
|
|
170
|
-
radius,
|
|
171
|
-
size: (radius * 1.7) - padding,
|
|
172
|
-
position: -(((radius * 1.7) - padding) / 2)
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return {
|
|
177
|
-
radius: defaultNodeRadius,
|
|
178
|
-
size: (defaultNodeRadius * 2) - defaultNodePadding,
|
|
179
|
-
position: -(((defaultNodeRadius * 2) - defaultNodePadding) / 2)
|
|
180
|
-
};
|
|
181
|
-
},
|
|
182
|
-
/**
|
|
183
|
-
* Use @param {Obj} valueObj for compound values (usually associated with a template of some sort on the actual component)
|
|
184
|
-
* or @param value for a simple straightforward value
|
|
185
|
-
*/
|
|
186
|
-
infoDetails: (data) => {
|
|
187
|
-
let dataType;
|
|
188
|
-
|
|
189
|
-
switch (data.type) {
|
|
190
|
-
case FLEET.GIT_REPO:
|
|
191
|
-
dataType = 'GitRepo';
|
|
192
|
-
break;
|
|
193
|
-
case FLEET.BUNDLE:
|
|
194
|
-
dataType = 'Bundle';
|
|
195
|
-
break;
|
|
196
|
-
case FLEET.BUNDLE_DEPLOYMENT:
|
|
197
|
-
dataType = 'BundleDeployment';
|
|
198
|
-
break;
|
|
199
|
-
default:
|
|
200
|
-
dataType = data.type;
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const moreInfo = [
|
|
205
|
-
{
|
|
206
|
-
labelKey: 'fleet.fdc.type',
|
|
207
|
-
value: dataType
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
type: 'title-link',
|
|
211
|
-
labelKey: 'fleet.fdc.id',
|
|
212
|
-
valueObj: {
|
|
213
|
-
label: data.id,
|
|
214
|
-
detailLocation: data.detailLocation
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
];
|
|
218
|
-
|
|
219
|
-
if (data.isBundleDeployment) {
|
|
220
|
-
moreInfo.push({
|
|
221
|
-
type: 'title-link',
|
|
222
|
-
labelKey: 'fleet.fdc.cluster',
|
|
223
|
-
valueObj: {
|
|
224
|
-
label: data.clusterLabel,
|
|
225
|
-
detailLocation: data.clusterDetailLocation
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
moreInfo.push({
|
|
231
|
-
type: 'state-badge',
|
|
232
|
-
labelKey: 'fleet.fdc.state',
|
|
233
|
-
valueObj: {
|
|
234
|
-
stateColor: data.stateColor,
|
|
235
|
-
stateLabel: data.stateLabel
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
if (data.errorMsg) {
|
|
240
|
-
moreInfo.push({
|
|
241
|
-
type: 'single-error',
|
|
242
|
-
labelKey: 'fleet.fdc.error',
|
|
243
|
-
value: data.errorMsg
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
return moreInfo;
|
|
248
|
-
}
|
|
249
|
-
};
|
|
File without changes
|