{"version":3,"file":"veilederUtlandHelGrad-C9zhjUoA.js","sources":["../../../Features/VeilederUtlandHelGrad/Store/Valg/Types.ts","../../../Features/VeilederUtlandHelGrad/Store/Resultat/Types.ts","../../../Features/VeilederUtlandHelGrad/Store/Resultat/Actions.ts","../../../Features/VeilederUtlandHelGrad/Utilities/VerdensdelValg.ts","../../../Features/VeilederUtlandHelGrad/Utilities/LandMedRekrutteringsstipend.ts","../../../Features/VeilederUtlandHelGrad/Store/Valg/Actions.ts","../../../Features/VeilederUtlandHelGrad/Models/Ids.ts","../../../Features/VeilederUtlandHelGrad/Utilities/UtdanningTypeValg.ts","../../../Features/VeilederUtlandHelGrad/Components/VelgAntallAr.tsx","../../../Features/VeilederUtlandHelGrad/Components/OppsummeringLanOgStipendSteg.tsx","../../../Features/VeilederUtlandHelGrad/Utilities/Utregning.ts","../../../Features/VeilederUtlandHelGrad/Components/UtregningA.tsx","../../../Features/VeilederUtlandHelGrad/Components/UtregningB.tsx","../../../Features/VeilederUtlandHelGrad/Components/UtbetalingDetaljerComponent.tsx","../../../Features/VeilederUtlandHelGrad/Components/UtbetalingComponent.tsx","../../../Features/VeilederUtlandHelGrad/App.tsx","../../../Features/VeilederUtlandHelGrad/Store/Valg/Reducers.ts","../../../Features/VeilederUtlandHelGrad/Store/Resultat/Reducers.ts","../../../Features/VeilederUtlandHelGrad/Store/Satser/Types.ts","../../../Features/VeilederUtlandHelGrad/Store/Satser/Reducers.ts","../../../Features/VeilederUtlandHelGrad/Store/index.ts","../../../Features/VeilederUtlandHelGrad/Models/StamdataUtlandHelgradModel.ts","../../../Features/VeilederUtlandHelGrad/Store/Satser/Actions.ts","../../../Features/VeilederUtlandHelGrad/Utilities/Universiteter.ts","../../../Features/VeilederUtlandHelGrad/index.tsx"],"sourcesContent":["import Valg from '../../../Shared/Scripts/Models/Valg';\r\n\r\nexport interface ValgState {\r\n aUtdanning?: Valg;\r\n bVerdensdel?: Valg;\r\n cLand?: Valg;\r\n dSkolepenger?: Valg;\r\n eUniversitetUtvidetStipend?: Valg;\r\n gAntallAr?: Valg;\r\n visUtbetalingsplan: boolean;\r\n}\r\n\r\nexport const UPDATE_VALG = 'UPDATE_AVALG';\r\n\r\ninterface UpdateValgAction {\r\n type: typeof UPDATE_VALG;\r\n payload: Partial;\r\n}\r\n\r\nexport type ValgStateActionTypes = UpdateValgAction;\r\n","export type ResultatValg = ResultatValgVisning;\r\n\r\nexport interface ResultatValgVisning {\r\n visBoksB: boolean;\r\n visBoksC: boolean;\r\n visBoksD: boolean;\r\n visBoksE: boolean;\r\n visBoksFa: boolean;\r\n visBoksFb: boolean;\r\n visBoksG: boolean;\r\n visBoksH: boolean; \r\n visBetPlan: boolean;\r\n}\r\n\r\nexport const SET_VISNING = 'SET_VISNING';\r\n\r\nexport interface SetVisningAction {\r\n type: typeof SET_VISNING;\r\n payload: Partial;\r\n}\r\n\r\nexport type ResultatActionTypes = SetVisningAction;\r\n","import { SetVisningAction, SET_VISNING, ResultatValgVisning } from './Types';\r\n\r\nexport function setVisning(stegVisning: Partial): SetVisningAction {\r\n return {\r\n type: SET_VISNING,\r\n payload: stegVisning,\r\n };\r\n}\r\n","import VeilederUtlandDto from '../Models/VeilederUtlandDto';\r\nimport { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\n\r\nconst afrika = 'b1-afrika';\r\nconst asia = 'b2-asia';\r\nconst europa = 'b3-europa';\r\nconst nordMellomAmerika = 'b4-nordMellomAmerika';\r\nconst oseania = 'b5-oseania';\r\nconst sorAmerika = 'b6-sorAmerika';\r\n\r\nconst bValg: RadioButtonValgModel[] = [\r\n { id: 'afrika', value: afrika, tekst: 'valgAfrika' },\r\n { id: 'asia', value: asia, tekst: 'valgAsia' },\r\n { id: 'europa', value: europa, tekst: 'valgEuropa' },\r\n { id: 'nordmellomamerika', value: nordMellomAmerika, tekst: 'valgNordMellomAmerika' },\r\n { id: 'oseania', value: oseania, tekst: 'valgOseania' },\r\n { id: 'soramerika', value: sorAmerika, tekst: 'valgSorAmerika' }, \r\n];\r\n\r\nexport default {\r\n b1_afrika: afrika,\r\n b2_asia: asia,\r\n b3_europa: europa,\r\n b4_nordMellomAmerika: nordMellomAmerika,\r\n b5_oseania: oseania,\r\n b6_sorAmerika: sorAmerika,\r\n bValg,\r\n};","import * as ValgTypes from '../Store/Valg/Types';\r\n\r\nexport function harValgtLandSomGirRekrutteringsstipend(valg: ValgTypes.ValgState): boolean {\r\n if (valg.cLand?.id === \"ZA\" // Sør-Afrika\r\n ||\r\n valg.cLand?.id === \"BR\" // Brasil\r\n ||\r\n valg.cLand?.id === \"JP\" // Japan\r\n ||\r\n valg.cLand?.id === \"IN\" // India\r\n ||\r\n valg.cLand?.id === \"CN\" // Kina\r\n ||\r\n valg.cLand?.id === \"KR\") // Sør-Korea\r\n return true;\r\n return false;\r\n}\r\n\r\n\r\n","import { ValgStateActionTypes, ValgState, UPDATE_VALG } from './Types';\r\n\r\nimport { ThunkAction, ThunkDispatch } from 'redux-thunk';\r\nimport { VeilederUtlandAppState } from '..';\r\nimport { AnyAction } from 'redux';\r\nimport { setVisning } from '../Resultat/Actions';\r\nimport VerdensdelValg from '../../Utilities/VerdensdelValg';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\nimport { harValgtLandSomGirRekrutteringsstipend } from '../../Utilities/LandMedRekrutteringsstipend';\r\n\r\nexport function updateValg(newValg: Partial): ValgStateActionTypes {\r\n return {\r\n type: UPDATE_VALG,\r\n payload: newValg,\r\n };\r\n}\r\n\r\nexport const updateVisning = (): ThunkAction => {\r\n return (dispatch: ThunkDispatch, getState: () => VeilederUtlandAppState): void => {\r\n const currentState = getState();\r\n\r\n const visBoksB = visB(currentState);\r\n const visBoksC = visC(currentState);\r\n const visBoksD = visD(currentState);\r\n const visBoksE = visE(currentState);\r\n const visBoksFa = visFa(currentState, visBoksE);\r\n const visBoksFb = visFb(currentState, visBoksD, visBoksE);\r\n const visBoksG = visG(visBoksFa);\r\n const visBoksH = visH(currentState, visBoksG); \r\n const visBetPlan = visUtbetalingsplan(currentState);\r\n dispatch(setVisning({ visBoksB, visBoksC, visBoksD, visBoksE, visBoksFa, visBoksFb, visBoksG, visBoksH, visBetPlan }));\r\n };\r\n};\r\n\r\nconst visUtbetalingsplan = (state: VeilederUtlandAppState): boolean => {\r\n if(state.valg?.visUtbetalingsplan) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visB = (state: VeilederUtlandAppState): boolean => {\r\n if(state.valg.aUtdanning !== null && state.valg.aUtdanning !== undefined) return true;\r\n\r\n return true;\r\n};\r\n\r\nconst visC = (state: VeilederUtlandAppState): boolean => {\r\n if(state.valg.bVerdensdel !== undefined \r\n && (state.valg.bVerdensdel.value === VerdensdelValg.b2_asia \r\n || state.valg.bVerdensdel.value === VerdensdelValg.b3_europa \r\n || state.valg.bVerdensdel.value === VerdensdelValg.b1_afrika \r\n || state.valg.bVerdensdel.value === VerdensdelValg.b6_sorAmerika \r\n || state.valg.bVerdensdel.value === VerdensdelValg.b4_nordMellomAmerika \r\n || state.valg.bVerdensdel.value === VerdensdelValg.b5_oseania))\r\n return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visD = (state: VeilederUtlandAppState): boolean => {\r\n if (state.valg.bVerdensdel === undefined) return false;\r\n\r\n \r\n if (state.valg.bVerdensdel !== undefined && state.valg.cLand !== undefined) return true;\r\n return false;\r\n};\r\n\r\n//boks for å velge godkjent universitet for å få tileggsstipend\r\nconst visE = (state: VeilederUtlandAppState): boolean => {\r\n if (state.valg.dSkolepenger === undefined) return false;\r\n\r\n //fjerner white space fra string for at parsingen skal fungere som forventet.\r\n //TODO: fjern evt. tegn som ikke er tall fra strengen.\r\n const skolePenger: number = parseInt(state.valg.dSkolepenger.value.toString().replace(/\\s/g, ''));\r\n\r\n if(state.satser === null) return false;\r\n\r\n if (skolePenger <= state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR) return false;\r\n\r\n if (harValgtLandMedUtvidetStipend(state.valg, state.universiteter!)){ \r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\n//viser utregning, totalt lån og stipend\r\nconst visFa = (state: VeilederUtlandAppState, visBoksE: boolean): boolean => {\r\n if ((state.valg.bVerdensdel?.value === VerdensdelValg.b1_afrika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b2_asia) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger.id !== 'IngenSkolePenger'){\r\n\r\n if(visBoksE && state.valg.eUniversitetUtvidetStipend === undefined ||\r\n state.valg.eUniversitetUtvidetStipend?.toString() === '')\r\n return false;\r\n\r\n return true;\r\n } \r\n\r\n if (state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger.id !== 'IngenSkolePenger' &&\r\n state.valg.cLand !== undefined &&\r\n state.valg.cLand.id === 'E')\r\n return true;\r\n\r\n if (state.valg.dSkolepenger !== undefined) {\r\n const skolePenger: number = parseInt(state.valg.dSkolepenger.value.toString().replace(/\\s/g, ''));\r\n\r\n if(state.satser === null) return false;\r\n\r\n if (skolePenger <= state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR)\r\n return true;\r\n\r\n // har valgt skolepengebeløp over maks men har ikke liste med universiteter \r\n if (harValgtLandMedRekrutteringsstipend(state.valg) &&\r\n !visBoksE &&\r\n skolePenger > (state.satser.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR) &&\r\n state.valg.dSkolepenger?.id !== 'IngenSkolePenger') {\r\n return true;\r\n }\r\n }\r\n\r\n if (harValgtLandMedRekrutteringsstipend(state.valg) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger?.id !== 'IngenSkolePenger' &&\r\n state.valg.eUniversitetUtvidetStipend !== undefined &&\r\n state.valg.eUniversitetUtvidetStipend?.toString() !== '')\r\n return true;\r\n\r\n if (!visBoksE) return false;\r\n\r\n if (state.valg.eUniversitetUtvidetStipend !== undefined &&\r\n state.valg.eUniversitetUtvidetStipend?.toString() !== '' &&\r\n state.valg.dSkolepenger?.id !== 'IngenSkolePenger')\r\n return true;\r\n\r\n return false;\r\n};\r\n\r\n//viser utregning, totalt lån og stipend, men som ikke vet om de skal betale skolepenger. \r\nconst visFb = (state: VeilederUtlandAppState, visBoksD: boolean, visBoksE: boolean): boolean => {\r\n //dette må skje i riktig rekkefølge.\r\n\r\n if (!visBoksD) return false;\r\n \r\n //viser boks Fb dersom man har valgt afrika og ikke skolepenger.\r\n if ((state.valg.bVerdensdel?.value === VerdensdelValg.b1_afrika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika ||\r\n state.valg.bVerdensdel?.value === VerdensdelValg.b2_asia) &&\r\n (state.valg.eUniversitetUtvidetStipend === undefined &&\r\n state.valg.dSkolepenger?.id === 'IngenSkolePenger')){\r\n if (harValgtLandMedUtvidetStipend(state.valg, state.universiteter!))\r\n return false;\r\n return true;\r\n }\r\n\r\n // har valgt \"Et annet land\" og \"Vet ikke\"\r\n if (state.valg.cLand !== undefined && state.valg.cLand.id == \"E\" && state.valg.dSkolepenger !== undefined && state.valg.dSkolepenger?.id === 'IngenSkolePenger') {\r\n return true;\r\n }\r\n\r\n if (!visBoksE) return false;\r\n\r\n // har valgt et land med rekrutteringsstipend, men som ikke har universitet med utvidet støtte, og \"vet ikke\"\r\n if (harValgtLandMedRekrutteringsstipend(state.valg) &&\r\n !harValgtLandMedUtvidetStipend(state.valg, state.universiteter!) &&\r\n state.valg.dSkolepenger !== undefined &&\r\n state.valg.dSkolepenger?.id === 'IngenSkolePenger')\r\n return true;\r\n\r\n // dersom vi har valgt et universitet og \"Vet ikke\" så vet vi at vi skal vise Fb\r\n if (state.valg.eUniversitetUtvidetStipend !== undefined && state.valg.dSkolepenger?.id === 'IngenSkolePenger')\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nconst visG = (visBoksFa: boolean): boolean => {\r\n if (visBoksFa)\r\n return true;\r\n\r\n return false;\r\n};\r\n\r\nconst visH = (state: VeilederUtlandAppState, visBoksG: boolean): boolean => {\r\n if(state.valg.gAntallAr == undefined)\r\n return false;\r\n\r\n if(state.valg.gAntallAr.value > 0 && visBoksG) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst harValgtLandMedUtvidetStipend = (valg: ValgState, universiteter: LandOgUniversitetModel[]): boolean => {\r\n if (valg.cLand?.id === \"E\") {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < universiteter.length; i++) {\r\n if (universiteter[i].Landkode === valg.cLand?.id && universiteter[i].Universitet !== \"\") {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// \"Rekrutteringsstipend\"/ tilleggsstipend spesielt for utveksling. Gir et ekstra stipend for visse land.\r\nconst harValgtLandMedRekrutteringsstipend = (valg: ValgState) => {\r\n\r\n if (harValgtLandSomGirRekrutteringsstipend(valg)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n","export const AppContainerId = 'veilederUtlandHelGrad';\r\nexport const BoksA = 'boks-A';\r\nexport const BoksB = 'boks-B';\r\nexport const BoksC = 'boks-C';\r\nexport const BoksD = 'boks-D';\r\nexport const BoksG = 'boks-G';","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederUtlandDto from '../Models/VeilederUtlandDto';\r\n\r\nconst ba = 'a1-valgBa';\r\nconst ma = 'a2-valgMa';\r\nconst phd = 'a3-valgPhd';\r\nconst profesjon = 'a4-valgProfesjon';\r\n\r\nconst utdanningValg: RadioButtonValgModel[] = [\r\n {\r\n id: 'a1',\r\n value: ba,\r\n tekst: 'valgBa',\r\n },\r\n {\r\n id: 'a2',\r\n value: ma,\r\n tekst: 'valgMa',\r\n },\r\n {\r\n id: 'a3',\r\n value: phd,\r\n tekst: 'valgPhd',\r\n },\r\n {\r\n id: 'a4',\r\n value: profesjon,\r\n tekst: 'valgProfesjon',\r\n },\r\n];\r\n\r\nexport default {\r\n a1_ba: ba,\r\n a2_ma: ma,\r\n a3_phd: phd,\r\n a4_profesjon: profesjon,\r\n utdanningValg,\r\n};\r\n","import React, { useState } from 'react';\r\nimport Valg from '../../Shared/Scripts/Models/Valg';\r\n\r\ninterface VelgAntallArComponentProps {\r\n id: string | null,\r\n tittel: JSX.Element | null,\r\n forklaring: JSX.Element | null,\r\n ledetekst: JSX.Element | null,\r\n startAntallAr: number,\r\n onChange: any,\r\n obsmelding: JSX.Element | null,\r\n}\r\n\r\nexport function VelgAntallArComponentVisning (props: VelgAntallArComponentProps): JSX.Element {\r\n\r\n const [antallAr, setAntallAr] = useState(props.startAntallAr);\r\n\r\n let obsTekst: JSX.Element | null = null;\r\n if(antallAr > 8) {\r\n obsTekst =
{props.obsmelding}
;\r\n } else {\r\n obsTekst = null;\r\n }\r\n\r\n function klikkMinusHandler(e: React.SyntheticEvent) : void{\r\n if(antallAr > 1) {\r\n let valgtAntallAr: Valg = { id: \"\", displayValue: \"\", value: antallAr - 1}\r\n setAntallAr(antallAr - 1);\r\n props.onChange(valgtAntallAr);\r\n }\r\n }\r\n\r\n function klikkPlussHandler(e: React.SyntheticEvent) : void{\r\n if(antallAr < 9) {\r\n let valgtAntallAr: Valg = { id: \"\", displayValue: \"\", value: antallAr + 1}\r\n setAntallAr(antallAr + 1);\r\n props.onChange(valgtAntallAr);\r\n }\r\n }\r\n\r\n function setAntallArState(e: React.KeyboardEvent): void {\r\n\r\n if(e.key === 'Backspace') {\r\n setAntallAr(0);\r\n props.onChange(undefined);\r\n }\r\n\r\n if(\r\n e.key === \"1\" || \r\n e.key === \"2\" || \r\n e.key === \"3\" || \r\n e.key === \"4\" || \r\n e.key === \"5\" || \r\n e.key === \"6\" || \r\n e.key === \"7\" || \r\n e.key === \"8\" || \r\n e.key === \"9\") {\r\n let typedAntallAr: number = parseInt(e.key);\r\n setAntallAr(typedAntallAr);\r\n\r\n let valgtAntallAr: Valg = { id: \"\", displayValue: \"\", value: typedAntallAr}\r\n props.onChange(valgtAntallAr);\r\n } \r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{props.tittel}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.forklaring}
\r\n {obsTekst}\r\n
\r\n
\r\n
\r\n
{props.ledetekst}
\r\n
\r\n
\r\n \r\n {}}\r\n onKeyUp={setAntallArState}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) \r\n}","import React, {useState} from 'react';\r\nimport StipendLandModel from '../Models/StipendLandModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\n\r\ninterface OppsummeringVisningProps {\r\n basisLan: StipendLandModel,\r\n reiseStotte: StipendLandModel,\r\n skolePenger: StipendLandModel,\r\n rekrutteringsstipend: number,\r\n valg: ValgTypes.ValgState,\r\n locale: string,\r\n valuta: string,\r\n\r\n tittelMinimumTotaltLan: any,\r\n infoOmLan: any,\r\n tittelMaksimumTotaltStipend: any,\r\n infoOmStipend: any,\r\n lenketekstOmLanOgStipend: any,\r\n vilkarLukkVilkårGjeldOgBetaling: any,\r\n vilkarGjeldOgBetalingTittel:any,\r\n vilkarGjeldOgBetalingTekst: any,\r\n}\r\n\r\nexport function OppsummeringLanOgStipendComponent (props: OppsummeringVisningProps): JSX.Element {\r\n\r\n const [visVilkarBModal, setVisVilkarModal] = useState(false);\r\n\r\n function formatNumber(tall: number, locale: string = 'nb-NO') : string {\r\n let tallSomString: string = tall.toString();\r\n if(locale === 'en-US') {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ',');\r\n } else {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ' ');\r\n }\r\n return tallSomString;\r\n }\r\n\r\n function kalkulerTotaltStudieStipend(): string {\r\n let aar: number = 0;\r\n\r\n let totalStipend: number = props.basisLan.stipendKroner + props.reiseStotte.stipendKroner + props.skolePenger.stipendKroner + props.rekrutteringsstipend;\r\n\r\n //sjekker om det ikke er valgt noen år enda eller om det bare er valgt ett år \r\n if(props.valg.gAntallAr === undefined || props.valg.gAntallAr.value === 1) {\r\n return formatNumber(Math.round(totalStipend), props.locale).toString();\r\n } else {\r\n //vi tar minus 1 på år for å få formelen til å gå opp. \r\n aar = props.valg.gAntallAr?.value - 1;\r\n }\r\n\r\n let total: number = totalStipend * Math.pow(1.02, aar) + totalStipend * ((Math.pow(1.02, aar) - 1) / 0.02);\r\n\r\n return formatNumber(Math.round(total), props.locale).toString();\r\n }\r\n\r\n function kalkulerTotaltStudieLan() : string {\r\n let aar: number = 0;\r\n \r\n let totalLanForsteAar: number = props.basisLan.lanKroner + props.reiseStotte.lanKroner + props.skolePenger.lanKroner;\r\n\r\n if(props.valg.gAntallAr === undefined || props.valg.gAntallAr.value === 1) {\r\n return formatNumber(Math.round(totalLanForsteAar), props.locale).toString();\r\n } else {\r\n //vi tar minus 1 på år for å få formelen til å gå opp. \r\n aar = props.valg.gAntallAr?.value - 1;\r\n }\r\n \r\n let total: number = totalLanForsteAar * Math.pow(1.02, aar) + totalLanForsteAar * ((Math.pow(1.02, aar) - 1) / 0.02);\r\n\r\n return formatNumber(Math.round(total), props.locale).toString();\r\n }\r\n\r\n function onVilkarClick(): void {\r\n setVisVilkarModal(true);\r\n }\r\n\r\n function onRequestLukkVilkar(): void {\r\n setVisVilkarModal(false);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{props.tittelMinimumTotaltLan}

\r\n
\r\n
\r\n
\r\n {kalkulerTotaltStudieLan()}\r\n  {props.valuta}\r\n
\r\n

{props.infoOmLan}

\r\n
\r\n
\r\n
\r\n
\r\n

{props.tittelMaksimumTotaltStipend}

\r\n
\r\n
\r\n
\r\n {kalkulerTotaltStudieStipend()}\r\n  {props.valuta}\r\n
\r\n

{props.infoOmStipend}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","//MERK! HVIS MAN FINNER EN FEIL I UTREGNINGEN HER, SÅ ER DET OVERHENGENDE FARE FOR AT SAMME FEIL FINNES I UTREGNING.TS UNDER UTVEKSLINGSVEILEDER. \r\n//ÅRSAKEN ER AT UTREGNINGENE ER SVÆRT LIKE. \r\n\r\nimport StipendLandModel from '../Models/StipendLandModel';\r\nimport {StamdataUtlandHelgradModel} from '../Models/StamdataUtlandHelgradModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport VerdensdelValg from '../Utilities/VerdensdelValg';\r\nimport UtdanningValg from '../Utilities/UtdanningTypeValg';\r\nimport {harValgtLandSomGirRekrutteringsstipend} from './LandMedRekrutteringsstipend';\r\n\r\nexport function formatNumber(tall: number, locale: string = 'nb-NO') : string {\r\n let tallSomString: string = tall.toString();\r\n if(locale === 'en-US') {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ',');\r\n } else {\r\n tallSomString = tallSomString.replace(/(?!^)(?=(?:\\d{3})+(?:\\.|$))/gm, ' ');\r\n }\r\n \r\n return tallSomString;\r\n}\r\n\r\nexport function harValgtGodkjentUniversitetSomGirUtvidetStipend(valg: ValgTypes.ValgState): boolean {\r\n if (valg.eUniversitetUtvidetStipend !== undefined && valg.eUniversitetUtvidetStipend.id !== undefined && valg.eUniversitetUtvidetStipend.id !== \"\" && valg.eUniversitetUtvidetStipend.id !== \"Nei\") {\r\n //console.log(\"godkjent for utvidet stipend\");\r\n return true;\r\n }\r\n\r\n //console.log(\"ikke godkjent for utvidet stipend\");\r\n return false;\r\n}\r\n\r\nexport function regnUtBasisLan(valg: ValgTypes.ValgState, stamData: StamdataUtlandHelgradModel | null) : StipendLandModel {\r\n\r\n let basisLan: StipendLandModel = {\r\n stipendKroner:0,\r\n stipendProsent:0,\r\n lanKroner:0,\r\n lanProsent:0,\r\n totaltStipendOgLan:0\r\n };\r\n\r\n if(stamData == null) return basisLan;\r\n\r\n let antallDagerMedStotte = 330;\r\n\r\n let basis: number = stamData.SATS_ST01_MAKS_BASISSTOTTE_DAG * antallDagerMedStotte;\r\n \r\n //TODO: ligger prosentsatsene også i stamdata?\r\n basisLan.lanProsent = 60;\r\n basisLan.stipendProsent = 40;\r\n\r\n basisLan.totaltStipendOgLan = Math.round(basis);\r\n\r\n basisLan.stipendKroner = Math.round(basisLan.totaltStipendOgLan * (basisLan.stipendProsent / 100));\r\n basisLan.lanKroner = Math.round((basisLan.totaltStipendOgLan * (basisLan.lanProsent / 100)) - 0.1);\r\n\r\n return basisLan;\r\n}\r\n\r\nexport function regnUtReiseStotte(valg: ValgTypes.ValgState, stamData: StamdataUtlandHelgradModel | null): StipendLandModel {\r\n\r\n let reiseStotte: StipendLandModel = {\r\n stipendKroner: 0,\r\n stipendProsent: 0,\r\n lanKroner: 0,\r\n lanProsent: 0,\r\n totaltStipendOgLan: 0\r\n };\r\n\r\n reiseStotte.lanProsent = 82.5;\r\n reiseStotte.stipendProsent = 17.5;\r\n\r\n if(stamData == null) return reiseStotte;\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b1_afrika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_AFRIKA * 4);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b2_asia) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_ASIA * 4);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b3_europa) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_EUROPA * 4);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b4_nordMellomAmerika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_NORD_OG_MELLOM_AMERIKA * 4);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b5_oseania) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_OSEANIA * 4);\r\n }\r\n\r\n if (valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika) {\r\n reiseStotte.totaltStipendOgLan = Math.round(stamData.SATS_ST01_REISETILSKUDD_SOR_AMERIKA * 4);\r\n }\r\n\r\n reiseStotte.stipendKroner = Math.round(reiseStotte.totaltStipendOgLan * (reiseStotte.stipendProsent / 100));\r\n reiseStotte.lanKroner = Math.round((reiseStotte.totaltStipendOgLan * (reiseStotte.lanProsent / 100)) - 0.1);\r\n\r\n return reiseStotte;\r\n}\r\n\r\nexport function regnUtSkolepengeUtvidetStipend(valg: ValgTypes.ValgState, stamData:StamdataUtlandHelgradModel | null): number {\r\n\r\n if(!harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) return 0; \r\n\r\n if(valg.dSkolepenger === null || valg.dSkolepenger === undefined) return 0;\r\n\r\n if(stamData === null || stamData === undefined) return 0;\r\n\r\n let skoleKostnad: number = parseInt(valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n if (skoleKostnad <= 0) return 0;\r\n\r\n let utvidetStipend: number = 0;\r\n\r\n if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR\r\n && skoleKostnad < (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR))\r\n {\r\n utvidetStipend = skoleKostnad - stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR;\r\n }\r\n\r\n if (skoleKostnad > (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR))\r\n {\r\n utvidetStipend = stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR;\r\n }\r\n\r\n return Math.round(utvidetStipend);\r\n}\r\n\r\nexport function regnUtSkolepengerStotte(valg: ValgTypes.ValgState, stamData: StamdataUtlandHelgradModel | null): StipendLandModel {\r\n\r\n let skolepengeStotte: StipendLandModel = {\r\n stipendKroner: 0,\r\n stipendProsent: 0,\r\n lanKroner: 0,\r\n lanProsent: 0,\r\n totaltStipendOgLan: 0\r\n };\r\n\r\n //vi setter riktig prosentsats for stipend og lån basert på type utdanning\r\n if (valg.aUtdanning?.value === UtdanningValg.a1_ba || valg.aUtdanning?.value === UtdanningValg.a4_profesjon) {\r\n skolepengeStotte.stipendProsent = 40;\r\n skolepengeStotte.lanProsent = 60;\r\n } else {\r\n skolepengeStotte.stipendProsent = 40;\r\n skolepengeStotte.lanProsent = 60;\r\n }\r\n\r\n if (valg.dSkolepenger === undefined) return skolepengeStotte;\r\n\r\n if(stamData == null) return skolepengeStotte;\r\n\r\n let skoleKostnad: number = parseInt(valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n //man får ingen skolepenge-støtte dersom det ikke skal betales skolepenger.\r\n if (skoleKostnad <= 0) {\r\n return skolepengeStotte;\r\n }\r\n\r\n //maks sum av ID6 som man deler mellom stipend og lån. restverdien av ID6 er alltid lån. \r\n let ID77 = stamData.SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR;\r\n\r\n //restverdien av ID6 er alltid lån.\r\n let ID6_rest_etter_ID77 = stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR - stamData.SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR;\r\n\r\n if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR\r\n && skoleKostnad < (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR)\r\n && harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på tilleggsstipend (ID10)\r\n //får differansen mellom ID6 og D1 som tilleggsstipend\r\n\r\n //vi regner ut andel stipend og lån av ID77 siden det er kun den summen av ID6 man kan få omgjort til stipend.\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let tillegsstipend: number = skoleKostnad - stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR;\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend + tillegsstipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 1\");\r\n\r\n } else if (skoleKostnad > (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR)\r\n && harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på tilleggsstipend (ID10) og tilleggslån (ID9)\r\n //Tilleggsstipend er ID10 \r\n //Tilleggslånet er D1 minus maks støtte og lån (ID6 og ID10), men lånet er maks opptil ID9.\r\n\r\n // ***VI REGNER FØRST UT STIPEND***\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let tillegsstipend: number = stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR;\r\n let tot_stipend: number = ID6_stipend + tillegsstipend;\r\n\r\n // ***VI REGNER UT LÅN***\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100) + ID6_rest_etter_ID77;\r\n let tilleggs_lan: number = skoleKostnad - stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR - stamData.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR;\r\n\r\n //lån er maks opptil ID9. \r\n if (tilleggs_lan > stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR) {\r\n tilleggs_lan = stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR;\r\n }\r\n\r\n let tot_lan: number = ID6_lan + tilleggs_lan;\r\n\r\n skolepengeStotte.lanKroner = Math.round(tot_lan - 0.1);\r\n skolepengeStotte.stipendKroner = Math.round(tot_stipend);\r\n\r\n //console.log(\"Utregning 2\");\r\n } else if (skoleKostnad > stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR\r\n && skoleKostnad <= (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR)\r\n && !harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på skolepengestøtte og tilleggslån\r\n //tilleggslånet er differansen mellom ID6 og skoleKostnad. \r\n\r\n let ID6_stipend = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let tileggsLan: number = skoleKostnad - stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR;\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + tileggsLan + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 3\");\r\n } else if (skoleKostnad > (stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR)\r\n && !harValgtGodkjentUniversitetSomGirUtvidetStipend(valg)) {\r\n //har rett på skolepengestøtte og tilleggslån\r\n //får ID9 som tilleggslån\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + stamData.SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR + ID6_rest_etter_ID77 - 0.1);\r\n\r\n //console.log(\"Utregning 4\");\r\n } else if (skoleKostnad < stamData.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR) {\r\n //hvis D1 er mindre enn ID6 så får man kun D1 i støtte. Man får ikke ID9 eller ID10. \r\n //hva som er lån og hva som er stipend følger vanlige regler basert på type studie. \r\n\r\n //console.log(\"Utregning 5 - skolekostnad er mindre enn ID6\");\r\n\r\n if (skoleKostnad <= ID77) {\r\n let ID6_stipend: number = skoleKostnad * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = skoleKostnad * (skolepengeStotte.lanProsent / 100);\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan - 0.1);\r\n\r\n //console.log(\"Utregning 5a - skolekostnad er mindre enn ID77\");\r\n } else {\r\n let ID6_stipend: number = ID77 * (skolepengeStotte.stipendProsent / 100);\r\n let ID6_lan: number = ID77 * (skolepengeStotte.lanProsent / 100);\r\n let ID6_rest_lan: number = skoleKostnad - ID77;\r\n\r\n skolepengeStotte.stipendKroner = Math.round(ID6_stipend);\r\n skolepengeStotte.lanKroner = Math.round(ID6_lan + ID6_rest_lan - 0.1);\r\n\r\n //console.log(\"Utregning 5b - skolekostnad er større enn ID77\");\r\n }\r\n }\r\n\r\n skolepengeStotte.totaltStipendOgLan = Math.round(skolepengeStotte.lanKroner + skolepengeStotte.stipendKroner); \r\n return skolepengeStotte;\r\n}\r\n\r\nexport function regnUtRekrutteringsstipend(valg: ValgTypes.ValgState, stamData: StamdataUtlandHelgradModel | null): number {\r\n \r\n if(!harValgtLandSomGirRekrutteringsstipend(valg)) return 0; \r\n \r\n if(stamData === null || stamData === undefined) return 0;\r\n\r\n let rekrutteringsstipend: number = 0;\r\n\r\n let antallDagerMedStotte: number = 300;\r\n\r\n rekrutteringsstipend = stamData.SATS_ST01_STIPENDTILUTVEKSLING_DAGSATS * antallDagerMedStotte;\r\n \r\n return Math.round(rekrutteringsstipend);\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport { StamdataUtlandHelgradModel } from '../Models/StamdataUtlandHelgradModel';\r\nimport * as UtregningUtland from '../Utilities/Utregning'\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport UtdanningValg from '../Utilities/UtdanningTypeValg';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtregningAProps {\r\n tittelUtregning: JSX.Element | null,\r\n satser: StamdataUtlandHelgradModel | null,\r\n valg: ValgTypes.ValgState,\r\n valutaBenevnelseUtregning: string,\r\n stipendVilkarTekst: JSX.Element | null,\r\n stipendTittelUtregning: JSX.Element | null,\r\n lanTittelUtregning: JSX.Element | null,\r\n tekstForLanOgStipendSomAlleFaar: JSX.Element | null,\r\n tekstForDeMedSkolepenger: JSX.Element | null,\r\n tekstForDeMedSkolepengerOgTilleggsstipend: JSX.Element | null,\r\n tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan: JSX.Element | null,\r\n tekstForDeMedSkolepengerOgTilleggslan: JSX.Element | null,\r\n resTekstAlleOgRekruttering: JSX.Element | null;\r\n resTekstSkolepengerRekruttering: JSX.Element | null;\r\n resTekstSkolepengerUtvidetstipendRekruttering: JSX.Element | null;\r\n resTekstSkolepUtvidetstipendUtvidetlanRekruttering: JSX.Element | null;\r\n resTekstSkolepengerUtvidetlanRekruttering: JSX.Element | null;\r\n vilkarStudieStotteLenkeTekst: JSX.Element | null,\r\n vilkarStudieStotteTittel: JSX.Element | null,\r\n vilkarStudieStotteTekst: JSX.Element | null,\r\n vilkarLukkStudieStottePopupAriaTekst: string,\r\n visUtbetalingsPlanHandler: any,\r\n utbetalingsPlanLenkeTekst: JSX.Element | null,\r\n profesjonUnntakOppsummering: any,\r\n locale:string\r\n}\r\n\r\nexport default function UtregningA(props: UtregningAProps): JSX.Element {\r\n const [visVilkarAModal, setVisVilkarAModal] = useState(false);\r\n const [visUtbetalingsplan, setVisUtbetalingsplan] = useState(false);\r\n\r\n function onVilkarAClick(): void {\r\n setVisVilkarAModal(true);\r\n }\r\n\r\n function onRequestLukkVilkarA(): void {\r\n setVisVilkarAModal(false);\r\n }\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n\r\n function onVisUtbetalingsPlan(): void {\r\n if(visUtbetalingsplan) {\r\n setVisUtbetalingsplan(false);\r\n props.visUtbetalingsPlanHandler(false);\r\n } else {\r\n setVisUtbetalingsplan(true);\r\n props.visUtbetalingsPlanHandler(true);\r\n }\r\n }\r\n\r\n function profesjonsTekstregel() : JSX.Element | null{\r\n if(props.valg.aUtdanning?.value === UtdanningValg.a4_profesjon) {\r\n return

{props.profesjonUnntakOppsummering}

;\r\n }\r\n return null;\r\n }\r\n\r\n const erTildeltRekrutteringsstipend: boolean = UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser) > 0;\r\n\r\n function hentYtelsesBeskrivelseTekst(): JSX.Element | null {\r\n\r\n if (props.valg.dSkolepenger == undefined) return null;\r\n if (props.satser == undefined) return null;\r\n\r\n let skoleKostnad: number = parseInt(props.valg.dSkolepenger.value.replace(/\\s/g, ''));\r\n\r\n //hvis D1 < ID6 og D1 > 0\r\n if(skoleKostnad < props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR && skoleKostnad > 0) {\r\n if (erTildeltRekrutteringsstipend) {\r\n return {props.resTekstSkolepengerRekruttering};\r\n } else {\r\n return {props.tekstForDeMedSkolepenger};\r\n }\r\n }\r\n\r\n //hvis D1 < ID6+ID10 og E1=ja \r\n if(skoleKostnad < props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR\r\n && UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg)) {\r\n if (erTildeltRekrutteringsstipend) {\r\n return {props.resTekstSkolepengerUtvidetstipendRekruttering};\r\n } else {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipend};\r\n }\r\n }\r\n\r\n //hvis D1 > ID6+ID10 og E1=ja\r\n if(skoleKostnad > props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR + props.satser?.SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR\r\n && UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg)) {\r\n if (erTildeltRekrutteringsstipend) {\r\n return {props.resTekstSkolepUtvidetstipendUtvidetlanRekruttering};\r\n } else {\r\n return {props.tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan};\r\n }\r\n }\r\n\r\n //hvis D1 > ID6 og E1=nei\r\n if(skoleKostnad > props.satser?.SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR\r\n && !UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend(props.valg)) {\r\n if (erTildeltRekrutteringsstipend) {\r\n return {props.resTekstSkolepengerUtvidetlanRekruttering};\r\n } else {\r\n return {props.tekstForDeMedSkolepengerOgTilleggslan};\r\n }\r\n }\r\n\r\n if (erTildeltRekrutteringsstipend) {\r\n return {props.resTekstAlleOgRekruttering};\r\n } else {\r\n return {props.tekstForLanOgStipendSomAlleFaar};\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {props.tittelUtregning}\r\n

\r\n
\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan + \r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan + \r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser), props.locale\r\n )}\r\n {/* {formatNumber(regnUtBasisLan().totaltStipendOgLan + regnUtReiseStotte().totaltStipendOgLan + regnUtSkolepengerStotte().totaltStipendOgLan)} */}\r\n  {props.valutaBenevnelseUtregning}\r\n
\r\n

