{"version":3,"file":"veilederHogUNorge-C98KiJd8.js","sources":["../../../Features/VeilederHoyskoleOgUniversitetNorge/Kalkulator.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/A-StudiestotteValg.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/B-SemestertypeValg.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/E-SkolepengerValg.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/D-BostedValg.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Veileder.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Valg/Types.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/ValideringParameters.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Resultat/Types.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Resultat/Actions.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Valg/Actions.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Ids.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Components/G-ResultatComponent.tsx","../../../Features/VeilederHoyskoleOgUniversitetNorge/Components/H-ResultatComponent.tsx","../../../Features/VeilederHoyskoleOgUniversitetNorge/Components/UtbetalingSemesterComponent.tsx","../../../Features/VeilederHoyskoleOgUniversitetNorge/Components/I-ResultatComponent.tsx","../../../Features/VeilederHoyskoleOgUniversitetNorge/App.tsx","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Valg/Reducers.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Resultat/Reducers.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Satser/Types.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Satser/Reducers.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/index.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Utilities/SatserApi.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/Store/Satser/Actions.ts","../../../Features/VeilederHoyskoleOgUniversitetNorge/index.tsx"],"sourcesContent":["import { Termin, Utbetalingsplan } from './Models/Utbetalingsplan';\r\n\r\nexport const beregnStipendOgLan = (\r\n antallManeder: number,\r\n skolepengebelop: number,\r\n studiepoeng: number,\r\n basisstotte: number,\r\n): number => {\r\n let totalsum = 0;\r\n\r\n if (antallManeder >= 10) {\r\n totalsum = (antallManeder * basisstotte) / (60 / studiepoeng) + skolepengebelop;\r\n } else {\r\n totalsum = (antallManeder * basisstotte) / (30 / studiepoeng) + skolepengebelop;\r\n }\r\n return totalsum;\r\n};\r\n\r\nexport const beregnStipend = (borteboer: boolean, totalsum: number, skolepenger: number): number => {\r\n return borteboer ? (totalsum - skolepenger) * 0.4 : 0;\r\n};\r\n\r\nexport const beregnLan = (borteboer: boolean, totalsum: number, skolepenger: number): number => {\r\n return borteboer ? (totalsum - skolepenger) * 0.6 + skolepenger : totalsum;\r\n};\r\n\r\nexport const beregnUtbetalingsplan = (\r\n hostManeder: number,\r\n varManeder: number,\r\n stipendOgLan: number,\r\n skolepenger: number,\r\n): Utbetalingsplan => {\r\n const stipendOgLanUtenSkolepenger = stipendOgLan - skolepenger;\r\n const skalHaJuniBetaling = varManeder === 6;\r\n const harHostPeriode = hostManeder > 0;\r\n const harVarPeriode = varManeder > 0;\r\n const heltSkolear = harHostPeriode && harVarPeriode;\r\n\r\n const stipendOgLanDeltPaAntallManeder = stipendOgLanUtenSkolepenger / (varManeder + hostManeder);\r\n\r\n const stipendOgLanVar = stipendOgLanDeltPaAntallManeder * varManeder;\r\n const stipendOgLanHost = stipendOgLanDeltPaAntallManeder * hostManeder;\r\n\r\n const stipendOgLanJuni = skalHaJuniBetaling ? stipendOgLanVar / varManeder : 0;\r\n const stipendOgLanVanUtenJuni = stipendOgLanVar - stipendOgLanJuni;\r\n const skolepengerHalvar = heltSkolear ? skolepenger / 2 : skolepenger;\r\n\r\n const hostPeriode = harHostPeriode\r\n ? beregnPeriode(8, hostManeder, stipendOgLanHost, skolepengerHalvar)\r\n : new Array();\r\n const vanligeVarManeder = skalHaJuniBetaling ? varManeder - 1 : varManeder;\r\n const varPeriode = harVarPeriode\r\n ? beregnPeriode(1, vanligeVarManeder, stipendOgLanVanUtenJuni, skolepengerHalvar)\r\n : new Array();\r\n\r\n if (skalHaJuniBetaling) {\r\n varPeriode.push({\r\n mnd: 6,\r\n terminbelop: stipendOgLanJuni,\r\n });\r\n }\r\n\r\n return {\r\n terminerhost: harHostPeriode\r\n ? {\r\n sum: stipendOgLanHost + skolepengerHalvar,\r\n terminer: hostPeriode,\r\n }\r\n : null,\r\n terminervar: harVarPeriode\r\n ? {\r\n sum: stipendOgLanVar + skolepengerHalvar,\r\n terminer: varPeriode,\r\n }\r\n : null,\r\n };\r\n};\r\n\r\nconst beregnPeriode = (\r\n startManed: number,\r\n antallManeder: number,\r\n stipendOgLanPeriode: number,\r\n skolepengerPeriode: number,\r\n): Termin[] => {\r\n const periode = new Array();\r\n periode.push({\r\n mnd: startManed,\r\n terminbelop: stipendOgLanPeriode * 0.4 + skolepengerPeriode,\r\n });\r\n\r\n const andreManed = startManed + 1;\r\n const sisteManed = startManed + antallManeder;\r\n for (let maned = andreManed; maned < sisteManed; maned++) {\r\n periode.push({\r\n mnd: maned,\r\n terminbelop: stipendOgLanPeriode * 0.15,\r\n });\r\n }\r\n\r\n return periode;\r\n};\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\n\r\nconst heltAr = 'a1-heltAr';\r\nconst ettSemester = 'a2-ettSemester';\r\nconst deltid = 'a3-deltid';\r\n\r\nconst aValg: RadioButtonValgModel[] = [\r\n {\r\n id: 'a1',\r\n value: heltAr,\r\n tekst: 'valgFulltidHeltAr',\r\n },\r\n {\r\n id: 'a2',\r\n value: ettSemester,\r\n tekst: 'valgFulltidEttSemester',\r\n },\r\n { id: 'a3', value: deltid, tekst: 'valgDeltidsutdanning' },\r\n];\r\n\r\nexport default {\r\n a1_heltAr: heltAr,\r\n a2_ettSemester: ettSemester,\r\n a3_deltid: deltid,\r\n aValg,\r\n};\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\n\r\nconst heltAr = 'b1-heltAr';\r\nconst host = 'b2-host';\r\nconst vaar = 'b3-var';\r\nconst hostx = 'b4-host';\r\nconst vaarx = 'b5-var';\r\n\r\nconst map = {\r\n 'b1-heltAr': 10,\r\n 'b2-host': 5,\r\n 'b3-var': 5,\r\n 'b4-host': 5,\r\n 'b5-var': 6,\r\n};\r\n\r\nconst bValg: RadioButtonValgModel[] = [\r\n { id: 'b1', value: heltAr, tekst: 'valgHeleAret' },\r\n { id: 'b2', value: host, tekst: 'valgHostsemester' },\r\n { id: 'b3', value: vaar, tekst: 'valgVarsemester' },\r\n];\r\n\r\nconst bxValg: RadioButtonValgModel[] = [\r\n { id: 'b4', value: hostx, tekst: 'valgHostHalvtSemester' },\r\n { id: 'b5', value: vaarx, tekst: 'valgVarHalvtSemester' },\r\n];\r\n\r\nexport default {\r\n b1_heltAr: heltAr,\r\n b2_host: host,\r\n b3_var: vaar,\r\n b4_host: hostx,\r\n b5_var: vaarx,\r\n bValg,\r\n bxValg,\r\n\r\n antallMnd: (semesterType: string): number => {\r\n return map[semesterType];\r\n },\r\n};\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\n\r\nconst ja = 'e1-ja';\r\nconst nei = 'e2-nei';\r\n\r\nconst eValg: RadioButtonValgModel[] = [\r\n {\r\n id: 'e1',\r\n value: ja,\r\n tekst: 'valgBetalerSkolepenger',\r\n },\r\n {\r\n id: 'e2',\r\n value: nei,\r\n tekst: 'valgBetalerIkkeSkolepenger',\r\n },\r\n];\r\n\r\nexport default {\r\n e1_ja: ja,\r\n e2_nei: nei,\r\n eValg,\r\n};\r\n","import { RadioButtonValgModel } from '../../Shared/Scripts/Components/RadioButtonValg';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\n\r\nconst borte = 'd1-borte';\r\nconst hjemme = 'd2-hjemme';\r\n\r\nconst dValg: RadioButtonValgModel[] = [\r\n { id: 'd1', value: borte, tekst: 'valgBorForMegSelv' },\r\n {\r\n id: 'd2',\r\n value: hjemme,\r\n tekst: 'valgBorMedForeldre',\r\n },\r\n];\r\n\r\nexport default {\r\n d1_hjemme: hjemme,\r\n d2_borte: borte,\r\n dValg,\r\n};\r\n","import * as Kalkulator from './Kalkulator';\r\nimport A from './Utilities/A-StudiestotteValg';\r\nimport B from './Utilities/B-SemestertypeValg';\r\nimport E from './Utilities/E-SkolepengerValg';\r\nimport D from './Utilities/D-BostedValg';\r\nimport { ValgState } from './Store/Valg/Types';\r\nimport Resultat from './Models/Resultat';\r\nimport { Utbetalingsplan } from './Models/Utbetalingsplan';\r\nimport { ResultatValg } from './Store/Resultat/Types';\r\nimport VeilederHounDto from './Models/VeilederHounDto';\r\nimport { Satser } from './Utilities/SatserApi';\r\n\r\nexport const StudiepoengHeltAr = 60;\r\nexport const StudiepoengEttSemester = 30;\r\n\r\nexport const getA = (state: ValgState): string | undefined => {\r\n return state.aStotte !== undefined ? state.aStotte.value : undefined;\r\n};\r\n\r\nexport const getB = (state: ValgState): string | undefined => {\r\n return state.bSemester !== undefined ? state.bSemester.value : undefined;\r\n};\r\n\r\nexport const getBx = (state: ValgState): string | undefined => {\r\n return state.bxSemester !== undefined ? state.bxSemester.value : undefined;\r\n};\r\n\r\nexport const getD = (state: ValgState): string | undefined => {\r\n return state.dBosted !== undefined ? state.dBosted.value : undefined;\r\n};\r\n\r\nexport const getE = (state: ValgState): string | undefined => {\r\n return state.eSkolepenger !== undefined ? state.eSkolepenger.value : undefined;\r\n};\r\n\r\nexport const maksSkolepenger = (state: ValgState, resultat: ResultatValg, satser: Satser): number => {\r\n // finn max belop skolepenger\r\n const c = getStudiepoengForBeregning(state, resultat);\r\n return Math.ceil((satser.ST01_MaksSkolepengestottePerAr * c) / StudiepoengHeltAr);\r\n};\r\n\r\nexport const skolepengerInfo = (state: ValgState): keyof VeilederHounDto => {\r\n if (getA(state) === A.a1_heltAr) {\r\n return 'maksSkolepengerFulltidHeltAr';\r\n } else if (getA(state) === A.a2_ettSemester) {\r\n return 'maksSkolepengerFulltidHalvtAr';\r\n } else if (getA(state) === A.a3_deltid && getB(state) === B.b1_heltAr) {\r\n return 'maksSkolepengerDeltidHeltAr';\r\n } else {\r\n return 'maksSkolepengerDeltidHalvtAr';\r\n }\r\n};\r\n\r\nexport const beregnStipendOgLan = (state: ValgState, resultat: ResultatValg, satser: Satser): number => {\r\n const studiepoeng = getStudiepoengForBeregning(state, resultat);\r\n const antallMnd = getAntallMndForBeregning(state, resultat, studiepoeng);\r\n const skolepenger = hentSkolepengerForBeregning(state, resultat, satser);\r\n\r\n return Kalkulator.beregnStipendOgLan(antallMnd, skolepenger, studiepoeng, satser.ST01_MaksBasisstotteperManed);\r\n};\r\n\r\nexport const beregnAndelStipendOgLan = (\r\n state: ValgState,\r\n resultat: ResultatValg,\r\n stipendOgLan: number,\r\n satser: Satser,\r\n): Resultat => {\r\n const skolepenger = hentSkolepengerForBeregning(state, resultat, satser);\r\n const erBorteboer = getD(state) === D.d2_borte;\r\n\r\n return {\r\n stipendOgLan,\r\n stipend: Kalkulator.beregnStipend(erBorteboer, stipendOgLan, skolepenger),\r\n lan: Kalkulator.beregnLan(erBorteboer, stipendOgLan, skolepenger),\r\n };\r\n};\r\n\r\nexport const utbetalingsplan = (\r\n state: ValgState,\r\n resultat: ResultatValg,\r\n stipendOgLan: number,\r\n satser: Satser,\r\n): Utbetalingsplan => {\r\n const studiepoeng = getStudiepoengForBeregning(state, resultat);\r\n const skolepenger = hentSkolepengerForBeregning(state, resultat, satser);\r\n\r\n const antallMnd = getAntallMndForBeregning(state, resultat, studiepoeng);\r\n let hostperiode = 0;\r\n let varperiode = 0;\r\n\r\n if (antallMnd >= 10) {\r\n hostperiode = 5;\r\n varperiode = antallMnd === 11 ? 6 : 5;\r\n } else {\r\n const semesterType = getSemesterTypeForBeregning(state, resultat);\r\n hostperiode = semesterType === B.b2_host || semesterType === B.b4_host ? antallMnd : 0;\r\n varperiode = semesterType === B.b3_var || semesterType === B.b5_var ? antallMnd : 0;\r\n }\r\n\r\n return Kalkulator.beregnUtbetalingsplan(hostperiode, varperiode, stipendOgLan, skolepenger);\r\n};\r\n\r\nconst hentSkolepengerForBeregning = (state: ValgState, resultat: ResultatValg, satser: Satser): number => {\r\n return getE(state) === E.e1_ja && state.fSpBelop\r\n ? Math.max(Math.min(state.fSpBelop, maksSkolepenger(state, resultat, satser)), 0)\r\n : 0;\r\n};\r\n\r\nconst getStudiepoengForBeregning = (state: ValgState, resultat: ResultatValg): number => {\r\n return resultat.visBoksC\r\n ? Math.max(Math.min(state.cSp || 0, StudiepoengHeltAr), 0)\r\n : resultat.visBoksCx\r\n ? Math.max(Math.min(state.cxSp || 0, StudiepoengEttSemester), 0)\r\n : getA(state) === A.a1_heltAr\r\n ? StudiepoengHeltAr\r\n : StudiepoengEttSemester;\r\n};\r\n\r\nconst getAntallMndForBeregning = (state: ValgState, resultat: ResultatValg, studiepoeng: number): number => {\r\n // Fulltid\r\n if (studiepoeng === StudiepoengHeltAr) {\r\n return 11;\r\n }\r\n\r\n const semesterType = getSemesterTypeForBeregning(state, resultat);\r\n // Deltid med heltidsbelastning\r\n if (erB3EllerB5(semesterType) && studiepoeng === StudiepoengEttSemester) {\r\n return 6;\r\n\r\n // Enkeltsemester og deltid\r\n } else {\r\n return B.antallMnd(semesterType);\r\n }\r\n};\r\n\r\nconst erB3EllerB5 = (semesterType: string): boolean => {\r\n return semesterType === B.b5_var || semesterType === B.b3_var;\r\n};\r\n\r\nconst getSemesterTypeForBeregning = (state: ValgState, resultat: ResultatValg): string => {\r\n const semestertypeRaw = resultat.visBoksB ? getB(state) : getBx(state);\r\n if (!semestertypeRaw) {\r\n throw new Error('Beregning feilet pga. B eller Bx ikke er satt');\r\n }\r\n return semestertypeRaw;\r\n};\r\n","import Valg from '../../../Shared/Scripts/Models/Valg';\r\n\r\nexport interface ValgState {\r\n aStotte?: Valg;\r\n bSemester?: Valg;\r\n bxSemester?: Valg;\r\n cSp?: number;\r\n cxSp?: number;\r\n dBosted?: Valg;\r\n eSkolepenger?: Valg;\r\n fSpBelop?: number;\r\n visUtbetalingsplan: boolean;\r\n visVilkar: boolean;\r\n visFordeling: boolean;\r\n}\r\n\r\nexport const UPDATE_VALG = 'UPDATE_VALG';\r\nexport const TOGGLE_UTBETALINGSPLAN = 'TOGGLE_UTBETALINGSPLAN';\r\nexport const TOGGLE_VILKAR = 'TOGGLE_VILKAR';\r\nexport const TOGGLE_FORDELING = 'TOGGLE_FORDELING';\r\n\r\nexport interface UpdateValgAction {\r\n type: typeof UPDATE_VALG;\r\n payload: Partial;\r\n}\r\n\r\nexport interface ToogleUtbetalingsplanAction {\r\n type: typeof TOGGLE_UTBETALINGSPLAN;\r\n}\r\n\r\nexport interface ToogleVilkarAction {\r\n type: typeof TOGGLE_VILKAR;\r\n}\r\n\r\nexport interface ToogleFordelingAction {\r\n type: typeof TOGGLE_FORDELING;\r\n}\r\n\r\nexport type ValgStateActionTypes =\r\n | UpdateValgAction\r\n | ToogleVilkarAction\r\n | ToogleFordelingAction\r\n | ToogleUtbetalingsplanAction;\r\n","import { NumberValidering } from '../../Shared/Scripts/Utilities/Validering';\r\nimport { StudiepoengHeltAr, StudiepoengEttSemester } from '../Veileder';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { tilPengerFormat } from '../../Shared/Scripts/Utilities/Formatters';\r\n\r\nexport const CStudiepoengValidering: NumberValidering = {\r\n min: 1,\r\n max: StudiepoengHeltAr,\r\n minFeil: 'obsmeldingAntallStudiepoengMin',\r\n maxFeil: 'obsmeldingAntallStudiepoengHeltid',\r\n variablesMap: new Map([['${min}', '0'], ['${max}', StudiepoengHeltAr.toString()]]),\r\n};\r\n\r\nexport const CxStudiepoengValidering: NumberValidering = {\r\n min: 1,\r\n max: StudiepoengEttSemester,\r\n minFeil: 'obsmeldingAntallStudiepoengMin',\r\n maxFeil: 'obsmeldingAntallStudiepoengDeltid',\r\n variablesMap: new Map([['${min}', '0'], ['${max}', StudiepoengEttSemester.toString()]]),\r\n};\r\n\r\nexport const fSkolepengerValidering = (maxVerdi: number, locale: string): NumberValidering => {\r\n return {\r\n min: 0,\r\n max: maxVerdi,\r\n minFeil: 'obsMeldingSkolepengerMin',\r\n maxFeil: 'obsMeldingSkolepengerMax',\r\n variablesMap: new Map([['${belop}', tilPengerFormat(maxVerdi, locale)]]),\r\n };\r\n};\r\n","import { ValideringsResultat } from '../../../Shared/Scripts/Models/ValideringsResultat';\r\n\r\nexport type ResultatValg = ResultatValgVisning & ResultatValgValidering;\r\n\r\nexport interface ResultatValgVisning {\r\n visBoksB: boolean;\r\n visBoksBx: boolean;\r\n visBoksC: boolean;\r\n visBoksCx: boolean;\r\n visBoksE: boolean;\r\n visBoksF: boolean;\r\n visResultat: boolean;\r\n visFordeling: boolean;\r\n visGenerellFeil: boolean;\r\n}\r\n\r\nexport interface ResultatValgValidering {\r\n cValidation?: ValideringsResultat;\r\n cXValidation?: ValideringsResultat;\r\n fValidation?: ValideringsResultat;\r\n}\r\n\r\nexport const UPDATE_VALIDERING = 'UPDATE_VALIDERING';\r\nexport const SET_VISNING = 'SET_VISNING';\r\n\r\nexport interface UpdateValidationAction {\r\n type: typeof UPDATE_VALIDERING;\r\n payload: Partial;\r\n}\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 | UpdateValidationAction;\r\n","import {\r\n SetVisningAction,\r\n SET_VISNING,\r\n ResultatValgVisning,\r\n ResultatValgValidering,\r\n UPDATE_VALIDERING,\r\n UpdateValidationAction,\r\n} 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\r\nexport function updateValidation(validation: Partial): UpdateValidationAction {\r\n return {\r\n type: UPDATE_VALIDERING,\r\n payload: validation,\r\n };\r\n}\r\n","import {\r\n ValgStateActionTypes,\r\n TOGGLE_UTBETALINGSPLAN,\r\n ToogleUtbetalingsplanAction,\r\n TOGGLE_VILKAR,\r\n ToogleFordelingAction,\r\n ToogleVilkarAction,\r\n TOGGLE_FORDELING,\r\n UPDATE_VALG,\r\n} from './Types';\r\n\r\nimport { ThunkAction, ThunkDispatch } from 'redux-thunk';\r\nimport { VeilederHounAppState } from '..';\r\nimport { AnyAction } from 'redux';\r\nimport { maksSkolepenger, getA, getB, getBx, getE, getD } from '../../Veileder';\r\nimport { fSkolepengerValidering } from '../../Utilities/ValideringParameters';\r\nimport { validerMinMax } from '../../../Shared/Scripts/Utilities/Validering';\r\nimport { setVisning, updateValidation } from '../Resultat/Actions';\r\nimport BSemesterValg from '../../Utilities/B-SemestertypeValg';\r\nimport AStotteValg from '../../Utilities/A-StudiestotteValg';\r\nimport ESpValg from '../../Utilities/E-SkolepengerValg';\r\nimport { ValideringsResultat } from '../../../Shared/Scripts/Models/ValideringsResultat';\r\nimport { ValgState } from '../../../VeilederOmgjoringBasisLan/Store/Valg/Types';\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 function toggleUtbetalingsplan(): ToogleUtbetalingsplanAction {\r\n return {\r\n type: TOGGLE_UTBETALINGSPLAN,\r\n };\r\n}\r\n\r\nexport function toggleVilkar(): ToogleVilkarAction {\r\n return {\r\n type: TOGGLE_VILKAR,\r\n };\r\n}\r\n\r\nexport function toggleFordeling(): ToogleFordelingAction {\r\n return {\r\n type: TOGGLE_FORDELING,\r\n };\r\n}\r\n\r\nexport const updateVisning = (): ThunkAction => {\r\n return (\r\n dispatch: ThunkDispatch,\r\n getState: () => VeilederHounAppState,\r\n ): void => {\r\n const currentState = getState();\r\n const visBoksB = visB(currentState);\r\n const visBoksBx = visBx(currentState);\r\n const visBoksC = visC(currentState, visBoksB);\r\n const visBoksCx = visCx(currentState, visBoksB);\r\n const visBoksE = visE(currentState, visBoksBx, visBoksC, visBoksCx);\r\n const visBoksF = visF(currentState, visBoksE);\r\n const fValidation = isFValid(currentState, visBoksF);\r\n const visResultat = visRes(currentState, visBoksE, visBoksF, fValidation);\r\n const visFordeling = visResFordeling(currentState, visResultat);\r\n\r\n dispatch(updateValidation({ fValidation }));\r\n dispatch(\r\n setVisning({\r\n visBoksB,\r\n visBoksBx,\r\n visBoksC,\r\n visBoksCx,\r\n visBoksE,\r\n visBoksF,\r\n visFordeling,\r\n visResultat,\r\n }),\r\n );\r\n };\r\n};\r\n\r\nconst visB = (state: VeilederHounAppState): boolean => {\r\n return getA(state.valg) === AStotteValg.a3_deltid;\r\n};\r\n\r\nconst visBx = (state: VeilederHounAppState): boolean => {\r\n return getA(state.valg) === AStotteValg.a2_ettSemester;\r\n};\r\n\r\nconst visC = (state: VeilederHounAppState, visBoksB: boolean): boolean => {\r\n return visBoksB && getB(state.valg) === BSemesterValg.b1_heltAr;\r\n};\r\n\r\nconst visCx = (state: VeilederHounAppState, visBoksB: boolean): boolean => {\r\n return visBoksB && (getB(state.valg) === BSemesterValg.b2_host || getB(state.valg) === BSemesterValg.b3_var);\r\n};\r\n\r\nconst visE = (state: VeilederHounAppState, visBoksBx: boolean, visBoksC: boolean, visBoksCx: boolean): boolean => {\r\n return (\r\n getA(state.valg) === AStotteValg.a1_heltAr ||\r\n (visBoksBx && getBx(state.valg) !== undefined) ||\r\n (visBoksC && state.valg.cSp !== undefined && isValid(state.resultat.cValidation)) ||\r\n (visBoksCx && state.valg.cxSp !== undefined && isValid(state.resultat.cXValidation))\r\n );\r\n};\r\n\r\nconst visF = (state: VeilederHounAppState, visBoksE: boolean): boolean => {\r\n return visBoksE && getE(state.valg) === ESpValg.e1_ja;\r\n};\r\n\r\nconst visRes = (\r\n state: VeilederHounAppState,\r\n visBoksE: boolean,\r\n visBoksF: boolean,\r\n fValidation: ValideringsResultat | undefined,\r\n): boolean => {\r\n return (\r\n (visBoksE && getE(state.valg) === ESpValg.e2_nei) ||\r\n (visBoksF && state.valg.fSpBelop !== undefined && isValid(fValidation))\r\n );\r\n};\r\n\r\nconst visResFordeling = (state: VeilederHounAppState, visResultat: boolean): boolean => {\r\n return visResultat && getD(state.valg) !== undefined;\r\n};\r\n\r\nconst isFValid = (state: VeilederHounAppState, visBoksF: boolean): ValideringsResultat | undefined => {\r\n if (visBoksF && state.valg.fSpBelop !== undefined && state.satser != null) {\r\n const maxSkolepenger = maksSkolepenger(state.valg, state.resultat, state.satser);\r\n const valideringParameters = fSkolepengerValidering(maxSkolepenger, state.epiContext.locale);\r\n const validering = validerMinMax(state.epiContext, state.valg.fSpBelop, valideringParameters);\r\n return validering;\r\n }\r\n return undefined;\r\n};\r\n\r\nconst isValid = (resultat: ValideringsResultat | undefined): boolean => {\r\n return resultat !== undefined && resultat.isValid;\r\n};\r\n","export const AppContainerId = 'veilederhoyskoleuniversitet';\r\nexport const BoksA = 'boks-a';\r\nexport const BoksB = 'boks-b';\r\nexport const BoksBx = 'boks-bx';\r\nexport const BoksC = 'boks-c';\r\nexport const BoksCx = 'boks-cx';\r\nexport const BoksD = 'boks-d';\r\nexport const BoksE = 'boks-e';\r\nexport const BoksF = 'boks-f';\r\nexport const ResultatG = 'resultat-g';\r\nexport const ResultatH = 'resultat-h';\r\n","import React from 'react';\r\nimport AStotteValg from '../Utilities/A-StudiestotteValg';\r\nimport BSemesterValg from '../Utilities/B-SemestertypeValg';\r\nimport { tilPengerFormat } from '../../Shared/Scripts/Utilities/Formatters';\r\nimport { Utbetalingsplan } from '../Models/Utbetalingsplan';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { connect } from 'react-redux';\r\nimport { VeilederHounAppState } from '../Store';\r\nimport { toggleUtbetalingsplan, toggleVilkar } from '../Store/Valg/Actions';\r\nimport contentResolver, { resolveRawText } from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\nimport { ResultatG } from '../Ids';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport { updateZIndex } from '../../Shared/Scripts/Store/EpiContext/Actions';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\n\r\ninterface GResultOwnProps {\r\n idA?: string;\r\n idB?: string;\r\n verdiF?: number;\r\n resultat: number;\r\n utbetalingsplan: Utbetalingsplan;\r\n}\r\n\r\ntype GResultatProps = MapStateToProps & MapDispatchToProps & GResultOwnProps;\r\n\r\nclass GResultatComponent extends React.PureComponent {\r\n utbetalingsplanRef = React.createRef();\r\n\r\n constructor(props: GResultatProps) {\r\n super(props);\r\n this.onVilkarClick = this.onVilkarClick.bind(this);\r\n this.onVisUtbetalingClicked = this.onVisUtbetalingClicked.bind(this);\r\n this.onRequestClose = this.onRequestClose.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n updateLiveMessage();\r\n }\r\n\r\n onVisUtbetalingClicked(event: React.MouseEvent): void {\r\n this.props.toggleUtbetalingsplan();\r\n }\r\n\r\n onRequestClose(): void {\r\n this.props.updateZIndex(1);\r\n this.props.toggleVilkar();\r\n }\r\n\r\n onVilkarClick(event: React.MouseEvent): void {\r\n this.props.updateZIndex(2);\r\n this.props.toggleVilkar();\r\n }\r\n\r\n erHeltAr = (valgA: string | undefined, valgB: string | undefined): boolean => {\r\n return (\r\n valgA === AStotteValg.a1_heltAr || (valgA === AStotteValg.a3_deltid && valgB === BSemesterValg.b1_heltAr)\r\n );\r\n };\r\n\r\n harSkolepenger = (skolepengelan: number | undefined): boolean => {\r\n return (skolepengelan ? skolepengelan : 0) > 0;\r\n };\r\n\r\n render(): JSX.Element {\r\n const { idA, idB, verdiF, resultat, visUtbetalingsplan, visVilkar, epiContext } = this.props;\r\n const { locale, valuta } = this.props.epiContext;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {contentResolver(\r\n epiContext,\r\n this.erHeltAr(idA, idB) ? 'tittelEttSkolear' : 'tittelEttSemester',\r\n )}\r\n

\r\n
\r\n
\r\n
\r\n {tilPengerFormat(resultat, locale)}\r\n  {valuta}\r\n
\r\n

\r\n {contentResolver(epiContext, 'ytelserBasisstotte')}\r\n {this.harSkolepenger(verdiF) ? contentResolver(epiContext, 'ytelserSkolepenger') : null}\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 {contentResolver(epiContext, 'lenketekstUtbetalingsplan')}\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 visUtbetalingsplan: boolean;\r\n visVilkar: boolean;\r\n}\r\n\r\ninterface MapDispatchToProps {\r\n toggleUtbetalingsplan: typeof toggleUtbetalingsplan;\r\n toggleVilkar: typeof toggleVilkar;\r\n updateZIndex: typeof updateZIndex;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederHounAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n visUtbetalingsplan: state.valg.visUtbetalingsplan,\r\n visVilkar: state.valg.visVilkar,\r\n };\r\n },\r\n { toggleUtbetalingsplan, toggleVilkar, updateZIndex },\r\n)(GResultatComponent);\r\n","import React from 'react';\r\nimport Resultat from '../Models/Resultat';\r\nimport DBostedValg from '../Utilities/D-BostedValg';\r\nimport { tilPengerFormat } from '../../Shared/Scripts/Utilities/Formatters';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport { VeilederHounAppState } from '../Store';\r\nimport { connect } from 'react-redux';\r\nimport { toggleFordeling } from '../Store/Valg/Actions';\r\nimport contentResolver, { resolveRawText } from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\nimport { ResultatH } from '../Ids';\r\nimport { ModalCompontent } from '../../Shared/Scripts/Components/ModalComponent';\r\nimport { updateZIndex } from '../../Shared/Scripts/Store/EpiContext/Actions';\r\nimport { ArticleContentComponent } from '../../Shared/Scripts/Components/ArticleContentComponent';\r\n\r\ninterface HResultatOwnProps {\r\n verdiD: string | undefined;\r\n resultat: Resultat;\r\n}\r\n\r\ntype HResultatProps = HResultatOwnProps & MapStateToProps & MapDispatchToProps & {};\r\n\r\nclass HResultatComponent extends React.PureComponent {\r\n constructor(props: HResultatProps) {\r\n super(props);\r\n this.onStipendOgLanClick = this.onStipendOgLanClick.bind(this);\r\n this.onRequestClose = this.onRequestClose.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n updateLiveMessage();\r\n }\r\n\r\n onRequestClose(): void {\r\n this.props.updateZIndex(1);\r\n this.props.toggleFordeling();\r\n }\r\n\r\n borBorte = (bosituasjon: string | undefined): boolean => {\r\n return bosituasjon === DBostedValg.d2_borte;\r\n };\r\n\r\n onStipendOgLanClick(event: React.MouseEvent): void {\r\n this.props.updateZIndex(2);\r\n this.props.toggleFordeling();\r\n }\r\n\r\n render(): JSX.Element {\r\n const { resultat, verdiD, visFordeling, epiContext } = this.props;\r\n\r\n const { locale, valuta } = this.props.epiContext;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

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

\r\n
\r\n
\r\n
\r\n {tilPengerFormat(resultat.stipend, locale)}\r\n  {valuta}\r\n
\r\n {this.borBorte(verdiD) ? (\r\n

{contentResolver(epiContext, 'undertittelStipend')}

\r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n

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

\r\n
\r\n\r\n
\r\n
\r\n {tilPengerFormat(resultat.lan, locale)}\r\n  {valuta}\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\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n visFordeling: boolean;\r\n}\r\n\r\ninterface MapDispatchToProps {\r\n toggleFordeling: typeof toggleFordeling;\r\n updateZIndex: typeof updateZIndex;\r\n}\r\n\r\nexport default connect(\r\n (state: VeilederHounAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n visFordeling: state.valg.visFordeling,\r\n };\r\n },\r\n { toggleFordeling, updateZIndex },\r\n)(HResultatComponent);\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { tilPengerFormat, tilDagOgManed } from '../../Shared/Scripts/Utilities/Formatters';\r\nimport { TerminPeriode, Termin } from '../Models/Utbetalingsplan';\r\nimport { EpiAppStateMedSteg } from '../../Shared/Scripts/Store/Types';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\n\r\ninterface UtbetalingSemesterOwnProps {\r\n terminer: TerminPeriode | null;\r\n erVar?: boolean;\r\n tabellOverskriftKey: keyof VeilederHounDto;\r\n}\r\n\r\ntype UtbetalingSemesterProps = UtbetalingSemesterOwnProps & MapStateToProps & {};\r\n\r\nconst utbetalingSemesterComponent = (props: UtbetalingSemesterProps): JSX.Element | null => {\r\n if (props.terminer != null) {\r\n const { locale, valuta } = props.epiContext;\r\n const { erVar, tabellOverskriftKey, epiContext } = props;\r\n\r\n const headerCellStyles = ['c-table__header-cell', erVar === true ? 'c-table__header-cell--lilac' : ''].join(\r\n ' ',\r\n );\r\n\r\n return (\r\n
\r\n

\r\n {contentResolver(epiContext, tabellOverskriftKey)}\r\n

\r\n
\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTttelDato')}\r\n
\r\n
\r\n {contentResolver(epiContext, 'kolonneTittelBelop')}\r\n
\r\n
\r\n {props.terminer.terminer.map(\r\n (termin: Termin): JSX.Element => (\r\n
\r\n
\r\n {tilDagOgManed(termin.mnd - 1, 15, locale)}\r\n
\r\n
{`${tilPengerFormat(\r\n termin.terminbelop,\r\n locale,\r\n )} ${valuta}`}
\r\n
\r\n ),\r\n )}\r\n
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\ninterface MapStateToProps {\r\n epiContext: EpiContext;\r\n}\r\n\r\nexport default connect(\r\n (state: EpiAppStateMedSteg): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(utbetalingSemesterComponent);\r\n","import React, { useEffect } from 'react';\r\nimport UtbetalingSemesterContainer from './UtbetalingSemesterComponent';\r\nimport { EpiContext } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { VeilederHounAppState } from '../Store';\r\nimport { connect } from 'react-redux';\r\nimport { Utbetalingsplan } from '../Models/Utbetalingsplan';\r\nimport contentResolver from '../../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { updateLiveMessage } from '../../Shared/Scripts/Utilities/LiveMessage';\r\n\r\ninterface ResultatOwnProps {\r\n utbetalingsplan: Utbetalingsplan;\r\n}\r\n\r\ntype IResultatProps = ResultatOwnProps & MapStateToProps & {};\r\n\r\nconst IResultatComponent = (props: IResultatProps): JSX.Element => {\r\n const { utbetalingsplan, epiContext } = props;\r\n useEffect(() => {\r\n updateLiveMessage();\r\n }, []);\r\n return (\r\n
\r\n
\r\n {utbetalingsplan.terminerhost && (\r\n \r\n )}\r\n {utbetalingsplan.terminervar && (\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 {contentResolver(epiContext, 'informasjonIBunnen')}\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: VeilederHounAppState): MapStateToProps => {\r\n return {\r\n epiContext: state.epiContext,\r\n };\r\n },\r\n)(IResultatComponent);\r\n","import React from 'react';\r\nimport ReactModal from 'react-modal';\r\nimport * as VeilederLogikk from './Veileder';\r\nimport GResultatContainer from './Components/G-ResultatComponent';\r\nimport HResultatContainer from './Components/H-ResultatComponent';\r\nimport IResultatContainer from './Components/I-ResultatComponent';\r\nimport Valg from '../Shared/Scripts/Models/Valg';\r\nimport NumberInputStegContainer, { NumberFormatter } from '../Shared/Scripts/Components/NumberInputStegComponent';\r\nimport { tilPengerFormat, fraPengerFormat } from '../Shared/Scripts/Utilities/Formatters';\r\nimport AStotteValg from './Utilities/A-StudiestotteValg';\r\nimport RadioButtonsStegContainer from '../Shared/Scripts/Components/RadioButtonsStegComponent';\r\nimport BSemesterValg from './Utilities/B-SemestertypeValg';\r\nimport DBostedValg from './Utilities/D-BostedValg';\r\nimport ESpValg from './Utilities/E-SkolepengerValg';\r\nimport * as ValgTypes from './Store/Valg/Types';\r\nimport VeilederHounDto from './Models/VeilederHounDto';\r\nimport { updateValg, updateVisning } from './Store/Valg/Actions';\r\nimport { VeilederHounAppState } from './Store';\r\nimport { connect } from 'react-redux';\r\nimport { EpiContext } from '../Shared/Scripts/Store/EpiContext/Types';\r\nimport { ResultatValg, ResultatValgValidering } from './Store/Resultat/Types';\r\nimport * as Validering from './Utilities/ValideringParameters';\r\nimport * as Ids from './Ids';\r\nimport contentResolver, { resolveRawText } from '../Shared/Scripts/Utilities/EpiContentResolver';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { AnyAction } from 'redux';\r\nimport { ValideringsResultat } from '../Shared/Scripts/Models/ValideringsResultat';\r\nimport { updateValidation } from './Store/Resultat/Actions';\r\nimport { Satser } from './Utilities/SatserApi';\r\nimport { FeilmeldingComponent } from '../Shared/Scripts/Components/FeilmeldingComponent';\r\nimport SiteImproveHandler, { SiteImproveState, SiteImproveEvents, SiteImproveKategorier } from '../Shared/Scripts/Utilities/SiteImproveEventsHandler';\r\n\r\ninterface AppOwnProps {}\r\n\r\ntype AppProps = AppOwnProps & MapStateToProps & MapDispatchToProps;\r\n\r\nconst RadioButtonsStegComponent = RadioButtonsStegContainer();\r\nconst NumberInputStegComponent = NumberInputStegContainer();\r\n\r\nReactModal.setAppElement(document.getElementById(Ids.AppContainerId) as HTMLElement);\r\n\r\nexport class App extends React.Component {\r\n constructor(props: AppProps) {\r\n super(props);\r\n }\r\n\r\n render(): JSX.Element {\r\n const { valg, resultat, dispatchUpdateValg, dispatchUpdateValidering, epiContext, satser } = this.props;\r\n const { epiModel, locale, valuta } = this.props.epiContext;\r\n\r\n if (resultat.visGenerellFeil || epiContext.epiModelFeilet) {\r\n return ;\r\n }\r\n\r\n if (epiModel != null) {\r\n let resultatElement: JSX.Element | undefined;\r\n let fordelingResultat: JSX.Element | undefined;\r\n let utbetalingsPlanElement: JSX.Element | undefined;\r\n\r\n if (resultat.visResultat && satser != null) {\r\n const stipendOgLan = VeilederLogikk.beregnStipendOgLan(valg, resultat, satser);\r\n const utbetalingsplan = VeilederLogikk.utbetalingsplan(valg, resultat, stipendOgLan, satser);\r\n if (valg.visUtbetalingsplan) {\r\n utbetalingsPlanElement = ;\r\n }\r\n\r\n resultatElement = (\r\n \r\n );\r\n if (resultat.visFordeling) {\r\n const andelStipendOgLan = VeilederLogikk.beregnAndelStipendOgLan(\r\n valg,\r\n resultat,\r\n stipendOgLan,\r\n satser,\r\n );\r\n fordelingResultat = (\r\n \r\n );\r\n }\r\n }\r\n\r\n function registerSiteImproveEvents(): void {\r\n // Veilederen vet ikke om den selv er i A/B eller ikke, og i så fall, om den er utfordrer eller ikke, men kjernesiden vet det\r\n const erABTest: boolean = document.getElementById('abtesting')?.attributes['data-erabtest']?.value as string === 'True';\r\n const erUtfordrer: boolean = document.getElementById('abtesting')?.attributes['data-erutfordrer']?.value as string === 'True';\r\n\r\n if(!SiteImproveState.Startet) {\r\n if (resultat.visBoksB || resultat.visBoksBx || resultat.visBoksE) {\r\n //veileder påstartet\r\n SiteImproveState.Startet = true;\r\n let siteImproveAction: string = SiteImproveEvents.VeilederStart;\r\n\r\n if (erABTest) {\r\n siteImproveAction = erUtfordrer ? SiteImproveEvents.VeilederKontrollStart : SiteImproveEvents.VeilederUtfordrerStart;\r\n }\r\n\r\n SiteImproveHandler.registerSiteImproveEvent(SiteImproveKategorier.Veileder, siteImproveAction, SiteImproveHandler.hentOverskrift());\r\n }\r\n }\r\n\r\n if(!SiteImproveState.Fullfort) {\r\n if(resultat.visResultat) {\r\n //veileder fullført\r\n SiteImproveState.Fullfort = true;\r\n let siteImproveAction: string = SiteImproveEvents.VeilederFullfort;\r\n\r\n if (erABTest) {\r\n siteImproveAction = erUtfordrer ? SiteImproveEvents.VeilederUtfordrerFullfort : SiteImproveEvents.VeilederKontrollFullfort;\r\n }\r\n\r\n SiteImproveHandler.registerSiteImproveEvent(SiteImproveKategorier.Veileder, siteImproveAction, SiteImproveHandler.hentOverskrift());\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {registerSiteImproveEvents()}\r\n ): void => {\r\n dispatchUpdateValg({ aStotte: nyttValg });\r\n }}\r\n neverCollapse={true}\r\n value={valg.aStotte}\r\n />\r\n {resultat.visBoksB && (\r\n ): void => {\r\n dispatchUpdateValg({ bSemester: nyttValg });\r\n }}\r\n value={valg.bSemester}\r\n />\r\n )}\r\n {resultat.visBoksBx && (\r\n ): void => {\r\n dispatchUpdateValg({ bxSemester: nyttValg });\r\n }}\r\n value={valg.bxSemester}\r\n />\r\n )}\r\n {resultat.visBoksC && (\r\n {\r\n dispatchUpdateValg({ cSp: nyttValg });\r\n }}\r\n onValidationChanged={(result: ValideringsResultat | undefined): void =>\r\n dispatchUpdateValidering({ cValidation: result })\r\n }\r\n />\r\n )}\r\n\r\n {resultat.visBoksCx && (\r\n {\r\n dispatchUpdateValg({ cxSp: nyttValg });\r\n }}\r\n onValidationChanged={(result: ValideringsResultat | undefined): void =>\r\n dispatchUpdateValidering({ cXValidation: result })\r\n }\r\n />\r\n )}\r\n {resultat.visBoksE && (\r\n ): void => {\r\n dispatchUpdateValg({ eSkolepenger: nyttValg });\r\n }}\r\n value={valg.eSkolepenger}\r\n />\r\n )}\r\n {resultat.visBoksF &&\r\n satser != null &&\r\n this.skolepengerBoks(\r\n valg,\r\n resultat,\r\n locale,\r\n valuta,\r\n dispatchUpdateValg,\r\n dispatchUpdateValidering,\r\n epiContext,\r\n satser,\r\n )}\r\n {resultatElement}\r\n {utbetalingsPlanElement}\r\n {resultat.visResultat && (\r\n ): void => {\r\n dispatchUpdateValg({ dBosted: nyttValg });\r\n }}\r\n value={valg.dBosted}\r\n classModifier=\"c-veileder__panel--input-white\"\r\n neverCollapse={true}\r\n />\r\n )}\r\n {fordelingResultat}\r\n
\r\n );\r\n } else {\r\n return

Laster...

;\r\n }\r\n }\r\n\r\n private skolepengerBoks(\r\n valg: ValgTypes.ValgState,\r\n resultat: ResultatValg,\r\n locale: string,\r\n valuta: string,\r\n dispatchUpdateValg: (newValg: Partial) => void,\r\n dispatchUpdateValidering: (result: Partial) => void,\r\n epiContext: EpiContext,\r\n satser: Satser,\r\n ): React.ReactNode {\r\n const maxSkolepenger = VeilederLogikk.maksSkolepenger(valg, resultat, satser);\r\n const skolepengerInfoKey = VeilederLogikk.skolepengerInfo(valg);\r\n const infoElement = (\r\n
\r\n

\r\n {contentResolver(epiContext, skolepengerInfoKey)}\r\n {tilPengerFormat(maxSkolepenger, locale)} {valuta}.\r\n

\r\n {contentResolver(epiContext, 'infoSkolepengerBelop')}\r\n
\r\n );\r\n\r\n const formatter: NumberFormatter = {\r\n toFormattetString: (v: number): string => tilPengerFormat(v, locale),\r\n toParsableAsNumber: (v: string): string => fraPengerFormat(v, locale),\r\n };\r\n\r\n return (\r\n {\r\n dispatchUpdateValg({ fSpBelop: nyttValg });\r\n }}\r\n onValidationChanged={(result: ValideringsResultat | undefined): void =>\r\n dispatchUpdateValidering({ fValidation: result })\r\n }\r\n preValidation={resultat.fValidation}\r\n validationChecksum={maxSkolepenger}\r\n />\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: Satser | null;\r\n}\r\n\r\ninterface MapDispatchToProps {\r\n dispatchUpdateValg: (newValg: Partial) => void;\r\n dispatchUpdateValidering: (validation: Partial) => void;\r\n}\r\n\r\nconst mapDispatchToProps = (\r\n dispatch: ThunkDispatch,\r\n ownProps: AppOwnProps,\r\n): MapDispatchToProps => ({\r\n dispatchUpdateValg: (newValg: Partial): void => {\r\n dispatch(updateValg(newValg));\r\n dispatch(updateVisning());\r\n },\r\n dispatchUpdateValidering: (validation: Partial): void => {\r\n dispatch(updateValidation(validation));\r\n dispatch(updateVisning());\r\n },\r\n});\r\n\r\nconst mapStateToProps = (state: VeilederHounAppState): MapStateToProps => ({\r\n valg: state.valg,\r\n epiContext: state.epiContext,\r\n resultat: state.resultat,\r\n satser: state.satser,\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\r\n","import {\r\n ValgStateActionTypes,\r\n ValgState,\r\n TOGGLE_UTBETALINGSPLAN,\r\n TOGGLE_FORDELING,\r\n TOGGLE_VILKAR,\r\n UPDATE_VALG,\r\n} from './Types';\r\n\r\nexport const initialState: ValgState = {\r\n aStotte: undefined,\r\n bSemester: undefined,\r\n bxSemester: undefined,\r\n cSp: undefined,\r\n cxSp: undefined,\r\n dBosted: undefined,\r\n eSkolepenger: undefined,\r\n fSpBelop: undefined,\r\n visUtbetalingsplan: false,\r\n visFordeling: false,\r\n visVilkar: 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 // Reset to inital state when aStotte is changed\r\n if (action.payload.aStotte) {\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 case TOGGLE_UTBETALINGSPLAN: {\r\n return {\r\n ...state,\r\n visUtbetalingsplan: !state.visUtbetalingsplan,\r\n };\r\n }\r\n case TOGGLE_FORDELING: {\r\n return {\r\n ...state,\r\n visFordeling: !state.visFordeling,\r\n };\r\n }\r\n case TOGGLE_VILKAR: {\r\n return {\r\n ...state,\r\n visVilkar: !state.visVilkar,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n }\r\n}\r\n","import { ResultatValg, SET_VISNING, ResultatActionTypes, UPDATE_VALIDERING } from './Types';\r\n\r\nconst initialState: ResultatValg = {\r\n visBoksB: false,\r\n visBoksBx: false,\r\n visBoksC: false,\r\n visBoksCx: false,\r\n visBoksE: false,\r\n visBoksF: false,\r\n visResultat: false,\r\n visFordeling: false,\r\n fValidation: undefined,\r\n visGenerellFeil: false,\r\n};\r\n\r\nexport function resultatReducer(state: ResultatValg = initialState, action: ResultatActionTypes): 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 case UPDATE_VALIDERING: {\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 { Satser } from '../../Utilities/SatserApi';\r\n\r\nexport const SET_SATSER = 'SET_SATSER';\r\n\r\nexport interface SetSatserAction {\r\n type: typeof SET_SATSER;\r\n payload: Satser;\r\n}\r\n\r\nexport type SatserActionTypes = SetSatserAction;\r\n","import { SET_SATSER, SatserActionTypes } from './Types';\r\nimport { Satser } from '../../Utilities/SatserApi';\r\n\r\nconst initialState: Satser | null = null;\r\n\r\nexport function satserReducer(state: Satser | null = initialState, action: SatserActionTypes): Satser | 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","import ReduxThunk from 'redux-thunk';\r\nimport { createStore, combineReducers, Store, applyMiddleware } from 'redux';\r\nimport { valgReducer } from './Valg/Reducers';\r\nimport VeilederHounDto from '../Models/VeilederHounDto';\r\nimport { epiContextReducer } from '../../Shared/Scripts/Store/EpiContext/Reducers';\r\nimport { resultatReducer } from './Resultat/Reducers';\r\nimport { EpiContext, UpdateEpiContextActionTypes } from '../../Shared/Scripts/Store/EpiContext/Types';\r\nimport { stegVisningReducer } from '../../Shared/Scripts/Store/StegVisning/Reducers';\r\nimport { satserReducer } from './Satser/Reducers';\r\nimport { EpiAppStateMedSteg } from '../../Shared/Scripts/Store/Types';\r\n\r\nconst rootReducer = combineReducers({\r\n valg: valgReducer,\r\n resultat: resultatReducer,\r\n epiContext: (\r\n state: EpiContext | undefined,\r\n action: UpdateEpiContextActionTypes,\r\n ): EpiContext => epiContextReducer(state, action),\r\n stegVisning: stegVisningReducer,\r\n satser: satserReducer,\r\n});\r\n\r\nexport type VeilederHounAppState = EpiAppStateMedSteg & {\r\n valg: ReturnType;\r\n resultat: ReturnType;\r\n satser: ReturnType;\r\n};\r\n\r\nexport default function configureStore(): Store {\r\n const valgStateJson = window.localStorage.getItem('state');\r\n if (valgStateJson != null) {\r\n const savedState = JSON.parse(valgStateJson) as VeilederHounAppState;\r\n return createStore(rootReducer, savedState, applyMiddleware(ReduxThunk));\r\n }\r\n\r\n return createStore(rootReducer, applyMiddleware(ReduxThunk));\r\n}\r\n","export const getSatser = async (): Promise => {\r\n const response = await fetch('/api/mt1535/satser/hoyskoleoguniversitet');\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return await response.json();\r\n};\r\n\r\nexport interface Satser {\r\n ST01_MaksBasisstotteperManed: number;\r\n ST01_MaksSkolepengestottePerAr: number;\r\n}\r\n","import { SET_SATSER, SetSatserAction } from './Types';\r\nimport { Satser } from '../../Utilities/SatserApi';\r\n\r\nexport function setSatser(satser: Satser): SetSatserAction {\r\n return {\r\n type: SET_SATSER,\r\n payload: satser,\r\n };\r\n}\r\n","import React from 'react';\r\nimport App from './App';\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 './Ids';\r\nimport { getSatser } from './Utilities/SatserApi';\r\nimport { setSatser } from './Store/Satser/Actions';\r\nimport { setVisning } from './Store/Resultat/Actions';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\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\r\n InitEpiMessages(store, contentLink);\r\n\r\n getSatser()\r\n .then((data): void => {\r\n store.dispatch(setSatser(data));\r\n })\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}\r\n"],"names":["beregnStipendOgLan","heltAr","A","B","Kalkulator.beregnStipendOgLan","D","Kalkulator.beregnStipend","Kalkulator.beregnLan","Kalkulator.beregnUtbetalingsplan","E","jsxs","jsx","contentResolver","utbetalingsplan","useEffect","Ids.AppContainerId","VeilederLogikk.beregnStipendOgLan","VeilederLogikk.utbetalingsplan","VeilederLogikk.getA","VeilederLogikk.getB","VeilederLogikk.beregnAndelStipendOgLan","VeilederLogikk.getD","Ids.BoksA","Ids.BoksB","Ids.BoksBx","Ids.BoksC","Validering.CStudiepoengValidering","Ids.BoksCx","Validering.CxStudiepoengValidering","Ids.BoksE","Ids.BoksD","VeilederLogikk.maksSkolepenger","VeilederLogikk.skolepengerInfo","Ids.BoksF","Validering.fSkolepengerValidering","initialState","ReduxThunk","createRoot","App"],"mappings":"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"}