@@ -2,62 +2,60 @@ import {useMemo} from 'react';
22import { useSelector } from 'react-redux' ;
33import { Toolbar } from '../components/toolbar/toolbar' ;
44import { VeilederoversiktTabell } from './veilederoversikt-tabell' ;
5- import { sorter } from '../utils/sortering' ;
65import { selectFraIndex , selectSeFlere , selectSidestorrelse } from '../components/toolbar/paginering/paginering-selector' ;
76import { OversiktType } from '../ducks/ui/listevisning' ;
8- import { PortefoljeStorrelser } from '../ducks/portefoljestorrelser' ;
97import { VeilederModell } from '../typer/enhet-og-veiledere-modeller' ;
108import { AppState } from '../reducer' ;
9+ import { sorterVeilederoversikt } from './sortering' ;
10+ import { FacetResults , PortefoljeStorrelser } from '../ducks/portefoljestorrelser' ;
1111import './veilederoversikt.css' ;
1212
13- function erValgtHvisFiltrering ( veiledere : string [ ] ) {
14- if ( veiledere ?. length > 0 ) {
15- return veileder => veiledere . includes ( veileder . ident ) ;
13+ function finnValgteVeiledere ( valgteVeiledere : string [ ] ) : ( veileder : VeilederModell ) => boolean {
14+ if ( valgteVeiledere ?. length > 0 ) {
15+ return veileder => valgteVeiledere . includes ( veileder . ident ) ;
1616 }
1717 return ( ) => true ; // Ikke valgt noe filter, så alle skal være med.
1818}
1919
20- function medPortefoljestorrelse ( portefoljeStorrelse ) {
20+ export interface VeilederMedPortefoljestorrelse extends VeilederModell {
21+ portefoljestorrelse : number ;
22+ }
23+
24+ function medPortefoljestorrelse (
25+ portefoljeStorrelse : PortefoljeStorrelser
26+ ) : ( veileder : VeilederModell ) => VeilederMedPortefoljestorrelse {
2127 if ( portefoljeStorrelse . status !== 'OK' ) {
2228 // Før vi har fått portefoljestorrele har alle 0
23- return veileder => ( { ...veileder , portefoljestorrelse : 0 } ) ;
29+ return ( veileder : VeilederModell ) => ( { ...veileder , portefoljestorrelse : 0 } ) ;
2430 }
25- const storrelseMap = portefoljeStorrelse . data . facetResults . reduce (
26- ( acc , { value : ident , count} ) => ( { ...acc , [ ident ] : count } ) ,
31+ const mapIdentOgPortefoljestorrelser : { [ ident : string ] : number } = portefoljeStorrelse . data . facetResults . reduce (
32+ ( acc : { [ ident : string ] : number } , { value : ident , count} : FacetResults ) => ( { ...acc , [ ident ] : count } ) ,
2733 { }
2834 ) ;
2935
30- return veileder => ( {
36+ return ( veileder : VeilederModell ) => ( {
3137 ...veileder ,
32- portefoljestorrelse : storrelseMap [ veileder . ident ] || 0
38+ portefoljestorrelse : mapIdentOgPortefoljestorrelser [ veileder . ident ] || 0
3339 } ) ;
3440}
3541
36- function propertySort ( { property, direction} ) {
37- return sorter ( property , direction ) ;
38- }
39-
4042interface VeilederoversiktSidevisningProps {
4143 veilederFilter : string [ ] ;
4244 veiledere : VeilederModell [ ] ;
43- portefoljestorrelser : PortefoljeStorrelser ;
4445}
4546
46- export function VeilederoversiktSidevisning ( {
47- veilederFilter,
48- veiledere,
49- portefoljestorrelser
50- } : VeilederoversiktSidevisningProps ) {
47+ export function VeilederoversiktSidevisning ( { veilederFilter, veiledere} : VeilederoversiktSidevisningProps ) {
5148 const fra = useSelector ( selectFraIndex ) ;
5249 const sidestorrelse = useSelector ( selectSidestorrelse ) ;
5350 const seAlle = useSelector ( selectSeFlere ) ;
5451 const sortering = useSelector ( ( state : AppState ) => state . sortering ) ;
52+ const portefoljestorrelser = useSelector ( ( state : AppState ) => state . portefoljestorrelser ) ;
5553
5654 const veilederListe = useMemo ( ( ) => {
5755 return veiledere
58- . filter ( erValgtHvisFiltrering ( veilederFilter ) )
56+ . filter ( finnValgteVeiledere ( veilederFilter ) )
5957 . map ( medPortefoljestorrelse ( portefoljestorrelser ) )
60- . sort ( propertySort ( sortering ) ) ;
58+ . sort ( sorterVeilederoversikt ( sortering . property , sortering . direction ) ) ;
6159 } , [ veilederFilter , portefoljestorrelser , veiledere , sortering ] ) ;
6260
6361 function getValgteVeiledere ( ) {
0 commit comments