\r\n {hentYtelsesBeskrivelseTekst()}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n {profesjonsTekstregel()}\r\n
\r\n
\r\n
{props.stipendTittelUtregning}
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).stipendKroner + \r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).stipendKroner + \r\n UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner +\r\n UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser), props.locale\r\n )}\r\n {/* {formatNumber(regnUtBasisLan().stipendKroner + regnUtReiseStotte().stipendKroner + regnUtSkolepengerStotte().stipendKroner)} */}\r\n  {props.valutaBenevnelseUtregning}\r\n
\r\n

\r\n {props.stipendVilkarTekst}\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.lanTittelUtregning}
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtBasisLan(props.valg, props.satser).lanKroner + UtregningUtland.regnUtReiseStotte(props.valg, props.satser).lanKroner + UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).lanKroner, props.locale)}\r\n {/* {formatNumber(regnUtBasisLan().lanKroner + regnUtReiseStotte().lanKroner + regnUtSkolepengerStotte().lanKroner)} */}\r\n  {props.valutaBenevnelseUtregning}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n\r\n}","import React, {useEffect, useState} from 'react';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport { StamdataUtlandHelgradModel } from '../Models/StamdataUtlandHelgradModel';\r\nimport * as UtregningUtland from '../Utilities/Utregning'\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtregningAProps {\r\n tittelUtregning: JSX.Element | null,\r\n satser: StamdataUtlandHelgradModel | null,\r\n valg: ValgTypes.ValgState,\r\n valutaBenevnelseUtregning: string,\r\n beskrivelseLanFb: JSX.Element | null,\r\n overskriftLanFb: JSX.Element | null,\r\n tekstForLanOgStipendSomAlleFaar: JSX.Element | null,\r\n resTekstAlleOgRekruttering: JSX.Element | null;\r\n vilkarStudieStotteLenkeTekst: JSX.Element | null,\r\n vilkarStudieStotteTittel: JSX.Element | null,\r\n vilkarStudieStotteTekst: JSX.Element | null,\r\n vilkarLukkStudieStottePopupAriaTekst: string,\r\n visUtbetalingsPlanHandler: any,\r\n utbetalingsPlanLenkeTekst: JSX.Element | null,\r\n locale: string,\r\n}\r\n\r\nexport default function UtregningA(props: UtregningAProps): JSX.Element {\r\n const [visVilkarBModal, setVisVilkarBModal] = useState(false);\r\n const [visUtbetalingsplan, setVisUtbetalingsplan] = useState(false);\r\n\r\n function onVilkarBClick(): void {\r\n setVisVilkarBModal(true);\r\n }\r\n\r\n function onRequestLukkVilkarA(): void {\r\n setVisVilkarBModal(false);\r\n }\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n\r\n function onVisUtbetalingsPlan(): void {\r\n if(visUtbetalingsplan) {\r\n setVisUtbetalingsplan(false);\r\n props.visUtbetalingsPlanHandler(false);\r\n } else {\r\n setVisUtbetalingsplan(true);\r\n props.visUtbetalingsPlanHandler(true);\r\n }\r\n }\r\n\r\n const erTildeltRekrutteringsstipend: boolean = UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser) > 0;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {props.tittelUtregning}\r\n

