From 98a989e94969fc670304b986b77b1fc52f98b3b4 Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Mon, 15 Aug 2022 17:01:21 +0000 Subject: [PATCH 1/4] hiding agent status on a stopped workspaace resolves #3484 --- .../components/Resources/Resources.test.tsx | 27 +++++++++++++++++++ site/src/components/Resources/Resources.tsx | 13 ++++++--- .../WorkspaceActions/ActionCtas.tsx | 2 +- .../DropdownContent.stories.tsx | 8 ++---- .../WorkspaceActions.test.tsx | 2 +- .../WorkspaceActions/WorkspaceActions.tsx | 8 ++---- .../components/WorkspaceActions/constants.ts | 16 +---------- site/src/util/workspace.ts | 15 +++++++++++ 8 files changed, 59 insertions(+), 32 deletions(-) create mode 100644 site/src/components/Resources/Resources.test.tsx diff --git a/site/src/components/Resources/Resources.test.tsx b/site/src/components/Resources/Resources.test.tsx new file mode 100644 index 0000000000000..a4c3286993735 --- /dev/null +++ b/site/src/components/Resources/Resources.test.tsx @@ -0,0 +1,27 @@ +import { screen } from "@testing-library/react" +import { + MockStoppedWorkspace, + MockWorkspaceResource, + MockWorkspaceResource2, +} from "testHelpers/entities" +import { render } from "testHelpers/renderHelpers" +import { DisplayAgentStatusLanguage } from "util/workspace" +import { Resources } from "./Resources" + +describe("ResourceTable", () => { + it("hides status text when a workspace is stopped", async () => { + // When + const props = { + resource: [{ ...MockWorkspaceResource }, { ...MockWorkspaceResource2 }], + workspace: { ...MockStoppedWorkspace }, + canUpdateWorkspace: false, + } + + render() + + const statusText = screen.queryByText(DisplayAgentStatusLanguage.connecting) + + // Then + expect(statusText).toBeNull() + }) +}) diff --git a/site/src/components/Resources/Resources.tsx b/site/src/components/Resources/Resources.tsx index a8912078ff266..e1f785e265f2c 100644 --- a/site/src/components/Resources/Resources.tsx +++ b/site/src/components/Resources/Resources.tsx @@ -8,6 +8,7 @@ import TableRow from "@material-ui/core/TableRow" import useTheme from "@material-ui/styles/useTheme" import { ErrorSummary } from "components/ErrorSummary/ErrorSummary" import { FC } from "react" +import { getWorkspaceStatus, WorkspaceStateEnum } from "util/workspace" import { Workspace, WorkspaceResource } from "../../api/typesGenerated" import { getDisplayAgentStatus } from "../../util/workspace" import { AppLink } from "../AppLink/AppLink" @@ -42,6 +43,10 @@ export const Resources: FC = ({ const styles = useStyles() const theme: Theme = useTheme() + const workspaceStatus: keyof typeof WorkspaceStateEnum = getWorkspaceStatus( + workspace.latest_build, + ) + return (
{getResourcesError ? ( @@ -102,9 +107,11 @@ export const Resources: FC = ({ {agent.name}
{agent.operating_system} - - {agentStatus.status} - + {WorkspaceStateEnum[workspaceStatus] !== "Stopped" && ( + + {agentStatus.status} + + )}
diff --git a/site/src/components/WorkspaceActions/ActionCtas.tsx b/site/src/components/WorkspaceActions/ActionCtas.tsx index 2240701c47db4..9325decc0e0ae 100644 --- a/site/src/components/WorkspaceActions/ActionCtas.tsx +++ b/site/src/components/WorkspaceActions/ActionCtas.tsx @@ -8,8 +8,8 @@ import PlayCircleOutlineIcon from "@material-ui/icons/PlayCircleOutline" import { LoadingButton } from "components/LoadingButton/LoadingButton" import { FC } from "react" import { combineClasses } from "util/combineClasses" +import { WorkspaceStateEnum } from "util/workspace" import { WorkspaceActionButton } from "../WorkspaceActionButton/WorkspaceActionButton" -import { WorkspaceStateEnum } from "./constants" export const Language = { start: "Start", diff --git a/site/src/components/WorkspaceActions/DropdownContent/DropdownContent.stories.tsx b/site/src/components/WorkspaceActions/DropdownContent/DropdownContent.stories.tsx index edde3acabdb64..257f31a01fb31 100644 --- a/site/src/components/WorkspaceActions/DropdownContent/DropdownContent.stories.tsx +++ b/site/src/components/WorkspaceActions/DropdownContent/DropdownContent.stories.tsx @@ -1,11 +1,7 @@ import { Story } from "@storybook/react" +import { WorkspaceStateEnum } from "util/workspace" import { DeleteButton, StartButton, StopButton } from "../ActionCtas" -import { - ButtonMapping, - ButtonTypesEnum, - WorkspaceStateActions, - WorkspaceStateEnum, -} from "../constants" +import { ButtonMapping, ButtonTypesEnum, WorkspaceStateActions } from "../constants" import { DropdownContent, DropdownContentProps } from "./DropdownContent" // These are the stories for the secondary actions (housed in the dropdown) diff --git a/site/src/components/WorkspaceActions/WorkspaceActions.test.tsx b/site/src/components/WorkspaceActions/WorkspaceActions.test.tsx index 81d29c7222ec3..6e9280e44a5bd 100644 --- a/site/src/components/WorkspaceActions/WorkspaceActions.test.tsx +++ b/site/src/components/WorkspaceActions/WorkspaceActions.test.tsx @@ -1,8 +1,8 @@ import { screen } from "@testing-library/react" +import { WorkspaceStateEnum } from "util/workspace" import * as Mocks from "../../testHelpers/entities" import { render } from "../../testHelpers/renderHelpers" import { Language } from "./ActionCtas" -import { WorkspaceStateEnum } from "./constants" import { WorkspaceActions, WorkspaceActionsProps } from "./WorkspaceActions" const renderComponent = async (props: Partial = {}) => { diff --git a/site/src/components/WorkspaceActions/WorkspaceActions.tsx b/site/src/components/WorkspaceActions/WorkspaceActions.tsx index 92c72c0033f52..10645f291e84d 100644 --- a/site/src/components/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/components/WorkspaceActions/WorkspaceActions.tsx @@ -2,6 +2,7 @@ import Button from "@material-ui/core/Button" import Popover from "@material-ui/core/Popover" import { makeStyles } from "@material-ui/core/styles" import { FC, useEffect, useMemo, useRef, useState } from "react" +import { WorkspaceStateEnum } from "util/workspace" import { Workspace } from "../../api/typesGenerated" import { getWorkspaceStatus, WorkspaceStatus } from "../../util/workspace" import { CloseDropdown, OpenDropdown } from "../DropdownArrows/DropdownArrows" @@ -15,12 +16,7 @@ import { StopButton, UpdateButton, } from "./ActionCtas" -import { - ButtonMapping, - ButtonTypesEnum, - WorkspaceStateActions, - WorkspaceStateEnum, -} from "./constants" +import { ButtonMapping, ButtonTypesEnum, WorkspaceStateActions } from "./constants" import { DropdownContent } from "./DropdownContent/DropdownContent" /** diff --git a/site/src/components/WorkspaceActions/constants.ts b/site/src/components/WorkspaceActions/constants.ts index ecb7292a0d6ed..383ca3630c8e3 100644 --- a/site/src/components/WorkspaceActions/constants.ts +++ b/site/src/components/WorkspaceActions/constants.ts @@ -1,19 +1,5 @@ import { ReactNode } from "react" - -// all the possible states returned by the API -export enum WorkspaceStateEnum { - starting = "Starting", - started = "Started", - stopping = "Stopping", - stopped = "Stopped", - canceling = "Canceling", - canceled = "Canceled", - deleting = "Deleting", - deleted = "Deleted", - queued = "Queued", - error = "Error", - loading = "Loading", -} +import { WorkspaceStateEnum } from "util/workspace" // the button types we have export enum ButtonTypesEnum { diff --git a/site/src/util/workspace.ts b/site/src/util/workspace.ts index 7949b2548275a..318f6ec13be6e 100644 --- a/site/src/util/workspace.ts +++ b/site/src/util/workspace.ts @@ -6,6 +6,21 @@ import * as TypesGen from "../api/typesGenerated" dayjs.extend(utc) +// all the possible states returned by the API +export enum WorkspaceStateEnum { + starting = "Starting", + started = "Started", + stopping = "Stopping", + stopped = "Stopped", + canceling = "Canceling", + canceled = "Canceled", + deleting = "Deleting", + deleted = "Deleted", + queued = "Queued", + error = "Error", + loading = "Loading", +} + export type WorkspaceStatus = | "queued" | "started" From c70a40eee27868c55a110ac9072bd1483a0b088e Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Mon, 15 Aug 2022 17:36:25 +0000 Subject: [PATCH 2/4] run prettier and lint --- site/src/components/Resources/Resources.tsx | 3 +-- site/src/components/WorkspaceActions/WorkspaceActions.tsx | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/site/src/components/Resources/Resources.tsx b/site/src/components/Resources/Resources.tsx index e1f785e265f2c..430b2c8bab696 100644 --- a/site/src/components/Resources/Resources.tsx +++ b/site/src/components/Resources/Resources.tsx @@ -8,9 +8,8 @@ import TableRow from "@material-ui/core/TableRow" import useTheme from "@material-ui/styles/useTheme" import { ErrorSummary } from "components/ErrorSummary/ErrorSummary" import { FC } from "react" -import { getWorkspaceStatus, WorkspaceStateEnum } from "util/workspace" +import { getDisplayAgentStatus, getWorkspaceStatus, WorkspaceStateEnum } from "util/workspace" import { Workspace, WorkspaceResource } from "../../api/typesGenerated" -import { getDisplayAgentStatus } from "../../util/workspace" import { AppLink } from "../AppLink/AppLink" import { SSHButton } from "../SSHButton/SSHButton" import { Stack } from "../Stack/Stack" diff --git a/site/src/components/WorkspaceActions/WorkspaceActions.tsx b/site/src/components/WorkspaceActions/WorkspaceActions.tsx index 10645f291e84d..c913c9f8fe134 100644 --- a/site/src/components/WorkspaceActions/WorkspaceActions.tsx +++ b/site/src/components/WorkspaceActions/WorkspaceActions.tsx @@ -2,9 +2,8 @@ import Button from "@material-ui/core/Button" import Popover from "@material-ui/core/Popover" import { makeStyles } from "@material-ui/core/styles" import { FC, useEffect, useMemo, useRef, useState } from "react" -import { WorkspaceStateEnum } from "util/workspace" +import { getWorkspaceStatus, WorkspaceStateEnum, WorkspaceStatus } from "util/workspace" import { Workspace } from "../../api/typesGenerated" -import { getWorkspaceStatus, WorkspaceStatus } from "../../util/workspace" import { CloseDropdown, OpenDropdown } from "../DropdownArrows/DropdownArrows" import { ActionLoadingButton, From de75bcacc90eb2d059e0cb34d1ecd41ee25b5cc4 Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Tue, 16 Aug 2022 14:24:38 -0400 Subject: [PATCH 3/4] Update site/src/components/Resources/Resources.tsx Co-authored-by: Joe Previte --- site/src/components/Resources/Resources.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/components/Resources/Resources.tsx b/site/src/components/Resources/Resources.tsx index 430b2c8bab696..7e0a5f2c88741 100644 --- a/site/src/components/Resources/Resources.tsx +++ b/site/src/components/Resources/Resources.tsx @@ -106,7 +106,7 @@ export const Resources: FC = ({ {agent.name}
{agent.operating_system} - {WorkspaceStateEnum[workspaceStatus] !== "Stopped" && ( + {WorkspaceStateEnum[workspaceStatus] !== WorkspaceStateEnum["stopped"] && ( {agentStatus.status} From b0449d772a35893bf3cfc521bdb4a1e63dee4798 Mon Sep 17 00:00:00 2001 From: Kira Pilot Date: Wed, 17 Aug 2022 18:03:19 +0000 Subject: [PATCH 4/4] running prettier --- site/src/components/Resources/Resources.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/site/src/components/Resources/Resources.tsx b/site/src/components/Resources/Resources.tsx index 7e0a5f2c88741..6efdb0bde6123 100644 --- a/site/src/components/Resources/Resources.tsx +++ b/site/src/components/Resources/Resources.tsx @@ -106,7 +106,8 @@ export const Resources: FC = ({ {agent.name}
{agent.operating_system} - {WorkspaceStateEnum[workspaceStatus] !== WorkspaceStateEnum["stopped"] && ( + {WorkspaceStateEnum[workspaceStatus] !== + WorkspaceStateEnum["stopped"] && ( {agentStatus.status}