Skip to content

Commit 38b4f01

Browse files
authored
Merge pull request #1959 from IFRCGo/feature/add-eru-field-in-field-report
Feature/add eru field in field report
2 parents 6f457c7 + a939eba commit 38b4f01

File tree

13 files changed

+88
-48
lines changed

13 files changed

+88
-48
lines changed

app/src/components/domain/ActivityEventSearchSelectInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313

1414
type GetEventParams = GoApiUrlQuery<'/api/v2/event/response-activity/'>;
1515
type GetEventResponse = GoApiResponse<'/api/v2/event/response-activity/'>;
16-
export type EventItem = Pick<NonNullable<GetEventResponse['results']>[number], 'id' | 'name' | 'dtype' | 'emergency_response_contact_email'>;
16+
export type EventItem = Pick<NonNullable<GetEventResponse['results']>[number], 'id' | 'name' | 'dtype'>;
1717

1818
const keySelector = (d: EventItem) => d.id;
1919
const labelSelector = (d: EventItem) => d.name ?? '???';

app/src/components/domain/RiskImminentEvents/Gdacs/index.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { numericIdSelector } from '@ifrc-go/ui/utils';
33
import {
44
isDefined,
55
isNotDefined,
6+
isObject,
67
} from '@togglecorp/fujs';
78
import { type LngLatBoundsLike } from 'mapbox-gl';
89