\r\n
\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan + \r\n UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan +\r\n UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser), props.locale)}\r\n  {props.valutaBenevnelseUtregning}\r\n
\r\n

\r\n {erTildeltRekrutteringsstipend ? (\r\n {props.resTekstAlleOgRekruttering}\r\n ) : (\r\n {props.tekstForLanOgStipendSomAlleFaar}\r\n )}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.overskriftLanFb}
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).totaltStipendOgLan, props.locale)}\r\n  {props.valutaBenevnelseUtregning}\r\n
\r\n

\r\n {props.beskrivelseLanFb}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n\r\n}","import React, { useEffect } from 'react';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport VeilederUtlandDto from '../Models/VeilederUtlandDto';\r\nimport { VeilederUtlandAppState } from '../Store';\r\nimport { connect } from 'react-redux';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { StamdataUtlandHelgradModel } from '../Models/StamdataUtlandHelgradModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface UtbetalingOwnProps {\r\n satser: StamdataUtlandHelgradModel | null,\r\n valg: ValgTypes.ValgState,\r\n tittel: JSX.Element | null,\r\n locale: string,\r\n valuta: string,\r\n}\r\n\r\ntype UtbetalingProps = UtbetalingOwnProps & MapStateToProps & {};\r\n\r\nconst UtbetalingDetaljerComponent = (props: UtbetalingProps): JSX.Element => {\r\n const { epiContext } = props;\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n let utvidetStipend: JSX.Element | null = null;\r\n let skolepengeStipend: JSX.Element | null = null;\r\n\r\n let skolepengeUtvidetStipend: number = UtregningUtland.regnUtSkolepengeUtvidetStipend(props.valg, props.satser);\r\n if (skolepengeUtvidetStipend > 0) {\r\n utvidetStipend =
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeTilleggsstipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(skolepengeUtvidetStipend, props.locale)}\r\n  {props.valuta}\r\n
\r\n
;\r\n\r\n let skolepengeLanUtenUtvidetStipend = UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner - skolepengeUtvidetStipend;\r\n skolepengeStipend =
\r\n {UtregningUtland.formatNumber(skolepengeLanUtenUtvidetStipend, props.locale)}\r\n  {props.valuta}\r\n
\r\n } else {\r\n skolepengeStipend =
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).stipendKroner, props.locale)}\r\n  {props.valuta}\r\n
\r\n }\r\n\r\n \r\n\r\n return (\r\n
\r\n

{props.tittel}

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'tittelYtelseKolonne')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'tittelBelopKolonne')}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerBasisLan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtBasisLan(props.valg, props.satser).totaltStipendOgLan, props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n {UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser) > 0 && (\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerRekrutteringsstipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(\r\n UtregningUtland.regnUtRekrutteringsstipend(props.valg, props.satser), props.locale,\r\n )}\r\n  {props.valuta}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeLan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).lanKroner, props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerSkolepengeStipend')}\r\n
\r\n {skolepengeStipend}\r\n
\r\n \r\n {utvidetStipend}\r\n\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerReiselan')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtReiseStotte(props.valg, props.satser).lanKroner, props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'detaljerReiseStipend')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(UtregningUtland.regnUtReiseStotte(props.valg, props.satser).stipendKroner, props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederUtlandAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(UtbetalingDetaljerComponent);","import React from 'react';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport { resolveRawText } from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport VeilederUtlandDto from '../Models/VeilederUtlandDto';\r\nimport { VeilederUtlandAppState } from '../Store';\r\nimport { connect } from 'react-redux';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { StamdataUtlandHelgradModel } from '../Models/StamdataUtlandHelgradModel';\r\nimport * as ValgTypes from '../Store/Valg/Types';\r\nimport * as UtregningUtland from '../Utilities/Utregning';\r\nimport VerdensdelValg from '../Utilities/VerdensdelValg';\r\nimport UtbetalingDetaljerComponent from './UtbetalingDetaljerComponent'\r\nimport { ResultatValgVisning } from '../Store/Resultat/Types';\r\n\r\ninterface UtbetalingOwnProps {\r\n satser: StamdataUtlandHelgradModel | null,\r\n valg: ValgTypes.ValgState,\r\n resultat: ResultatValgVisning,\r\n locale: string,\r\n valuta: string,\r\n}\r\n\r\ntype UtbetalingProps = UtbetalingOwnProps & MapStateToProps & {};\r\n\r\nconst UtbetalingComponent = (props: UtbetalingProps): JSX.Element => {\r\n const { epiContext } = props;\r\n\r\n let utbetalingsDetaljer: JSX.Element | null = null;\r\n\r\n if(props.resultat.visBoksFa) {\r\n utbetalingsDetaljer = \r\n }\r\n\r\n function hentUtbetalingsMnd(): string {\r\n if(props.valg.bVerdensdel?.value === VerdensdelValg.b5_oseania || props.valg.bVerdensdel?.value === VerdensdelValg.b6_sorAmerika) {\r\n return resolveRawText(epiContext, 'mndJuni');\r\n } else {\r\n return resolveRawText(epiContext, 'mndJuli');\r\n }\r\n }\r\n\r\n function hentBasisStotteHalvtÅr(): number {\r\n if(props.satser === null || props.satser === undefined)\r\n return 0;\r\n\r\n if(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === null || props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === undefined)\r\n return 0;\r\n\r\n return Math.round(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG * 150);\r\n }\r\n\r\n function hentBasisStotteEnMnd(): number {\r\n if(props.satser === null || props.satser === undefined)\r\n return 0;\r\n\r\n if(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === null || props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG === undefined)\r\n return 0;\r\n\r\n return Math.round(props.satser.SATS_ST01_MAKS_BASISSTOTTE_DAG * 30);\r\n }\r\n\r\n return (\r\n\r\n
\r\n
\r\n\r\n
\r\n

