From adb120ee06b84a50994342a5502b739b4324669c Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 20 May 2025 21:12:30 +0000 Subject: [PATCH 1/2] refactor: support unhealthy on workspace status indicator --- .../WorkspaceStatusIndicator.stories.tsx | 12 ++++++ .../WorkspaceStatusIndicator.tsx | 39 ++++++++++++++++--- .../pages/WorkspacesPage/WorkspacesTable.tsx | 9 +---- 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx index 75205db8ff698..5bdb870708447 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.stories.tsx @@ -27,6 +27,18 @@ export const Running: Story = { }, }; +export const Unhealthy: Story = { + args: { + workspace: { + ...createWorkspaceWithStatus("running"), + health: { + healthy: false, + failing_agents: [], + }, + }, + }, +}; + export const Stopped: Story = { args: { workspace: createWorkspaceWithStatus("stopped"), diff --git a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx index bd928844cdc0f..972096314e1ee 100644 --- a/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator.tsx @@ -4,6 +4,12 @@ import { StatusIndicatorDot, type StatusIndicatorProps, } from "components/StatusIndicator/StatusIndicator"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "components/Tooltip/Tooltip"; import type { FC } from "react"; import type React from "react"; import { @@ -32,18 +38,41 @@ export const WorkspaceStatusIndicator: FC = ({ workspace, children, }) => { - const { text, type } = getDisplayWorkspaceStatus( + let { text, type } = getDisplayWorkspaceStatus( workspace.latest_build.status, workspace.latest_build.job, ); - return ( + if (!workspace.health.healthy) { + type = "warning"; + } + + const statusIndicator = ( - - Workspace status: {text} - + Workspace status: {text} {children} ); + + if (workspace.health.healthy) { + return statusIndicator; + } + + return ( + + + + + + Workspace status: {text} + {children} + + + + Your workspace is running but some agents are unhealthy. + + + + ); }; diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index f91119e79d724..b206e76bcb77a 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -290,6 +290,7 @@ export const WorkspacesTable: FC = ({ + = ({ workspace }) => {
- {workspace.latest_build.status === "running" && - !workspace.health.healthy && ( - - )} {workspace.dormant_at && ( )} From 7506ef8717cdac4c0cb7d9909b0bc9be9481f86a Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Wed, 21 May 2025 18:48:02 +0000 Subject: [PATCH 2/2] Remove unecessary dependency --- site/src/pages/WorkspacesPage/WorkspacesTable.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index b206e76bcb77a..cfc96c4bd3bdb 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -21,7 +21,6 @@ import { Button } from "components/Button/Button"; import { ExternalImage } from "components/ExternalImage/ExternalImage"; import { VSCodeIcon } from "components/Icons/VSCodeIcon"; import { VSCodeInsidersIcon } from "components/Icons/VSCodeInsidersIcon"; -import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; import { Spinner } from "components/Spinner/Spinner"; import { Stack } from "components/Stack/Stack"; import {