diff --git a/ui100/src/AccessPanel.tsx b/ui100/src/AccessPanel.tsx index bdfde8a1..4464249e 100644 --- a/ui100/src/AccessPanel.tsx +++ b/ui100/src/AccessPanel.tsx @@ -17,7 +17,6 @@ const AccessPanel = ({ access }: AccessPanelProps) => { const user = useApiConsoleStore((state) => state.user); const [detail, setDetail] = useState(null); const [releaseAccessOpen, setReleaseAccessOpen] = useState(false); - const openReleaseAccess = () => { setReleaseAccessOpen(true); } diff --git a/ui100/src/AccountMetricsModal.tsx b/ui100/src/AccountMetricsModal.tsx index 669d9927..1b5db4ec 100644 --- a/ui100/src/AccountMetricsModal.tsx +++ b/ui100/src/AccountMetricsModal.tsx @@ -21,9 +21,7 @@ const AccountMetricsModal = ({ close, isOpen, user}: AccountMetricsModalProps) = let metadataApi = getMetadataApi(user); metadataApi.getAccountMetrics() .then(d => { - let m30 = buildMetrics(d); - console.log(m30); - setMetrics30(m30); + setMetrics30(buildMetrics(d)); }) .catch(e => { e.response.json().then(ex => { diff --git a/ui100/src/EnvironmentMetricsModal.tsx b/ui100/src/EnvironmentMetricsModal.tsx new file mode 100644 index 00000000..2d2f9bc9 --- /dev/null +++ b/ui100/src/EnvironmentMetricsModal.tsx @@ -0,0 +1,67 @@ +import {User} from "./model/user.ts"; +import {useEffect, useState} from "react"; +import {buildMetrics} from "./model/util.ts"; +import {getMetadataApi} from "./model/api.ts"; +import {Node} from "@xyflow/react"; +import {Box, Grid2, Modal, Typography} from "@mui/material"; +import {modalStyle} from "./styling/theme.ts"; +import MetricsGraph from "./MetricsGraph.tsx"; + +interface EnvironmentMetricsModalProps { + close: () => void; + isOpen: boolean; + user: User; + environment: Node; +} + +const EnvironmentMetricsModal = ({ close, isOpen, user, environment }: EnvironmentMetricsModalProps) => { + const [metrics30, setMetrics30] = useState(buildMetrics([])); + const [metrics7, setMetrics7] = useState(buildMetrics([])); + const [metrics1, setMetrics1] = useState(buildMetrics([])); + + useEffect(() => { + let metadataApi = getMetadataApi(user); + metadataApi.getEnvironmentMetrics({envId: String(environment.data.envZId) }) + .then(d => { + setMetrics30(buildMetrics(d)); + }) + .catch(e => { + e.response.json().then(ex => { + console.log("accountMetricsModal", ex.message); + }); + }); + metadataApi.getAccountMetrics({envId: String(environment.data.envZId), duration: "168h"}) + .then(d => { + setMetrics7(buildMetrics(d)); + }) + .catch(e => { + e.response.json().then(ex => { + console.log("accountMetricsModal", ex.message); + }); + }); + metadataApi.getAccountMetrics({envId: String(environment.data.envZId), duration: "24h"}) + .then(d => { + setMetrics1(buildMetrics(d)); + }) + .catch(e => { + e.response.json().then(ex => { + console.log("accountMetricsModal", ex.message); + }); + }); + }, []); + + return ( + + + + Environment Metrics + + + + + + + ); +} + +export default EnvironmentMetricsModal; \ No newline at end of file diff --git a/ui100/src/EnvironmentPanel.tsx b/ui100/src/EnvironmentPanel.tsx index dedb5b69..a75b10a5 100644 --- a/ui100/src/EnvironmentPanel.tsx +++ b/ui100/src/EnvironmentPanel.tsx @@ -1,7 +1,7 @@ import {Node} from "@xyflow/react"; import {Button, Grid2, Tooltip, Typography} from "@mui/material"; import EnvironmentIcon from "@mui/icons-material/Computer"; -import {useEffect, useState} from "react"; +import React, {useEffect, useState} from "react"; import {Environment} from "./api"; import PropertyTable from "./PropertyTable.tsx"; import SecretToggle from "./SecretToggle.tsx"; @@ -9,6 +9,8 @@ import useApiConsoleStore from "./model/store.ts"; import DeleteIcon from "@mui/icons-material/Delete"; import ReleaseEnvironmentModal from "./ReleaseEnvironmentModal.tsx"; import {getMetadataApi} from "./model/api.ts"; +import MetricsIcon from "@mui/icons-material/QueryStats"; +import EnvironmentMetricsModal from "./EnvironmentMetricsModal.tsx"; interface EnvironmentPanelProps { environment: Node; @@ -17,12 +19,17 @@ interface EnvironmentPanelProps { const EnvironmentPanel = ({environment}: EnvironmentPanelProps) => { const user = useApiConsoleStore((state) => state.user); const [detail, setDetail] = useState(null); - const [releaseEnvironmentOpen, setReleaseEnvironmentOpen] = useState(false); - + const [environmentMetricsOpen, setEnvironmentMetricsOpen] = useState(false); + const openEnvironmentMetrics = () => { + setEnvironmentMetricsOpen(true); + } + const closeEnvironmentMetrics = () => { + setEnvironmentMetricsOpen(false); + } + const [releaseEnvironmentOpen, setReleaseEnvironmentOpen] = useState(false); const openReleaseEnvironment = () => { setReleaseEnvironmentOpen(true); } - const closeReleaseEnvironment = () => { setReleaseEnvironmentOpen(false); } @@ -63,7 +70,10 @@ const EnvironmentPanel = ({environment}: EnvironmentPanelProps) => {
An environment on a host with address {detail ? detail.address : ''}
- + + + + @@ -73,6 +83,7 @@ const EnvironmentPanel = ({environment}: EnvironmentPanelProps) => { + );