import "./namespaces.scss"; import * as React from "react"; import { Trans } from "@lingui/macro"; import { Namespace, namespacesApi, NamespaceStatus } from "../../api/endpoints"; import { AddNamespaceDialog } from "./add-namespace-dialog"; import { MainLayout } from "../layout/main-layout"; import { Badge } from "../badge"; import { RouteComponentProps } from "react-router"; import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-menu"; import { KubeObjectListLayout } from "../kube-object"; import { NamespacesRouteParams } from "./namespaces.route"; import { namespaceStore } from "./namespace.store"; import { apiManager } from "../../api/api-manager"; enum sortBy { name = "name", labels = "labels", age = "age", status = "status", } interface Props extends RouteComponentProps { } export class Namespaces extends React.Component { render(): JSX.Element { return ( ns.getName(), [sortBy.labels]: (ns: Namespace): string[] => ns.getLabels(), [sortBy.age]: (ns: Namespace): string => ns.metadata.creationTimestamp, [sortBy.status]: (ns: Namespace): string => ns.getStatus(), }} searchFilters={[ (item: Namespace): string[] => item.getSearchFields(), (item: Namespace): string => item.getStatus() ]} renderHeaderTitle={Namespaces} renderTableHeader={[ { title: Name, className: "name", sortBy: sortBy.name }, { title: Labels, className: "labels", sortBy: sortBy.labels }, { title: Age, className: "age", sortBy: sortBy.age }, { title: Status, className: "status", sortBy: sortBy.status }, ]} renderTableContents={(item: Namespace): (string | JSX.Element[] | number | React.ReactNode)[] => [ item.getName(), item.getLabels().map(label => ), item.getAge(), { title: item.getStatus(), className: item.getStatus().toLowerCase() }, ]} renderItemMenu={(item: Namespace): JSX.Element => { return ; }} addRemoveButtons={{ addTooltip: Add Namespace, onAdd: (): void => AddNamespaceDialog.open(), }} customizeTableRowProps={(item: Namespace): { disabled: boolean } => ({ disabled: item.getStatus() === NamespaceStatus.TERMINATING, })} /> ); } } export function NamespaceMenu(props: KubeObjectMenuProps): JSX.Element { return ( ); } apiManager.registerViews(namespacesApi, { Menu: NamespaceMenu, });