Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit359e00c

Browse files
BrunoQuaresmaaslilac
authored andcommitted
feat: add workspace status on tasks (#20037)
<img width="1206" height="722" alt="Screenshot 2025-09-30 at 11 29 31"src="https://github.com/user-attachments/assets/f109552d-af5e-41e1-a0e8-fdfcb3f973b7"/>Closes#19988
1 parent0b2fd44 commit359e00c

File tree

4 files changed

+63
-29
lines changed

4 files changed

+63
-29
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import{MockDormantWorkspace,MockWorkspace}from"testHelpers/entities";
2+
importtype{Meta,StoryObj}from"@storybook/react-vite";
3+
import{WorkspaceStatus}from"./WorkspaceStatus";
4+
5+
constmeta:Meta<typeofWorkspaceStatus>={
6+
title:"modules/workspaces/WorkspaceStatus",
7+
component:WorkspaceStatus,
8+
args:{
9+
workspace:MockWorkspace,
10+
},
11+
};
12+
13+
exportdefaultmeta;
14+
typeStory=StoryObj<typeofWorkspaceStatus>;
15+
16+
exportconstRunning:Story={};
17+
18+
exportconstDormant:Story={
19+
args:{
20+
workspace:MockDormantWorkspace,
21+
},
22+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
importtype{Workspace}from"api/typesGenerated";
2+
importtype{FC}from"react";
3+
import{lastUsedMessage}from"utils/workspace";
4+
import{WorkspaceDormantBadge}from"../WorkspaceDormantBadge/WorkspaceDormantBadge";
5+
import{WorkspaceStatusIndicator}from"../WorkspaceStatusIndicator/WorkspaceStatusIndicator";
6+
7+
typeWorkspaceStatusProps={
8+
workspace:Workspace;
9+
};
10+
11+
exportconstWorkspaceStatus:FC<WorkspaceStatusProps>=({ workspace})=>{
12+
return(
13+
<divclassName="flex flex-col">
14+
<WorkspaceStatusIndicatorworkspace={workspace}>
15+
{workspace.dormant_at&&(
16+
<WorkspaceDormantBadgeworkspace={workspace}/>
17+
)}
18+
</WorkspaceStatusIndicator>
19+
<time
20+
dateTime={workspace.last_used_at}
21+
className="text-xs font-medium text-content-secondary ml-6 whitespace-nowrap"
22+
>
23+
{lastUsedMessage(workspace.last_used_at)}
24+
</time>
25+
</div>
26+
);
27+
};

‎site/src/pages/TasksPage/TasksTable.tsx‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { RotateCcwIcon, TrashIcon } from "lucide-react";
2626
import{TaskDeleteDialog}from"modules/tasks/TaskDeleteDialog/TaskDeleteDialog";
2727
importtype{Task}from"modules/tasks/tasks";
2828
import{WorkspaceAppStatus}from"modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus";
29+
import{WorkspaceStatus}from"modules/workspaces/WorkspaceStatus/WorkspaceStatus";
2930
import{typeFC,typeReactNode,useState}from"react";
3031
import{LinkasRouterLink}from"react-router";
3132
import{relativeTime}from"utils/time";
@@ -54,7 +55,8 @@ export const TasksTable: FC<TasksTableProps> = ({ tasks, error, onRetry }) => {
5455
<TableHeader>
5556
<TableRow>
5657
<TableHead>Task</TableHead>
57-
<TableHead>Status</TableHead>
58+
<TableHead>Agent status</TableHead>
59+
<TableHead>Workspace status</TableHead>
5860
<TableHead>Created by</TableHead>
5961
<TableHead/>
6062
</TableRow>
@@ -153,6 +155,9 @@ const TaskRow: FC<TaskRowProps> = ({ task }) => {
153155
status={task.workspace.latest_app_status}
154156
/>
155157
</TableCell>
158+
<TableCell>
159+
<WorkspaceStatusworkspace={task.workspace}/>
160+
</TableCell>
156161
<TableCell>
157162
<AvatarData
158163
title={task.workspace.owner_name}
@@ -205,6 +210,9 @@ const TasksSkeleton: FC = () => {
205210
<TableCell>
206211
<SkeletonclassName="w-[100px] h-6"/>
207212
</TableCell>
213+
<TableCell>
214+
<SkeletonclassName="w-[100px] h-6"/>
215+
</TableCell>
208216
<TableCell>
209217
<AvatarDataSkeleton/>
210218
</TableCell>

‎site/src/pages/WorkspacesPage/WorkspacesTable.tsx‎

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,9 @@ import { useAppLink } from "modules/apps/useAppLink";
6565
import{useDashboard}from"modules/dashboard/useDashboard";
6666
import{abilitiesByWorkspaceStatus}from"modules/workspaces/actions";
6767
import{WorkspaceBuildCancelDialog}from"modules/workspaces/WorkspaceBuildCancelDialog/WorkspaceBuildCancelDialog";
68-
import{WorkspaceDormantBadge}from"modules/workspaces/WorkspaceDormantBadge/WorkspaceDormantBadge";
6968
import{WorkspaceMoreActions}from"modules/workspaces/WorkspaceMoreActions/WorkspaceMoreActions";
7069
import{WorkspaceOutdatedTooltip}from"modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip";
71-
import{WorkspaceStatusIndicator}from"modules/workspaces/WorkspaceStatusIndicator/WorkspaceStatusIndicator";
70+
import{WorkspaceStatus}from"modules/workspaces/WorkspaceStatus/WorkspaceStatus";
7271
import{
7372
useWorkspaceUpdate,
7473
WorkspaceUpdateDialogs,
@@ -83,10 +82,7 @@ import {
8382
import{useMutation,useQuery,useQueryClient}from"react-query";
8483
import{useNavigate}from"react-router";
8584
import{cn}from"utils/cn";
86-
import{
87-
getDisplayWorkspaceTemplateName,
88-
lastUsedMessage,
89-
}from"utils/workspace";
85+
import{getDisplayWorkspaceTemplateName}from"utils/workspace";
9086
import{WorkspacesEmpty}from"./WorkspacesEmpty";
9187

9288
interfaceWorkspacesTableProps{
@@ -256,7 +252,9 @@ export const WorkspacesTable: FC<WorkspacesTableProps> = ({
256252
/>
257253
</TableCell>
258254

259-
<WorkspaceStatusCellworkspace={workspace}/>
255+
<TableCell>
256+
<WorkspaceStatusworkspace={workspace}/>
257+
</TableCell>
260258

261259
<WorkspaceActionsCell
262260
workspace={workspace}
@@ -354,27 +352,6 @@ const cantBeChecked = (workspace: Workspace) => {
354352
return["deleting","pending"].includes(workspace.latest_build.status);
355353
};
356354

357-
typeWorkspaceStatusCellProps={
358-
workspace:Workspace;
359-
};
360-
361-
constWorkspaceStatusCell:FC<WorkspaceStatusCellProps>=({ workspace})=>{
362-
return(
363-
<TableCell>
364-
<divclassName="flex flex-col">
365-
<WorkspaceStatusIndicatorworkspace={workspace}>
366-
{workspace.dormant_at&&(
367-
<WorkspaceDormantBadgeworkspace={workspace}/>
368-
)}
369-
</WorkspaceStatusIndicator>
370-
<spanclassName="text-xs font-medium text-content-secondary ml-6 whitespace-nowrap">
371-
{lastUsedMessage(workspace.last_used_at)}
372-
</span>
373-
</div>
374-
</TableCell>
375-
);
376-
};
377-
378355
typeWorkspaceActionsCellProps={
379356
workspace:Workspace;
380357
onActionSuccess:()=>Promise<void>;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp