mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
responding to comments
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
e611a75b6d
commit
0a920cf743
@ -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();
|
||||
|
||||
|
||||
@ -1,10 +1,4 @@
|
||||
.Events {
|
||||
h5.title {
|
||||
.events-count {
|
||||
font-size: $font-size;
|
||||
}
|
||||
}
|
||||
|
||||
.Table {
|
||||
.TableCell {
|
||||
&.message {
|
||||
|
||||
@ -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<Props> {
|
||||
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 <span className="events-count">
|
||||
({visibleItems.length} of <Link to={eventsURL()}>{items.length}</Link>)
|
||||
</span>
|
||||
{title}
|
||||
<span> ({visibleItems.length} of <Link to={eventsURL()}>{items.length}</Link>)</span>
|
||||
</>;
|
||||
}
|
||||
|
||||
return <>Events</>;
|
||||
}
|
||||
return {
|
||||
info: <>
|
||||
{info}
|
||||
<Icon
|
||||
small
|
||||
material="help_outline"
|
||||
className="help-icon"
|
||||
tooltip={`Limited to ${store.limit}`}
|
||||
/>
|
||||
</>
|
||||
};
|
||||
};
|
||||
|
||||
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<Props> {
|
||||
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<Props> {
|
||||
(event: KubeEvent) => event.getSource(),
|
||||
(event: KubeEvent) => event.involvedObject.name,
|
||||
]}
|
||||
customizeHeader={({ title, info }) => (
|
||||
compact ? title : ({
|
||||
info: (
|
||||
<>
|
||||
{info}
|
||||
<Icon
|
||||
small
|
||||
material="help_outline"
|
||||
className="help-icon"
|
||||
tooltip={`Limited to ${store.limit}`}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
})
|
||||
)}
|
||||
renderTableHeader={[
|
||||
{ title: "Type", className: "type", sortBy: columnId.type, id: columnId.type },
|
||||
{ title: "Message", className: "message", id: columnId.message },
|
||||
|
||||
@ -28,7 +28,7 @@ import { namespaceStore } from "../+namespaces/namespace.store";
|
||||
export type SearchFilter<T extends ItemObject = any> = (item: T) => string | number | (string | number)[];
|
||||
export type ItemsFilter<T extends ItemObject = any> = (items: T[]) => T[];
|
||||
|
||||
interface IHeaderPlaceholders {
|
||||
export interface IHeaderPlaceholders {
|
||||
title: ReactNode;
|
||||
search: ReactNode;
|
||||
filters: ReactNode;
|
||||
@ -372,7 +372,7 @@ export class ItemListLayout extends React.Component<ItemListLayoutProps> {
|
||||
let header = this.renderHeaderContent(placeholders);
|
||||
|
||||
if (customizeHeader) {
|
||||
const modifiedHeader = customizeHeader(placeholders, header);
|
||||
const modifiedHeader = customizeHeader(placeholders, header) ?? {};
|
||||
|
||||
if (isReactNode(modifiedHeader)) {
|
||||
header = modifiedHeader;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user