Skip to content

Commit 070f42e

Browse files
committed
FO-2772 Fikset opp i søking med filter
1 parent de25a3d commit 070f42e

File tree

7 files changed

+50
-35
lines changed

7 files changed

+50
-35
lines changed
Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
import React from 'react';
22
import { Element } from 'nav-frontend-typografi';
3-
import { DropdownOption } from '../enhet-dropdown/enhet-dropdown';
43
import { Checkbox } from 'nav-frontend-skjema';
5-
import './bruker-filter.less';
64
import { useSokStore } from '../../../stores/sok-store';
5+
import './bruker-filter.less';
76

87
export const BrukerFilter = () => {
9-
const { filters, setStatusFilter } = useSokStore();
8+
const { filters, setVisMineBrukere } = useSokStore();
109

11-
function handleOnStatusSelectedChanged(selectedOption: DropdownOption | null) {
12-
console.log('selectedOption', selectedOption); // tslint:disable-line
10+
function handleOnVisMineBrukereChanged() {
11+
setVisMineBrukere(visMineBrukere => !visMineBrukere);
1312
}
1413

1514
return (
1615
<div className="bruker-filter">
1716
<Element>Bruker</Element>
18-
<Checkbox label="Mine brukere" className="bruker-filter__checkbox" />
17+
<Checkbox
18+
label="Mine brukere"
19+
className="bruker-filter__checkbox"
20+
checked={filters.visMineBrukere}
21+
onChange={handleOnVisMineBrukereChanged}
22+
/>
1923
</div>
2024
);
2125
};

src/components/filters/sokefelt/sokefelt.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
import React from 'react';
1+
import React, { useCallback, useState } from 'react';
22
import { Input } from 'nav-frontend-skjema';
3-
import './sokefelt.less';
3+
import debounce from 'lodash.debounce';
44
import { useSokStore } from '../../../stores/sok-store';
5+
import './sokefelt.less';
56

67
export const Sokefelt = () => {
78
const { filters, setFnrOrNameFilter } = useSokStore();
9+
const [tekst, setTekst] = useState(filters.fnrOrName);
10+
11+
const oppdaterFilter = useCallback(debounce((nyTekst) => {
12+
setFnrOrNameFilter(nyTekst);
13+
}, 500), []);
814

915
function handleOnQueryChanged(e: React.ChangeEvent<HTMLInputElement>) {
10-
setFnrOrNameFilter(e.target.value);
16+
const nyTekst = e.target.value;
17+
setTekst(nyTekst);
18+
oppdaterFilter(nyTekst);
1119
}
1220

1321
return (
@@ -16,7 +24,7 @@ export const Sokefelt = () => {
1624
label=""
1725
placeholder="Søk etter navn eller fødselsnummer"
1826
onChange={handleOnQueryChanged}
19-
value={filters.fnrOrName}
27+
value={tekst}
2028
/>
2129
</div>
2230
);

src/components/filters/status-dropwdown/status-dropdown.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
import React, { ChangeEvent } from 'react';
1+
import React from 'react';
22
import Select from 'react-select';
33
import { Element } from 'nav-frontend-typografi';
4-
import { DropdownOption, mapDropdownOptionTilEnhet } from '../enhet-dropdown/enhet-dropdown';
5-
import './status-dropdown.less';
4+
import { DropdownOption } from '../enhet-dropdown/enhet-dropdown';
65
import { UtkastStatus } from '../../../rest/data/bruker';
76
import { mapBrukerStatusTilTekst } from '../../../utils';
87
import { useSokStore } from '../../../stores/sok-store';
8+
import './status-dropdown.less';
99

1010
export function mapStatusTilDropdownOption(status: UtkastStatus): DropdownOption {
1111
return { value: status, label: mapBrukerStatusTilTekst(status) };
1212
}
1313

14-
export function mapDropdownOptionTilStatus(dropdownOption: DropdownOption): UtkastStatus {
15-
return dropdownOption.value as UtkastStatus;
16-
}
17-
1814
const statusOptions: DropdownOption[] = [
1915
mapStatusTilDropdownOption(UtkastStatus.TRENGER_BESLUTTER),
2016
mapStatusTilDropdownOption(UtkastStatus.KLAR_TIL_VEILEDER),
@@ -24,9 +20,11 @@ const statusOptions: DropdownOption[] = [
2420

2521
export const StatusDropdown = () => {
2622
const { filters, setStatusFilter } = useSokStore();
23+
const value = filters.status ? mapStatusTilDropdownOption(filters.status) : null;
2724

2825
function handleOnStatusSelectedChanged(selectedOption: DropdownOption | null) {
29-
console.log('selectedOption', selectedOption); // tslint:disable-line
26+
const nyStatus = selectedOption ? selectedOption.value as UtkastStatus : undefined;
27+
setStatusFilter(nyStatus)
3028
}
3129

3230
return (
@@ -35,7 +33,7 @@ export const StatusDropdown = () => {
3533
<Select
3634
inputId="status-filter"
3735
placeholder="Velg status"
38-
// value={mapStatusTilDropdownOption(statusFilter)}
36+
value={value}
3937
isClearable
4038
isSearchable={false}
4139
options={statusOptions}

src/components/user-table/body/user-table-row.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import { Bruker, UtkastStatus } from '../../../rest/data/bruker';
3-
import { formatDateStr, tidSiden } from '../../../utils/date-utils';
3+
import { formatDateStr, formatDateTime } from '../../../utils/date-utils';
44
import { Normaltekst, Element } from 'nav-frontend-typografi';
55
import { fjernNavFraEnhetNavn, mapBrukerStatusTilTekst } from '../../../utils';
66
import klarForUtsendelseIcon from './status/klar_for_utsendelse.svg';
@@ -23,7 +23,7 @@ export const UserRow = (props: {bruker: Bruker}) => {
2323
<UtkastStatusData status={status}/>
2424
<Element>{beslutterNavn || '-'}</Element>
2525
<Normaltekst>{veilederNavn}</Normaltekst>
26-
<Normaltekst>{tidSiden(statusEndret)}</Normaltekst>
26+
<Normaltekst>{formatDateTime(statusEndret)}</Normaltekst>
2727
<Normaltekst>{fjernNavFraEnhetNavn(brukerOppfolgingsenhetNavn)}</Normaltekst>
2828
</li>
2929
);

src/rest/api.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export interface BeslutteroversiktSok {
1616
}
1717

1818
export interface BeslutterOversiktSokFilter {
19-
enheter: string[];
20-
status: UtkastStatus;
21-
visMineBrukere: boolean;
22-
navnEllerFnr: string;
19+
enheter: OrNothing<string[]>;
20+
status: OrNothing<UtkastStatus>;
21+
visMineBrukere: OrNothing<boolean>;
22+
navnEllerFnr: OrNothing<string>;
2323
}
2424

2525
export enum OrderByField {

src/utils/filter-utils.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import { Enhet } from '../rest/data/innlogget-veileder';
44
import { Filters } from '../stores/sok-store';
55

66
export const hasFilters = (filters: Filters): boolean => {
7-
return !isEmpty(filters.fnrOrName);
7+
return !isEmpty(filters.fnrOrName)
8+
|| (filters.enheter && filters.enheter.length > 0)
9+
|| filters.status != null
10+
|| filters.visMineBrukere;
811
};
912

1013
export const filterUsers = (filters: Filters, users: Bruker[]): Bruker[] => {

src/utils/sok-utils.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
import { BeslutteroversiktSok, BeslutterOversiktSokFilter, OrderByDirection, OrderByField } from '../rest/api';
22
import { Filters } from '../stores/sok-store';
33
import { OrNothing } from './types/ornothing';
4+
import { hasFilters } from './filter-utils';
45

56
export const PAGINATION_SIZE = 30;
67

7-
export const defaultBeslutteroversiktSok: BeslutteroversiktSok = {
8-
antall: PAGINATION_SIZE,
9-
fra: 0,
10-
filter: undefined,
11-
orderByDirection: undefined,
12-
orderByField: undefined
13-
};
14-
158
export const lagBeslutterOversiktSok = (
169
filters: Filters, currentPage: number,
1710
orderByDirection: OrNothing<OrderByDirection>, orderByField: OrNothing<OrderByField>
@@ -26,5 +19,14 @@ export const lagBeslutterOversiktSok = (
2619
};
2720

2821
export const lagBeslutterOversiktSokFilter = (filters: Filters): OrNothing<BeslutterOversiktSokFilter> => {
29-
return undefined;
22+
if (!hasFilters(filters)) {
23+
return undefined;
24+
}
25+
26+
return {
27+
enheter: filters.enheter.map(e => e.enhetId),
28+
navnEllerFnr: filters.fnrOrName,
29+
status: filters.status,
30+
visMineBrukere: filters.visMineBrukere
31+
};
3032
};

0 commit comments

Comments
 (0)