• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alkem-io / client-web / #9048

11 Oct 2024 01:42PM UTC coverage: 5.943%. First build
#9048

Pull #7022

travis-ci

Pull Request #7022: [v0.74.0] Roles API + Unauthenticated Explore page

202 of 10241 branches covered (1.97%)

Branch coverage included in aggregate %.

63 of 431 new or added lines in 60 files covered. (14.62%)

1468 of 17861 relevant lines covered (8.22%)

0.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/domain/community/contributor/Account/AccountResourcesView.tsx
1
import { useState } from 'react';
2
import PageContentBlock from '@/core/ui/content/PageContentBlock';
3
import PageContentBlockHeader from '@/core/ui/content/PageContentBlockHeader';
4
import PageContentBlockGrid from '@/core/ui/content/PageContentBlockGrid';
5
import ScrollableCardsLayoutContainer from '@/core/ui/card/cardsLayout/ScrollableCardsLayoutContainer';
6
import SpaceTile from '@/domain/space/components/cards/SpaceTile';
7
import { SpaceLevel } from '@/core/apollo/generated/graphql-schema';
8
import { BlockTitle } from '@/core/ui/typography';
9
import Gutters from '@/core/ui/grid/Gutters';
10
import { useTranslation } from 'react-i18next';
11
import ContributorCardHorizontal from '@/core/ui/card/ContributorCardHorizontal';
12
import InnovationPackCardHorizontal from '@/domain/InnovationPack/InnovationPackCardHorizontal/InnovationPackCardHorizontal';
13
import InnovationHubCardHorizontal from '@/domain/innovationHub/InnovationHubCardHorizontal/InnovationHubCardHorizontal';
14
import GridItem from '@/core/ui/grid/GridItem';
15
import { useColumns } from '@/core/ui/grid/GridContext';
16
import { Button } from '@mui/material';
17
import { Actions } from '@/core/ui/actions/Actions';
18
import { ExpandMore } from '@mui/icons-material';
19
import { SpaceAboutLightModel } from '@/domain/space/about/model/spaceAboutLight.model';
20
import { useScreenSize } from '@/core/ui/grid/constants';
NEW
21

×
22
const VISIBLE_SPACE_LIMIT = 6;
23

24
type AccountProfile = {
25
  id: string;
26
  displayName: string;
27
  description?: string;
28
  avatar?: { uri: string };
29
  cardBanner?: { uri: string };
30
  url: string;
31
  tagline?: string;
32
};
33

34
export interface AccountResourcesProps {
35
  id: string;
36
  spaces: {
37
    id: string;
38
    about: SpaceAboutLightModel;
39
  }[];
40
  virtualContributors: {
41
    id: string;
42
    profile: AccountProfile;
43
  }[];
44
  innovationPacks: {
45
    id: string;
46
    profile: AccountProfile;
47
    templates?: {
48
      calloutTemplatesCount: number;
49
      spaceTemplatesCount: number;
50
      communityGuidelinesTemplatesCount: number;
51
      postTemplatesCount: number;
52
      whiteboardTemplatesCount: number;
53
    };
54
  }[];
55
  innovationHubs: {
56
    id: string;
57
    profile: AccountProfile & {
58
      banner?: { uri: string };
59
    };
60
    subdomain: string;
61
  }[];
62
}
63

64
interface AccountResourcesViewProps {
65
  accountResources: AccountResourcesProps;
66
  title: string;
67
}
68

69
export const AccountResourcesView = ({ accountResources, title }: AccountResourcesViewProps) => {
70
  const { t } = useTranslation();
71

72
  const [visibleSpacesCount, setVisibleSpacesCount] = useState(VISIBLE_SPACE_LIMIT);
73

74
  const { isSmallScreen } = useScreenSize();
75

76
  const columns = useColumns();
NEW
77

×
NEW
78
  const resourceColumns = isSmallScreen ? columns : columns / 3;
×
79

NEW
80
  const showSpaceMoreButton =
×
81
    accountResources.spaces.length > VISIBLE_SPACE_LIMIT && visibleSpacesCount === VISIBLE_SPACE_LIMIT;
NEW
82

×
83
  return (
NEW
84
    <PageContentBlock>
×
85
      <PageContentBlockHeader title={title} />
NEW
86
      {accountResources?.spaces && accountResources?.spaces.length > 0 && (
×
87
        <PageContentBlockGrid disablePadding>
88
          <ScrollableCardsLayoutContainer containerProps={{ flex: 1 }}>
NEW
89
            {accountResources.spaces?.slice(0, visibleSpacesCount).map(contributionItem => (
×
90
              <SpaceTile
NEW
91
                key={contributionItem.id}
×
92
                space={{
93
                  id: contributionItem.id,
94
                  about: contributionItem.about,
×
95
                  level: SpaceLevel.L0,
96
                }}
97
              />
NEW
98
            ))}
×
99
          </ScrollableCardsLayoutContainer>
100
        </PageContentBlockGrid>
101
      )}
102
      {showSpaceMoreButton && (
103
        <Actions padding={0} justifyContent="end">
104
          <Button
105
            startIcon={<ExpandMore />}
106
            onClick={() => setVisibleSpacesCount(accountResources.spaces.length)}
107
            sx={{ textTransform: 'none', minWidth: 0, padding: 0.8 }}
108
          >
109
            {t('components.dashboardNavigation.showAll')}
110
          </Button>
111
        </Actions>
112
      )}
113
      <PageContentBlockGrid disablePadding>
×
114
        {accountResources?.virtualContributors && accountResources?.virtualContributors.length > 0 && (
115
          <GridItem columns={resourceColumns}>
116
            <Gutters>
NEW
117
              <BlockTitle>{t('pages.admin.generic.sections.account.virtualContributors')}</BlockTitle>
×
118
              <Gutters disablePadding>
119
                {accountResources?.virtualContributors?.map(vc => (
120
                  <ContributorCardHorizontal key={vc.id} profile={vc.profile} withUnifiedTitle seamless />
121
                ))}
122
              </Gutters>
123
            </Gutters>
124
          </GridItem>
125
        )}
×
126
        {accountResources?.innovationPacks && accountResources?.innovationPacks.length > 0 && (
127
          <GridItem columns={resourceColumns}>
128
            <Gutters>
129
              <BlockTitle>{t('pages.admin.generic.sections.account.innovationPacks')}</BlockTitle>
130
              <Gutters disablePadding>
NEW
131
                {accountResources?.innovationPacks?.map(pack => (
×
132
                  <InnovationPackCardHorizontal key={pack.id} {...pack} />
133
                ))}
134
              </Gutters>
135
            </Gutters>
136
          </GridItem>
137
        )}
×
138
        {accountResources?.innovationHubs && accountResources?.innovationHubs.length > 0 && (
139
          <GridItem columns={resourceColumns}>
140
            <Gutters>
141
              <BlockTitle>{t('pages.admin.generic.sections.account.customHomepages')}</BlockTitle>
142
              <Gutters disablePadding>
NEW
143
                {accountResources?.innovationHubs?.map(hub => <InnovationHubCardHorizontal key={hub.id} {...hub} />)}
×
144
              </Gutters>
145
            </Gutters>
146
          </GridItem>
147
        )}
148
      </PageContentBlockGrid>
149
    </PageContentBlock>
×
150
  );
151
};
152

153
export default AccountResourcesView;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc