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 { INamespacesRouteParams } 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() { return ( ns.getName(), [sortBy.labels]: (ns: Namespace) => ns.getLabels(), [sortBy.age]: (ns: Namespace) => ns.metadata.creationTimestamp, [sortBy.status]: (ns: Namespace) => ns.getStatus(), }} searchFilters={[ (item: Namespace) => item.getSearchFields(), (item: Namespace) => 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) => [ item.getName(), item.getLabels().map(label => ), item.getAge(), { title: item.getStatus(), className: item.getStatus().toLowerCase() }, ]} renderItemMenu={(item: Namespace) => { return }} addRemoveButtons={{ addTooltip: Add Namespace, onAdd: () => AddNamespaceDialog.open(), }} customizeTableRowProps={(item: Namespace) => ({ disabled: item.getStatus() === NamespaceStatus.TERMINATING, })} /> ) } } export function NamespaceMenu(props: KubeObjectMenuProps) { return ( ) } apiManager.registerViews(namespacesApi, { Menu: NamespaceMenu, });