Skip to content

Commit 18d947e

Browse files
szabozoltan69frozenhelium
authored andcommitted
CoS Update with UAV
1 parent 98155a2 commit 18d947e

File tree

5 files changed

+199
-1
lines changed

5 files changed

+199
-1
lines changed

src/App/routes/index.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,6 +1842,20 @@ const surgeCatalogueOtherGreenResponse = customWrapRoute({
18421842
},
18431843
});
18441844

1845+
const surgeCatalogueOtherUAV = customWrapRoute({
1846+
parent: surgeCatalogueLayout,
1847+
path: 'other/uav',
1848+
component: {
1849+
render: () => import('#views/SurgeCatalogueOtherUAV'),
1850+
props: {},
1851+
},
1852+
wrapperComponent: Auth,
1853+
context: {
1854+
title: 'Uncrewed Aerial Vehicles (Drones)',
1855+
visibility: 'anything',
1856+
},
1857+
});
1858+
18451859
type DefaultPreparednessChild = 'global-summary';
18461860
const preparednessLayout = customWrapRoute({
18471861
parent: rootLayout,
@@ -2894,6 +2908,7 @@ function DeploymentCatalogueNavigate() {
28942908
'preparedness-for-effective-response-per': surgeCatalogueOtherPreparednessEffectiveResponse,
28952909
recovery: surgeCatalogueOtherRecovery,
28962910
greenresponse: surgeCatalogueOtherGreenResponse,
2911+
uav: surgeCatalogueOtherUAV,
28972912
},
28982913
};
28992914

@@ -3136,6 +3151,7 @@ const wrappedRoutes = {
31363151
surgeCatalogueOtherPreparednessEffectiveResponse,
31373152
surgeCatalogueOtherRecovery,
31383153
surgeCatalogueOtherGreenResponse,
3154+
surgeCatalogueOtherUAV,
31393155

31403156
// Redirect routes
31413157
deploymentCatalogueLayout,

src/views/SurgeCatalogueOther/i18n.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
"otherRecovery": "Recovery",
2525
"otherRecoveryDetail": "Supporting NS and Ops Management to ensure that recovery is considered early in the operation.",
2626
"otherGreen": "Green Response",
27-
"otherGreenDetail": "Analyse the environmental context, identify environmental risks caused by the crisis, and the potential environmental impact of the response and recovery interventions."
27+
"otherGreenDetail": "Analyse the environmental context, identify environmental risks caused by the crisis, and the potential environmental impact of the response and recovery interventions.",
28+
"otherUAV": " Drones – Uncrewed Aerial Vehicles (UAV) Team",
29+
"otherUAVDetail": "An Uncrewed Aerial Vehicle (UAV) Team, or colloquially a “Drone” Team, collects high quality, detailed aerial imagery for communications media, mapping, site survey, and situational awareness."
2830
}
2931
}

src/views/SurgeCatalogueOther/index.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ export function Component() {
8989
},
9090
];
9191

