Skip to content

Commit e8a4c20

Browse files
committed
feat(frontend): add stories for TasksFlow
1 parent f1a7d6d commit e8a4c20

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import { Meta, StoryObj } from "@storybook/react";
2+
import {
3+
RelayEnvironmentProvider,
4+
useFragment,
5+
useLazyLoadQuery,
6+
} from "react-relay";
7+
import { ThemeProvider, DiamondTheme } from "@diamondlightsource/sci-react-ui";
8+
import { MemoryRouter } from "react-router-dom";
9+
import React, { ReactElement } from "react";
10+
import { getRelayEnvironment } from "dashboard/src/RelayEnvironment";
11+
import { WorkflowsListViewQuery } from "../../lib/views/WorkflowsListView";
12+
import { WorkflowsListViewQuery$data } from "../../lib/views/__generated__/WorkflowsListViewQuery.graphql";
13+
import { WorkflowsContentFragment$key } from "../../lib/components/__generated__/WorkflowsContentFragment.graphql";
14+
import { WorkflowsContentFragment } from "../../lib/components/WorkflowsContent";
15+
import { WorkflowRelayFragment$key } from "../../lib/components/__generated__/WorkflowRelayFragment.graphql";
16+
import { WorkflowRelayFragment } from "../../lib/components/WorkflowRelay";
17+
import TasksFlow from "../../lib/components/TasksFlow";
18+
import { BaseWorkflowRelayFragment$key } from "../../lib/components/__generated__/BaseWorkflowRelayFragment.graphql";
19+
import { BaseWorkflowRelayFragment } from "../../lib/components/BaseWorkflowRelay";
20+
import { Box } from "@mui/material";
21+
22+
const environment = await getRelayEnvironment();
23+
24+
const Wrapper = ({ children }: { children: ReactElement }) => {
25+
const queryData = useLazyLoadQuery(
26+
WorkflowsListViewQuery,
27+
{},
28+
) as WorkflowsListViewQuery$data;
29+
const workflowsData = useFragment<WorkflowsContentFragment$key>(
30+
WorkflowsContentFragment,
31+
queryData.workflows,
32+
);
33+
const relayData = useFragment<WorkflowRelayFragment$key>(
34+
WorkflowRelayFragment,
35+
workflowsData.nodes[1],
36+
);
37+
const data = useFragment<BaseWorkflowRelayFragment$key>(
38+
BaseWorkflowRelayFragment,
39+
relayData,
40+
);
41+
return React.cloneElement(children, {
42+
workflowName: data.name,
43+
tasksRef: data,
44+
});
45+
};
46+
47+
const meta: Meta<typeof TasksFlow> = {
48+
component: TasksFlow,
49+
title: "TasksFlow",
50+
tags: ["autodocs"],
51+
parameters: {
52+
docs: {
53+
description: {
54+
component: "Render base version of workflow relay",
55+
},
56+
},
57+
},
58+
decorators: [
59+
(Story) => (
60+
<RelayEnvironmentProvider environment={environment}>
61+
<ThemeProvider theme={DiamondTheme} defaultMode="light">
62+
<MemoryRouter initialEntries={["/"]}>
63+
<Box
64+
sx={{
65+
width: {
66+
xl: "100%",
67+
lg: "100%",
68+
md: "90%",
69+
sm: "80%",
70+
xs: "70%",
71+
},
72+
minWidth: "300px",
73+
maxWidth: "1150px",
74+
height: "200px",
75+
mx: "auto",
76+
}}
77+
>
78+
<Story />
79+
</Box>
80+
</MemoryRouter>
81+
</ThemeProvider>
82+
</RelayEnvironmentProvider>
83+
),
84+
],
85+
} satisfies Meta<typeof TasksFlow>;
86+
87+
export default meta;
88+
type Story = StoryObj<typeof meta>;
89+
90+
export const Example: Story = {
91+
render: (args) => (
92+
<Wrapper>
93+
<TasksFlow {...args} />
94+
</Wrapper>
95+
),
96+
args: {
97+
onNavigate: () => {},
98+
},
99+
};

0 commit comments

Comments
 (0)