Skip to content

Commit c8c4d30

Browse files
committed
feat: add module service integration to display installed plugins in project data table
1 parent 7721c57 commit c8c4d30

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

src/packages/ce/src/runtime/components/RuntimeProjectDataTableRowComponent.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
MenuContent,
1212
MenuItem,
1313
MenuPortal,
14-
MenuTrigger,
14+
MenuTrigger, Spacing,
1515
Text,
1616
useService,
1717
useStore
@@ -20,6 +20,7 @@ import {RuntimeService} from "@edition/runtime/services/Runtime.service";
2020
import {formatDistanceToNow} from "date-fns";
2121
import {IconDotsVertical, IconServerSpark, IconX} from "@tabler/icons-react";
2222
import {ProjectService} from "@edition/project/services/Project.service";
23+
import {ModuleService} from "@edition/module/services/Module.service";
2324

2425
export interface RuntimeProjectDataTableRowComponentProps {
2526
projectId: NamespaceProject['id']
@@ -34,6 +35,8 @@ export const RuntimeProjectDataTableRowComponent: React.FC<RuntimeProjectDataTab
3435
const projectStore = useStore(ProjectService)
3536
const runtimeService = useService(RuntimeService)
3637
const runtimeStore = useStore(RuntimeService)
38+
const moduleService = useService(ModuleService)
39+
const moduleStore = useStore(ModuleService)
3740

3841
const runtime = React.useMemo(
3942
() => runtimeService.getById(runtimeId),
@@ -45,6 +48,11 @@ export const RuntimeProjectDataTableRowComponent: React.FC<RuntimeProjectDataTab
4548
[projectStore, projectId]
4649
)
4750

51+
const modules = React.useMemo(
52+
() =>moduleService.values({namespaceId: project?.namespace?.id, projectId: projectId, runtimeId: runtimeId}),
53+
[moduleStore, runtime]
54+
)
55+
4856
const makePrimary = React.useCallback(() => {
4957
startTransition(() => {
5058
projectService.projectUpdate({
@@ -91,6 +99,27 @@ export const RuntimeProjectDataTableRowComponent: React.FC<RuntimeProjectDataTab
9199
</Flex>
92100
</DataTableColumn>
93101
<DataTableColumn>
102+
<Text>
103+
Installed plugins
104+
</Text>
105+
<Spacing spacing={"xxs"}/>
106+
<Flex align={"center"} style={{gap: "0.35rem"}}>
107+
{
108+
modules.map(m => m.names?.[0].content).map((name, index) => {
109+
return index <= 5 ? <Badge color={"secondary"}>
110+
{name}
111+
</Badge> : index == 6 ? <Text>...</Text> : null
112+
})
113+
114+
}
115+
</Flex>
116+
117+
</DataTableColumn>
118+
<DataTableColumn>
119+
<Text>
120+
Status
121+
</Text>
122+
<Spacing spacing={"xxs"}/>
94123
<Badge color={runtime?.status === "CONNECTED" ? "success" : "error"} border>
95124
<Text style={{color: "inherit"}}>{runtime?.status}</Text>
96125
</Badge>

0 commit comments

Comments
 (0)