From 0a920cf7439d8f0b54cefc1b545a48265dd47921 Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 12 Feb 2021 17:31:00 +0200 Subject: [PATCH] responding to comments Signed-off-by: Roman --- src/renderer/api/kube-object.ts | 4 +- src/renderer/components/+events/events.scss | 6 --- src/renderer/components/+events/events.tsx | 50 +++++++++---------- .../item-object-list/item-list-layout.tsx | 4 +- 4 files changed, 29 insertions(+), 35 deletions(-) diff --git a/src/renderer/api/kube-object.ts b/src/renderer/api/kube-object.ts index 25d3445525..4ffd464d91 100644 --- a/src/renderer/api/kube-object.ts +++ b/src/renderer/api/kube-object.ts @@ -126,9 +126,9 @@ export class KubeObject implements ItemObject { return new Date().getTime() - new Date(this.metadata.creationTimestamp).getTime(); } - getAge(humanize = true, compact = true, fromNow = false) { + getAge(humanize = true, compact = true, fromNow = false): string | number { if (fromNow) { - return moment(this.metadata.creationTimestamp).fromNow(); // "string" + return moment(this.metadata.creationTimestamp).fromNow(); // "string", getTimeDiffFromNow() cannot be used } const diff = this.getTimeDiffFromNow(); diff --git a/src/renderer/components/+events/events.scss b/src/renderer/components/+events/events.scss index 80cedb8ff7..8b84ffd9fc 100644 --- a/src/renderer/components/+events/events.scss +++ b/src/renderer/components/+events/events.scss @@ -1,10 +1,4 @@ .Events { - h5.title { - .events-count { - font-size: $font-size; - } - } - .Table { .TableCell { &.message { diff --git a/src/renderer/components/+events/events.tsx b/src/renderer/components/+events/events.tsx index f54f556aeb..877c6d928b 100644 --- a/src/renderer/components/+events/events.tsx +++ b/src/renderer/components/+events/events.tsx @@ -9,6 +9,7 @@ import { EventStore, eventStore } from "./event.store"; import { getDetailsUrl, KubeObjectListLayout, KubeObjectListLayoutProps } from "../kube-object"; import { KubeEvent } from "../../api/endpoints/events.api"; import { TableSortCallbacks, TableSortParams } from "../table"; +import { IHeaderPlaceholders } from "../item-object-list"; import { Tooltip } from "../tooltip"; import { Link } from "react-router-dom"; import { cssNames, IClassName, stopPropagation } from "../../utils"; @@ -76,23 +77,36 @@ export class Events extends React.Component { return this.items; } - @computed get header(): React.ReactNode { - const { items, visibleItems } = this; + customizeHeader = ({ info, title }: IHeaderPlaceholders) => { + const { compact } = this.props; + const { store, items, visibleItems } = this; const allEventsAreShown = visibleItems.length === items.length; - if (this.props.compact && !allEventsAreShown) { + // handle "compact"-mode header + if (compact) { + if (allEventsAreShown) return title; // title == "Events" + return <> - Events - ({visibleItems.length} of {items.length}) - + {title} + ({visibleItems.length} of {items.length}) ; } - return <>Events; - } + return { + info: <> + {info} + + + }; + }; render() { - const { store, visibleItems, header, sortingCallbacks, sorting } = this; + const { store, visibleItems, sortingCallbacks, sorting } = this; const { compact, compactLimit, className, ...layoutProps } = this.props; const events = ( @@ -102,10 +116,11 @@ export class Events extends React.Component { tableId="events" store={store} className={cssNames("Events", className, { compact })} + renderHeaderTitle="Events" + customizeHeader={this.customizeHeader} isSelectable={false} items={visibleItems} virtual={!compact} - renderHeaderTitle={header} sortingCallbacks={sortingCallbacks} tableProps={{ sortSyncWithUrl: false, @@ -118,21 +133,6 @@ export class Events extends React.Component { (event: KubeEvent) => event.getSource(), (event: KubeEvent) => event.involvedObject.name, ]} - customizeHeader={({ title, info }) => ( - compact ? title : ({ - info: ( - <> - {info} - - - ) - }) - )} renderTableHeader={[ { title: "Type", className: "type", sortBy: columnId.type, id: columnId.type }, { title: "Message", className: "message", id: columnId.message }, diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index dc0604017f..6721872cd7 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -28,7 +28,7 @@ import { namespaceStore } from "../+namespaces/namespace.store"; export type SearchFilter = (item: T) => string | number | (string | number)[]; export type ItemsFilter = (items: T[]) => T[]; -interface IHeaderPlaceholders { +export interface IHeaderPlaceholders { title: ReactNode; search: ReactNode; filters: ReactNode; @@ -372,7 +372,7 @@ export class ItemListLayout extends React.Component { let header = this.renderHeaderContent(placeholders); if (customizeHeader) { - const modifiedHeader = customizeHeader(placeholders, header); + const modifiedHeader = customizeHeader(placeholders, header) ?? {}; if (isReactNode(modifiedHeader)) { header = modifiedHeader;