From bbb824326cd946d035d59b01a80ee03dc35a5892 Mon Sep 17 00:00:00 2001 From: ebelegu Date: Wed, 18 Sep 2024 12:50:55 +0200 Subject: [PATCH] Hjelpemetode som flater ut organisasjonstre --- package-lock.json | 4 +- package.json | 2 +- src/bedriftsmeny/Bedriftsmeny.tsx | 85 +++++++++++++++++++++---------- 3 files changed, 61 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd49ef5..05bad7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@navikt/bedriftsmeny", - "version": "6.13.2-rc0", + "version": "6.13.2-rc1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@navikt/bedriftsmeny", - "version": "6.13.2-rc0", + "version": "6.13.2-rc1", "license": "MIT", "dependencies": { "focus-trap-react": "^10.2.2", diff --git a/package.json b/package.json index d1b2c58..1fd90ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@navikt/bedriftsmeny", - "version": "6.13.2-rc0", + "version": "6.13.2-rc1", "description": "Bedriftsvelger og -meny for innlogget arbeidsgiver. Laget av TAG (Tjenester for Arbeidsgivere).", "author": "NAVIKT", "license": "MIT", diff --git a/src/bedriftsmeny/Bedriftsmeny.tsx b/src/bedriftsmeny/Bedriftsmeny.tsx index 2649d49..8311b98 100644 --- a/src/bedriftsmeny/Bedriftsmeny.tsx +++ b/src/bedriftsmeny/Bedriftsmeny.tsx @@ -21,7 +21,6 @@ interface EgneProps { children?: ReactNode; } - const Bedriftsmeny: FunctionComponent = (props) => { const { sidetittel = 'Arbeidsgiver' } = props; @@ -30,7 +29,7 @@ const Bedriftsmeny: FunctionComponent = (props) => { tittel={sidetittel} undertittel={props.undertittel} piktogram={props.piktogram} - virksomhetsvelger={} + virksomhetsvelger={} bjelle={props.children} /> ); @@ -46,12 +45,12 @@ export type VirksomhetsvelgerProps = { friKomponent?: boolean; /** @deprecated not in use. field preserved for api stability. */ amplitudeClient?: any; -} +}; export const Virksomhetsvelger = (props: VirksomhetsvelgerProps): ReactElement => { const [organisasjonstre, setOrganisasjonstre] = useState< JuridiskEnhetMedUnderEnheterArray[] | undefined - >(undefined); + >(undefined); useEffect(() => { if (props.organisasjoner && props.organisasjoner.length > 0) { @@ -70,34 +69,66 @@ export const Virksomhetsvelger = (props: VirksomhetsvelgerProps): ReactElement = props.organisasjoner?.length > 0; if (!visVirksomhetsvelger) { - return <> + return <>; } - return {})} - > - - -} + return ( + {})} + > + + + ); +}; -export {Arbeidsforhold} from "./piktogrammer/Arbeidsforhold"; -export {AvtalerOmTiltak} from "./piktogrammer/AvtalerOmTiltak"; -export {ForebyggeSykefravaer} from "./piktogrammer/ForebyggeSykefravaer"; -export {Kandidater} from "./piktogrammer/Kandidater"; -export {Refusjon} from "./piktogrammer/Refusjon"; -export {MSAIkon} from "./piktogrammer/MSAIkon"; -export {hentAlleJuridiskeEnheter} from "./hentAlleJuridiskeEnheter"; -export type {Organisasjon} from './organisasjon'; +type Organisasjonstre = { + name: string; + orgNr: string; + organizationForm: string; + underenheter: Organisasjonstre[]; +}; + +export const flatUtOrganisasjonstre = (organisasjonstre: Organisasjonstre[]): Organisasjon[] => { + const kutter = (organisasjonstre: Organisasjonstre): Organisasjon[] => { + if (organisasjonstre.underenheter[0]?.underenheter.length > 0) { + return organisasjonstre.underenheter.flatMap((underenhet) => kutter(underenhet)); + } else { + return [ + { + Name: organisasjonstre.name, + OrganizationNumber: organisasjonstre.orgNr, + OrganizationForm: organisasjonstre.organizationForm, + ParentOrganizationNumber: '', + }, + ...organisasjonstre.underenheter.map((underenhet) => { + return { + Name: underenhet.name, + OrganizationNumber: underenhet.orgNr, + OrganizationForm: underenhet.organizationForm, + ParentOrganizationNumber: organisasjonstre.orgNr }; + }), + ]; + } + }; + return organisasjonstre.flatMap(o => kutter(o)) +}; + +export { Arbeidsforhold } from './piktogrammer/Arbeidsforhold'; +export { AvtalerOmTiltak } from './piktogrammer/AvtalerOmTiltak'; +export { ForebyggeSykefravaer } from './piktogrammer/ForebyggeSykefravaer'; +export { Kandidater } from './piktogrammer/Kandidater'; +export { Refusjon } from './piktogrammer/Refusjon'; +export { MSAIkon } from './piktogrammer/MSAIkon'; +export { hentAlleJuridiskeEnheter } from './hentAlleJuridiskeEnheter'; +export type { Organisasjon } from './organisasjon'; export type BedriftsmenyHeaderProps = { tittel?: string; -} -export const BedriftsmenyHeader = (props: BedriftsmenyHeaderProps): ReactElement => - } - /> +}; +export const BedriftsmenyHeader = (props: BedriftsmenyHeaderProps): ReactElement => ( + } /> +); export default Bedriftsmeny;