Skip to content

Commit c548d14

Browse files
szabozoltan69samshara
authored andcommitted
Update Surge CoS Basecamp as OSH
1 parent a561c6b commit c548d14

File tree

11 files changed

+941
-11
lines changed

11 files changed

+941
-11
lines changed

.changeset/wild-clocks-return.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44

55
- Add Surge CoS Administration section
66
- Update Surge CoS IT&T section
7+
- Update Surge CoS Basecamp section (as OSH)

app/src/App/routes/SurgeRoutes.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,34 @@ const surgeCatalogueBasecampFacilityManagement = customWrapRoute({
234234
},
235235
});
236236

237+
const surgeCatalogueBasecampOffice = customWrapRoute({
238+
parent: surgeCatalogueLayout,
239+
path: 'basecamp/office',
240+
component: {
241+
render: () => import('#views/SurgeCatalogueBasecampOffice'),
242+
props: {},
243+
},
244+
wrapperComponent: Auth,
245+
context: {
246+
title: 'Basecamp Office',
247+
visibility: 'anything',
248+
},
249+
});
250+
251+
const surgeCatalogueBasecampWelcome = customWrapRoute({
252+
parent: surgeCatalogueLayout,
253+
path: 'basecamp/welcome',
254+
component: {
255+
render: () => import('#views/SurgeCatalogueBasecampWelcome'),
256+
props: {},
257+
},
258+
wrapperComponent: Auth,
259+
context: {
260+
title: 'Basecamp Admin and Welcome Service',
261+
visibility: 'anything',
262+
},
263+
});
264+
237265
const surgeCatalogueCash = customWrapRoute({
238266
parent: surgeCatalogueLayout,
239267
path: 'cash',
@@ -1314,6 +1342,8 @@ function DeploymentCatalogueNavigate() {
13141342
'eru-base-camp-medium': surgeCatalogueBasecampEruMedium,
13151343
'eru-base-camp-large': surgeCatalogueBasecampEruLarge,
13161344
'facility-management': surgeCatalogueBasecampFacilityManagement,
1345+
office: surgeCatalogueBasecampOffice,
1346+
welcome: surgeCatalogueBasecampWelcome,
13171347
},
13181348
cash: {
13191349
cva: surgeCatalogueCashRapidResponse,
@@ -1491,6 +1521,8 @@ export default {
14911521
surgeCatalogueBasecampEruMedium,
14921522
surgeCatalogueBasecampEruLarge,
14931523
surgeCatalogueBasecampFacilityManagement,
1524+
surgeCatalogueBasecampOffice,
1525+
surgeCatalogueBasecampWelcome,
14941526
surgeCatalogueCash,
14951527
surgeCatalogueCashRapidResponse,
14961528
surgeCatalogueCommunityEngagement,

app/src/views/SurgeCatalogue/i18n.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"catalogueServiceOverview": "Catalogue",
55
"catalogueEmergency": "Emergency Needs Assessment",
66
"catalogueAdministration": "Administration",
7-
"catalogueBasecamp": "Basecamp",
7+
"catalogueBasecamp": "Operations Support HUB (OSH)",
88
"catalogueCash": "Cash and Vouchers Assistance (CVA)",
99
"catalogueCommunityEngagement": "Community Engagement and Accountability (CEA)",
1010
"catalogueCommunication": "Communications",

app/src/views/SurgeCatalogue/index.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,6 @@ export function Component() {
6161
<EditLineTwoIcon className={styles.icon} />
6262
{strings.catalogueAdministration}
6363
</NavigationTab>
64-
<NavigationTab
65-
to="surgeCatalogueBasecamp"
66-
parentRoute
67-
>
68-
<BasecampIcon className={styles.icon} />
69-
{strings.catalogueBasecamp}
70-
</NavigationTab>
7164
<NavigationTab
7265
to="surgeCatalogueCash"
7366
parentRoute
@@ -201,6 +194,13 @@ export function Component() {
201194
<GroupIcon className={styles.icon} />
202195
{strings.catalogueOperations}
203196
</NavigationTab>
197+
<NavigationTab
198+
to="surgeCatalogueBasecamp"
199+
parentRoute
200+
>
201+
<BasecampIcon className={styles.icon} />
202+
{strings.catalogueBasecamp}
203+
</NavigationTab>
204204
<NavigationTab
205205
to="surgeCataloguePmer"
206206
parentRoute

app/src/views/SurgeCatalogueBasecamp/i18n.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"namespace": "surgeCatalogueBasecamp",
33
"strings": {
4-
"catalogueBasecampTitle": "Basecamp",
4+
"catalogueBasecampTitle": "Operations Support HUB (OSH)",
55
"basecampDetails": "The Base Camp provides Red Cross Red Crescent staff (both host National Society and International Federation staff) engaged in emergency operations with appropriate living and working conditions. The Base Camp offers tented accommodation, conditioned for hot and cold climates, toilets, hot showers, recreational facilities, a kitchen, offices, administrative, and coordination facilities in locations where these are not available for Red Cross Red Crescent staff.",
66
"basecampServicesTitle": "Services",
77
"basecampEmergencyResponseUnit": "Emergency Response Unit",
@@ -13,6 +13,13 @@
1313
"eruLargeDetails": "Accommodation up to 60 - 100 persons.",
1414
"basecampFacilityManagementTitle": "Facility Management",
1515
"basecampFacilityManagementDetails": "All aspects of facility management.",
16-
"learnMore": "Learn More"
16+
"basecampLinkOneIntro": "The details of the {link}",
17+
"basecampLinkOneText": "Operations Support Hub ERU are here.",
18+
"basecampLinkTwoIntro": "The two-pager summary of the {link}",
19+
"basecampLinkTwoText": "Emergency Operations Support Hub ERU is here.",
20+
"basecampOfficeTitle": "Office",
21+
"basecampOfficeDetails": "Accommodate up to 150 workspaces, office space and meeting facilities.",
22+
"basecampWelcomeTitle": "Admin and Welcome Service",
23+
"basecampWelcomeDetails": "Administrative support services to the surge team and welcome services for delegates."
1724
}
1825
}

app/src/views/SurgeCatalogueBasecamp/index.tsx

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { useTranslation } from '@ifrc-go/ui/hooks';
2+
import { resolveToComponent } from '@ifrc-go/ui/utils';
23

34
import CatalogueInfoCard, { type LinkData } from '#components/CatalogueInfoCard';
45
import SurgeCardContainer from '#components/domain/SurgeCardContainer';
56
import SurgeCatalogueContainer from '#components/domain/SurgeCatalogueContainer';
7+
import Link from '#components/Link';
68

79
import i18n from './i18n.json';
810

@@ -37,17 +39,66 @@ export function Component() {
3739

3840
const facilityManagement: LinkData[] = [
3941
{
40-
title: strings.learnMore,
42+
title: strings.basecampFacilityManagementTitle,
4143
to: 'surgeCatalogueBasecampFacilityManagement',
4244
withLinkIcon: true,
4345
},
4446
];
4547

48+
const office: LinkData[] = [
49+
{
50+
title: strings.basecampOfficeTitle,
51+
to: 'surgeCatalogueBasecampOffice',
52+
withLinkIcon: true,
53+
},
54+
];
55+
56+
const welcome: LinkData[] = [
57+
{
58+
title: strings.basecampWelcomeTitle,
59+
to: 'surgeCatalogueBasecampWelcome',
60+
withLinkIcon: true,
61+
},
62+
];
63+
4664
return (
4765
<SurgeCatalogueContainer
4866
heading={strings.catalogueBasecampTitle}
4967
description={strings.basecampDetails}
5068
>
69+
<p>
70+
{resolveToComponent(
71+
strings.basecampLinkOneIntro,
72+
{
73+
link: (
74+
<Link
75+
href="https://ifrcorg.sharepoint.com/:b:/s/IFRCSharing/ETxoUV5FKsRAiORGfZkhU60B5k8ULQWzA0QrHFQplNQX4A"
76+
external
77+
withUnderline
78+
withLinkIcon
79+
>
80+
{strings.basecampLinkOneText}
81+
</Link>
82+
),
83+
},
84+
)}
85+
<br />
86+
{resolveToComponent(
87+
strings.basecampLinkTwoIntro,
88+
{
89+
link: (
90+
<Link
91+
href="https://ifrcorg.sharepoint.com/:b:/s/IFRCSharing/EQ9p02JRIBBDr2dLmommwNgBOBeDA4JvEUGwSb7E-bprKw"
92+
external
93+
withUnderline
94+
withLinkIcon
95+
>
96+
{strings.basecampLinkTwoText}
97+
</Link>
98+
),
99+
},
100+
)}
101+
</p>
51102
<SurgeCardContainer
52103
heading={strings.basecampServicesTitle}
53104
>
@@ -71,6 +122,16 @@ export function Component() {
71122
data={facilityManagement}
72123
description={strings.basecampFacilityManagementDetails}
73124
/>
125+
<CatalogueInfoCard
126+
title={strings.basecampOfficeTitle}
127+
data={office}
128+
description={strings.basecampOfficeDetails}
129+
/>
130+
<CatalogueInfoCard
131+
title={strings.basecampWelcomeTitle}
132+
data={welcome}
133+
description={strings.basecampWelcomeDetails}
134+
/>
74135
</SurgeCardContainer>
75136
</SurgeCatalogueContainer>
76137
);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"namespace": "surgeCatalogueBasecampOffice",
3+
"strings": {
4+
"basecampEruOfficeTitle": "ERU Basecamp - Office Module",
5+
"emergencyServices": "Emergency Services",
6+
"designedFor": "Designed For",
7+
"personnel": "Personnel",
8+
"basecampEruOfficeImageOne": "Office",
9+
"standardComponents": "Standard Components",
10+
"basecampEruEmergencyListItemOne": "Can accommodate up to 150 workspaces",
11+
"basecampEruEmergencyListItemTwo": "Provide a combination of office space and meeting facilities",
12+
"basecampEruEmergencyListItemThree": "It can provide an Emergency Operation Center",
13+
"basecampEruEmergencyListItemFour": "Provide electrical infrastructure",
14+
"basecampEruEmergencyListItemFive": "Can be a mix of buildings and tents",
15+
"designedForDetailsSectionOne": "Areas where infrastructure is severely damaged, unsafe or missing (earthquakes, hurricanes/ typhons, floods or population movements)",
16+
"designedForDetailsSectionTwo": "For Red and/or Complex settings",
17+
"designedForDetailsSectionThree": "Climates from 5 – 40 degree Celsius",
18+
"designedForDetailsSectionFour": "Operations were keeping delegates together is important for Coordination, Safety or Security reasons.",
19+
"designedForDetailsSectionFive": "Lifespan – up to 24 month with proper mainteinance",
20+
"designedForDetailsSectionSix": "Can recycle up to 70% of the equipment",
21+
"totalPersonnelLabel": "Total",
22+
"totalPersonnelValue": "1-5 people",
23+
"compositionLabel": "Composition",
24+
"compositionValue": "1 Team Leader, Base Camp Manager and technicians with context- appropriate skills if needed",
25+
"basecampEruComponentListItemOne": "Climate module",
26+
"basecampEruComponentListItemTwo": "Electricity module",
27+
"basecampEruComponentListItemThree": "Office module",
28+
"basecampEruComponentListItemFour": "Operation support module",
29+
"basecampEruComponentListItemFive": "Tents module",
30+
"basecampEruComponentListItemSix": "WASH module",
31+
"basecampVariation": "Variation on Configuration",
32+
"basecampVariationDetails": "It can include the IT/Tel ERU module(s) complete or partially. This could include VSAT module for connectivity and or IT/Telecom expertise to support the set up and maintenance of communication networks, connectivity, printers, etc.",
33+
"specifications": "Specifications",
34+
"specificationsVolumeLabel": "Volume",
35+
"specificationsVolumeValue": "Customised setup, so depend on operational needs",
36+
"specificationsCostLabel": "Cost",
37+
"specificationsCostValue": "Customised setup, so depend on operational needs",
38+
"specificationsNationalSocietyLabel": "National societies providing this service",
39+
"specificationsNationalSocietyValue": "Danish RC, Italian RC"
40+
}
41+
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
import { useMemo } from 'react';
2+
import { TextOutput } from '@ifrc-go/ui';
3+
import { useTranslation } from '@ifrc-go/ui/hooks';
4+
5+
import SurgeCatalogueContainer from '#components/domain/SurgeCatalogueContainer';
6+
import SurgeContentContainer from '#components/domain/SurgeContentContainer';
7+
8+
import i18n from './i18n.json';
9+
10+
/** @knipignore */
11+
// eslint-disable-next-line import/prefer-default-export
12+
export function Component() {
13+
const strings = useTranslation(i18n);
14+
15+
const imageList = useMemo(
16+
() => ([
17+
{
18+
src: 'https://prddsgofilestorage.blob.core.windows.net/api/documents/OSH_Office/a519094ba2684fa0afecff0532ae903c/office.jpg',
19+
caption: strings.basecampEruOfficeImageOne,
20+
},
21+
]),
22+
[
23+
strings.basecampEruOfficeImageOne,
24+
],
25+
);
26+
27+
return (
28+
<SurgeCatalogueContainer
29+
heading={strings.basecampEruOfficeTitle}
30+
goBackFallbackLink="surgeCatalogueBasecamp"
31+
imageList={imageList}
32+
>
33+
<SurgeContentContainer
34+
heading={strings.emergencyServices}
35+
>
36+
<ul>
37+
<li>{strings.basecampEruEmergencyListItemOne}</li>
38+
<li>{strings.basecampEruEmergencyListItemTwo}</li>
39+
<li>{strings.basecampEruEmergencyListItemThree}</li>
40+
<li>{strings.basecampEruEmergencyListItemFour}</li>
41+
<li>{strings.basecampEruEmergencyListItemFive}</li>
42+
</ul>
43+
</SurgeContentContainer>
44+
<SurgeContentContainer
45+
heading={strings.designedFor}
46+
>
47+
<ul>
48+
<li>{strings.designedForDetailsSectionOne}</li>
49+
<li>{strings.designedForDetailsSectionTwo}</li>
50+
<li>{strings.designedForDetailsSectionThree}</li>
51+
<li>{strings.designedForDetailsSectionFour}</li>
52+
<li>{strings.designedForDetailsSectionFive}</li>
53+
<li>{strings.designedForDetailsSectionSix}</li>
54+
</ul>
55+
</SurgeContentContainer>
56+
<SurgeContentContainer
57+
heading={strings.personnel}
58+
>
59+
<TextOutput
60+
value={strings.totalPersonnelValue}
61+
label={strings.totalPersonnelLabel}
62+
strongLabel
63+
/>
64+
<TextOutput
65+
value={strings.compositionValue}
66+
label={strings.compositionLabel}
67+
strongLabel
68+
/>
69+
<div>{strings.compositionDescription}</div>
70+
</SurgeContentContainer>
71+
<SurgeContentContainer
72+
heading={strings.standardComponents}
73+
>
74+
<ul>
75+
<li>{strings.basecampEruComponentListItemOne}</li>
76+
<li>{strings.basecampEruComponentListItemTwo}</li>
77+
<li>{strings.basecampEruComponentListItemThree}</li>
78+
<li>{strings.basecampEruComponentListItemFour}</li>
79+
<li>{strings.basecampEruComponentListItemFive}</li>
80+
<li>{strings.basecampEruComponentListItemSix}</li>
81+
</ul>
82+
</SurgeContentContainer>
83+
<SurgeContentContainer
84+
heading={strings.specifications}
85+
>
86+
<TextOutput
87+
value={strings.specificationsVolumeValue}
88+
label={strings.specificationsVolumeLabel}
89+
strongLabel
90+
/>
91+
<TextOutput
92+
value={strings.specificationsCostValue}
93+
label={strings.specificationsCostLabel}
94+
strongLabel
95+
/>
96+
<TextOutput
97+
value={strings.specificationsNationalSocietyValue}
98+
label={strings.specificationsNationalSocietyLabel}
99+
strongLabel
100+
/>
101+
</SurgeContentContainer>
102+
<SurgeContentContainer
103+
heading={strings.basecampVariation}
104+
>
105+
<div>{strings.basecampVariationDetails}</div>
106+
</SurgeContentContainer>
107+
</SurgeCatalogueContainer>
108+
);
109+
}
110+
111+
Component.displayName = 'SurgeCatalogueBasecampOffice';

0 commit comments

Comments
 (0)