Skip to content

Commit 075d96e

Browse files
committed
improve storybook
1 parent 37542df commit 075d96e

File tree

4 files changed

+69
-62
lines changed

4 files changed

+69
-62
lines changed
Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,48 @@
1-
import { ComponentMeta, Story } from "@storybook/react"
1+
import { Meta, StoryObj } from "@storybook/react"
22
import {
33
MockFailedWorkspaceBuild,
44
MockWorkspaceBuild,
55
MockWorkspaceBuildLogs,
66
} from "../../testHelpers/entities"
7-
import {
8-
WorkspaceBuildPageView,
9-
WorkspaceBuildPageViewProps,
10-
} from "./WorkspaceBuildPageView"
7+
import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView"
8+
9+
const defaultBuilds = [...Array(15).keys()].map((i) => ({
10+
...MockWorkspaceBuild,
11+
id: `${i}`,
12+
build_number: i,
13+
}))
1114

12-
export default {
13-
title: "pages/WorkspaceBuildPageView",
15+
const meta: Meta<typeof WorkspaceBuildPageView> = {
16+
title: "components/WorkspaceBuildPageView",
1417
component: WorkspaceBuildPageView,
15-
} as ComponentMeta<typeof WorkspaceBuildPageView>
18+
args: {
19+
build: MockWorkspaceBuild,
20+
logs: MockWorkspaceBuildLogs,
21+
builds: defaultBuilds,
22+
activeBuildNumber: defaultBuilds[0].build_number,
23+
},
24+
}
1625

17-
const Template: Story<WorkspaceBuildPageViewProps> = (args) => (
18-
<WorkspaceBuildPageView {...args} />
19-
)
26+
export default meta
27+
type Story = StoryObj<typeof WorkspaceBuildPageView>
28+
29+
export const Loaded: Story = {}
30+
31+
export const LoadingBuildLogs: Story = {
32+
args: {
33+
builds: undefined,
34+
},
35+
}
2036

21-
export const Example = Template.bind({})
22-
Example.args = {
23-
build: MockWorkspaceBuild,
24-
logs: MockWorkspaceBuildLogs,
37+
const failedBuild = {
38+
...MockFailedWorkspaceBuild("delete"),
39+
build_number: new Date().getDate(),
2540
}
2641

27-
export const FailedDelete = Template.bind({})
28-
FailedDelete.args = {
29-
build: MockFailedWorkspaceBuild("delete"),
30-
logs: MockWorkspaceBuildLogs,
42+
export const FailedDelete: Story = {
43+
args: {
44+
build: failedBuild,
45+
builds: [failedBuild, ...defaultBuilds],
46+
activeBuildNumber: failedBuild.build_number,
47+
},
3148
}

site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import { ProvisionerJobLog, WorkspaceBuild } from "../../api/typesGenerated"
44
import { Loader } from "../../components/Loader/Loader"
55
import { Stack } from "../../components/Stack/Stack"
66
import { WorkspaceBuildLogs } from "../../components/WorkspaceBuildLogs/WorkspaceBuildLogs"
7-
import { WorkspaceBuildStateError } from "./WorkspaceBuildStateError"
8-
import { makeStyles, useTheme } from "@mui/styles"
7+
import { makeStyles } from "@mui/styles"
98
import {
109
FullWidthPageHeader,
1110
PageHeaderTitle,
@@ -26,6 +25,7 @@ import {
2625
} from "components/Sidebar/Sidebar"
2726
import { BuildIcon } from "components/BuildIcon/BuildIcon"
2827
import Skeleton from "@mui/material/Skeleton"
28+
import { Alert } from "components/Alert/Alert"
2929

3030
const sortLogsByCreatedAt = (logs: ProvisionerJobLog[]) => {
3131
return [...logs].sort(
@@ -137,7 +137,33 @@ export const WorkspaceBuildPageView: FC<WorkspaceBuildPageViewProps> = ({
137137

138138
<Box sx={{ height: "100%", overflowY: "auto", width: "100%" }}>
139139
{build.transition === "delete" && build.job.status === "failed" && (
140-
<WorkspaceBuildStateError build={build} />
140+
<Alert
141+
severity="error"
142+
sx={{
143+
borderRadius: 0,
144+
border: 0,
145+
background: (theme) => theme.palette.error.dark,
146+
borderBottom: (theme) => `1px solid ${theme.palette.divider}`,
147+
}}
148+
>
149+
<Box>
150+
The workspace may have failed to delete due to a Terraform state
151+
mismatch. A template admin may run{" "}
152+
<Box
153+
component="code"
154+
display="inline-block"
155+
width="fit-content"
156+
fontWeight={600}
157+
>
158+
`
159+
{`coder rm ${
160+
build.workspace_owner_name + "/" + build.workspace_name
161+
} --orphan`}
162+
`
163+
</Box>{" "}
164+
to delete the workspace skipping resource destruction.
165+
</Box>
166+
</Alert>
141167
)}
142168
{!logs && <Loader />}
143169
{logs && (
@@ -159,8 +185,6 @@ const BuildSidebarItem = ({
159185
build: WorkspaceBuild
160186
active: boolean
161187
}) => {
162-
const theme = useTheme()
163-
164188
return (
165189
<Link
166190
key={build.id}
@@ -173,7 +197,9 @@ const BuildSidebarItem = ({
173197
sx={{
174198
width: 16,
175199
height: 16,
176-
color: getDisplayWorkspaceBuildStatus(theme, build).color,
200+
color: (theme) =>
201+
theme.palette[getDisplayWorkspaceBuildStatus(theme, build).type]
202+
.light,
177203
}}
178204
/>
179205
<Box sx={{ overflow: "hidden" }}>

site/src/pages/WorkspaceBuildPage/WorkspaceBuildStateError.tsx

Lines changed: 0 additions & 36 deletions
This file was deleted.

site/src/testHelpers/entities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ export const MockFailedWorkspaceBuild = (
815815
deadline: "2022-05-17T23:39:00.00Z",
816816
reason: "initiator",
817817
resources: [],
818-
status: "running",
818+
status: "failed",
819819
daily_cost: 20,
820820
})
821821

0 commit comments

Comments
 (0)