import "./volumes.scss" import * as React from "react"; import { observer } from "mobx-react"; import { Trans } from "@lingui/macro"; import { Link, RouteComponentProps } from "react-router-dom"; import { PersistentVolume, persistentVolumeApi } from "../../api/endpoints/persistent-volume.api"; import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-menu"; import { KubeObjectListLayout } from "../kube-object"; import { IVolumesRouteParams } from "./volumes.route"; import { stopPropagation } from "../../utils"; import { getDetailsUrl } from "../../navigation"; import { volumesStore } from "./volumes.store"; import { pvcApi, storageClassApi } from "../../api/endpoints"; import { apiManager } from "../../api/api-manager"; enum sortBy { name = "name", storageClass = "storage-class", capacity = "capacity", status = "status", age = "age", } interface Props extends RouteComponentProps { } @observer export class PersistentVolumes extends React.Component { render() { return ( item.getName(), [sortBy.storageClass]: (item: PersistentVolume) => item.spec.storageClassName, [sortBy.capacity]: (item: PersistentVolume) => item.getCapacity(true), [sortBy.status]: (item: PersistentVolume) => item.getStatus(), [sortBy.age]: (item: PersistentVolume) => item.metadata.creationTimestamp, }} searchFilters={[ (item: PersistentVolume) => item.getSearchFields(), (item: PersistentVolume) => item.getClaimRefName(), ]} renderHeaderTitle={Persistent Volumes} renderTableHeader={[ { title: Name, className: "name", sortBy: sortBy.name }, { title: Storage Class, className: "storageClass", sortBy: sortBy.storageClass }, { title: Capacity, className: "capacity", sortBy: sortBy.capacity }, { title: Claim, className: "claim" }, { title: Age, className: "age", sortBy: sortBy.age }, { title: Status, className: "status", sortBy: sortBy.status }, ]} renderTableContents={(volume: PersistentVolume) => { const { claimRef, storageClassName } = volume.spec; const storageClassDetailsUrl = getDetailsUrl(storageClassApi.getUrl({ name: storageClassName })); return [ volume.getName(), {storageClassName} , volume.getCapacity(), claimRef && ( {claimRef.name} ), volume.getAge(), { title: volume.getStatus(), className: volume.getStatus().toLowerCase() } ] }} renderItemMenu={(item: PersistentVolume) => { return }} /> ) } } export function PersistentVolumeMenu(props: KubeObjectMenuProps) { return ( ) } apiManager.registerViews(persistentVolumeApi, { Menu: PersistentVolumeMenu, })