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 type IResourceMetricsValue = { object: T; tabId: number; params?: P; } export const ResourceMetricsContext = createContext(null); const defaultProps: Partial = { interval: 60 // 1 min }; ResourceMetrics.defaultProps = defaultProps; export function ResourceMetrics({ object, loader, interval, tabs, children, className, params }: Props) { const [tabId, setTabId] = useState(0); useEffect(() => { if (loader) loader(); }, [object]); useInterval(() => { if (loader) loader(); }, interval * 1000); const renderContents = () => { return ( <>
setTabId(tabs.findIndex(tab => tab == value))} > {tabs.map((tab, index) => ( ))}
{children}
); } return (
{renderContents()}
); }