11import { Code0Component , useService } from "../../utils" ;
2- import { NamespaceProject , Organization , User } from "@code0-tech/sagittarius-graphql-types" ;
2+ import { NamespaceProject } from "@code0-tech/sagittarius-graphql-types" ;
33import React from "react" ;
44import { Flex } from "../flex/Flex" ;
5- import { DNamespaceReactiveService } from "../d-namespace" ;
6- import { DOrganizationReactiveService , DOrganizationView } from "../d-organization" ;
7- import { DUserReactiveService , DUserView } from "../d-user" ;
85import { DNamespaceProjectReactiveService } from "./DNamespaceProject.service" ;
96import { Avatar } from "../avatar/Avatar" ;
107import { Text } from "../text/Text" ;
118import { Badge } from "../badge/Badge" ;
12- import { IconGitFork , IconServer , IconServerSpark , IconSettings } from "@tabler/icons-react" ;
9+ import { IconEdit , IconGitFork , IconServer , IconServerSpark } from "@tabler/icons-react" ;
1310import { DRuntimeReactiveService } from "../d-runtime" ;
1411import { Button } from "../button/Button" ;
1512import { DNamespaceProjectView } from "./DNamespaceProject.view" ;
1613
1714export interface DNamespaceProjectContentProps extends Code0Component < HTMLDivElement > {
1815 projectId : NamespaceProject [ "id" ]
1916 onSetting ?: ( project : DNamespaceProjectView ) => void
17+ minimized ?: boolean
2018}
2119
2220export const DNamespaceProjectContent : React . FC < DNamespaceProjectContentProps > = ( props ) => {
2321
2422 const {
2523 projectId,
2624 onSetting = ( ) => {
27- }
25+ } ,
26+ minimized = false
2827 } = props
2928 const projectService = useService ( DNamespaceProjectReactiveService )
30- const runtimeService = useService ( DRuntimeReactiveService )
29+ const runtimeService = ! minimized ? useService ( DRuntimeReactiveService ) : null
3130
3231 const project = React . useMemo ( ( ) => projectService . getById ( projectId ) , [ projectService , projectId ] )
33- const assignedRuntime = React . useMemo ( ( ) => project ? runtimeService . getById ( project . primaryRuntime ?. id ) : null , [ project ] )
32+ const assignedRuntime = ! minimized ? React . useMemo ( ( ) => project ? runtimeService ! ! . getById ( project . primaryRuntime ?. id ) : null , [ project ] ) : null
3433
3534 return (
3635 < Flex align = { "center" } style = { { gap : "1.3rem" } } justify = { "space-between" } >
37- < Flex align = { "center" } style = { { gap : "1.3rem " } } >
36+ < Flex align = { "center" } style = { { gap : "0.7rem " } } >
3837 < Avatar bg = { "transparent" }
3938 identifier = { project ?. name ?? "" } />
4039 < Flex style = { { flexDirection : "column" , gap : "0.35rem" } } >
41- < Text size = { "lg" } hierarchy = { "primary" } display = { "block" } >
40+ < Text size = { ! minimized ? "md" : "xs" } hierarchy = { "secondary" }
41+ display = { "block" } >
4242 { project ?. name }
4343 </ Text >
44- < Text size = { "sm" } hierarchy = { "tertiary" } display = { "block" } >
44+ < Text size = { ! minimized ? "sm" : "xs "} hierarchy = { "tertiary" } display = { "block" } >
4545 { project ?. description }
4646 </ Text >
4747 </ Flex >
4848 </ Flex >
49- < Flex align = { "center" } style = { { gap : "1.3rem" } } >
50- < Flex align = { "center" } style = { { gap : "0.35rem" , flexWrap : "wrap" } } >
51- { /* Flow count */ }
52- < Badge color = { "secondary" } >
53- < IconGitFork size = { 16 } />
54- < Text size = { "xs" } >
55- { project ?. flows ?. count ?? 0 }
49+ { ! minimized ? (
50+ < Flex align = { "center" } style = { { gap : "1.3rem" } } >
51+ < Flex style = { { flexDirection : "column" , gap : "0.35rem" } } >
52+ < Text size = "xs" hierarchy = "tertiary" >
53+ Usage
5654 </ Text >
57- </ Badge >
58- { /* Runtime Count */ }
59- < Badge color = { "secondary" } >
60- < IconServer size = { 16 } />
61- < Text size = { "xs" } >
62- { project ?. runtimes ?. count ?? 0 }
63- </ Text >
64- </ Badge >
65- { /* Assigned Runtime */ }
66- { assignedRuntime && (
67- < Badge color = { "secondary" } >
68- < IconServerSpark size = { 16 } />
69- < Text size = { "xs" } > { assignedRuntime . name } </ Text >
70- </ Badge >
71- ) }
55+ < Flex align = { "center" } style = { { gap : "0.35rem" , flexWrap : "wrap" } } >
56+ { /* Flow count */ }
57+ < Badge border >
58+ < IconGitFork size = { 16 } />
59+ < Text size = { "xs" } >
60+ { project ?. flows ?. count ?? 0 }
61+ </ Text >
62+ </ Badge >
63+ { /* Runtime Count */ }
64+ < Badge border >
65+ < IconServer size = { 16 } />
66+ < Text size = { "xs" } >
67+ { project ?. runtimes ?. count ?? 0 }
68+ </ Text >
69+ </ Badge >
70+ { /* Assigned Runtime */ }
71+ { assignedRuntime && (
72+ < Badge border >
73+ < IconServerSpark size = { 16 } />
74+ < Text size = { "xs" } > { assignedRuntime . name } </ Text >
75+ </ Badge >
76+ ) }
77+ </ Flex >
78+ </ Flex >
79+ { project ?. userAbilities ?. deleteNamespaceProject || project ?. userAbilities ?. updateNamespaceProject ? (
80+ < Button color = { "secondary" } variant = { "filled" } onClick = { ( event ) => {
81+ event . stopPropagation ( )
82+ onSetting ( project )
83+ } } >
84+ < IconEdit size = { 16 } />
85+ </ Button >
86+ ) : null }
7287 </ Flex >
73- { project ?. userAbilities ?. deleteNamespaceProject || project ?. userAbilities ?. updateNamespaceProject ? (
74- < Button color = { "secondary" } onClick = { ( event ) => {
75- event . stopPropagation ( )
76- onSetting ( project )
77- } } >
78- < IconSettings size = { 16 } />
79- </ Button >
80- ) : null }
81- </ Flex >
88+ ) : null }
8289 </ Flex >
8390 )
8491}
0 commit comments