\r\n {contentResolver(epiContext, 'kolonneTittelHost')}\r\n

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelDatoUtbetalingsplan')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelBelopUtbetalingsplan')}\r\n
\r\n
\r\n
\r\n
\r\n {hentUtbetalingsMnd()}\r\n
\r\n
\r\n {\r\n //tar minus 0.1 for å unngå feil i avrundingen. \r\n //dersom svaret blir 0.5 så avrunder desember alltid ned, og juni/juli alltid opp.\r\n UtregningUtland.formatNumber(\r\n (\r\n Math.round(((UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).totaltStipendOgLan \r\n + UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan) / 2) - 0.1) \r\n )\r\n + hentBasisStotteHalvtÅr()\r\n , props.locale\r\n )\r\n }\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\r\n {contentResolver(epiContext, 'kolonneTittelVar')}\r\n

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelDatoUtbetalingsplan')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelBelopUtbetalingsplan')}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {contentResolver(epiContext, 'mndDesember')}\r\n
\r\n
\r\n {\r\n UtregningUtland.formatNumber(\r\n (\r\n Math.round((UtregningUtland.regnUtSkolepengerStotte(props.valg, props.satser).totaltStipendOgLan \r\n + UtregningUtland.regnUtReiseStotte(props.valg, props.satser).totaltStipendOgLan) / 2)\r\n )\r\n + hentBasisStotteHalvtÅr()\r\n , props.locale\r\n )\r\n }\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'mndJuni')}\r\n
\r\n
\r\n {UtregningUtland.formatNumber(hentBasisStotteEnMnd(), props.locale)}\r\n  {props.valuta}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {contentResolver(epiContext, 'tittelVenstreSpalte')}\r\n