@@ -229,7 +230,13 @@ function Gdacs(props: Props) {
229230
? footprint_geojson
230231
: undefined;
231232

232-
const hazardDate = (footprint?.metadata as ({ todate?: string } | undefined))?.todate;
233+
const hazardDate = (isDefined(footprint)
234+
&& 'metadata' in footprint
235+
&& isObject(footprint.metadata)
236+
&& 'todate' in footprint.metadata
237+
)
238+
? String(footprint.metadata.todate)
239+
: undefined;
233240

234241
const geoJson: GeoJSON.FeatureCollection<GeoJSON.Geometry, RiskLayerProperties> = {
235242
type: 'FeatureCollection' as const,

app/src/components/domain/RiskImminentEvents/MeteoSwiss/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { numericIdSelector } from '@ifrc-go/ui/utils';
33
import {
44
isDefined,
55
isNotDefined,
6+
isObject,
67
} from '@togglecorp/fujs';
78
import type { LngLatBoundsLike } from 'mapbox-gl';
89

@@ -155,7 +156,11 @@ function MeteoSwiss(props: Props) {
155156
}
156157

157158
// FIXME: fix typing in server (low priority)
158-
const footprint_geojson = exposure?.footprint_geojson?.footprint_geojson;
159+
const footprint_geojson = 'footprint_geojson' in exposure
160+
&& isObject(exposure.footprint_geojson)
161+
&& 'footprint_geojson' in exposure.footprint_geojson
162+
? exposure.footprint_geojson?.footprint_geojson
163+
: undefined;
159164

160165
if (isNotDefined(footprint_geojson)) {
161166
return undefined;

app/src/components/domain/RiskImminentEvents/Pdc/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ function Pdc(props: Props) {
138138
} = exposure;
139139

140140
// FIXME: showing five days cou when three days cou is not available
141-
const cyclone_cou = cyclone_three_days_cou?.[0] ?? cyclone_five_days_cou?.[0];
141+
const cyclone_cou = (cyclone_three_days_cou as unknown[] | null)?.[0]
142+
?? (cyclone_five_days_cou as unknown[])?.[0];
142143

143144
if (isNotDefined(footprint_geojson) && isNotDefined(storm_position_geojson)) {
144145
return undefined;

app/src/views/AllDeployedPersonnel/index.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
import { saveAs } from 'file-saver';
2626
import Papa from 'papaparse';
2727

28+
import { type EventItem } from '#components/domain/ActivityEventSearchSelectInput';
2829
import CountrySelectInput from '#components/domain/CountrySelectInput';
2930
import EventSearchSelectInput from '#components/domain/EventSearchSelectInput';
3031
import ExportButton from '#components/domain/ExportButton';
@@ -135,7 +136,7 @@ export function Component() {
135136
(country) => country,
136137
);
137138

138-
const [positionFilter, setPositionFilter] = useUrlSearchState<string>(
139+
const [positionFilter, setPositionFilter] = useUrlSearchState<string | undefined>(
139140
'role',
140141
(searchValue) => searchValue ?? '',
141142
(value) => value,
@@ -176,7 +177,7 @@ export function Component() {
176177
summary: undefined,
177178
},
178179
name,
179-
};
180+
} satisfies EventItem;
180181

181182
setEventOptions((prevOptions) => ([
182183
...prevOptions ?? [],
@@ -395,26 +396,22 @@ export function Component() {
395396
name="role"
396397
value={positionFilter}
397398
onChange={setPositionFilter}
398-
placeholder={strings.defaultPlaceholder}
399399
/>
400400
<NationalSocietySelectInput
401401
label={strings.personnelTableDeployingParty}
402402
name="deploying_party"
403-
placeholder={strings.defaultPlaceholder}
404403
value={nationalSocietyFilter}
405404
onChange={setNationalSocietyFilter}
406405
/>
407406
<CountrySelectInput
408407
label={strings.personnelTableDeployedTo}
409408
name="deployed_to"
410-
placeholder={strings.defaultPlaceholder}
411409
value={countryToFilter}
412410
onChange={setCountryToFilter}
413411
/>
414412
<EventSearchSelectInput
415413
name="event"
416414
label={strings.personnelTableEmergency}
417-
placeholder={strings.defaultPlaceholder}
418415
value={eventFilter}
419416
onChange={setEventFilter}
420417
options={eventOptions}

app/src/views/FieldReportDetails/EventNumericDetails/i18n.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"eventAssistedGovernmentLabel": "Assisted (Government)",
2121
"eventLocalStaffLabel": "Local Staff",
2222
"eventVolunteersLabel": "Volunteers",
23-
"eventIfrcStaffLabel": "IFRC Staff",
23+
"eventERULabel": "Emergency Response Units",
2424
"eventDelegatedLabel": "Delegates"
2525
}
2626
}

app/src/views/FieldReportDetails/EventNumericDetails/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ function EventNumericDetails(props: Props) {
9494
value={value?.num_volunteers}
9595
/>
9696
<KeyFigure
97-
label={strings.eventIfrcStaffLabel}
98-
value={value?.num_ifrc_staff}
97+
label={strings.eventERULabel}
98+
value={value?.num_emergency_response_unit}
9999
/>
100100
<KeyFigure
101101
label={strings.eventDelegatedLabel}

app/src/views/FieldReportDetails/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export function Component() {
134134
const dref = fieldReportResponse?.dref;
135135
const appeal = fieldReportResponse?.appeal;
136136
const fact = fieldReportResponse?.fact;
137-
const ifrcStaff = fieldReportResponse?.ifrc_staff;
137+
const emergencyResponseUnit = fieldReportResponse?.emergency_response_unit;
138138

139139
// NOTE: Only in EW
140140

@@ -193,7 +193,7 @@ export function Component() {
193193
{
194194
key: 'ifrc-staff',
195195
title: strings.fieldReportEmergencyResponseTitle,
196-
value: reportType !== 'COVID' ? ifrcStaff : undefined,
196+
value: reportType !== 'COVID' ? emergencyResponseUnit : undefined,
197197
},
198198
/*
199199
{

app/src/views/FieldReportForm/ResponseFields/i18n.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
"fieldsStep4PlannedResponseRowsFactValueFieldLabel": "Number of people",
3030
"fieldsStep4PlannedResponseRowsForecastBasedActionEWLabel": "Forecast Based Action",
3131
"fieldsStep4PlannedResponseRowsForecastBasedActionValueFieldLabel": "Amount CHF",
32-
"fieldsStep4PlannedResponseRowsIFRCStaffEVTEPIEWLabel": "Emergency Response Units",
33-
"fieldsStep4PlannedResponseRowsIFRCStaffValueFieldLabel": "Units",
32+
"fieldsStep4PlannedResponseRowsERUEVTEPIEWLabel": "Emergency Response Units",
33+
"fieldsStep4PlannedResponseRowsERUValueFieldLabel": "Units",
3434
"fieldReportFormVisibility": "{visibilityValue} - {visibility}"
3535
}
3636
}

app/src/views/FieldReportForm/ResponseFields/index.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -281,34 +281,32 @@ function ResponseFields(props: Props) {
281281
/>
282282
</InputSection>
283283
<InputSection
284-
title={strings.fieldsStep4PlannedResponseRowsIFRCStaffEVTEPIEWLabel}
284+
title={strings.fieldsStep4PlannedResponseRowsERUEVTEPIEWLabel}
285285
numPreferredColumns={2}
286286
// eslint-disable-next-line max-len
287-
withAsteriskOnTitle={isDefined(value.num_ifrc_staff) || isDefined(value.ifrc_staff)}
287+
withAsteriskOnTitle={isDefined(value.num_emergency_response_unit) || isDefined(value.emergency_response_unit)}
288288
>
289289
<RadioInput
290-
error={error?.ifrc_staff}
291-
name="ifrc_staff"
290+
error={error?.emergency_response_unit}
291+
name="emergency_response_unit"
292292
onChange={onValueChange}
293293
options={requestOptions}
294294
// FIXME: do not use inline functions
295295
keySelector={(item) => item.key}
296296
labelSelector={(item) => item.value}
297-
value={value.ifrc_staff}
297+
value={value.emergency_response_unit}
298298
clearable
299299
disabled={disabled}
300-
// eslint-disable-next-line max-len
301-
// withAsterisk={isDefined(value.num_ifrc_staff) || isDefined(value.ifrc_staff)}
302300
/>
303301
<NumberInput
304-
label={strings.fieldsStep4PlannedResponseRowsIFRCStaffValueFieldLabel}
305-
name="num_ifrc_staff"
306-
value={value.num_ifrc_staff}
302+
label={strings.fieldsStep4PlannedResponseRowsERUValueFieldLabel}
303+
name="num_emergency_response_unit"
304+
value={value.num_emergency_response_unit}
307305
onChange={onValueChange}
308-
error={error?.num_ifrc_staff}
306+
error={error?.num_emergency_response_unit}
309307
disabled={disabled}
310308
// eslint-disable-next-line max-len
311-
withAsterisk={isDefined(value.num_ifrc_staff) || isDefined(value.ifrc_staff)}
309+
withAsterisk={isDefined(value.num_emergency_response_unit) || isDefined(value.emergency_response_unit)}
312310
/>
313311
</InputSection>
314312
{reportType === 'EW' && (

0 commit comments

Comments
 (0)