From b6f238c350c40cfd456fda4f0b2df341acf47ac3 Mon Sep 17 00:00:00 2001 From: Eric Blackburn Date: Thu, 6 Aug 2020 17:58:55 -0500 Subject: [PATCH] Converted eventsPanel.js to Typescript tsx --- .../{eventsPanel.js => eventsPanel.tsx} | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) rename client/src/components/{eventsPanel.js => eventsPanel.tsx} (72%) diff --git a/client/src/components/eventsPanel.js b/client/src/components/eventsPanel.tsx similarity index 72% rename from client/src/components/eventsPanel.js rename to client/src/components/eventsPanel.tsx index 742177b..7c3ae86 100644 --- a/client/src/components/eventsPanel.js +++ b/client/src/components/eventsPanel.tsx @@ -3,9 +3,32 @@ import fromNow from '../utils/dates'; import {TableBody} from './listViewHelpers'; import log from '../utils/log'; import ResourceSvg from '../art/resourceSvg'; -import Sorter, {sortByDate} from './sorter'; +import Sorter, {sortByDate, SortInfo} from './sorter'; -export default function EventsPanel({items, filter, shortList, sort}) { +type Metadata = { + name: string; + creationTimestamp: number; +} +type InvolvedObject = { + kind: string; + namespace: string; + name: string; +} +type Event = { + metadata: Metadata; + involvedObject: InvolvedObject; + message: string; + reason: string; + type: string; +} +type EventsPanelProps = { + items: Event[]; + filter: React.ReactNode; + shortList?: boolean; + sort: SortInfo; +} + +export default function EventsPanel({items, filter, shortList, sort} : EventsPanelProps) { return (
@@ -36,21 +59,21 @@ export default function EventsPanel({items, filter, shortList, sort}) { filter={filter} colSpan={shortList ? 4 : 5} sort={sort} - row={x => ( - + row={(event: Event) => ( + {!shortList && ( - + )} - - - + + + )} /> @@ -59,13 +82,14 @@ export default function EventsPanel({items, filter, shortList, sort}) { ); } -function getName({kind, namespace, name}) { + +function getName({kind, namespace, name} : InvolvedObject) { const text = namespace ? `${namespace}:${name}` : name; - const href = getHref(kind, namespace, name); + const href = getHref({kind, namespace, name}); return href ? ({text}) : text; } -function getHref(kind, namespace, name) { +function getHref({kind, namespace, name} : InvolvedObject) { switch (kind) { case 'ClusterRole': return `/#!clusterrole/${name}`; case 'ClusterRoleBinding': return `/#!clusterrolebinding/${name}`; @@ -89,11 +113,11 @@ function getHref(kind, namespace, name) { } } -function sortByName({involvedObject}) { - return `${involvedObject.namespace}:${involvedObject.name}`; +function sortByName(event: Event) { + return `${event.involvedObject.namespace}:${event.involvedObject.name}`; } -function getTypeClass(type) { +function getTypeClass(type: string) { switch (type) { case 'Normal': return undefined; case 'Warning': return 'svg_warn';
-
{x.involvedObject.kind}
+
{event.involvedObject.kind}
{getName(x.involvedObject)}{getName(event.involvedObject)}{fromNow(x.metadata.creationTimestamp)}{x.reason}{x.message}{fromNow(event.metadata.creationTimestamp)}{event.reason}{event.message}