diff --git a/src/common/k8s-api/endpoints/events.api.ts b/src/common/k8s-api/endpoints/events.api.ts index 8e6bc843b1..3a03c0ffbf 100644 --- a/src/common/k8s-api/endpoints/events.api.ts +++ b/src/common/k8s-api/endpoints/events.api.ts @@ -4,7 +4,7 @@ */ import moment from "moment"; -import type { KubeObjectMetadata, ObjectReference } from "../kube-object"; +import type { KubeObjectMetadata, KubeObjectScope, ObjectReference } from "../kube-object"; import { KubeObject } from "../kube-object"; import { formatDuration } from "../../utils/formatDuration"; import type { DerivedKubeApiOptions } from "../kube-api"; @@ -21,7 +21,7 @@ export interface EventSource { host?: string; } -export interface KubeEventData extends KubeJsonApiData { +export interface KubeEventData extends KubeJsonApiData, void, void> { action?: string; count?: number; eventTime?: string; @@ -38,7 +38,7 @@ export interface KubeEventData extends KubeJsonApiData, void, void> { static kind = "Event"; static namespaced = true; static apiBase = "/api/v1/events"; diff --git a/src/renderer/components/+events/events.tsx b/src/renderer/components/+events/events.tsx index 0a2c713415..e1b9e57bb8 100644 --- a/src/renderer/components/+events/events.tsx +++ b/src/renderer/components/+events/events.tsx @@ -19,9 +19,8 @@ import type { HeaderCustomizer } from "../item-object-list"; import { Tooltip } from "../tooltip"; import { Link } from "react-router-dom"; import type { IClassName } from "../../utils"; -import { cssNames, stopPropagation } from "../../utils"; +import { prevDefault, cssNames, stopPropagation } from "../../utils"; import { Icon } from "../icon"; -import { getDetailsUrl } from "../kube-detail-params"; import type { ApiManager } from "../../../common/k8s-api/api-manager"; import { withInjectables } from "@ogre-tools/injectable-react"; import navigateToEventsInjectable from "../../../common/front-end-routing/routes/cluster/events/navigate-to-events.injectable"; @@ -29,6 +28,10 @@ import { KubeObjectAge } from "../kube-object/age"; import { ReactiveDuration } from "../duration/reactive-duration"; import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable"; import eventStoreInjectable from "./store.injectable"; +import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import type { GetDetailsUrl } from "../kube-detail-params/get-details-url.injectable"; +import getDetailsUrlInjectable from "../kube-detail-params/get-details-url.injectable"; enum columnId { message = "message", @@ -55,6 +58,8 @@ interface Dependencies { navigateToEvents: () => void; eventStore: EventStore; apiManager: ApiManager; + filterByNamespace: FilterByNamespace; + getDetailsUrl: GetDetailsUrl; } @observer @@ -196,10 +201,20 @@ class NonInjectedEvents extends React.Component { ), }, - event.getNs(), + compact + ? ( + this.props.filterByNamespace(event.getNs()))} + > + {event.getNs()} + + ) + : event.getNs(), {`${involvedObject.kind}: ${involvedObject.name}`} @@ -231,5 +246,7 @@ export const Events = withInjectables(NonInjectedEven navigateToEvents: di.inject(navigateToEventsInjectable), apiManager: di.inject(apiManagerInjectable), eventStore: di.inject(eventStoreInjectable), + filterByNamespace: di.inject(filterByNamespaceInjectable), + getDetailsUrl: di.inject(getDetailsUrlInjectable), }), });