Making names in EventPanel into links

This commit is contained in:
Eric Herbrandson
2019-06-13 15:20:46 -05:00
parent fb23f08c1c
commit 9ee364be07
2 changed files with 35 additions and 2 deletions
+31 -1
View File
@@ -46,7 +46,7 @@ export default function EventsPanel({items, filter, shortList, sort}) {
<div className='td_iconLabel'>{x.involvedObject.kind}</div>
</td>
{!shortList && (
<td className='wrapped_name'>{x.involvedObject.namespace}:{x.involvedObject.name}</td>
<td className='wrapped_name'>{getName(x.involvedObject)}</td>
)}
<td>{moment(x.metadata.creationTimestamp).fromNow(true)}</td>
<td className='optional_small'>{x.reason}</td>
@@ -59,6 +59,36 @@ export default function EventsPanel({items, filter, shortList, sort}) {
);
}
function getName({kind, namespace, name}) {
const text = namespace ? `${namespace}:${name}` : name;
const href = getHref(kind, namespace, name);
return href ? (<a href={href}>{text}</a>) : text;
}
function getHref(kind, namespace, name) {
switch (kind) {
case 'ClusterRole': return `/#!clusterrole/${name}`;
case 'ClusterRoleBinding': return `/#!clusterrolebinding/${name}`;
case 'ConfigMap': return `/#!configmap/${namespace}/${name}`;
case 'DaemonSet': return `/#!workload/daemonset/${namespace}/${name}`;
case 'Deployment': return `/#!workload/deployment/${namespace}/${name}`;
case 'Ingress': return `/#!ingress/${namespace}/${name}`;
case 'Node': return `/#!node/${name}`;
case 'PersistentVolume': return `/#!persistentvolume/${name}`;
case 'PersistentVolumeClaim': return `/#!persistentvolumeclaim/${namespace}/${name}`;
case 'Pod': return `/#!pod/${namespace}/${name}`;
case 'ReplicaSet': return `/#!replicaset/${namespace}/${name}`;
case 'Role': return `/#!role/${namespace}/${name}`;
case 'RoleBinding': return `/#!rolebinding/${namespace}/${name}`;
case 'Secret': return `/#!secret/${namespace}/${name}`;
case 'Service': return `/#!service/${namespace}/${name}`;
case 'ServiceAccount': return `/#!serviceaccount/${namespace}/${name}`;
case 'StatefulSet': return `/#!workload/statefulset/${namespace}/${name}`;
case 'StorageClass': return `/#!storageclass/${name}`;
default: return undefined;
}
}
function sortByName({involvedObject}) {
return `${involvedObject.namespace}:${involvedObject.name}`;
}
+4 -1
View File
@@ -116,7 +116,10 @@ export default class Pod extends Base {
<ContainersPanel spec={item && item.spec} />
<div className='contentPanel_header'>Events</div>
<EventsPanel items={filteredEvents} />
<EventsPanel
shortList={true}
items={filteredEvents}
/>
</div>
);
}