mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
chore: stub out project resources for status model (#8631)
This PR begins to stub out the project resources widget. I still need one more piece of data and then to work on the styling, but it's a placeholder for now. I've also moved the project status modal to its own folder so we can group the widgets etc. I'd like to get that merged quickly to avoid any future conflicts, which is why I'm making the PR ready now.
This commit is contained in:
parent
c9dc5267a6
commit
fc1a92cf50
@ -56,7 +56,7 @@ import { ProjectArchived } from './ArchiveProject/ProjectArchived';
|
|||||||
import { usePlausibleTracker } from '../../../hooks/usePlausibleTracker';
|
import { usePlausibleTracker } from '../../../hooks/usePlausibleTracker';
|
||||||
import { useUiFlag } from 'hooks/useUiFlag';
|
import { useUiFlag } from 'hooks/useUiFlag';
|
||||||
import { useActionableChangeRequests } from 'hooks/api/getters/useActionableChangeRequests/useActionableChangeRequests';
|
import { useActionableChangeRequests } from 'hooks/api/getters/useActionableChangeRequests/useActionableChangeRequests';
|
||||||
import { ProjectStatusModal } from './ProjectStatusModal';
|
import { ProjectStatusModal } from './ProjectStatus/ProjectStatusModal';
|
||||||
|
|
||||||
const StyledBadge = styled(Badge)(({ theme }) => ({
|
const StyledBadge = styled(Badge)(({ theme }) => ({
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
import { styled } from '@mui/material';
|
||||||
|
import { useProjectApiTokens } from 'hooks/api/getters/useProjectApiTokens/useProjectApiTokens';
|
||||||
|
import useProjectOverview from 'hooks/api/getters/useProjectOverview/useProjectOverview';
|
||||||
|
import { useSegments } from 'hooks/api/getters/useSegments/useSegments';
|
||||||
|
import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
|
||||||
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
const Wrapper = styled('article')(({ theme }) => ({
|
||||||
|
backgroundColor: theme.palette.envAccordion.expanded,
|
||||||
|
padding: theme.spacing(2),
|
||||||
|
borderRadius: theme.shape.borderRadiusExtraLarge,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const ProjectResourcesInner = styled('div')(({ theme }) => ({
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: '1rem',
|
||||||
|
}));
|
||||||
|
|
||||||
|
export const ProjectResources = () => {
|
||||||
|
const projectId = useRequiredPathParam('projectId');
|
||||||
|
const { project, loading: loadingProject } = useProjectOverview(projectId);
|
||||||
|
const { tokens, loading: loadingTokens } = useProjectApiTokens(projectId);
|
||||||
|
const { segments, loading: loadingSegments } = useSegments();
|
||||||
|
// todo: add sdk connections
|
||||||
|
|
||||||
|
const segmentCount = useMemo(
|
||||||
|
() =>
|
||||||
|
segments?.filter((segment) => segment.project === projectId)
|
||||||
|
.length ?? 0,
|
||||||
|
[segments, projectId],
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Wrapper>
|
||||||
|
<ProjectResourcesInner>
|
||||||
|
<h3>Project Resources</h3>
|
||||||
|
<span>{project.members} project member(s)</span>
|
||||||
|
<span>{tokens.length} API key(s)</span>
|
||||||
|
<span>1 SDK connection(s)</span>
|
||||||
|
<span>{segmentCount} project segment(s)</span>
|
||||||
|
</ProjectResourcesInner>
|
||||||
|
</Wrapper>
|
||||||
|
);
|
||||||
|
};
|
@ -1,9 +1,9 @@
|
|||||||
import { styled } from '@mui/material';
|
import { styled } from '@mui/material';
|
||||||
import { SidebarModal } from 'component/common/SidebarModal/SidebarModal';
|
import { SidebarModal } from 'component/common/SidebarModal/SidebarModal';
|
||||||
|
import { ProjectResources } from './ProjectResources';
|
||||||
|
|
||||||
const ModalContentContainer = styled('div')(({ theme }) => ({
|
const ModalContentContainer = styled('div')(({ theme }) => ({
|
||||||
minHeight: '100vh',
|
minHeight: '100vh',
|
||||||
display: 'flex',
|
|
||||||
backgroundColor: theme.palette.background.default,
|
backgroundColor: theme.palette.background.default,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -15,7 +15,9 @@ type Props = {
|
|||||||
export const ProjectStatusModal = ({ open, close }: Props) => {
|
export const ProjectStatusModal = ({ open, close }: Props) => {
|
||||||
return (
|
return (
|
||||||
<SidebarModal open={open} onClose={close} label='Project status'>
|
<SidebarModal open={open} onClose={close} label='Project status'>
|
||||||
<ModalContentContainer />
|
<ModalContentContainer>
|
||||||
|
<ProjectResources />
|
||||||
|
</ModalContentContainer>
|
||||||
</SidebarModal>
|
</SidebarModal>
|
||||||
);
|
);
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user