import "./resource-metrics.scss"; import React, { createContext, useEffect, useState } from "react"; import { Radio, RadioGroup } from "../radio"; import { useInterval } from "../../hooks"; import { KubeObject } from "../../api/kube-object"; import { cssNames } from "../../utils"; import { Spinner } from "../spinner"; interface Props extends React.HTMLProps { tabs: React.ReactNode[]; object?: KubeObject; loader?: () => void; interval?: number; className?: string; params?: { [key: string]: any; }; } export interface ResourceMetricsValue { object: T; tabId: number; params?: P; } export const ResourceMetricsContext = createContext(null); const defaultProps: Partial = { interval: 60 // 1 min }; export function ResourceMetrics({ object, loader, interval, tabs, children, className, params }: Props): JSX.Element { const [tabId, setTabId] = useState(0); useEffect(() => { if (loader) { loader(); } }, [object]); useInterval(() => { if (loader) { loader(); } }, interval * 1000); const renderContents = (): JSX.Element => { return ( <>
setTabId(tabs.findIndex(tab => tab == value))} > {tabs.map((tab, index) => ( ))}
{children}
); }; return (
{renderContents()}
); } ResourceMetrics.defaultProps = defaultProps;