Skip to content

Commit 4496ec2

Browse files
committed
Update resource status
1 parent d71f37b commit 4496ec2

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

site/src/components/Resources/ResourceCard.tsx

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1-
import { makeStyles } from "@material-ui/core/styles"
1+
import { makeStyles, Theme, useTheme } from "@material-ui/core/styles"
22
import { Skeleton } from "@material-ui/lab"
33
import { PortForwardButton } from "components/PortForwardButton/PortForwardButton"
44
import { FC, useState } from "react"
5-
import { Workspace, WorkspaceResource } from "../../api/typesGenerated"
5+
import {
6+
Workspace,
7+
WorkspaceAgent,
8+
WorkspaceAgentStatus,
9+
WorkspaceResource,
10+
} from "../../api/typesGenerated"
611
import { AppLink } from "../AppLink/AppLink"
712
import { SSHButton } from "../SSHButton/SSHButton"
813
import { Stack } from "../Stack/Stack"
@@ -19,6 +24,23 @@ import IconButton from "@material-ui/core/IconButton"
1924
import Tooltip from "@material-ui/core/Tooltip"
2025
import { Maybe } from "components/Conditionals/Maybe"
2126

27+
const getAgentStatusColor = (theme: Theme, agent: WorkspaceAgent) => {
28+
switch (agent.status) {
29+
case "connected":
30+
return theme.palette.success.light
31+
case "connecting":
32+
return theme.palette.info.light
33+
case "disconnected":
34+
return theme.palette.text.secondary
35+
}
36+
}
37+
38+
const agentStatusLabels: Record<WorkspaceAgentStatus, string> = {
39+
connected: "Connected",
40+
connecting: "Connecting...",
41+
disconnected: "Disconnected",
42+
}
43+
2244
export interface ResourceCardProps {
2345
resource: WorkspaceResource
2446
workspace: Workspace
@@ -36,6 +58,7 @@ export const ResourceCard: FC<ResourceCardProps> = ({
3658
hideSSHButton,
3759
serverVersion,
3860
}) => {
61+
const theme = useTheme<Theme>()
3962
const [shouldDisplayAllMetadata, setShouldDisplayAllMetadata] =
4063
useState(false)
4164
const styles = useStyles()
@@ -110,6 +133,9 @@ export const ResourceCard: FC<ResourceCardProps> = ({
110133

111134
<div>
112135
{resource.agents?.map((agent) => {
136+
const statusColor = getAgentStatusColor(theme, agent)
137+
const statusLabel = agentStatusLabels[agent.status]
138+
113139
return (
114140
<Stack
115141
key={agent.id}
@@ -119,7 +145,13 @@ export const ResourceCard: FC<ResourceCardProps> = ({
119145
className={styles.agentRow}
120146
>
121147
<Stack direction="row" alignItems="baseline">
122-
<div role="status" className={styles.agentStatus} />
148+
<Tooltip title={statusLabel}>
149+
<div
150+
role="status"
151+
className={styles.agentStatus}
152+
style={{ backgroundColor: statusColor }}
153+
/>
154+
</Tooltip>
123155
<div>
124156
<div className={styles.agentName}>{agent.name}</div>
125157
<Stack
@@ -248,7 +280,6 @@ const useStyles = makeStyles((theme) => ({
248280
agentStatus: {
249281
width: theme.spacing(1),
250282
height: theme.spacing(1),
251-
backgroundColor: theme.palette.success.light,
252283
borderRadius: "100%",
253284
},
254285

0 commit comments

Comments
 (0)