Skip to content

Commit f5a8183

Browse files
committed
Position filtering in all-surge-alerts
1 parent 2589b92 commit f5a8183

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

app/src/views/AllSurgeAlerts/i18n.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"allSurgeAlertsHeading": "All Surge Alerts ({numSurgeAlerts})",
66
"eventFilterLabel": "Emergency",
77
"countryFilterLabel": "Country",
8+
"positionFilterLabel": "Position",
9+
"positionFilterPlaceholder": "Search position",
810
"defaultPlaceholder": "All",
911
"failedToCreateExport": "Failed to generate export.",
1012
"surgeAlertDate": "Alert Date",

app/src/views/AllSurgeAlerts/index.tsx

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
NumberOutput,
99
Pager,
1010
Table,
11+
TextInput,
1112
} from '@ifrc-go/ui';
1213
import { useTranslation } from '@ifrc-go/ui/hooks';
1314
import {
@@ -111,6 +112,20 @@ export function Component() {
111112
EventItem[] | undefined | null
112113
>([]);
113114

115+
const [positionFilter, setPositionFilter] = useUrlSearchState<string | undefined>(
116+
'position',
117+
(searchValue: string | undefined) => {
118+
const potentialValue = isDefined(searchValue)
119+
? String(searchValue)
120+
: undefined;
121+
if (isDefined(potentialValue)) {
122+
setPage(0);
123+
}
124+
return potentialValue;
125+
},
126+
(position: string | undefined) => position,
127+
);
128+
114129
useRequest({
115130
skip: isNotDefined(eventFilter)
116131
|| (!!eventOptions?.find((event) => event.id === eventFilter)),
@@ -162,6 +177,7 @@ export function Component() {
162177
offset,
163178
event: eventFilter,
164179
country: countryFilter,
180+
message__icontains: positionFilter,
165181

166182
// FIXME: this should come from the useFilterState
167183
ordering: 'molnix_status,-opens',
@@ -290,11 +306,19 @@ export function Component() {
290306
triggerExportStart(
291307
'/api/v2/surge_alert/',
292308
surgeResponse?.count,
293-
{},
309+
{
310+
event: eventFilter,
311+
country: countryFilter,
312+
message__icontains: positionFilter,
313+
ordering: 'molnix_status,-opens',
314+
},
294315
);
295316
}, [
296317
triggerExportStart,
297318
surgeResponse?.count,
319+
eventFilter,
320+
countryFilter,
321+
positionFilter,
298322
]);
299323

300324
const heading = resolveToComponent(
@@ -328,6 +352,13 @@ export function Component() {
328352
onOptionsChange={setEventOptions}
329353
countryId={countryFilter}
330354
/>
355+
<TextInput
356+
name="position"
357+
label={strings.positionFilterLabel}
358+
placeholder={strings.positionFilterPlaceholder}
359+
value={positionFilter}
360+
onChange={setPositionFilter}
361+
/>
331362
</>
332363
)}
333364
footerActions={(

0 commit comments

Comments
 (0)