import "./kube-event-icon.scss"; import React from "react"; import { Icon } from "../icon"; import { TooltipContent } from "../tooltip"; import { KubeObject } from "../../api/kube-object"; import { eventStore } from "./event.store"; import { cssNames } from "../../utils"; import { KubeEvent } from "../../api/endpoints/events.api"; interface Props { object: KubeObject; showWarningsOnly?: boolean; filterEvents?: (events: KubeEvent[]) => KubeEvent[]; } const defaultProps: Partial = { showWarningsOnly: true, }; export class KubeEventIcon extends React.Component { static defaultProps = defaultProps as object; render() { const { object, showWarningsOnly, filterEvents } = this.props; const events = eventStore.getEventsByObject(object); let warnings = events.filter(evt => evt.isWarning()); if (filterEvents) warnings = filterEvents(warnings); if (!events.length || (showWarningsOnly && !warnings.length)) { return null; } const event = [...warnings, ...events][0]; // get latest event return ( {event.message}
{event.getAge(undefined, undefined, true)}
)} /> ) } }