92+
const uavData: LinkData[] = [
93+
{
94+
title: strings.otherLearnMore,
95+
to: 'surgeCatalogueOtherUAV',
96+
withLinkIcon: true,
97+
},
98+
];
99+
92100
return (
93101
<SurgeCatalogueContainer
94102
heading={strings.otherTitle}
@@ -147,6 +155,11 @@ export function Component() {
147155
data={greenData}
148156
description={strings.otherGreenDetail}
149157
/>
158+
<CatalogueInfoCard
159+
title={strings.otherUAV}
160+
data={uavData}
161+
description={strings.otherUAVDetail}
162+
/>
150163
</SurgeCardContainer>
151164
</SurgeCatalogueContainer>
152165
);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"namespace": "surgeCatalogueOtherUAV",
3+
"strings": {
4+
"uavHeading": "Drones – Uncrewed Aerial Vehicles (UAV) Team",
5+
"capacity": "Capacity",
6+
"capacityDetails": "An Uncrewed Aerial Vehicle (UAV) Team, or colloquially a “Drone” Team, collects high quality, detailed aerial imagery for communications media, mapping, site survey, and situational awareness.",
7+
"emergencyServices": "Emergency Services",
8+
"emergencyServicesDetails": "A UAV deployment can be requested to support an operation for the following use-cases:",
9+
"otherUAVEmergencyListItemOneBullet": "Media communications: ",
10+
"otherUAVEmergencyListItemOne": "UAVs facilitate the targeted collection of digital aerial images and videos for use in media communications. Aerial imagery can serve as a broad and comprehensive tool to communicate the impact of certain disasters to a general audience. UAV collected imagery has a significant and timely impact with the media and broader public when used as a communication tool immediately post disaster.",
11+
"otherUAVEmergencyListItemTwoBullet": "Mapping: ",
12+
"otherUAVEmergencyListItemTwo": "UAVs can be used to systematically collect a large number of aerial images that can then be stitched together using processing software generating an operational field map. Mapping of affected areas can provide an important input for assessment and planning, as well as for establishing a baseline for recovery programs. Various limitations mean that mapping can cover smaller areas such as communities and will not cover an entire disaster-affected region.",
13+
"otherUAVEmergencyListItemThreeBullet": "Site survey: ",
14+
"otherUAVEmergencyListItemThree": "Baseline aerial mapping can be a key input to optimal planning of basecamp facilities, field hospitals, community latrines, distribution sites, water filtration installations and water distribution sites, etc. UAVs allow for rapid initial and ongoing site surveillance with minimal resources. ",
15+
"otherUAVEmergencyListItemFourBullet": "Situational awareness: ",
16+
"otherUAVEmergencyListItemFour": "UAVs facilitate immediate situational awareness as well as the ability to monitor evolving situations with limited risk to support staff. UAV technology can be utilized to scout safe routes and rapidly disseminate that information to a response team.",
17+
"mustAllow": "Note that the laws and regulations in the receiving National Society’s country must allow for the operation of drones, and accepting of the credentials of any deployed personnel.",
18+
"otherUAVPersonnel": "Personnel",
19+
"otherUAVPersonnelDetails": "The minimum team consists of an individual acting as a combined UAV Team Lead (UTL) / Pilot in Command (PIC) in addition to a Safety Officer (SA). The SA may be staffed/provided by the receiving National Society. The UTL and PIC can be separate individuals",
20+
"otherUAVstandardComponents": "Standard Components",
21+
"otherUAVstandardComponentsListItemOne": "2x quadcopter drone systems (e.g. DJI or Autel camera drones) with extra batteries and spare parts to enable extended daily missions and equipment redundancy",
22+
"otherUAVstandardComponentsListItemTwo": "Computer equipment for image processing and file storage/sharing",
23+
"otherUAVspecifications": "Specifications",
24+
"otherUAVcostHeader": "Cost (indicative)",
25+
"otherUAVcost": "CHF 12,000 (approximately 4,000 per drone system and 4,000 for computer equipment)",
26+
"otherUAVproviderHeader": "National societies providing this service",
27+
"otherUAVprovider": "American Red Cross",
28+
"rapidResponse": "Rapid Response Personnel Role Profile",
29+
"rapidResponseDetail": "Details about the expectations for this specialty can be found in the Role Profile: {link}",
30+
"otherLink": "Pilot in Command and UAV Team Lead"
31+
}
32+
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
import SurgeCatalogueContainer from '#components/domain/SurgeCatalogueContainer';
2+
import SurgeContentContainer from '#components/domain/SurgeContentContainer';
3+
import Link from '#components/Link';
4+
import useTranslation from '#hooks/useTranslation';
5+
import { resolveToComponent } from '#utils/translation';
6+
import { useMemo } from 'react';
7+
8+
import i18n from './i18n.json';
9+
10+
// eslint-disable-next-line import/prefer-default-export
11+
export function Component() {
12+
const strings = useTranslation(i18n);
13+
14+
const imageList = useMemo(
15+
() => ([
16+
{
17+
src: 'https://prddsgofilestorage.blob.core.windows.net/api/documents/surge/uav1.jpg',
18+
caption: strings.UAVImageOne,
19+
},
20+
{
21+
src: 'https://prddsgofilestorage.blob.core.windows.net/api/documents/surge/uav2.jpg',
22+
caption: strings.UAVImageTwo,
23+
},
24+
{
25+
src: 'https://prddsgofilestorage.blob.core.windows.net/api/documents/surge/uav3.jpg',
26+
caption: strings.UAVImageThree,
27+
},
28+
{
29+
src: 'https://prddsgofilestorage.blob.core.windows.net/api/documents/surge/uav4.jpg',
30+
caption: strings.UAVImageFour,
31+
},
32+
]),
33+
[
34+
strings.UAVImageOne,
35+
strings.UAVImageTwo,
36+
strings.UAVImageThree,
37+
strings.UAVImageFour,
38+
],
39+
);
40+
41+
return (
42+
<SurgeCatalogueContainer
43+
heading={strings.uavHeading}
44+
goBackFallbackLink="surgeCatalogueOther"
45+
imageList={imageList}
46+
>
47+
<SurgeContentContainer
48+
heading={strings.capacity}
49+
>
50+
<div>{strings.capacityDetails}</div>
51+
</SurgeContentContainer>
52+
53+
<SurgeContentContainer
54+
heading={strings.emergencyServices}
55+
>
56+
<div>{strings.emergencyServicesDetails}</div>
57+
<ul>
58+
<li>
59+
<strong>{strings.otherUAVEmergencyListItemOneBullet}</strong>
60+
{strings.otherUAVEmergencyListItemOne}
61+
</li>
62+
<li>
63+
<strong>{strings.otherUAVEmergencyListItemTwoBullet}</strong>
64+
{strings.otherUAVEmergencyListItemTwo}
65+
</li>
66+
<li>
67+
<strong>{strings.otherUAVEmergencyListItemThreeBullet}</strong>
68+
{strings.otherUAVEmergencyListItemThree}
69+
</li>
70+
<li>
71+
<strong>{strings.otherUAVEmergencyListItemFourBullet}</strong>
72+
{strings.otherUAVEmergencyListItemFour}
73+
</li>
74+
</ul>
75+
<div>{strings.mustAllow}</div>
76+
</SurgeContentContainer>
77+
78+
<SurgeContentContainer
79+
heading={strings.otherUAVPersonnel}
80+
>
81+
<div>{strings.otherUAVPersonnelDetails}</div>
82+
</SurgeContentContainer>
83+
84+
<SurgeContentContainer
85+
heading={strings.otherUAVstandardComponents}
86+
>
87+
<ul>
88+
<li>
89+
{strings.otherUAVstandardComponentsListItemOne}
90+
</li>
91+
<li>
92+
{strings.otherUAVstandardComponentsListItemTwo}
93+
</li>
94+
</ul>
95+
</SurgeContentContainer>
96+
97+
<SurgeContentContainer
98+
heading={strings.otherUAVspecifications}
99+
>
100+
<div>
101+
<strong>{strings.otherUAVcostHeader}</strong>
102+
<br />
103+
{strings.otherUAVcost}
104+
</div>
105+
<div>
106+
<strong>{strings.otherUAVproviderHeader}</strong>
107+
<br />
108+
{strings.otherUAVprovider}
109+
</div>
110+
</SurgeContentContainer>
111+
112+
<SurgeContentContainer
113+
heading={strings.rapidResponse}
114+
>
115+
<div>
116+
{resolveToComponent(
117+
strings.rapidResponseDetail,
118+
{
119+
link: (
120+
<Link
121+
href="https://ifrcorg.sharepoint.com/:b:/s/IFRCSharing/EVJrxE_3BpxOliHeThEBk_oB3nAcku47-5BxA-sXV2s8YQ"
122+
external
123+
>
124+
{strings.otherLink}
125+
</Link>
126+
),
127+
},
128+
)}
129+
</div>
130+
</SurgeContentContainer>
131+
</SurgeCatalogueContainer>
132+
);
133+
}
134+
135+
Component.displayName = 'SurgeCatalogueOtherUAV';

0 commit comments

Comments
 (0)