import React from "react"; import { Trans } from "@lingui/macro"; import { IKubeMetaField, KubeObject } from "../../api/kube-object"; import { DrawerItem, DrawerItemLabels } from "../drawer"; import { WorkloadKubeObject } from "../../api/workload-kube-object"; import { getDetailsUrl } from "../../navigation"; import { lookupApiLink } from "../../api/kube-api"; import { Link } from "react-router-dom"; export interface Props { object: KubeObject; hideFields?: IKubeMetaField[]; } export class KubeObjectMeta extends React.Component { static defaultHiddenFields: IKubeMetaField[] = [ "uid", "resourceVersion", "selfLink" ]; isHidden(field: IKubeMetaField): boolean { const { hideFields = KubeObjectMeta.defaultHiddenFields } = this.props; return hideFields.includes(field); } render() { const object = this.props.object const { getName, getNs, getLabels, getResourceVersion, selfLink, getAnnotations, getFinalizers, getId, getAge, metadata: { creationTimestamp }, } = object; const ownerRefs = object.getOwnerRefs(); return ( <> Created} hidden={this.isHidden("creationTimestamp")}> {getAge(true, false)} ago ({creationTimestamp}) Name} hidden={this.isHidden("name")}> {getName()} Namespace} hidden={this.isHidden("namespace") || !getNs()}> {getNs()} UID} hidden={this.isHidden("uid")}> {getId()} Link} hidden={this.isHidden("selfLink")}> {selfLink} Resource Version} hidden={this.isHidden("resourceVersion")}> {getResourceVersion()} Labels} labels={getLabels()} hidden={this.isHidden("labels")} /> Annotations} labels={getAnnotations()} hidden={this.isHidden("annotations")} /> Finalizers} labels={getFinalizers()} hidden={this.isHidden("finalizers")} /> {ownerRefs && ownerRefs.length > 0 && Controlled By} hidden={this.isHidden("ownerReferences")}> { ownerRefs.map(ref => { const { name, kind } = ref; const ownerDetailsUrl = getDetailsUrl(lookupApiLink(ref, object)); return (

{kind} {name}

); }) }
} ) } }