mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add quick namespace filtering to Events view
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
eb94e17177
commit
126d5ea9a6
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import moment from "moment";
|
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 { KubeObject } from "../kube-object";
|
||||||
import { formatDuration } from "../../utils/formatDuration";
|
import { formatDuration } from "../../utils/formatDuration";
|
||||||
import type { DerivedKubeApiOptions } from "../kube-api";
|
import type { DerivedKubeApiOptions } from "../kube-api";
|
||||||
@ -21,7 +21,7 @@ export interface EventSource {
|
|||||||
host?: string;
|
host?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface KubeEventData extends KubeJsonApiData<KubeObjectMetadata, void, void> {
|
export interface KubeEventData extends KubeJsonApiData<KubeObjectMetadata<KubeObjectScope.Namespace>, void, void> {
|
||||||
action?: string;
|
action?: string;
|
||||||
count?: number;
|
count?: number;
|
||||||
eventTime?: string;
|
eventTime?: string;
|
||||||
@ -38,7 +38,7 @@ export interface KubeEventData extends KubeJsonApiData<KubeObjectMetadata, void,
|
|||||||
type?: string;
|
type?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class KubeEvent extends KubeObject {
|
export class KubeEvent extends KubeObject<KubeObjectMetadata<KubeObjectScope.Namespace>, void, void> {
|
||||||
static kind = "Event";
|
static kind = "Event";
|
||||||
static namespaced = true;
|
static namespaced = true;
|
||||||
static apiBase = "/api/v1/events";
|
static apiBase = "/api/v1/events";
|
||||||
|
|||||||
@ -19,9 +19,8 @@ import type { HeaderCustomizer } from "../item-object-list";
|
|||||||
import { Tooltip } from "../tooltip";
|
import { Tooltip } from "../tooltip";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import type { IClassName } from "../../utils";
|
import type { IClassName } from "../../utils";
|
||||||
import { cssNames, stopPropagation } from "../../utils";
|
import { prevDefault, cssNames, stopPropagation } from "../../utils";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import { getDetailsUrl } from "../kube-detail-params";
|
|
||||||
import type { ApiManager } from "../../../common/k8s-api/api-manager";
|
import type { ApiManager } from "../../../common/k8s-api/api-manager";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import navigateToEventsInjectable from "../../../common/front-end-routing/routes/cluster/events/navigate-to-events.injectable";
|
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 { ReactiveDuration } from "../duration/reactive-duration";
|
||||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
import eventStoreInjectable from "./store.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 {
|
enum columnId {
|
||||||
message = "message",
|
message = "message",
|
||||||
@ -55,6 +58,8 @@ interface Dependencies {
|
|||||||
navigateToEvents: () => void;
|
navigateToEvents: () => void;
|
||||||
eventStore: EventStore;
|
eventStore: EventStore;
|
||||||
apiManager: ApiManager;
|
apiManager: ApiManager;
|
||||||
|
filterByNamespace: FilterByNamespace;
|
||||||
|
getDetailsUrl: GetDetailsUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
@ -196,10 +201,20 @@ class NonInjectedEvents extends React.Component<Dependencies & EventsProps> {
|
|||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
event.getNs(),
|
compact
|
||||||
|
? (
|
||||||
|
<a
|
||||||
|
key="namespace"
|
||||||
|
className="filterNamespace"
|
||||||
|
onClick={prevDefault(() => this.props.filterByNamespace(event.getNs()))}
|
||||||
|
>
|
||||||
|
{event.getNs()}
|
||||||
|
</a>
|
||||||
|
)
|
||||||
|
: event.getNs(),
|
||||||
<Link
|
<Link
|
||||||
key="link"
|
key="link"
|
||||||
to={getDetailsUrl(apiManager.lookupApiLink(involvedObject, event))}
|
to={this.props.getDetailsUrl(apiManager.lookupApiLink(involvedObject, event))}
|
||||||
onClick={stopPropagation}
|
onClick={stopPropagation}
|
||||||
>
|
>
|
||||||
{`${involvedObject.kind}: ${involvedObject.name}`}
|
{`${involvedObject.kind}: ${involvedObject.name}`}
|
||||||
@ -231,5 +246,7 @@ export const Events = withInjectables<Dependencies, EventsProps>(NonInjectedEven
|
|||||||
navigateToEvents: di.inject(navigateToEventsInjectable),
|
navigateToEvents: di.inject(navigateToEventsInjectable),
|
||||||
apiManager: di.inject(apiManagerInjectable),
|
apiManager: di.inject(apiManagerInjectable),
|
||||||
eventStore: di.inject(eventStoreInjectable),
|
eventStore: di.inject(eventStoreInjectable),
|
||||||
|
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||||
|
getDetailsUrl: di.inject(getDetailsUrlInjectable),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user