mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
fix: proper event-type column + default sorting by warning events Signed-off-by: Roman <ixrock@gmail.com>
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import React from "react";
|
|
import { computed } from "mobx";
|
|
import { disposeOnUnmount, observer } from "mobx-react";
|
|
import { cssNames } from "../../utils";
|
|
import { KubeObject } from "../../api/kube-object";
|
|
import { ItemListLayout, ItemListLayoutProps } from "../item-object-list/item-list-layout";
|
|
import { KubeObjectStore } from "../../kube-object.store";
|
|
import { KubeObjectMenu } from "./kube-object-menu";
|
|
import { kubeSelectedUrlParam, showDetails } from "./kube-object-details";
|
|
import { kubeWatchApi } from "../../api/kube-watch-api";
|
|
import { clusterContext } from "../context";
|
|
|
|
export interface KubeObjectListLayoutProps extends ItemListLayoutProps {
|
|
store: KubeObjectStore;
|
|
dependentStores?: KubeObjectStore[];
|
|
}
|
|
|
|
@observer
|
|
export class KubeObjectListLayout extends React.Component<KubeObjectListLayoutProps> {
|
|
@computed get selectedItem() {
|
|
return this.props.store.getByPath(kubeSelectedUrlParam.get());
|
|
}
|
|
|
|
componentDidMount() {
|
|
const { store, dependentStores = [] } = this.props;
|
|
const stores = Array.from(new Set([store, ...dependentStores]));
|
|
|
|
disposeOnUnmount(this, [
|
|
kubeWatchApi.subscribeStores(stores, {
|
|
preload: true,
|
|
namespaces: clusterContext.contextNamespaces,
|
|
})
|
|
]);
|
|
}
|
|
|
|
onDetails = (item: KubeObject) => {
|
|
if (this.props.onDetails) {
|
|
this.props.onDetails(item);
|
|
} else {
|
|
showDetails(item.selfLink);
|
|
}
|
|
};
|
|
|
|
render() {
|
|
const { className, store, items = store.contextItems, ...layoutProps } = this.props;
|
|
|
|
return (
|
|
<ItemListLayout
|
|
{...layoutProps}
|
|
className={cssNames("KubeObjectListLayout", className)}
|
|
store={store}
|
|
items={items}
|
|
preloadStores={false} // loading handled in kubeWatchApi.subscribeStores()
|
|
detailsItem={this.selectedItem}
|
|
onDetails={this.onDetails}
|
|
renderItemMenu={(item) => {
|
|
return <KubeObjectMenu object={item}/>;
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
}
|