\r\n {contentResolver(epiContext, 'venstreSpalte')}\r\n
\r\n
\r\n

\r\n {contentResolver(epiContext, 'tittelHoyreSpalte')}\r\n

\r\n {contentResolver(epiContext, 'hoyreSpalte')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {utbetalingsDetaljer}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederUtlandAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(UtbetalingComponent);\r\n","import React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport { connect } from 'react-redux';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { AnyAction } from 'redux';\r\n\r\nimport { EpiContext } from '../Shared/Scripts/Store/EpiContext/Types';\r\nimport { resolveRawText } from '../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { FeilmeldingComponent } from '../Shared/Scripts/Components/FeilmeldingComponent';\r\nimport contentResolver from '../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport RadioButtonsStegContainer from '../Shared/Scripts/Components/RadioButtonsStegComponent';\r\nimport Valg from '../Shared/Scripts/Models/Valg';\r\nimport { DisplayValue } from '../Shared/Scripts/Models/Valg';\r\nimport SelectOptionStegDisplay from '../Shared/Scripts/Components/SelectOptionStegComponent';\r\nimport SkolePengerInputSteg from '../Shared/Scripts/Components/SkolePengerSteg';\r\nimport VelgUniversitetComponentVisning from '../Shared/Scripts/Components/VelgUniversitetComponent';\r\nimport LandOgUniversitetModel from '../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nimport VeilederUtlandDto from './Models/VeilederUtlandDto';\r\nimport { StamdataUtlandHelgradModel } from './Models/StamdataUtlandHelgradModel';\r\nimport { VeilederUtlandAppState } from './Store';\r\nimport * as ValgTypes from './Store/Valg/Types';\r\nimport { ResultatValg } from './Store/Resultat/Types';\r\nimport { updateValg, updateVisning } from './Store/Valg/Actions';\r\nimport * as Ids from './Models/Ids';\r\nimport UtdanningValg from './Utilities/UtdanningTypeValg';\r\nimport VerdensdelValg from './Utilities/VerdensdelValg';\r\nimport { VelgAntallArComponentVisning } from './Components/VelgAntallAr';\r\n\r\nimport { OppsummeringLanOgStipendComponent } from './Components/OppsummeringLanOgStipendSteg';\r\nimport * as UtregningUtland from './Utilities/Utregning';\r\nimport UtregningA from './Components/UtregningA';\r\nimport UtregningB from './Components/UtregningB';\r\nimport UtbetalingComponent from './Components/UtbetalingComponent';\r\nimport SiteImproveHandler, {\r\n SiteImproveState,\r\n SiteImproveEvents,\r\n SiteImproveKategorier,\r\n} from '../Shared/Scripts/Utilities/SiteImproveEventsHandler';\r\n\r\ninterface AppOwnProps {}\r\n\r\nconst RadioButtonsStegComponent = RadioButtonsStegContainer();\r\n\r\ntype AppProps = AppOwnProps & MapStateToProps & MapDispatchToProps;\r\n\r\nReactModal.setAppElement(document.getElementById(Ids.AppContainerId) as HTMLElement);\r\n\r\ninterface AppState {}\r\n\r\nclass App extends React.Component {\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render(): JSX.Element {\r\n const { valg, dispatchUpdateValg, epiContext, satser, resultat, universiteter } = this.props;\r\n const { epiModel, locale, valuta } = this.props.epiContext;\r\n\r\n function registerSiteImproveEvents(): void {\r\n if (!SiteImproveState.Startet) {\r\n if (valg.aUtdanning != undefined) {\r\n //veileder påstartet\r\n SiteImproveState.Startet = true;\r\n SiteImproveHandler.registerSiteImproveEvent(\r\n SiteImproveKategorier.Veileder,\r\n SiteImproveEvents.VeilederStart,\r\n SiteImproveHandler.hentOverskrift(),\r\n );\r\n }\r\n }\r\n\r\n if (!SiteImproveState.Fullfort) {\r\n if (resultat.visBoksFa || resultat.visBoksFb) {\r\n //veileder fullført\r\n SiteImproveState.Fullfort = true;\r\n SiteImproveHandler.registerSiteImproveEvent(\r\n SiteImproveKategorier.Veileder,\r\n SiteImproveEvents.VeilederFullfort,\r\n SiteImproveHandler.hentOverskrift(),\r\n );\r\n }\r\n }\r\n\r\n if (!SiteImproveState.Fullfort_del2) {\r\n if (resultat.visBoksH) {\r\n //veileder fullført\r\n SiteImproveState.Fullfort = true;\r\n SiteImproveHandler.registerSiteImproveEvent(\r\n SiteImproveKategorier.Veileder,\r\n SiteImproveEvents.VeilederFullfort_del2,\r\n SiteImproveHandler.hentOverskrift(),\r\n );\r\n }\r\n }\r\n }\r\n\r\n function getLand(): DisplayValue[] {\r\n const items: DisplayValue[] = [];\r\n\r\n if (universiteter == null || universiteter == undefined || universiteter.length <= 0) return [];\r\n\r\n let annetLand: LandOgUniversitetModel | null = null;\r\n\r\n for (let i = 0; i < universiteter.length; i++) {\r\n if (universiteter[i].Kode === valg.bVerdensdel?.id) {\r\n let erAlleredeLagtTilILandListen: boolean = false;\r\n for (let x = 0; x < items.length; x++) {\r\n if (items[x].id == universiteter[i].Landkode) erAlleredeLagtTilILandListen = true;\r\n }\r\n\r\n if (erAlleredeLagtTilILandListen) continue;\r\n\r\n if (universiteter[i].Landkode === 'E') {\r\n annetLand = universiteter[i];\r\n continue;\r\n }\r\n\r\n if (locale === 'en-US') {\r\n items.push({\r\n id: universiteter[i].Landkode,\r\n displayValue: universiteter[i].EngelskLandNavn,\r\n });\r\n } else {\r\n items.push({\r\n id: universiteter[i].Landkode,\r\n displayValue: universiteter[i].LandNavn,\r\n });\r\n }\r\n }\r\n }\r\n\r\n let sorted: DisplayValue[] = items.sort(function (a, b) {\r\n var nameA = a.displayValue.toUpperCase();\r\n var nameB = b.displayValue.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (annetLand !== null) {\r\n if (locale === 'en-US') {\r\n sorted.push({\r\n id: annetLand.Landkode,\r\n displayValue: annetLand.EngelskLandNavn,\r\n });\r\n } else {\r\n sorted.push({\r\n id: annetLand.Landkode,\r\n displayValue: annetLand.LandNavn,\r\n });\r\n }\r\n }\r\n\r\n return sorted;\r\n }\r\n\r\n function hentUniversiteterBasertPaLandValg() {\r\n let items: DisplayValue[] = [];\r\n\r\n if (valg.cLand?.id === 'E') {\r\n return items;\r\n }\r\n\r\n if (universiteter !== null) {\r\n for (let i = 0; i < universiteter.length; i++) {\r\n if (universiteter[i].Landkode === valg.cLand?.id) {\r\n items.push({ id: universiteter[i].Universitet, displayValue: universiteter[i].Universitet });\r\n }\r\n }\r\n }\r\n return items;\r\n }\r\n\r\n if (epiContext.epiModelFeilet) {\r\n return ;\r\n }\r\n\r\n if (epiModel != null) {\r\n registerSiteImproveEvents()\r\n return (\r\n
\r\n
\r\n ): void => {\r\n dispatchUpdateValg({ aUtdanning: nyttValg, visUtbetalingsplan: false });\r\n }}\r\n neverCollapse={true}\r\n classModifier=\"c-veileder__panel--input-white\"\r\n value={valg.aUtdanning}\r\n />\r\n {resultat.visBoksB && (\r\n \r\n

