Skip to content

Commit 2c09240

Browse files
IS-2734: Corrects behaviour of hendelse filter (#563)
1 parent 0de9fce commit 2c09240

File tree

4 files changed

+44
-61
lines changed

4 files changed

+44
-61
lines changed

src/sider/oversikt/filter/HendelseFilter.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import { PersonregisterState } from '@/api/types/personregisterTypes';
3-
import { filterOnPersonregister } from '@/utils/hendelseFilteringUtils';
3+
import { filterHendelser } from '@/utils/hendelseFilteringUtils';
44
import { useFilters } from '@/context/filters/FilterContext';
55
import { ActionType } from '@/context/filters/filterContextActions';
66
import {
@@ -157,9 +157,8 @@ function hendelseCheckboxes(
157157
): CheckboxElement[] {
158158
return Object.entries(HendelseTekster).map(([hendelse, tekst]) => {
159159
const filter = initFilter(hendelse as Hendelse);
160-
const antall = Object.keys(
161-
filterOnPersonregister(personRegister || {}, filter)
162-
).length;
160+
const antall = Object.keys(filterHendelser(personRegister || {}, filter))
161+
.length;
163162
const checked = isChecked(
164163
filterState.selectedHendelseType,
165164
hendelse as Hendelse

src/sider/oversikt/sokeresultat/Sokeresultat.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { useTildelVeileder } from '@/data/veiledereQueryHooks';
55
import { PersonregisterState } from '@/api/types/personregisterTypes';
66
import {
77
Filterable,
8+
filterHendelser,
89
filterOnAge,
910
filterOnBirthDates,
1011
filterOnCompany,
1112
filterOnFodselsnummerOrName,
1213
filterOnFrist,
13-
filterOnPersonregister,
1414
} from '@/utils/hendelseFilteringUtils';
1515
import { useFilters } from '@/context/filters/FilterContext';
1616
import { OversiktTableContainer } from '@/sider/oversikt/sokeresultat/oversikttable/OversiktTableContainer';
@@ -49,9 +49,7 @@ export default function Sokeresultat({ allEvents }: Props) {
4949
.applyFilter((v) => filterOnBirthDates(v, filterState.selectedBirthDates))
5050
.applyFilter((v) => filterOnFrist(v, filterState.selectedFristFilters))
5151
.applyFilter((v) => filterOnAge(v, filterState.selectedAgeFilters))
52-
.applyFilter((v) =>
53-
filterOnPersonregister(v, filterState.selectedHendelseType)
54-
)
52+
.applyFilter((v) => filterHendelser(v, filterState.selectedHendelseType))
5553
.applyFilter((v) =>
5654
filterUfordelteBrukere(v, filterState.isUfordelteBrukereFilter)
5755
)

src/utils/hendelseFilteringUtils.tsx

Lines changed: 33 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -183,53 +183,42 @@ function isAgeInFilters(
183183
});
184184
}
185185

186-
type HendelseTypeFilterKey = keyof HendelseTypeFilter;
187-
188-
const matchesFilter = (
189-
key: HendelseTypeFilterKey,
186+
function isPersonVisible(
190187
filters: HendelseTypeFilter,
191188
personData: PersonData
192-
): boolean => {
193-
switch (key) {
194-
case 'onskerMote':
195-
return !filters[key] || personData.harMotebehovUbehandlet;
196-
case 'arbeidsgiverOnskerMote':
197-
return !filters[key] || personData.harOppfolgingsplanLPSBistandUbehandlet;
198-
case 'dialogmotekandidat':
199-
return !filters[key] || personData.dialogmotekandidat === true;
200-
case 'dialogmotesvar':
201-
return !filters[key] || personData.harDialogmotesvar;
202-
case 'behandlerdialog':
203-
return !filters[key] || personData.harBehandlerdialogUbehandlet;
204-
case 'oppfolgingsoppgave':
205-
return !filters[key] || personData.oppfolgingsoppgave !== null;
206-
case 'behandlerBerOmBistand':
207-
return !filters[key] || personData.behandlerBerOmBistandUbehandlet;
208-
case 'isAktivArbeidsuforhetvurdering':
209-
return !filters[key] || !!personData.arbeidsuforhetvurdering;
210-
case 'harFriskmeldingTilArbeidsformidling':
211-
return !filters[key] || !!personData.friskmeldingTilArbeidsformidlingFom;
212-
case 'isSenOppfolgingChecked':
213-
return !filters[key] || !!personData.senOppfolgingKandidat;
214-
case 'isManglendeMedvirkningChecked':
215-
return !filters[key] || !!personData.manglendeMedvirkning;
216-
case 'isAktivitetskravChecked':
217-
return !filters[key] || personData.aktivitetskravvurdering !== null;
218-
case 'isAktivitetskravVurderStansChecked':
219-
const isExpiredVarsel =
220-
!!personData?.aktivitetskravvurdering?.vurderinger[0]?.varsel
221-
?.svarfrist &&
222-
isPast(
223-
personData?.aktivitetskravvurdering.vurderinger[0]?.varsel?.svarfrist
224-
);
225-
return !filters[key] || isExpiredVarsel;
226-
}
227-
};
189+
): boolean {
190+
const isExpiredVarsel =
191+
!!personData?.aktivitetskravvurdering?.vurderinger[0]?.varsel?.svarfrist &&
192+
isPast(
193+
personData?.aktivitetskravvurdering.vurderinger[0]?.varsel?.svarfrist
194+
);
195+
return (
196+
(filters.onskerMote && personData.harDialogmotesvar) ||
197+
(filters.arbeidsgiverOnskerMote &&
198+
personData.harOppfolgingsplanLPSBistandUbehandlet) ||
199+
(filters.dialogmotekandidat && personData.dialogmotekandidat === true) ||
200+
(filters.dialogmotesvar && personData.harDialogmotesvar) ||
201+
(filters.behandlerdialog && personData.harBehandlerdialogUbehandlet) ||
202+
(filters.oppfolgingsoppgave && personData.oppfolgingsoppgave !== null) ||
203+
(filters.behandlerBerOmBistand &&
204+
personData.behandlerBerOmBistandUbehandlet) ||
205+
(filters.isAktivArbeidsuforhetvurdering &&
206+
!!personData.arbeidsuforhetvurdering) ||
207+
(filters.harFriskmeldingTilArbeidsformidling &&
208+
!!personData.friskmeldingTilArbeidsformidlingFom) ||
209+
(filters.isSenOppfolgingChecked && !!personData.senOppfolgingKandidat) ||
210+
(filters.isManglendeMedvirkningChecked &&
211+
!!personData.manglendeMedvirkning) ||
212+
(filters.isAktivitetskravChecked &&
213+
personData.aktivitetskravvurdering !== null) ||
214+
(filters.isAktivitetskravVurderStansChecked && isExpiredVarsel)
215+
);
216+
}
228217

229-
export const filterOnPersonregister = (
218+
export function filterHendelser(
230219
personregister: PersonregisterState,
231220
filter?: HendelseTypeFilter
232-
): PersonregisterState => {
221+
): PersonregisterState {
233222
if (!filter) return personregister;
234223

235224
const erTomtFilter = Object.entries(filter).every(
@@ -241,13 +230,11 @@ export const filterOnPersonregister = (
241230
}
242231

243232
const filtered = Object.entries(personregister).filter(([, personData]) => {
244-
return Object.keys(filter).every((key) =>
245-
matchesFilter(key as HendelseTypeFilterKey, filter, personData)
246-
);
233+
return isPersonVisible(filter, personData);
247234
});
248235

249236
return Object.fromEntries(filtered);
250-
};
237+
}
251238

252239
export const filterEventsOnVeileder = (
253240
personregister: PersonregisterState,

test/utils/hendelseFilteringUtilsTest.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, expect, it } from 'vitest';
22
import {
3+
filterHendelser,
34
filterOnFrist,
4-
filterOnPersonregister,
55
FristFilterOption,
66
getSortedEventsFromSortingType,
77
} from '@/utils/hendelseFilteringUtils';
@@ -610,7 +610,7 @@ describe('hendelseFilteringUtils', () => {
610610
const personregister: PersonregisterState = {
611611
'16614407794': createPersonDataWithName('Bjarne Bjarne'),
612612
};
613-
const filteredPersonregister = filterOnPersonregister(
613+
const filteredPersonregister = filterHendelser(
614614
personregister,
615615
defaulthendelseFilter
616616
);
@@ -635,15 +635,15 @@ describe('hendelseFilteringUtils', () => {
635635
dialogmotesvar: true,
636636
};
637637

638-
const filteredPersonregister = filterOnPersonregister(
638+
const filteredPersonregister = filterHendelser(
639639
personregister,
640640
filterWithDialogmotesvar
641641
);
642642

643643
expect(Object.keys(filteredPersonregister).length).to.equal(0);
644644
});
645645

646-
it('Return only elements matching all active filters', () => {
646+
it('Return elements matching active filters', () => {
647647
const personDataWithAktivitetskrav: PersonData = {
648648
...createPersonDataWithName('Fox Mulder'),
649649
aktivitetskravvurdering: {
@@ -669,13 +669,12 @@ describe('hendelseFilteringUtils', () => {
669669
isAktivitetskravChecked: true,
670670
};
671671

672-
const filteredPersonregister = filterOnPersonregister(
672+
const filteredPersonregister = filterHendelser(
673673
personregister,
674674
filterWithMotebehovAndAktivitetskrav
675675
);
676676

677-
expect(Object.keys(filteredPersonregister).length).to.equal(1);
678-
expect(Object.keys(filteredPersonregister)[0]).to.equal('09128034883');
677+
expect(Object.keys(filteredPersonregister).length).to.equal(2);
679678
});
680679

681680
describe('Frist filter', () => {

0 commit comments

Comments
 (0)