-
Notifications
You must be signed in to change notification settings - Fork 2k
/
kube-object-detail-info-list.tsx
100 lines (95 loc) · 2.8 KB
/
kube-object-detail-info-list.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import DrawerItem from '../../../../pages/kubepanel/components/drawer/drawer-item';
import { KubeObjectAge } from '../kube-object-age';
import { LocaleDate } from '../../local-date';
import moment from 'moment-timezone';
import { KubeBadge } from '../../kube-badge';
import { Box } from '@chakra-ui/react';
import { KubeObject } from '@/k8slens/kube-object';
import { KubeObjectInfo, getKubeObjectInfo } from '@/utils/kube-object-info';
import { StringKeyOf } from 'type-fest';
export type HiddenField = StringKeyOf<KubeObjectInfo>;
interface Props {
hiddenFields?: Array<HiddenField>;
obj: KubeObject;
}
export const KubeObjectInfoList = ({ hiddenFields = ['uid', 'resourceVersion'], obj }: Props) => {
const {
creationTimestamp,
name,
uid,
resourceVersion,
labels,
annotations,
finalizers,
ownerRefs
} = getKubeObjectInfo(obj);
return (
<>
<DrawerItem
hidden={hiddenFields.includes('creationTimestamp') || !creationTimestamp}
name="Created"
value={
<>
<KubeObjectAge obj={obj} compact={false} />
{' ago '}
{creationTimestamp && (
<LocaleDate date={creationTimestamp} localeTimezone={moment.tz.guess()} />
)}
</>
}
/>
<DrawerItem
hidden={hiddenFields.includes('name')}
name="Name"
value={name} // TODO: KubeObject Icon
/>
<DrawerItem hidden={hiddenFields.includes('uid')} name="UID" value={uid} />
<DrawerItem
hidden={hiddenFields.includes('resourceVersion')}
name="Resource Version"
value={resourceVersion}
/>
{labels.length > 0 && (
<DrawerItem
hidden={hiddenFields.includes('labels')}
name="Labels"
value={labels.map((label) => (
<KubeBadge key={label} label={label} />
))}
/>
)}
{annotations.length > 0 && (
<DrawerItem
hidden={hiddenFields.includes('annotations')}
name="Annotations"
value={annotations.map((label) => (
<KubeBadge key={label} label={label} />
))}
/>
)}
{finalizers.length > 0 && (
<DrawerItem
hidden={hiddenFields.includes('finalizers')}
name="Finalizers"
value={finalizers.map((label) => (
<KubeBadge key={label} label={label} />
))}
/>
)}
{ownerRefs.length > 0 && (
<DrawerItem
hidden={hiddenFields.includes('ownerRefs')}
name="ControlledBy"
value={ownerRefs.map(({ name, kind }) => (
<Box key={name}>
{kind}{' '}
<Box as="span" textColor={'blue.300'}>
{name}
</Box>
</Box>
))}
/>
)}
</>
);
};