import "./hpa.scss" import * as React from "react"; import { observer } from "mobx-react"; import { RouteComponentProps } from "react-router"; import { Trans } from "@lingui/macro"; import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-menu"; import { KubeObjectListLayout } from "../kube-object"; import { IHpaRouteParams } from "./hpa.route"; import { HorizontalPodAutoscaler, hpaApi } from "../../api/endpoints/hpa.api"; import { hpaStore } from "./hpa.store"; import { Badge } from "../badge"; import { cssNames } from "../../utils"; import { apiManager } from "../../api/api-manager"; enum sortBy { name = "name", namespace = "namespace", minPods = "min-pods", maxPods = "max-pods", replicas = "replicas", age = "age", } interface Props extends RouteComponentProps { } @observer export class HorizontalPodAutoscalers extends React.Component { getTargets(hpa: HorizontalPodAutoscaler) { const metrics = hpa.getMetrics(); const metricsRemainCount = metrics.length - 1; const metricsRemain = metrics.length > 1 ? {metricsRemainCount} more... : null; const metricValues = hpa.getMetricValues(metrics[0]); return

{metricValues} {metricsRemain && "+"}{metricsRemain}

; } render() { return ( item.getName(), [sortBy.namespace]: (item: HorizontalPodAutoscaler) => item.getNs(), [sortBy.minPods]: (item: HorizontalPodAutoscaler) => item.getMinPods(), [sortBy.maxPods]: (item: HorizontalPodAutoscaler) => item.getMaxPods(), [sortBy.replicas]: (item: HorizontalPodAutoscaler) => item.getReplicas() }} searchFilters={[ (item: HorizontalPodAutoscaler) => item.getSearchFields() ]} renderHeaderTitle={Horizontal Pod Autoscalers} renderTableHeader={[ { title: Name, className: "name", sortBy: sortBy.name }, { title: Namespace, className: "namespace", sortBy: sortBy.namespace }, { title: Metrics, className: "metrics" }, { title: Min Pods, className: "min-pods", sortBy: sortBy.minPods }, { title: Max Pods, className: "max-pods", sortBy: sortBy.maxPods }, { title: Replicas, className: "replicas", sortBy: sortBy.replicas }, { title: Age, className: "age", sortBy: sortBy.age }, { title: Status, className: "status" }, ]} renderTableContents={(hpa: HorizontalPodAutoscaler) => [ hpa.getName(), hpa.getNs(), this.getTargets(hpa), hpa.getMinPods(), hpa.getMaxPods(), hpa.getReplicas(), hpa.getAge(), hpa.getConditions().map(({ type, tooltip, isReady }) => { if (!isReady) return null; return ( ) }) ]} renderItemMenu={(item: HorizontalPodAutoscaler) => { return }} /> ); } } export function HpaMenu(props: KubeObjectMenuProps) { return ( ) } apiManager.registerViews(hpaApi, { Menu: HpaMenu, })