import React from "react"; import { Trans } from "@lingui/macro"; import { IKubeMetaField, KubeObject } from "../../api/kube-object"; import { DrawerItem, DrawerItemLabels } from "../drawer"; 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 { getName, getNs, getLabels, getResourceVersion, selfLink, getAnnotations, getFinalizers, getId, getAge, metadata: { creationTimestamp }, } = this.props.object; 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")} /> ) } }