{contentResolver(epiContext, 'infoVerdensdel')}

\r\n
\r\n }\r\n sporsmal=\"ledetekstVerdensdel\"\r\n neverCollapse={false}\r\n valg={VerdensdelValg.bValg}\r\n onInputChange={(nyttValg: Valg): void => {\r\n dispatchUpdateValg({\r\n bVerdensdel: nyttValg,\r\n cLand: undefined,\r\n dSkolepenger: undefined,\r\n eUniversitetUtvidetStipend: undefined,\r\n visUtbetalingsplan: false,\r\n });\r\n }}\r\n value={valg.bVerdensdel}\r\n />\r\n )}\r\n {resultat.visBoksC && (\r\n ): void => {\r\n dispatchUpdateValg({\r\n cLand: nyttValg,\r\n eUniversitetUtvidetStipend: undefined,\r\n dSkolepenger: undefined,\r\n visUtbetalingsplan: false,\r\n });\r\n }}\r\n value={valg.cLand}\r\n />\r\n )}\r\n {resultat.visBoksD && (\r\n ): void => {\r\n dispatchUpdateValg({ dSkolepenger: nyttValg, visUtbetalingsplan: false });\r\n }}\r\n value={valg.dSkolepenger}\r\n visMerOmSkolePengerLenkeTekst={contentResolver(\r\n epiContext,\r\n 'merOmSkolePengerLenkeTekst',\r\n )}\r\n lukkSkolepengerPopupAriaTekst={resolveRawText(\r\n epiContext,\r\n 'lukkSkolepengerPopupAriaTekst',\r\n )}\r\n tittelMerSkolePengerTekst={contentResolver(epiContext, 'tittelMerSkolePengerTekst', 2)}\r\n brodtekstMerSkolePengerTekst={contentResolver(\r\n epiContext,\r\n 'brodtekstMerSkolePengerTekst',\r\n 2,\r\n )}\r\n locale={locale}\r\n visBiCheckbox={false}\r\n biLabel={null}\r\n />\r\n )}\r\n {resultat.visBoksE && (\r\n ): void => {\r\n dispatchUpdateValg({ eUniversitetUtvidetStipend: nyttValg, visUtbetalingsplan: false });\r\n }}\r\n value={valg.eUniversitetUtvidetStipend}\r\n showSearch={true}\r\n />\r\n )}\r\n {resultat.visBoksFa && (\r\n {\r\n dispatchUpdateValg({ visUtbetalingsplan: visPlanen });\r\n }}\r\n valutaBenevnelseUtregning={valuta}\r\n stipendVilkarTekst={contentResolver(epiContext, 'stipendVilkarTekst')}\r\n stipendTittelUtregning={contentResolver(epiContext, 'stipendTittelUtregning')}\r\n lanTittelUtregning={contentResolver(epiContext, 'lanTittelUtregning')}\r\n tekstForLanOgStipendSomAlleFaar={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaar',\r\n )}\r\n tekstForDeMedSkolepenger={contentResolver(epiContext, 'tekstForDeMedSkolepenger')}\r\n tekstForDeMedSkolepengerOgTilleggsstipend={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipend',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggsstipendOgTilleggslan',\r\n )}\r\n tekstForDeMedSkolepengerOgTilleggslan={contentResolver(\r\n epiContext,\r\n 'tekstForDeMedSkolepengerOgTilleggslan',\r\n )}\r\n resTekstAlleOgRekruttering={contentResolver(\r\n epiContext, 'resTekstAlleOgRekruttering')}\r\n resTekstSkolepengerRekruttering={contentResolver(\r\n epiContext, 'resTekstSkolepengerRekruttering')}\r\n resTekstSkolepengerUtvidetstipendRekruttering={contentResolver(\r\n epiContext, 'resTekstSkolepengerUtvidetstipendRekruttering')}\r\n resTekstSkolepUtvidetstipendUtvidetlanRekruttering={contentResolver(\r\n epiContext, 'resTekstSkolepUtvidetstipendUtvidetlanRekruttering')}\r\n resTekstSkolepengerUtvidetlanRekruttering={contentResolver(\r\n epiContext, 'resTekstSkolepengerUtvidetlanRekruttering')}\r\n vilkarStudieStotteLenkeTekst={contentResolver(\r\n epiContext,\r\n 'vilkarStudieStotteLenkeTekst',\r\n )}\r\n vilkarStudieStotteTittel={contentResolver(epiContext, 'vilkarStudieStotteTittel')}\r\n vilkarStudieStotteTekst={contentResolver(epiContext, 'vilkarStudieStotteTekst')}\r\n vilkarLukkStudieStottePopupAriaTekst={resolveRawText(\r\n epiContext,\r\n 'vilkarLukkStudieStottePopupAriaTekst',\r\n )}\r\n utbetalingsPlanLenkeTekst={contentResolver(epiContext, 'utbetalingsPlanLenkeTekst')}\r\n profesjonUnntakOppsummering={contentResolver(epiContext, 'profesjonUnntakOppsummering')}\r\n locale={locale}\r\n />\r\n )}\r\n {resultat.visBoksFb && (\r\n {\r\n dispatchUpdateValg({ visUtbetalingsplan: visPlanen });\r\n }}\r\n valutaBenevnelseUtregning={valuta}\r\n beskrivelseLanFb={contentResolver(epiContext, 'beskrivelseLanFb')}\r\n overskriftLanFb={contentResolver(epiContext, 'overskriftLanFb')}\r\n tekstForLanOgStipendSomAlleFaar={contentResolver(\r\n epiContext,\r\n 'tekstForLanOgStipendSomAlleFaar',\r\n )}\r\n resTekstAlleOgRekruttering={contentResolver(\r\n epiContext,\r\n 'resTekstAlleOgRekruttering',\r\n )}\r\n vilkarStudieStotteLenkeTekst={contentResolver(\r\n epiContext,\r\n 'vilkarStudieStotteLenkeTekst',\r\n )}\r\n vilkarStudieStotteTittel={contentResolver(epiContext, 'vilkarStudieStotteTittel')}\r\n vilkarStudieStotteTekst={contentResolver(epiContext, 'vilkarStudieStotteTekst')}\r\n vilkarLukkStudieStottePopupAriaTekst={resolveRawText(\r\n epiContext,\r\n 'vilkarLukkStudieStottePopupAriaTekst',\r\n )}\r\n utbetalingsPlanLenkeTekst={contentResolver(epiContext, 'utbetalingsPlanLenkeTekst')}\r\n locale={locale}\r\n />\r\n )}\r\n {resultat.visBetPlan && (\r\n \r\n )}\r\n {resultat.visBoksG && (\r\n ): void => {\r\n dispatchUpdateValg({ gAntallAr: nyttValg });\r\n }}\r\n />\r\n )}\r\n {resultat.visBoksH && (\r\n \r\n )}\r\n
\r\n \r\n );\r\n } else {\r\n return
Laster...
;\r\n }\r\n }\r\n}\r\n\r\ninterface MapStateToProps {\r\n valg: ValgTypes.ValgState;\r\n epiContext: EpiContext;\r\n resultat: ResultatValg;\r\n satser: StamdataUtlandHelgradModel | null;\r\n universiteter: Array | null;\r\n}\r\n\r\ninterface MapDispatchToProps {\r\n dispatchUpdateValg: (newValg: Partial) => void;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch): MapDispatchToProps => ({\r\n dispatchUpdateValg: (newValg: Partial): void => {\r\n dispatch(updateValg(newValg));\r\n dispatch(updateVisning());\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state: VeilederUtlandAppState): MapStateToProps => ({\r\n valg: state.valg,\r\n epiContext: state.epiContext,\r\n resultat: state.resultat,\r\n satser: state.satser,\r\n universiteter: state.universiteter,\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\r\n","import { ValgStateActionTypes, ValgState, UPDATE_VALG } from './Types';\r\n\r\nexport const initialState: ValgState = {\r\n aUtdanning: undefined,\r\n bVerdensdel: undefined,\r\n cLand: undefined,\r\n dSkolepenger: undefined,\r\n eUniversitetUtvidetStipend: undefined,\r\n gAntallAr: undefined,\r\n visUtbetalingsplan: false,\r\n};\r\n\r\nexport function valgReducer(state: ValgState = initialState, action: ValgStateActionTypes): ValgState {\r\n const newState = getNewState();\r\n return newState;\r\n\r\n function getNewState(): ValgState {\r\n switch (action.type) {\r\n case UPDATE_VALG: {\r\n if (action.payload.aUtdanning) {\r\n return {\r\n ...initialState,\r\n ...action.payload,\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n }\r\n}\r\n","import { ResultatValg, SET_VISNING, ResultatActionTypes } from './Types';\r\nimport { ValgStateActionTypes } from '../Valg/Types';\r\n\r\nconst initialState: ResultatValg = {\r\n visBoksB: false,\r\n visBoksC: false,\r\n visBoksD: false,\r\n visBoksE: false,\r\n visBoksFa: false,\r\n visBoksFb: false,\r\n visBoksG: false,\r\n visBoksH: false, \r\n visBetPlan: false,\r\n};\r\n\r\nexport function resultatReducer(\r\n state: ResultatValg = initialState,\r\n action: ValgStateActionTypes | ResultatActionTypes,\r\n): ResultatValg {\r\n switch (action.type) {\r\n case SET_VISNING: {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { StamdataUtlandHelgradModel } from '../../Models/StamdataUtlandHelgradModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport const SET_SATSER = 'SET_SATSER';\r\nexport const SET_UNIVERSITETER = 'SET_UNIVERSITETER';\r\n\r\nexport interface SetSatserAction {\r\n type: typeof SET_SATSER;\r\n payload: StamdataUtlandHelgradModel;\r\n}\r\n\r\nexport interface SetUniversiteterAction {\r\n type: typeof SET_UNIVERSITETER;\r\n payload: Array\r\n}\r\n\r\nexport type UniversitTypes = SetUniversiteterAction;\r\nexport type SatserActionTypes = SetSatserAction;","import { SET_UNIVERSITETER, SET_SATSER, SatserActionTypes, UniversitTypes } from './Types';\r\nimport { StamdataUtlandHelgradModel } from '../../Models/StamdataUtlandHelgradModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nconst initialState: StamdataUtlandHelgradModel | null = null;\r\nconst universitetInitialState: Array | null = null;\r\n\r\nexport function satserReducer(state: StamdataUtlandHelgradModel | null = initialState, action: SatserActionTypes): StamdataUtlandHelgradModel | null {\r\n switch (action.type) {\r\n case SET_SATSER: {\r\n return action.payload;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport function universiteterReducer(state: Array | null = universitetInitialState, action: UniversitTypes): Array | null {\r\n switch (action.type) {\r\n case SET_UNIVERSITETER: {\r\n return action.payload;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import ReduxThunk from 'redux-thunk';\r\nimport { createStore, combineReducers, Store, applyMiddleware } from 'redux';\r\nimport { EpiContext, UpdateEpiContextActionTypes } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport { epiContextReducer } from '../../Shared/Scripts/Store/EpiContext/Reducers';\r\nimport { stegVisningReducer } from '../../Shared/Scripts/Store/StegVisning/Reducers';\r\nimport { EpiAppStateMedSteg } from '../../Shared/Scripts/Store/Types';\r\nimport VeilederUtlandDto from '../Models/VeilederUtlandDto';\r\nimport { valgReducer } from './Valg/Reducers';\r\nimport { resultatReducer } from './Resultat/Reducers';\r\nimport { satserReducer, universiteterReducer } from './Satser/Reducers';\r\n\r\nconst rootReducer = combineReducers({\r\n valg: valgReducer,\r\n epiContext: (\r\n state: EpiContext | undefined,\r\n action: UpdateEpiContextActionTypes,\r\n ): EpiContext => epiContextReducer(state, action),\r\n stegVisning: stegVisningReducer,\r\n resultat: resultatReducer,\r\n satser: satserReducer, \r\n universiteter: universiteterReducer,\r\n});\r\n\r\nexport type VeilederUtlandAppState = EpiAppStateMedSteg & {\r\n valg: ReturnType;\r\n resultat: ReturnType;\r\n satser: ReturnType; \r\n universiteter: ReturnType;\r\n};\r\n\r\nexport default function configureStore(): Store {\r\n return createStore(rootReducer, applyMiddleware(ReduxThunk));\r\n}","import axios, { AxiosResponse } from 'axios';\r\n\r\nexport const getSatser = (): Promise> => {\r\n return axios.get('/api/mt1535/satser/utlandsatser');\r\n};\r\n\r\nexport interface StamdataUtlandHelgradModel {\r\n SATS_ST01_SKOLEPENGESTOTTE_MAKS_PER_AR_NORDEN: number;\r\n SATS_ST01_MAKS_BASISSTOTTE_DAG: number;\r\n SATS_ST01_REISETILSKUDD_NORD_OG_MELLOM_AMERIKA: number;\r\n SATS_ST01_REISETILSKUDD_ASIA: number;\r\n SATS_ST01_REISETILSKUDD_OSEANIA: number;\r\n SATS_ST01_REISETILSKUDD_AFRIKA: number;\r\n SATS_ST01_REISETILSKUDD_SOR_AMERIKA: number;\r\n SATS_ST01_REISETILSKUDD_EUROPA: number;\r\n SATS_ST01_SKOLEPENGESTOTTE_UTENFOR_NORDEN_MAKS_PER_AAR: number;\r\n SATS_ST01_TILLEGGSLAAN_MAKS_PER_AAR: number;\r\n SATS_ST01_TILLEGGSTIPEND_MAKS_PER_AAR: number;\r\n SATS_ST01_SKOLEPENGEGRUNNLAG_STIPEND_MAKS_PER_AAR: number;\r\n SATS_ST01_STIPENDTILUTVEKSLING_DAGSATS: number;\r\n}\r\n","import { SET_SATSER, SetSatserAction, SetUniversiteterAction, SET_UNIVERSITETER } from './Types';\r\nimport { StamdataUtlandHelgradModel } from '../../Models/StamdataUtlandHelgradModel';\r\nimport LandOgUniversitetModel from '../../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport function setSatser(satser: StamdataUtlandHelgradModel): SetSatserAction {\r\n return {\r\n type: SET_SATSER,\r\n payload: satser,\r\n };\r\n}\r\n\r\nexport function setUniversiteter(universiteter: Array): SetUniversiteterAction {\r\n return {\r\n type: SET_UNIVERSITETER,\r\n payload: universiteter\r\n }\r\n}","import axios, { AxiosResponse } from 'axios';\r\nimport LandOgUniversitetModel from '../../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nexport const hentUniversiteter = (id: string): Promise>> => {\r\n return axios.get>('/api/mt1535/satser/utlandhelgraduniversiteter/' + id);\r\n};","import React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\r\nimport App from './App';\r\nimport { AxiosResponse } from 'axios';\r\nimport configureStore from './Store';\r\nimport InitEpiMessages from '../Shared/Scripts/Utilities/EpiMessages';\r\nimport { updateLanguage } from '../Shared/Scripts/Store/EpiContext/Actions';\r\nimport { epiResolveLanguage } from '../Shared/Scripts/Utilities/EpiResolveLanguage';\r\nimport { AppContainerId } from './Models/Ids';\r\nimport * as StamdataUtlandHelgradModel from './Models/StamdataUtlandHelgradModel';\r\nimport { setSatser, setUniversiteter } from './Store/Satser/Actions';\r\nimport * as Universiteter from './Utilities/Universiteter';\r\nimport LandOgUniversitetModel from '../Shared/Scripts/Models/LandOgUniversitetModel';\r\n\r\nconst store = configureStore();\r\nstore.dispatch(updateLanguage(epiResolveLanguage()));\r\n\r\nconst container = document.getElementById(AppContainerId);\r\n\r\nif (container != null) {\r\n const root = createRoot(container!);\r\n const contentLink = container.attributes['data-content'].value as string;\r\n InitEpiMessages(store, contentLink);\r\n\r\n StamdataUtlandHelgradModel.getSatser()\r\n .then((response: AxiosResponse): void => {\r\n store.dispatch(setSatser(response.data));\r\n })\r\n .catch((reason: any): void => {\r\n //store.dispatch(setVisning({ visGenerellFeil: true }));\r\n });\r\n\r\n Universiteter.hentUniversiteter(contentLink)\r\n .then((response: AxiosResponse>): void => {\r\n store.dispatch(setUniversiteter(response.data));\r\n }).catch((reason: any): void => {\r\n //store.dispatch(setVisning({ visGenerellFeil: true }));\r\n });\r\n\r\n const AppRoot = (): JSX.Element => (\r\n \r\n \r\n \r\n );\r\n\r\n root.render();\r\n}"],"names":["useState","jsx","jsxs","formatNumber","UtregningA","visUtbetalingsplan","useEffect","UtregningUtland.regnUtRekrutteringsstipend","UtregningUtland.harValgtGodkjentUniversitetSomGirUtvidetStipend","UtregningUtland.formatNumber","UtregningUtland.regnUtBasisLan","UtregningUtland.regnUtReiseStotte","UtregningUtland.regnUtSkolepengerStotte","UtregningUtland.regnUtSkolepengeUtvidetStipend","contentResolver","UtbetalingDetaljerComponent","Ids.AppContainerId","Ids.BoksA","Ids.BoksB","Ids.BoksD","VelgUniversitetComponentVisning","UtregningB","UtbetalingComponent","Ids.BoksG","initialState","ReduxThunk","createRoot","StamdataUtlandHelgradModel.getSatser","Universiteter.hentUniversiteter","App"],"mappings":"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"}