import "./crd-details.scss"; import * as React from "react"; import { Trans } from "@lingui/macro"; import { Link } from "react-router-dom"; import { observer } from "mobx-react"; import { apiManager } from "../../api/api-manager"; import { crdApi, CustomResourceDefinition } from "../../api/endpoints/crd.api"; import { cssNames } from "../../utils"; import { AceEditor } from "../ace-editor"; import { Badge } from "../badge"; import { DrawerItem, DrawerTitle } from "../drawer"; import { KubeObjectDetailsProps } from "../kube-object"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { Input } from "../input"; import { KubeObjectMeta } from "../kube-object/kube-object-meta"; interface Props extends KubeObjectDetailsProps { } @observer export class CRDDetails extends React.Component { render() { const { object: crd } = this.props; if (!crd) return null; const { plural, singular, kind, listKind } = crd.getNames(); const printerColumns = crd.getPrinterColumns(); const validation = crd.getValidation(); return (
Group}> {crd.getGroup()} Version}> {crd.getVersion()} Stored versions}> {crd.getStoredVersions()} Scope}> {crd.getScope()} Resource}> {crd.getResourceTitle()} Conversion} className="flex gaps align-flex-start"> Conditions} className="conditions" labelsOnly> { crd.getConditions().map(condition => { const { type, message, lastTransitionTime, status } = condition return (

{message}

Last transition time: {lastTransitionTime}

)} /> ); }) }
Names}/> plural singular kind listKind {plural} {singular} {kind} {listKind}
{printerColumns.length > 0 && <> Additional Printer Columns}/> Name Type JSON Path { printerColumns.map((column, index) => { const { name, type, JSONPath } = column; return ( {name} {type} ) }) }
} {validation && <> Validation}/> }
) } } apiManager.registerViews(crdApi, { Details: CRDDetails })